Изменяем запись в журнале регистрации

20 апреля 2013

Небольшая задача

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

Запись в журнале регистрации

На скриншоте выше время регистрации записи составляет '10:38:39'. И вот, по причинам, которые мы не будем описывать в статье, администратор попросил нас изменить время на '09:00:00'. Чтож, задача поставлена - давайте выполним её!

Выполняем

Для начала стоит упомянуть о способе хранения журнала регистрации платформой 1С:Предприятие 8.x. Вне зависимости от режима работы информационной базы (файловый или клиент-серверный), данные журнала сохраняются во внешний файл. Для файловой базы журнал регистрации сохраняется в файле "*.lgp", находящегося в под папке "1Cv8Log" каталога информационной базы. Точно имя файла зависит от периода, за который сохраняются данные в журнал.

Каталог с файлами журнала регистрации

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

Каталог сервера 1С:Предприятия с файлами журнала регистрации

Именно для клиент-серверного варианта работы рассмотрим решение поставленной задачи. Для начала откроем файл журнала в обычном текстовом редакторе.

Найденная запись журнала регистрации в файле

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

Все, что нам остается - это изменить дату этого события. На скриншоте ниже Вы можете видеть результат:

Результат изменения файла журнала регистрации

Теперь, если мы откроем журнал регистрации средствами платформы, то увидим измененную запись:

Результаты изменения файла журнала регистрации в режиме просмотра 1С:Предприятия

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

Внимание

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

Остановка службы сервера 1С:ПредприятияС этой точки зрения журнал регистрации весьма надежный. 

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

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

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


comments powered by Disqus