Рассмотрим распространенную проблему: справочник внешних отчетов и обработок со временем разрастается до огромных размеров, наполняется дублями и устаревшими версиями. Возникает задача навести порядок, а для этого нужно понять, какие из сотен или тысяч элементов справочника реально используются сотрудниками. Проблема усложняется тем, что доступ к отчету может происходить разными способами: интерактивное открытие пользователем, программный вызов из другой обработки или даже прямой запрос к его данным.
Проанализируем несколько подходов к сбору статистики использования, от самых простых до более сложных и комплексных.
Этот способ основан на внесении небольших изменений в конфигурацию, чтобы фиксировать действия пользователей. Он не требует анализа системных журналов и дает достаточно хорошее представление об интерактивной работе.
Вариант А: Фиксация выбора из списка
Самый быстрый способ — добавить код в форму списка справочника внешних отчетов. Мы можем отслеживать событие выбора элемента пользователем.
Порядок действий:
ПротоколИспользованияВнешнихОбъектов) с измерениями: Пользователь (тип СправочникСсылка.Пользователи), ВнешнийОтчет (тип СправочникСсылка.ВнешниеОтчетыИОбработки) и ресурсом ДатаПоследнегоИспользования (тип Дата).ВнешниеОтчетыИОбработки.СписокВыбор и добавьте в него код для записи в регистр.Пример кода:
Процедура СправочникСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
// Создаем запись в регистре сведений для фиксации события
Запись = РегистрыСведений.ПротоколИспользованияВнешнихОбъектов.СоздатьМенеджерЗаписи();
Запись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
Запись.ВнешнийОтчет = ВыбраннаяСтрока; // ВыбраннаяСтрока содержит ссылку на элемент справочника
Запись.ДатаПоследнегоИспользования = ТекущаяДата();
// Пытаемся записать. Если запись с такими измерениями уже есть, она обновится
Попытка
Запись.Записать();
Исключение
Сообщить("Не удалось записать в протокол использования: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Плюсы: Просто и быстро реализуется.
Минусы: Неточность. Событие сработает, даже если пользователь выбрал отчет, но передумал и не стал его открывать или формировать. Не отслеживаются программные вызовы.
Вариант Б: Фиксация открытия формы или формирования отчета
Более точный метод — фиксировать не выбор, а реальное действие, например, открытие формы отчета. Это требует модификации общего модуля, который отвечает за запуск внешних обработок, или изменения каждой обработки в отдельности.
Если в вашей конфигурации есть единая процедура для открытия внешних отчетов, можно добавить код логирования в нее. Если нет, придется модифицировать каждую обработку, что очень трудоемко.
Этот метод позволяет автоматизировать добавление кода для логирования во все внешние отчеты, не редактируя каждый вручную.
Порядок действий:
ВнешниеОтчетыИОбработки во внешние файлы (.epf) на диск..epf файла на составные части: тексты модулей, макеты, формы.ПриОткрытии) строку кода для логирования..epf.Плюсы: Позволяет добиться высокой точности сбора статистики, так как код встраивается непосредственно в логику отчета.
Минусы: Высокая сложность и риски. Требуются навыки автоматизации и глубокое понимание структуры файлов .epf. Любая ошибка в скрипте может повредить отчеты.
Технологический журнал — мощный инструмент платформы 1С, который позволяет отслеживать практически все события, включая обращения к базе данных. С его помощью можно отловить любое чтение данных из справочника внешних отчетов.
Порядок действий:
_Reference123).logcfg.xml) для отслеживания событий DBMSSQL.Пример настройки logcfg.xml:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\logs\1c" history="4">
<event>
<eq property="Name" value="DBMSSQL"/>
<like property="Sql" value="%_Reference123%"/> <!-- Укажите имя вашей таблицы -->
</event>
<property name="all"/>
</log>
</config>
Плюсы: Отслеживает абсолютно все обращения к данным справочника, включая программные вызовы и прямые запросы, которые невозможно отловить другими способами.
Минусы: Логи ТЖ имеют большой объем и сложны для анализа. Потребуются специальные инструменты для парсинга логов. Сопоставить запись в логе с конкретным пользователем и его действием — нетривиальная задача.
Иногда самый эффективный метод — не технический, а организационный. Он может быть радикальным, но дает стопроцентно верный результат.
Порядок действий:
Через некоторое время (например, месяц) у вас будет точный список действительно необходимых отчетов. Все, что осталось в архиве, — кандидаты на удаление.
Плюсы: Максимальная точность. Позволяет не только собрать статистику, но и пообщаться с пользователями и выявить их потребности.
Минусы: Может вызвать временные неудобства и негатив со стороны пользователей. Требует высокой оперативности от IT-службы.
В итоге, выбор метода зависит от ваших ресурсов и требуемой точности. Можно начать с простого логирования выбора из списка (Решение 1), чтобы получить общую картину, а затем применить организационный подход (Решение 4) для финальной "зачистки" и наведения идеального порядка.