Способы фиксации использования справки

24.08.26

Разработка - Механизмы платформы 1С

Как узнать - а хоть кто-нибудь читает справку, которую мы с таким трудом и усилием подготовили и встроили в свое решение. Статистика использования F1.

У меня на работе возник спор - нужна ли справка в конфигурации. Если честно - то я утверждал, что ее никто читать не станет, но руководство настаивало. Ну а раз есть спор - то надо и как-то определить победителя. Задумался я, как же можно собрать статистику вызова справочных материалов (F1) - где, в каких формах, кто и сколько раз....

 

Попытка 1.

Самый простой и очевидный вариант - попытаться переопределить событие, выполняемое платформой по команде F1. Платформа без проблем позволяет выполнить такую настройку (назначить данную горячую клавишу на свою команду на форме). Но, во-первых - свою команду придется сделать на каждой форме, где мы хотим собрать статистику, во вторых - работает крайне странно и нестабильно. Фактически на платформе 8.3.24 это работает только если фокус (активный элемент) - именно данная кнопка. По факту - никогда.

 

Попытка 2.

Что такой справка в 1С - фактически это поле HTML документа. Попробуем этим воспользоваться.

Я добавил следующий код в текст HTML справки:

<!-- Блок для фиксации статистики -->

<a href="ВнешняяСсылкаБазы#УникальныйПризнак#РазделCправки" id="stats" style="display: none">Статистика</a>

<script>

   if (window == top)

        {
            document.getElementById("stats").click();
        }

   else {  }

</script>

<!-- Блок для фиксации статистики -->

В данном коде размещен элемент - ссылка, он не отображается, но при загрузке страницы вызывается переход (нажатие) данной ссылки. Благодаря новым событиям, появившимся в платформе 8.3.18 у нас появилась возможность перехвата такого клика в стандартном методе "ОбработкаПереходаПоНавигационнойСсылке" модуля модуля клиентского приложения. 

Здесь:

ВнешняяСсылкаБазы - адрес текущей базы. Можно получить, выполнив команду «Получить ссылку» у любого объекта и установив признак внешняя ссылка.

 

 

УникальныйПризнак – любой уникальный признак, который позволит отличить переход по ссылке в целях статистики от прочих переходов.

Раздел справки – текст, который мы зафиксируем в статистике.

Пример алгоритма перехвата события:

Процедура ОбработкаПереходаПоНавигационнойСсылке(ДанныеПереходаПоНавигационнойСсылке, СтандартнаяОбработка)
	БлокПроверки = "e1cib/list/УникальныйПризнак#";
	
	Если Найти(ДанныеПереходаПоНавигационнойСсылке.ОтносительнаяНавигационнаяСсылка, БлокПроверки) Тогда
		
		СтандартнаяОбработка = Ложь;    
		
		РазделСправки = СтрЗаменить(ДанныеПереходаПоНавигационнойСсылке.ОтносительнаяНавигационнаяСсылка, БлокПроверки, "");
		
		Если НЕ ПустаяСтрока(РазделСправки) Тогда
			
			//Фиксируем статистику
			
		КонецЕсли;
		
	КонецЕсли;

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

Если Ваши пользователи работают только в тонком клиенте - то можно использовать данный вариант, но как оказало, в веб клиенте так к сожалению не работает, так как для веб клиента ссылка на базу будет http:// а  данная ссылка в первую очередь ассоциирована с браузером. В итоге произойдет попытка перехода по ссылке, и перехват не сработает.

 

Попытка 3.

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

Вроде бы все очевидно, но возникла проблема. Размещенный на странице справки скрипт отсутствовал в итоговой странице при работе в режиме предприятия.

Опытным путем выяснилось, что при добавлении любой ссылки в html скрипт становился доступен (собственно в попытке номер 2 мы поэтому с данной проблемой и не столкнулись).

Не совсем понимаю причину такого поведения платформы, но главное это позволило решить задачу.

Итог - просто скрипт - который при загрузке страницы отправляет данные на http сервис:

<script> 
     
  if (window == top)
    { document.getElementById("stats").click(); }
  else {
    var el = document.getElementById("stats").getAttribute("name-id"); 
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'ИмяПубликации', true);
    xhr.send([el]); 
  }                
 
</script>

 

Финал.

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

 

А Вы добавляете в свои решения справку или обходитесь только документацией и базой знаний?

Вступайте в нашу телеграмм-группу Инфостарт

Справка статистика подсказка документация поддержка пользователей

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    42214    TitanLuchs    109    

152

Работа с интерфейсом WEB-интеграция Механизмы платформы 1С Бесплатно (free)

Веб-интерфейсы повышают качество внешнего вида приложений 1С, предсказуемы с точки зрения верстки, позволяют организовать удобные и высокопроизводительные рабочие места для пользователей. Расскажем об особенностях разработки веб-интерфейсов на React внутри 1С, двустороннем взаимодействии 1С и JavaScript, а также сборке веб-приложения в одностраничный файл.

19.06.2025    15955    zeegin    15    

61

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    23942    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    30125    user2122906    10    

67

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    50355    user2122906    12    

63

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    43038    dsdred    108    

155

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

23.06.2024    37701    bayselonarrend    22    

179
Для отправки сообщения требуется регистрация/авторизация