Работа с журналом регистрации

В этой статье я разберу особенности работы с журналом регистрации. Разберем, для каких целей нужен журнал регистрации.

Очень часто возникают ситуации, когда необходимо разобрать что и когда происходило в базе данных 1С, и кто за это все отвечает. Например, кто-то пометил на удаление нужный документ, или наоборот отменил проведение и провел ненужный документ. Для этих целей служит журнал регистрации, который отслеживает все события, которые происходили с базой. Это события входа-выхода в 1С: Предприятие (Конфигуратор), создание, изменение и удаление объектов, и т.д. В тоже время журнал регистрации не хранит историю работы с базой, если Вы поменяете в документе одного контрагента на другого, то не увидите в журнале, какой был раньше контрагент. Там будет информация о том, что документ был изменен.

Имейте в виду, что журнал регистрации не хранится в базе данных. Если Вы будете выгружать конфигурацию при помощи dt файла, то его в этой выгрузке не будет. Сам журнал регистрации хранится в виде файла с расширение *.lgd, когда 1С: Предприятие работает под платформой версии 8.3.5 и выше, и в виде файла *.lgf, когда 1С: Предприятие использует платформу младше версии 8.3.5 (или версию 8.3.5, если не произвели конвертацию).

Сам файл хранится в папке 1Cv8Log каталога базы данных (для файлового варианта)

Доступ к журналу регистрации можно получить как из конфигуратора 1С, так и из 1С: Предприятия. Для того что бы у пользователя был доступ к журналу регистрации, необходимо, что бы для какой-то его роли было установлено право «Журнал регистрации»

В конфигураторе администратор или внедренец может настроить различные варианты сохранения данных в журнал регистрации. Для этого нужно зайти в настройки журнала.

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

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

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

Если Вы разработчик (или хотите им стать), то Вам будет интересно, каким можно фиксировать события в журнале регистрации. Для этого служит метод глобального контекста ЗаписьЖурналаРегистрации, который имеет следующий синтаксис:

ЗаписьЖурналаРегистрации(<ИмяСобытия>, <Уровень>, <ОбъектМетаданных>, <Данные>, <Комментарий>, <РежимТранзакции>)

Где:

<ИмяСобытия> — обязательный параметр, тип Строка. Можно разделять события точкой, для иерархического отображения. Например: «Обработка проведения.Провели по РН», «Обработка проведения.Провели по РС», «Обработка проведения.Провели по РБ».

<Уровень> — необязательный параметр, тип УровеньЖурналаРегистрации, с его помощью можно указывать, что за событие у нас произошло: Ошибка, Предупреждение, Информация и Примечание:

  • УровеньЖурналаРегистрации.Ошибка
  • УровеньЖурналаРегистрации.Информация
  • УровеньЖурналаРегистрации.Предупреждение
  • УровеньЖурналаРегистрации.Примечание

<ОбъектМетаданных> — необязательный параметр ,можно указать объект метаданных, к которому будет привязано событие. Например

  • Метаданные.Документы.ПриходТовара
  • Метаданные.Справочники.Контрагенты

<Данные> — необязательный параметр, любая ссылка, можно указать данные, с которыми связанно событие.

<Комментарий> — произвольный комментарий.

<РежимТранзакции> — параметр типа РежимТранзакцииЗаписиЖурналаРегистрации. Данный тип имеет два значения: Независимая – запись будет происходить независимо от текущей транзакции. Транзакционная – запись зависит от текущей транзакции.

Покажем на примере как работать с журналом регистрации. Пример будет на демонстрационной конфигурации «Управляемое приложение 1С». При проведении документа «Приход товаров» после записи движения по регистрам, информацию об этой записи я буду фиксировать в журнале регистрации.

 

Процедура ОбработкаПроведения(Отказ, Режим)

    // Создание движений в регистре накопления ТоварныеЗапасы
   
Движения.ТоварныеЗапасы.Записывать = Истина;
    Для каждого
ТекСтрокаТовары Из Товары Цикл

        Движение = Движения.ТоварныеЗапасы.Добавить();
       
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
       
Движение.Период = Дата;
       
Движение.Товар = ТекСтрокаТовары.Товар;
       
Движение.Склад = Склад;
       
Движение.Количество = ТекСтрокаТовары.Количество;

    КонецЦикла;

    //НИИ 2017-04-19 + фиксируем информаци в ЖР о движении по РН Товарные запасы

    ЗаписьЖурналаРегистрации(«Проведение документа приход товара. Запись в РН Товарные запасы»,УровеньЖурналаРегистрации.Информация,
   
Метаданные.Документы.ПриходТовара,ЭтотОбъект.Ссылка,,РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);

    //НИИ —

    // Создание движения в регистре накопления Взаиморасчеты
   
Движения.Взаиморасчеты.Записывать = Истина;
   
Движение = Движения.Взаиморасчеты.Добавить();
   
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
   
Движение.Период = Дата;
   
Движение.Контрагент = Поставщик;
   
Движение.Валюта = Валюта;

    Если Валюта.Пустая() Тогда

        Движение.Сумма = Товары.Итог(«Сумма»);

    Иначе

        Курс = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура(«Валюта», Валюта)).Курс;

        Если Курс = 0 Тогда
           
Движение.Сумма = Товары.Итог(«Сумма»);
        Иначе
           
Движение.Сумма = Товары.Итог(«Сумма») / Курс;
        КонецЕсли;

    КонецЕсли;

    //НИИ 2017-04-19 + фиксируем информаци в ЖР о движении по РН Взаиморасчеты
   
ЗаписьЖурналаРегистрации(«Проведение документа приход товара. Запись в РН Взаиморасчеты»,УровеньЖурналаРегистрации.Информация,
   
Метаданные.Документы.ПриходТовара,ЭтотОбъект.Ссылка,,РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);

    //НИИ —

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


 

Проведем парочку документов «Приход товаров» и посмотрим на наши записи в журнале регистрации.

Обратите внимание, в журнале мы поставили режим транзакции – Транзакционная. И сообщения о записях идут после информации о проведении документа. Если же мы изменим режим на  — Независимая, то картинка будет следующей.

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

Я не буду рассматривать все варианты отборов, потому что многие из них очевидно понятны (например, отбор по пользователям или по дате). Рассмотрю лишь некоторые.

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

Причем события могут быть как типовые, так и те, что разработчики указали в методе ЗаписьЖурналаРегистрации. Эти события имеют иерархическую структуру. В методе ЗаписьЖурналаРегистрации эта иерархия определяется с помощью точки.

Отберем записи только по нашим событиям.

 

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

Посмотрим на события в журнале регистрации для этого документа

Так же можно получить события какого-то конкретного объекта метаданных.

Например, получим все события для всех документов «Приход товара»

И еще один полезный отбор – по пользователю. Позволяет узнать делал ли что какой пользователь с объектами базы данных.

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

 
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

7 + шестнадцать =