А чё это вы здесь делаете, а?

Обмен - Интеграция с WEB

обработка библиотека GA GoogleAnalytics lib sample статистика события формы

138
Разработчикам тиражных обработок близка и понятна проблема обратной связи с пользователем. Много важного и полезного можно почерпнуть, зная, что делает бухгалтер, который запустил обработку. В большом мире вэба сбор статистики на сайте дело привычное и даже обязательное. Эта статья покажет практику применения инструментов сбора статистики из мира веба для обработок на платформе 1С:Предприятие.

Что это?

Данная публикация на примере демонстрационной обработки показывает, как отправлять статистику на сайт analytics.google.com. После встраивания библиотеки для работы с Google Analytics ваша обработка сможет отправлять статистику о:

  • количестве пользователей
  • переходах по формам
  • событиях интерфейса пользователя
  • событиях бизнес-логики обработки
  • ошибках
  • и другой информации

Данная разработка результат совместной работы сотрудников нашей компании. Коллега заложил основы проекта. Я сделал демонстрационный пример и это описание.

Исходный код библиотеки и демонстрационной обработки находятся в репозитории на GitHub

Для тех, кто торопится

Как подключить и внедрить. Шесть простых шагов:

  1. Заведите аккаунт на сайте  analytics.google.com и получите идентификатор отслеживания
  2. Скопируйте в свою обработку форму "модGA" из демонстрационной обработки
  3. В основной форме вашей обработки инициализируйте модуль GA, так, как это сделано в примере
  4. Добавьте вызов метода отправки данных в GA во все контролируемые места вашей обработки
  5. Добавьте опцию отключения отправки данных в GA и текст дисклеймера на форме настройки вашей обработки
  6. Настройте отчеты на сайте  analytics.google.com

Что это за название у публикации?

Фраза из советского художественного фильма подошла как нельзя лучше:

 

Google Analytics для обработок. Что это дает?

Признаюсь, Google Analytics это целая вселенная. Понимать от и до, у меня пока не получается. Многое постигаю методом "тыка", а он как известно не очень эффективен. Про Google Analytics есть свежая книжка на русском, возможно она ответит на некоторые вопросы. Буду рад советам коллег, как этот инструмент использовать более полно. Вопросы у меня уже есть. Далее несколько примеров, как GA может помочь разработчику тиражных обработок.

Аудитория пользователей обработки

В GA доступна информация о количестве пользователей в том числе о новых и вернувшихся. Количество сеансов и их длительность тоже очень полезные знания особенно в динамике. Например вы выпустили новую версию обработки и продолжительность сеансов снизилось. Возможно это положительный эффект.

Важно! Для надежного подсчета количества пользователей необходимо правильно устанавливать поле библиотеки ИдКлиента

Обзор аудитории

Местоположение пользователей

Google Analytics дает информацию о местоположении пользователей и их активности. Если ваша обработка или конфигурация распространяется через региональных партнеров, то данная статистика поможет определиться с регионами, которые требуют помощи.

местоположение

Вовлечение пользователей

Информация о времени проведенном за вашей обработкой показывает наиболее популярный сценарий использования. Длительность сеанса и количество открытых форм укажет на полноту использования функционала вашей обработки. Например, вы можете снять хронометраж "образцового" использования вашей обработки и в дальнейшем сравнивать эти параметры со статистикой вовлечения.

вовлечение

Карта поведения

Совершенно очаровательный и совершенно непонятный "шайтан" отчет

карта поведения

Просмотр страниц

Информация о просмотре форм в обработке. На мой взгляд, интерес представляют наименее популярные формы. Почему пользователи редко их открывают? Нужно разобраться. Так же интересен анализ в динамике. После изменений в новой версии стали ли формы более популярными?

страницы

События

В Google Analytics события детализируются по категориям, событиям и деталям (ярлыкам). Я рекомендую категории и события прописать заранее в "перечислениях" библиотеки а вот ярлыки можно оформлять "живым текстом". Пример события:

Действие пользователя - щелчок на кнопке - B2BПолучитьДокумент 

Тут красный текст - категория события, зеленый текст - событие а синий текст - ярлык события.

И последнее, о событиях. В GA событие помимо трех вышеназванных параметров имеет четвертый количественный параметр "Количество". Его удобно использовать для подсчета событий бизнес логики. Например, пользователь отметил 5 документов и отправил в ЕГАИС, тогда в GA можно отправить сообщение о событии типа:

Событие бизнес-логики - отправка данных - справка "Б" - 5

события

Пример пользовательского отчета "Конфигурации"

пользовательский отчет

С чем я не разобрался

Measurement Protocol позволяет передавать на сервер GA много полезной информации однако не все что я отправляю на сервер смог увидеть в отчетах. Что не получилось:

  1. Посмотреть значения обязательных параметров, которые я передаю при каждом обращении в GA. Здесь "an", "av" и "cdx" параметры Measurement Protocol, через которые я передаю данные в обращении  Вопрос решен. Спасибо Крапивину Андрею.
    • an Наименование конфигурации
    • av Версия конфигурации
    • cd1 Версия платформы
    • cd2 Версия ОС
    • cd3 Наименование обработки
    • cd4 Версия обработки
  2. Посмотреть информацию обращения об ошибках в обработке. В данном обращении используется параметр "exd" Measurement Protocol
  3. Пакетный режим отправки обращений в GA

Google Analytics, начало работы с ресурсом

Регистрация

Для работы потребуется зарегистрироваться на сайте Google Analytics. Для регистрации в GA нужен аккаунт в gmail.com. Войдите под своим аккаунтом в Google и зарегистрируйтесь на сайте  analytics.google.com

Заполните параметры нового аккаунта. Обратите внимание на подчеркнутые поля. Далее необходимо нажать кнопку “Получить идентификатор отслеживания”, прочитать и согласиться с лицензионным соглашением.

Параметры аккаунта

В настройках аккаунта найдите "Идентификатор отслеживания". Он нам в дальнейшем понадобиться.

В приложенном примере обработки у идентификатора отслеживания сохранено рабочее значение. Это не является проблемой безопасности.

Идентификатор отслеживания

Google Analytics для сайтов

Тут все просто. В настройках аккаунта есть код для встраивания на страницы сайта. Он делает все что нужно но нас этот вариант не интересует.

Google Analytics для обработок

Компания Google разработала Measurement Protocol, который позволяет заливать данные в Google Analytics откуда угодно. Коротко о возможностях этого протокола:

  • Данные в Google Analytics отправляются с помощью POST запросов к ресурсу https://www.google-analytics.com/collect
  • Данные в Google Analytics передаются с помощью обращений, которые состоят из параметров. Список всех параметров
  • Из множества всех параметров, для обработок полезны, на мой взгляд, только некоторые. Используемые в библиотеке параметры.
  • Поддерживается специальный режим отладки для которого создан отдельный ресурс https://www.google-analytics.com/debug/collect
  • Рабочий режим всегда возвращает код ответа 200.
  • Протокол поддерживает пакетный режим отправки. Подробнее тут. Пакетный режим реализован в описываемой библиотеке, однако он у меня не работает. В Google Analytics попадает только первое обращение из пакета. Буду рад помощи коллег.

Возможности этого протокола были положены в основу этого решения

Настройка Google Analytics

В настройках GA необходимо сделать:

Создать новое представление с вариантом отслеживания данных "Мобильное приложение"

Настройка представления

Прописать пользовательские параметры в разделе "Ресурс" в соответствии с настройками библиотеки

Настройка специальных параметров

Индекс параметра в настройке на сайте должен соответствовать параметру в библиотеке

Специальные параметры

Библиотека для работы с Google Analytics через Measurement Protocol

Библиотека для отправки данных в Google Analytics реализована в виде управляемой формы обработки "модGA". Библиотека содержит публичный методы и публичные поля. Библиотеку необходимо встроить в собственную обработку и в контролируемых местах обработки вызывать методы отправки данных в GA.

Устройство библиотеки

Конструктор / деструктор

Для начала работы с библиотекой в основной форме обработки необходимо вызвать метод конструктора библиотеки. Данный метод удобно вызывать из метода "ПриОткрытии" основной формы обработки

НачатьРаботуС_GA(сИДПриложения, сИДКлиента)

где параметры:

сИДПриложения - Строка - (необязательно) Идентификатор отслеживания. Может быть ранее установлен методом УстановитьИдентификаторПриложения(сИдПриложения)
сИДКлиента - Строка - (необязательно) Идентификатор клиента. Может быть ранее установлен методом УстановитьИдентификаторКлиента(сИДКлиента) 
возвращаемое значение: Булево - флаг успешного выполнения

 

ЗакончитьРаботуС_GA()

Метод для корректного завершения работы с библиотекой. Данный метод удобно вызывать из метода "ПриЗакрытии" основной формы обработки.

 

Интерфейс библиотеки

Метод отправки обращений в Google Analytics

GA_ОтправитьСведения(мДанные)

где параметр:

мДанные - Массив - (обязательно) Массив с данными. Элемент массива -  структура с параметрами обращения в Google Analytics

Метод "GA_ОтправитьСведения" вызывается всегда, когда необходимо отправить подготовленное обращение. Если массив с данными содержит один элемент, то будет отправлен одиночный запрос. Если массив содержит несколько элементов, то будет отправлен пакетный запрос.

Данный метод проверяет состояние реквизита формы библиотеки "р_бРазрешено" и если состояние "Ложь", то отправка не происходит. Флаг "р_бРазрешено" устанавливается методом УстановитьРазрешениеОтправкиСтатистики(бРазрешено).

Так же метод проверяет состояние реквизита формы библиотеки "р_бРежимОтладки" и если состояние "Истина" то работает режим отладки.Флаг "р_бРежимОтладки" устанавливается методом УстановитьРежимОтладки(бРежимОтладки).

 

Методы подготовки данных обращений

GA_Сеанс(сСеансИнфо, мДанные)

где параметры:

сСеансИнфо - Строка - (обязательно) Значение "перечисления" SC

мДанные - Массив - (необязательно) Данные для GA, подготовленные ранее. Для пакетного режима

Возвращаемое значение: Массив - Данные для обращения в Google Analytics

Данный метод добавляет в массив мДанные элемент, который содержит параметры обращения о сеансе работы обработки. Этот метод удобно вызывать из методов "ПриОткрытии" и "ПриЗакрытии" основной формы обработки

 

GA_Форма_Страница(сОбработкаНаименование, сФормаНаименование, мДанные)

где параметры:

сОбработкаНаименование - Строка - (обязательно) наименование обработки. Для удобства доступен экспортный метод Обработка_Имя(), который возвращает наименование обработки в виде строки.

сФормаНаименование - Строка - (обязательно) наименование формы на которую совершен переход. Для удобства доступен экспортный метод Форма_Имя(оФорма), который возвращает имя формы в виде строки

мДанные - Массив - (необязательно) Данные для GA, подготовленные ранее. Для пакетного режима

Возвращаемое значение: Массив - Данные для обращения в Google Analytics

Данный метод добавляет в массив мДанные элемент, который содержит параметры обращения о переходе на форму обработки. Этот метод оставлен для совместимости. Рекомендуется использовать метод GA_Форма_Экран

 

GA_Форма_Экран(сФормаНаименование, мДанные)

где параметры:

сФормаНаименование - Строка - (обязательно) наименование формы на которую совершен переход. Для удобства доступен экспортный метод Форма_Имя(оФорма), который возвращает имя формы в виде строки

мДанные - Массив - (необязательно) Данные для GA, подготовленные ранее. Для пакетного режима

Возвращаемое значение: Массив - Данные для обращения в Google Analytics

Данный метод добавляет в массив мДанные элемент, который содержит параметры обращения о переходе на форму обработки. Рекомендуется использовать этот метод, так как он передает обращение с типом "Просмотр экрана".

Этот метод удобно вызывать из методов "ПриОткрытии" форм обработки а так же в методе описания оповещения о закрытии, для отслеживания возврата в родительскую форму из дочерней.

 

GA_Ошибка(сОшибкаОписание, бОшибкаФатальная, мДанные)

где параметры:

сОшибкаОписание - Строка - (обязательно) Значение "перечисления" EXD

бОшибкаФатальная - Булево - (обязательно) Признак фатальной ошибки.

мДанные - Массив - (необязательно) Данные для GA, подготовленные ранее. Для пакетного режима

Возвращаемое значение: Массив - Данные для обращения в Google Analytics

Данный метод добавляет в массив мДанные элемент, который содержит параметры обращения об ошибках в обработке. Этот метод удобно вызывать из операторных скобок "TRY - CATCH" или из кода проверок на ошибки.

 

GA_Событие(сСобытиеКатегория, сСобытиеНаименование, сЭлемент, чКоличество, мДанные)

где параметры:

сСобытиеКатегория - Строка - (обязательно) Категория события. Значение "перечисления" EC 

сСобытиеНаименование - Строка - (обязательно) Наименование события. Значение перечисления "перечисления" EA

сЭлемент - Строка - (необязательно) Наименование элемента формы или иное описание события

чКоличество - Число - (необязательно) Количественная характеристика события 

мДанные - Массив - (необязательно) Данные для GA, подготовленные ранее. Для пакетного режима

Возвращаемое значение: Массив - Данные для обращения в Google Analytics

Данный метод добавляет в массив мДанные элемент, который содержит параметры обращения о событиях в обработке. Этот метод, в зависимости от категории события, удобно вызывать из команд формы, из бизнес или сервисных методов обработки.

 

Методы установки параметров

УстановитьРазрешениеОтправкиСтатистики(бРазрешено)

где параметр:

бРазрешено - Булево - (обязательно) команда на разрешение отправки статистики в GA. Если "Истина", то отправка разрешена.

Данный метод устанавливает приватное поле библиотеки "р_бРазрешено", которое проверяется перед каждой отправкой обращения в GA. Если значение поля "Ложь", то отправка данных не производится.

 

УстановитьРежимОтладки(бРежимОтладки)

где параметр:

бРежимОтладки - Булево - (обязательно) команда на работу обработки в режиме отладки. Если "Истина" то режим отладки включен.

Данный метод устанавливает значение приватного поля библиотеки "р_бРежимОтладки", которое проверяется перед каждой отправкой в GA. Режим отладки длится до его выключения пользователем.

Немного о режиме отладки при работе с GoogleAnalytics

  • режим отладки это по сути отправка запросов на особый ресурс Google Analytics
  • информация отправленная в режиме отладки в статистике не учитывается
  • если режим отладки выключен, то GA всегда возвращает код ответа 200 (OK), даже если данные приняты с ошибкой
  • в режиме отладки GA возвращает в теле HTTP ответа строку в формате JSON, которая содержит диагностику
  • в данной библиотеке отладочная информация записывается в журнал регистрации

Пример записи в журнал:

 
УстановитьИдентификаторПриложения(сИдПриложения)

где параметр:

сИдПриложения - Строка - (обязательно) код отслеживания, полученный при регистрации в GoogleAnalytics. Код отслеживания, также может быть установлен в конструкторе и в таком случае вызов этого метода не требуется. Данный метод должен быть вызван до вызова метода конструктора.

 

УстановитьИдентификаторКлиента(сИдКлиента)

где параметр:

сИдКлиента - Строка | УникальныйИдентификатор - (обязательно) идентификатор УИД, который характеризует пользователя обработки. Идентификатор клиента, также может быть установлен в конструкторе и в таком случае вызов этого метода не требуется. Данный метод должен быть вызван до вызова метода конструктора.

Немного об идентификаторе клиента:

  • Google строго регламентирует способ формирования идентификатора. Главное, с помощью идентификатора не должно быть возможности идентифицировать личность пользователя.
  • По ИдКлиента GoogleAnalytics учитывает статистику об аудитории в разрезе пользователей
  • Источником для ИдКлиента, на мой взгляд, оправданно использовать УИД Организации или УИД Пользователя БД

Пример кода для получения идентификатора, который можно подать в параметр сИдКлиента 

&НаСервереБезКонтекста
Функция ПолучитьИдентификаторКлиента_Сервер()
	Перем рефОрганизация, ИдКлиента;
	
	рефОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");	
	
	Если ТипЗнч(рефОрганизация) = Тип("СправочникСсылка.Организации") И НЕ рефОрганизация.Пустая() Тогда
		ИдКлиента = рефОрганизация.УникальныйИдентификатор();
	Иначе
		ИдКлиента = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
	КонецЕсли;
	
	Возврат ИдКлиента;
КонецФункции

 

Вспомогательные методы интерфейса

Форма_Имя(оФорма)

где параметр:

оФорма - УправляемаяФорма - (обязательно) объект управляемой формы, имя которого нужно получить

Возвращаемое значение: Строка - Имя формы

Данный метод удобно использовать в аргументе "сФормаНаименование" метода GA_Форма_Экран(сФормаНаименование, мДанные)

 

Обработка_Имя()

Возвращаемое значение: Строка - Имя обработки. Синоним, если доступно или имя объекта ВнешняяОбработка.

Данный метод удобно использовать в аргументе "сОбработкаНаименование" метода GA_Форма_Экран(сФормаНаименование, мДанные)

 

GA_ПолучитьТекстДисклеймера()

Данный метод возвращает строку - текст дисклеймера. При необходимости вы можете переопределить текст предупреждения. Данный текст желательно показывать пользователю на форме, где происходит настройка (разрешение) отправки данных в GA

 

ВерсияМодуляGA()

Данный метод возвращает номер версии библиотеки как строка.

 

Публичные реквизиты "Перечисления"

Для однообразия значений параметров отправляемых в Google Analytics в библиотеке присутствуют предопределенные "перечисления". Термин взят в кавычки, так как это реквизит формы с типом ФиксированнаяСтруктура, который имитирует работу с перечислениями. В библиотеке предопределены следующие структуры:

  • EC - категория события. Элементы структуры - литералы, обозначающие категории событий. Метод, отвечающий за построение перечисления: Перечисление_КатегорияСобытия_Создать()
  • EA - событие. Элементы структуры - литералы, обозначающие виды событий. Метод, отвечающий за построение перечисления: Перечисление_Событие_Создать()
  • EXD - ошибка. Элементы структуры - литералы, обозначающие виды ошибок в обработке. Метод, отвечающий за построение перечисления: Перечисление_Ошибка_Создать()
  • SC - сеанс. Элементы структуры - литералы, обозначающие начало и конец сеанса. Метод, отвечающий за построение перечисления: Перечисление_Сеанс_Создать()

Вы можете переопределить значения "перечислений", если этого требует задача. Для этого внесите изменения в методы, которые указаны выше.

Встраивание библиотеки в собственную обработку

Принцип встраивания библиотеки

Встраивание библиотеки в собственную обработку простая задача. Необходимо выполнить несколько условий.

  1. Интерфейс библиотеки реализован только клиентскими методами. Следовательно из серверных методов обработки статистику отправить не получится.
  2. На протяжении всего времени работы обработки в памяти должна существовать форма "модGA".
  3. Модуль основной формы обработки должен иметь экспортную переменную которой присвоена ссылка на форму "модGA" Эта переменная будет "точкой доступа" к методам библиотеки.
  4. Все формы обработки должны иметь удобный доступ к "точке доступа"

Пример встраивания

К публикации приложен пример обработки со встроенной библиотекой. Прокомментирую последовательность встраивания:

добавьте форму библиотеки в вашу обработку

в модуле основной формы, в моем примере это "ФормаГлавная", добавьте переменные модуля из области "Встраивание_GA_в_модуль_формы_ПЕРЕМЕННЫЕ". 

#Область Встраивание_GA_в_модуль_формы_ПЕРЕМЕННЫЕ

&НаКлиенте
Перем м_GA Экспорт; // Только для основной формы. 
// Переменная содержит ссылку на форму "модGA". Это точка доступа к методам библиотеки.

&НаКлиенте
Перем м_ОФ; // Требуется в каждой форме
// Переменная содержит ссылку на основную форму обработки

#КонецОбласти

в модуле основной формы добавьте методы встраивания из области "Встраивание_GA_в_модуль_формы_МЕТОДЫ"

Методы встраивания

в модуле основной формы в методе "ПриОткрытии" инициализируйте библиотеку, например так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Перем сИдКлиента, мДанные;
	Перем ИДПРИЛОЖЕНИЯ;
	
	// КОНСТАНТА
	ИДПРИЛОЖЕНИЯ = "UA-111111111-1"; // Идентификатор отслеживания полученный в GoogleAnalytics
		
	// ПОДКЛЮЧЕНИЕ БИБЛИОТЕКИ модGA
	Если НЕ МодульGA_Подключить() Тогда
		СообщитьПользователю("Модуль GA не подключен. Подробнее, см. ЖР.");
	КонецЕсли;
	
	м_ОФ = ОсновнаяФорма_Получить(ЭтотОбъект);
	Если м_ОФ = Неопределено Тогда
		СообщитьПользователю("ОсновнаяФорма не определена. Модуль GA не подключен. Подробнее, см. ЖР.");
	КонецЕсли;
	
	// ИНИЦИАЛИЗАЦИЯ БИБЛИОТЕКИ И УСТАНОВКА ПАРАМЕТРОВ GA
	м_ОФ.м_GA.УстановитьИдентификаторПриложения(ИДПРИЛОЖЕНИЯ);
	сИдКлиента = ПолучитьИдентификаторКлиента();
	м_ОФ.м_GA.УстановитьИдентификаторКлиента(сИдКлиента);
	м_ОФ.м_GA.УстановитьРазрешениеОтправкиСтатистики(р_бОтправкаРазрешена);
	м_ОФ.м_GA.УстановитьРежимОтладки(р_бРежимОтладки);
	
	Если НЕ м_ОФ.м_GA.НачатьРаботуС_GA() Тогда
		СообщитьПользователю("Не удалось начать работу с GA. Подробнее, см. ЖР.");
	КонецЕсли;
		
КонецПроцедуры

Комментарий к коду:

  • Константа "ИДПРИЛОЖЕНИЯ" указана ненастоящая. Вам нужно получить свой код отслеживания
  • Переменные "р_бОтправкаРазрешена" и "р_бРежимОтладки" в демонстрационном примере это реквизиты основной формы, в которых храниться состояние флагов.
  • Вызов методов библиотеки производится через цепочку м_ОФ.м_GA . Это обозначает, что в контексте основной формы (м_ОФ) есть контекст формы модGA (м_GA), который в свою очередь предоставляет доступ к методам библиотеки

в модулях всех форм, кроме основной, добавьте код из областей "Встраивание_GA_в_модуль_формы_ПЕРЕМЕННЫЕ" и "Встраивание_GA_в_модуль_формы_МЕТОДЫ" взятый из приложенного примера обработки

встраивание библиотеки в прочие формы

в модулях всех форм, кроме основной в методе "ПриОткрытии" инициализируйте библиотеку, например так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// ИНИЦИАЛИЗАЦИЯ БИБЛИОТЕКИ
    м_ОФ = ОсновнаяФорма_Получить(ЭтотОбъект);
	Если м_ОФ = Неопределено Тогда
		СообщитьПользователю("Модуль GA не подключен. Подробнее, см. ЖР.");
	КонецЕсли;
	
	// Отправка данных в GA о начале просмотра формы
	мДанные = м_ОФ.м_GA.GA_Форма(м_ОФ.м_GA.Обработка_Имя(), м_ОФ.м_GA.Форма_Имя(ЭтотОбъект));
	м_ОФ.м_GA.GA_ОтправитьСведения(мДанные);

КонецПроцедуры

в форме настройки обработки добавьте код позволяющий отключить передачу данных в GoogleAnalytics а так же код, который позволяет ознакомиться с содержанием текста дисклеймера

текст дисклеймера

и наконец, добавьте в контролируемые места обработки код отправки статистики в GA, например такой:

сИмяДокумента = "СЧФ";
чКоличествоДокументов = 4;
	
мДанные = м_ОФ.м_GA.GA_Событие(м_ОФ.м_GA.EC.UX, м_ОФ.м_GA.EA.UX_clic, Команда.Имя);
м_ОФ.м_GA.GA_ОтправитьСведения(мДанные);
мДанные = м_ОФ.м_GA.GA_Событие(м_ОФ.м_GA.EC.B2B, м_ОФ.м_GA.EA.B2B_send, сИмяДокумента, чКоличествоДокументов);
м_ОФ.м_GA.GA_ОтправитьСведения(мДанные);

Внешний вид демонстрационной обработки приведен на скриншоте ниже. Открытие форм и нажатие на кнопки отправляет данные в GA.

Демонстрационный пример

Дополнения

дополнение от 22.01.2018

проверил профайлером время, которое уходит на работу с GA. На мой взгляд не критично 0,16 - 0,2 с на один запрос к сервису.

дополнение от 27.01.2018

Спасибо уважаемому Андрею (Scorpion4eg) за толковые подсказки.

Решен вопрос использования параметров cd1 - cd4. Требуется настроить Google Analytics и создать пользовательский отчет

Решен вопрос использования параметров an и av. Требуется добавить представление в Google Analytics и отправлять обращения о просмотре форм используя метод GA_Форма_Экран

Уточнена таблица с параметрами обращения и добавлен новый метод GA_Форма_Экран

Выложена новая версия библиотеки 1-04

 

Приложения

Параметры обращения в Google Analytics

Параметр

Имя параметра

Тип параметра

Назначение параметра

Заголовок

v

ver

Ч

всегда “1”

tid

 

С:15

Идентификатор отслеживания. формат UA-XXXX-Y

cid

client id

С:36

GUID клиента (приложения)

uid

user id

С:36

GUID пользователя

t

type

 

Тип обращения {event; pageview; exception}

Обязательные

an

app name

C:50

Наименование обработки

av

app ver

C:50

Версия обработки

cd1

spec dim

С:70

Версия платформы

cd2

spec dim

С:70

Версия ОС

cd3

spec dim

С:70

Наименование конфигурации

cd4

spec dim

С:70

Версия конфигурации

Сеанс (t = event)

sc

seans count

{start; end}

Фиксация начала и конца работы с обработкой

Просмотр форм (t = pageview)

dh

host

C:50

Наименование обработки

dp

path

С:1000

Наименование формы

Ошибка (t = exception)

exd

description

С:70

Описание ошибки. Значение "перечисления"

exf

fatal

Б

признак фатальной ошибки

Событие (t = event)

ec

category

С:70

Категория события. Значение "перечисления"

ea

action

С:250

Событие. Значение "перечисления"

el

label

С:250

Наименование команды или прочая информация

ev

value

Ч

Количественная характеристика события

"Перечисления" категории и события

Категория EC

Событие EA

Комментарий

UX

  Действие пользователя
 

UX_clic

щелчок на кнопке

 

UX_select

выбор поля, табличного поля, строки табличного поля

 

UX_refresh

обновление табличного поля

 

UX_filter

отбор в табличном поле

 

UX_change

изменение данных

 

UX_delete

удаление данных

B2B

  Событие бизнес-логики
 

B2B_proc

бизнес - процедура прочее

 

B2B_send

бизнес - процедура отправки

 

B2B_receive

бизнес - процедура получения

SRV

 

Сервисное событие

 

SRV_sync

синхронизация

 

SRV_backup

резервное копирование

 

SRV_upgrade

обновление

 

SRV_seance

информация о сеансе

  SRV_setting настройка обработки

"Перечисление" ошибки

Ошибка Комментарий
US_inputerror
 
Ошибка пользователя. Ввод неверной информации.
US_invalidaction Ошибка пользователя. Недопустимое действие.
US_accesserror Ошибка пользователя. Нет прав на совершение операции.
B2B_diskerror Ошибка B2B. Чтение, запись на диск.
B2B_httperror Ошибка B2B. Чтение, запись через http.
B2B_dataselect Ошибка B2B. Получение данных из БД.
B2B_dataselect Ошибка B2B. Получение данных из БД.
B2B_datawrite Ошибка B2B. Запись данных в БД.
SRV_platform Ошибка SRV. Недопустимая версия платформы.
SRV_config Ошибка SRV. Недопустимая версия конфигурации.

"Перечисление" SC сеанс

Сеанс Комментарий
start start
end end

Конец.

138

Скачать файлы

Наименование Файл Версия Размер
А чё это вы здесь делаете, а?:
.epf 29,77Kb
21.01.18
22
.epf 1.04 29,77Kb 22 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. vano-ekt 1130 21.01.18 21:27 Сейчас в теме
3. infosoft-v 291 21.01.18 21:43 Сейчас в теме
(1) Уточните вопрос, пожалуйста.
5. vano-ekt 1130 22.01.18 08:25 Сейчас в теме
(3) первым делом сделаю в купленной разработке // или Возврат, чтоб в интернеты всякие не лезла
6. infosoft-v 291 22.01.18 09:27 Сейчас в теме
(5) Вы говорите с позиции заказчика, который опасается что данный функционал доставит неудобства пользователям.
Статья написана с позиции разработчика, который сможет развивать продукт прислушиваясь к пользователю.
Если найти компромис между этими сторонами, можно, я надеюсь, поднять качество продуктов с которыми пользователи работают каждый день.
9. vano-ekt 1130 22.01.18 10:00 Сейчас в теме
(6)
Вы говорите с позиции заказчика, который опасается что данный функционал доставит неудобства пользователям.

я говорю с точки зрения безопасника, который не оценил сбор статистики действий в корпоративной информационной системе третьими лицами, через сервисы четвертых лиц
и с точки зрения администратора сети, которому не понравилось обращение сервера 1С к внешним сетевым ресурсам 100 раз в секунду
хотя, если по умолчанию подсистема отключена - то пусть будет
oninfostart; t.v.s.; Cерый; mad375; vovan_victory; kuzyara; BigBoss; c1nil; rpgshnik; +9 1 Ответить
37. DitriX 1616 24.03.18 18:47 Сейчас в теме
(9) не соглашусь. 1С и так делает кучу вызовов, спарки всякие, кладры и прочее. Вы тоже все это прикрываете? А скоро будет еще сервер взаимодействия и прочее.
Кроме этого - можно слать пакетами, раз в некий промежуток времени, так что тоже не засчитано.
А когда директор кричит что все тормозит и не дает возможности это анализировать, так как безопасник против - то что-то не так с безопасником, не находите?

Задача безопасника не прикрывать доступы, а обеспечивать их защиту. Что может быть надежнее защиты гугл сервисов? Если вы не доверяете уже им, то я даже не знаю, чесслово.

Кроме этого - гугл запрещает туда выгружать инфоррмацию, которая касается идентификации пользователей, и гугл забанит за это вас быстрее.

Или вы предпочтете, чтобы эти данные скапливались на серверах неких вообще левых мест?
38. vano-ekt 1130 24.03.18 21:03 Сейчас в теме
(37)
Или вы предпочтете, чтобы эти данные скапливались на серверах неких вообще левых мест?

скорее предпочту localhost, ну или по крайней мере не дальше 0/24
Вы тоже все это прикрываете?

вообще не заморачиваюсь, по умолчанию прикрыто всё, а потом уже исключения, которые админ сети добавляет по запросу
2. serega33 21.01.18 21:32 Сейчас в теме
Классная тема, а Яндекс.Метрику рассматривали? Есть там подобный интерфейс?
infosoft-v; +1 Ответить
4. infosoft-v 291 21.01.18 21:44 Сейчас в теме
(2)нет, Яндекс не имеет подобного протокола. Яндекс метрика только для сайтов.
7. ekaruk 4220 22.01.18 09:30 Сейчас в теме
Очень интересная восзможность.
Насколько это отражается на скорости работы? Особенно при проблемах со связью.
Ну и не совсем уверена в корректности такого сбора данных с точки зрения пользователя.
A_Max; infosoft-v; CSiER; Evil Beaver; c1nil; rpgshnik; awk; +7 Ответить
10. Evil Beaver 5383 22.01.18 10:50 Сейчас в теме
(7) В целом, предупредить - это этично, но с другой стороны - там не собирается ничего такого, что бы не собирали все интернет-сайты безо всяких предупреждений.
12. gubanoff 45 22.01.18 11:13 Сейчас в теме
(7) Данные нужно хранить в промежуточном регистре, а в гугл отправлять уже по регламенту пакетом. Онлайн связь, конечно, не подходит. Это первое, что я доработаю у себя :) А так все очень красиво.
KAV2; maxopik2; +2 Ответить
27. infosoft-v 291 22.01.18 21:05 Сейчас в теме
(12) для конфигураций это рабочая идея. Для обработок, к сожалению, так красиво не получится.
И еще одна мысль Отправляя пакетом по регламенту вы теряете информацию о динамике времени работы пользователей. Статистика будет периодической а не плавной.
34. KAV2 19.03.18 11:56 Сейчас в теме
(12) Или как вариант отправлять в фоновом задании без промежуточной записи в регистр.
15. infosoft-v 291 22.01.18 11:47 Сейчас в теме
(7)
Ну и не совсем уверена в корректности такого сбора данных с точки зрения пользователя.

Предоставьте пользователю возможность отключить этот режим и опубликуйте текст дисклеймера с подробностями о передаче данных. Особенно обратите внимание на полную обезличенность данных и отсутствие коммерческой информации в передаваемых данных.
Думаю, этого достаточно, что бы не создавать заказчику неудобств.
Все сайты, буквально все, отправляют данные в GA и Яндекс.Метрику даже не ставя в известность пользователя.
16. TODD22 17 22.01.18 11:52 Сейчас в теме
(15)
Все сайты, буквально все,

Сайты не учётные системы компании, не совсем правильно сравнивать.
18. infosoft-v 291 22.01.18 12:16 Сейчас в теме
(16) ну как сказать, есть такие сайты, которые для меня важнее учетной системы, например "сайт" ПланФикс в котором я веду учет задач, ошибок и т.д совершенно прекрасно все отправляет
Прикрепленные файлы:
19. TODD22 17 22.01.18 12:28 Сейчас в теме
(18)
ну как сказать, есть такие сайты, которые для меня важнее учетной системы

Каждый сам определяет что ему важнее.
например "сайт" ПланФикс в котором я веду учет задач, ошибок и т.д совершенно прекрасно все отправляет

Я не критикую ваше решение. Пусть отправляет. Это нужное дело и хорошее если на него получено согласие пользователя.

Я про то что не корректно сравнивать с "сайтами" и аргументировать тем что "все сайты отправляют". Учетная система не сайт. Ну и могут быть требования безопасности.
39. yarunya 65 23.10.18 08:35 Сейчас в теме
(18) А можно узнать софт, на котором у Вас задачи как на рисунке? Ищу нормальную систему за тикетов...
40. infosoft-v 291 23.10.18 10:05 Сейчас в теме
33. 🅵🅾️🆇 19.03.18 10:38 Сейчас в теме
(15) Обработку однозначно в избраное, чтоб потом оценить идею и покрасивше под себя переписать.

Все сайты, буквально все, отправляют данные в GA и Яндекс.Метрику даже не ставя в известность пользователя.

Для избавления от "жучков" на сайтах давным давно использую Ghostery, для меня это стало столь же обязательной вещью как "правильно" настроенный ролтер и AdBlock. Так что единственное, что могут использовать сайты, это либо в наглую настроенный JS или использовать статистику на основе ссессии бэкэнда, а это уже не "практически все", а "единицы".
24. infosoft-v 291 22.01.18 20:55 Сейчас в теме
(7) Евгения, проверил профайлером время отправки данных. Каждый запрос съедает 0,12 - 0,16 с. На мой взгляд приемлемо.
При проблемах со связью задержки нет. Библиотека корректно обрабатывает эту ситуацию и пишет информацию в ЖР.
Прикрепленные файлы:
8. awk 688 22.01.18 09:50 Сейчас в теме
Про GA знаю с 2009 года, но применять так... Идея определенно новая, по крайней мере для меня...
infosoft-v; +1 Ответить
11. Evil Beaver 5383 22.01.18 10:51 Сейчас в теме
Отличный пример концепции "1С+что-то" (термин от @lustin)
maxopik2; infosoft-v; +2 Ответить
13. gubanoff 45 22.01.18 11:14 Сейчас в теме
(0) Это новый тренд, без сомнения. Спасибо за идею!
maxopik2; infosoft-v; +2 Ответить
14. SunShinne 612 22.01.18 11:39 Сейчас в теме
Круто. Даже не так - КРУТО! + автору!
Sheff; maxopik2; infosoft-v; +3 Ответить
17. acsent 1121 22.01.18 11:58 Сейчас в теме
в безопасном режиме не взлетит
25. infosoft-v 291 22.01.18 21:00 Сейчас в теме
(17)
безопасном

не могли бы вы уточнить сценарий, при котором обработка не будет работать?
Я тестировал на свежей БУХ30 платформа 8.3.10. Все работает штатно.
30. acsent 1121 23.01.18 12:53 Сейчас в теме
(25) В безопасном режиме нет доступа к внешним ресурсам
20. kolya_tlt 11 22.01.18 13:29 Сейчас в теме
очень классная штука! но реализация должна быть следующая: нужно внедрить GA в сайт (интернет-магазин) и в 1С одновременно, чтобы отдел продаж не только видел аналитики и воронку продаж до оформления заказа, а до получения денег через оформление накладных. где разнесение выписок и оформление отгрузок - операции в 1С.
infosoft-v; +1 Ответить
22. infosoft-v 291 22.01.18 14:34 Сейчас в теме
(20) очень правильное замечание. Если передавать одинаковый ИдКлиента из конфигурации и из сайта, то статистика будет объединяться.
Потребуется задействовать другие параметры протокола, но это дело техники.

Отличная идея. Спасибо.
kolya_tlt; +1 Ответить
21. ifilll 22.01.18 14:11 Сейчас в теме
Мечтал встроить сбор статистики в свои доработки/обработки в том числе и для контроля распространения, а то бывало придешь к людям знакомится, садишься за конфу а там бац, и твои наработки.
23. Scorpion4eg 101 22.01.18 14:34 Сейчас в теме
Давно пользуюсь. Очень удобная штука по двум причинам. 1. Позволяет отследить как же все таки пользуются обработкой. 2. Счетчик в реальном времени мотивирует "Этой обработкой все таки пользуются!"
infosoft-v; +1 Ответить
26. Scorpion4eg 101 22.01.18 21:02 Сейчас в теме
Отвечу про параметры an и av.
Их можно видеть и использовать только для мобильного приложения. Вот как это сделать. Создается проект для сайта. Потом добавляется представление - Мобильное приложение. В этом случае надо менять отправку просмотра страниц на отправку просмотра экрана.
А так же представление мобильное приложение позволять отправлять замеры производительности.
Aletar; infosoft-v; +2 Ответить
28. infosoft-v 291 22.01.18 21:15 Сейчас в теме
(26) Андрей, спасибо.
Эти параметры очень важны. Через них я передаю наименование и версию конфигурации в которой работает обработка.
Можно сказать, что с желания видеть эту информацию начался данный проект.
ps. теперь понимаю, что в библиотеке придется переделывать кое что
29. Scorpion4eg 101 22.01.18 21:39 Сейчас в теме
(28) Аналогично) Именно с этих данных начался мой проект, а потом понеслось.
infosoft-v; +1 Ответить
31. a-novoselov 1054 31.01.18 16:49 Сейчас в теме
Может быть офф-топик, но все же спрошу.
А есть возможность в Конфигураторе 1С зогрузить обработку из xml файлов?
32. nixel 597 19.03.18 09:28 Сейчас в теме
(31) через файл - открыть. откроется обычное окно внешней обработки, из него можно будет пересохранить обработку в epf. Ну и пакетный режим запуска конфигуратора тоже никто не отменял.
35. Brawler 405 19.03.18 12:35 Сейчас в теме
В свете появления такого понятия как расширения конфигураций (ну чтобы не херить типовые) логичнее всего сваливать все сообщения для GA в регистр сведений, а уже оттуда регламентом собирать данные и отправлять в GA. Из плюсов основных, не нужен постоянный инет и сбор данных будет наиболее полным, так как даже при отключенном инете данные накапливаются.
36. infosoft-v 291 19.03.18 12:39 Сейчас в теме
Оставьте свое сообщение