В этой статье я разберу особенности работы с журналом регистрации. Разберем, для каких целей нужен журнал регистрации.
Очень часто возникают ситуации, когда необходимо разобрать что и когда происходило в базе данных 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 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 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