Сокращение журнала регистрации (ХДЖ_СокращениеЖурналаРегистрации)

Содержание

Введение

О том, что такое журнал регистрации в 1С, написано уже не мало. Повторяться не буду.
Кто не в курсе, тот с помощью поисковика может найти массу информации на эту тему. Вот, например, хотя бы тут.

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

И это не является проблемой, пока файл журнала регистрации не вырастает до десятков, а иногда и сотен Гигабайт.
Особенно ощущается вся трагичность ситуации, когда он вырастает до таких размеров за относительно короткий срок (например, за месяц).

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

На просторах ИНета достаточно много решений, которые позволяют, применяя упомянутые методы платформы, сокращать журнал регистрации в полностью или частично автоматическом режиме.
Например, на разработку данной библиотеки повлияло описанное в этой статье решение.
В нём мне не понравилось то, что для автоматизации процесса нужно прибегать к планировщику Windows (внешнему по отношению к 1С средству). А мне хотелось сделать все сугубо в рамках 1С.

Описание

Предлагаемый механизм сокращения журнала регистрации (далее Механизм) встраивается в любую конфигурацию на управляемых формах.

Он позволяет:

Все объекты Механизма собраны в одну подсистему ХДЖ_СокращениеЖурналаРегистрации, которая отображается в интерфейсе, и позволяет получить доступ к форме настройки параметров Механизма, а также к форме просмотра архива записей журнала регистрации.

Подсистема механизма сокращения журнала регистрации

Также, в конфигурации присутствует роль ХДЖ_СокращениеЖурналаРегистрации ("Сокращение журнала регистрации (ХДЖ)"), которую необходимо назначить пользователям, которым должны быть доступны настройка и использование Механизма.

Настройка параметров

Форма настройки параметров механизма выглядит следующим образом.

Настройка параметров механизма сокращения журнала регистрации

Главным параметром Механизма является "Количество дней в журнале регистрации".
С помощью этого параметра можно задать глубину хранения записей в журнале регистрации.
Если в этом параметре указать 0, то при выполнении сокращения журнала регистрации, из него будут удалены все записи.
Если в нем указать 1, то будут оставлены только записи текущего дня, а остальные записи будут удалены.
При значении 2 будут оставлены только сегодняшние и вчерашние записи.
И т.д.

С помощью настроек группы "Параметры архивирования" можно указать Механизму, как он должен архивировать удаляемые записи журнала регистрации.

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

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

Тут следует обратить внимание на два момента:

  1. "относящиеся к данной информационной базе файлы" - это файлы, имя которых начинается с имени базы, как оно задано в строке подключения. Для серверной базы оно совпадает с именем базы на сервере 1С. А для файловой базы используется имя последнего каталога в пути к файлам базы.
  2. "дата создания которых старше указанного количества дней" - именно дата создания, а не дата, за которую выгружены записи в файл.
    Т.е. если Механизм впервые был запущен вчера, с параметром архивирования удаляемых записей в отдельные файлы для каждого дня, то не смотря на то, что он может создать файлы с записями журнала регистрации годичной давности, возраст всех этих файлов будет считаться равным 1 дню (дата создания равна вчерашней дате).
    И таким образом, если в параметре "Удалять файлы архива старше ... дней" указано значение 2 дня, то при запуске Механизма сегодня, все эти файлы с записями годичной давности удалены НЕ будут (т.к. они созданы менее 2-х дней назад).

Затем механизм сохранит подлежащие удалению записи журнала регистрации во внешний(е) файл(ы) в указанный в параметре "Путь к архиву журнала регистрации" каталог.

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

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

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

С помощью галочки "Включить" (и ссылки с расписанием справа от нее) можно включить и настроить расписание запуска регламентного задания, которое будет выполнять все описанные выше действия по сокращению журнала регистрации.

Если нужно запустить Механизм "прямо сейчас" (не дожидаясь запуска регламентного задания), то можно воспользоваться кнопкой "Записать и выполнить".

Просмотр архива записей журнала регистрации

Обработка, с помощью которой Механизм позволяет просматривать записи в архивных файлах журнала регистрации, является взятой из платформы стандартной обработкой "Журнал регистрации" (StandardEventLog), которая переделана под работу с внешними файлами в каталоге архива журнала регистрации, а также, дополнена функциональностью сбора статистики по файлам архива журнала регистрации.

Интерфейс обработки разделен на три закладки.

Закладка "Выбор файлов"

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

Закладка Выбор файлов обработки просмотра архива журнала регистрации

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

Если галочка "Обрабатывать файлы только текущей ИБ" включена, то в таблице отображаются только те файлы архива журнала регистрации, которые относятся к текущей информационной базе (см. выше).

В таблице отображаются обнаруженные в указанном каталоге файлы архива журнала регистрации.

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

Закладка "Просмотр записей"

На закладке "Просмотр записей" можно посмотреть записи выбранных на закладке "Выбор файлов" архивных файлов.

Ее функциональность является точной копией функциональности стандартной платформенной обработки "Журнал регистрации" (StandardEventLog), за исключением того, что элементы управления стандартной обработки, которые позволяют ограничить выборку записей журнала регистрации последними N записями, заменены элементами управления, которые позволяют просматривать записи, с разбивкой на страницы по N записей.

Закладка Просмотр записей обработки просмотра архива журнала регистрации

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

Т.к. при больших объемах архивных файлов эта процедура может быть достаточно долгой, то для более быстрого перехода к интересующей пользователя странице, можно отключить эту галочку, и тогда для обновления данных в таблице, нужно будет явно нажать кнопку "Обновить (F5)".

Закладка "Сбор статистики"

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

Закладка Сбор статистики обработки просмотра архива журнала регистрации

В текущей версии Механизма данная функциональность реализована в "зачаточном" виде.
А именно, собирается следующая информация:

  • Общее количество записей и период дат этих записей.
  • Количество записей по каждому из уровней журнала регистрации (Информация, Предупреждение, Ошибка, Примечание), отображаемое в отсортированном по убыванию количества виде.
  • 5 первых мест в рейтинге наиболее часто встречающихся событий (с указанием их количества).
  • 5 первых мест в рейтинге наиболее часто встречающихся комментариев (с указанием их количества).

Вся собранная информация выводится в виде текста в специально отведенное для этого поле.

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

Поставка

Механизм сокращения журнала регистрации поставляется в виде файла конфигурации, содержащего объекты механизма (подсистема ХДЖ_СокращениеЖурналаРегистрации).

Также в данном файле конфигурации присутствует не включенная в подсистему ХДЖ_СокращениеЖурналаРегистрации роль Демо_Запуск1С, которая нужна для запуска базы, созданной на чистой конфигурации Механизма.
Соответственно, эту роль НЕ нужно переносить в конфигурацию, с которой будет объединяться конфигурация Механизма.

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

Системные требования

Разработка и основное тестирование Механизма велись на платформе 1С версии 8.3.9.2309 (64 бит), в файловой и клиент-серверной среде.
В качестве СУБД клиент-серверной среды использовалась MS SQL 2014.

Также проводилось тестирование работы Механизма в файловой и клиент-серверной среде на 64-битной платформе следующих версий:

Первые тестовые версии Механизма, также, тестировались на 32-битной клиент-серверной платформе 8.3.9.2309 с журналом регистрации в 50+ ГБ.
При этом было обнаружено, что попытка выгрузить в архив (или просто удалить без выгрузки в архив) записи журнала регистрации на более, чем 2 ГБ - валит процесс сервера 1С с текстом "Недостаточно памяти".
К сожалению, проверить финальную версию Механизма в этих условиях стало для меня не возможным.
Поэтому, на всякий случай, рекомендую использовать механизм на 64-битной платформе. А при использовании его на 32-битной платформе, помнить об ограничении памяти для процесса, в котором выполняется Механизм.

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

Для объединения Механизма с имеющейся конфигурацией

Версия платформы 1С должна быть не ниже 8.3.9.
Режим совместимости конфигурации должен быть не ниже 8.3.5.

Лицензия

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

Файлы для скачивания

Библиотека версии 1.0.01.000:

Файл конфигурации (формата 8.3.9.2309) (141 КБ)