Разработка и Конфигурация · 11 мин
1С: как записать в журнал регистрации
Как записать событие в журнал регистрации 1С через ЗаписьЖурналаРегистрации: синтаксис, уровни важности, примеры кода, отбор и просмотр записей.
Журнал регистрации в 1С — это встроенный механизм протоколирования, куда платформа автоматически пишет действия пользователей, ошибки, обмены данными и другие события. Разработчик может дополнять его собственными записями: фиксировать запуск фоновых заданий, результаты интеграций, критичные бизнес-операции и диагностическую информацию, которую негде больше сохранить.
Для записи из встроенного языка используется глобальный метод ЗаписьЖурналаРегистрации(). Он доступен и на сервере, и на клиенте, не требует транзакции и не откатывается при отмене транзакции — это важно понимать, чтобы не засорять журнал записями об операциях, которые фактически не завершились.
Ниже разобран синтаксис метода, уровни важности, практические сценарии, просмотр и фильтрация записей, а также типичные ошибки, из-за которых журнал либо пустует, либо разрастается до неприличных размеров.
Синтаксис метода ЗаписьЖурналаРегистрации
Метод имеет пять параметров, все кроме первого необязательные, но на практике стоит заполнять минимум три:
ЗаписьЖурналаРегистрации(
"Обмен с сайтом.Выгрузка заказов", // Имя события
УровеньЖурналаРегистрации.Информация, // Уровень важности
Метаданные.Документы.ЗаказКлиента, // Объект метаданных
ЗаказСсылка, // Данные (ссылка, значение)
"Выгружено 3 заказа, ответ сервера: 200 OK" // Комментарий
);
Параметр Имя события — строка, по которой потом удобно фильтровать. Рекомендуется иерархический формат через точку: "Интеграция.WMS.ЗагрузкаОстатков". Тогда в отборе по событию можно указать общий префикс и увидеть всю группу.
Параметр Данные принимает ссылку на объект базы (тогда в журнале можно перейти к объекту двойным щелчком), произвольное сериализуемое значение или описание ошибки. Параметр Метаданные связывает запись с объектом конфигурации — это помогает при анализе, но не является обязательным.
Уровни важности и когда какой выбирать
Уровень определяет, как запись отображается и фильтруется. Платформа предоставляет четыре значения перечисления УровеньЖурналаРегистрации:
- Ошибка — сбой операции: исключение, отказ внешнего сервиса, невозможность провести документ. Такие записи смотрят в первую очередь.
- Предупреждение — операция завершилась, но с отклонением: частичная загрузка, устаревший курс валюты, пропущенная строка файла.
- Информация — штатные события: старт и завершение обмена, успешная отправка письма. Основной уровень для бизнес-протоколирования.
- Примечание — отладочные и второстепенные детали. В продуктивных базах этим уровнем часто пренебрегают, чтобы не раздувать журнал.
Правильный выбор уровня критичен для эксплуатации: если все писать с уровнем «Информация», реальные ошибки тонут в потоке. Если весь поток помечать «Ошибка», администратор перестанет реагировать на сигнал.
Как выбрать уровень записи
Запись ошибок из обработчиков исключений
Самый частый сценарий — фиксация исключения в конструкции Попытка...Исключение. Здесь важно писать не краткое, а подробное представление ошибки, иначе в журнал попадёт бессодержательная строка без стека и контекста:
Попытка
ОтправитьПакетНаСервер(Пакет);
Исключение
ИнфоОшибки = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации(
"Интеграция.ОтправкаПакета",
УровеньЖурналаРегистрации.Ошибка,
,
Пакет.Ссылка,
ПодробноеПредставлениеОшибки(ИнфоОшибки));
КонецПопытки;
Функция ПодробноеПредставлениеОшибки() даёт полное описание с местом возникновения, а КраткоеПредставлениеОшибки() — одну строку для показа пользователю. В журнал пишите подробное, пользователю показывайте краткое.
Учтите: если после записи в журнал исключение пробрасывается дальше (ВызватьИсключение) и транзакция откатывается, запись в журнале останется. Это и есть желаемое поведение — след ошибки не должен исчезать вместе с данными.
ЗаписьЖурналаРегистрации("Обмен.ЗагрузкаКурсов", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));Протоколирование фоновых и регламентных заданий
Фоновые задания не имеют интерфейса, поэтому журнал регистрации — зачастую единственный способ понять, что происходило внутри. Полезный шаблон — писать запись о старте, запись о результате с количественными итогами и запись об ошибке при исключении.
Для регламентных заданий платформа сама фиксирует запуск и аварийное завершение, но не знает бизнес-семантики. Запись вида «Обработано 1 240 документов, пропущено 12, длительность 45 с» превращает расследование инцидентов из гадания в чтение протокола.
Ограничение: если регламентное задание выполняется часто (каждую минуту), подробное логирование каждой итерации создаст тысячи записей в день. В таких случаях пишите только итоги при наличии изменений или ошибок, а подробный режим делайте включаемым через константу или параметр задания.
- 1Определите точки: старт, успешное завершение, ветки ошибок
- 2Придумайте иерархическое имя события с префиксом подсистемы
- 3Добавьте ЗаписьЖурналаРегистрации с уровнем Информация на старт и финиш
- 4Оберните рискованный код в Попытка/Исключение и пишите Ошибку с ПодробноеПредставлениеОшибки
- 5В параметр Данные передавайте ссылку на ключевой объект для быстрого перехода
- 6Выполните процедуру и проверьте записи в журнале регистрации с отбором по событию
Просмотр и отбор записей
В режиме «1С:Предприятие» журнал открывается через меню: Администрирование → Обслуживание → Журнал регистрации (в типовых конфигурациях путь может немного отличаться). В конфигураторе — через меню Администрирование → Журнал регистрации.
Кнопка «Отбор» позволяет сузить список по периоду, уровню важности, пользователю, событию (в том числе по подстроке вашего префикса), метаданным и данным. Для анализа своих записей удобнее всего отбор по имени события — именно поэтому единообразие префиксов так важно.
Журнал можно выгрузить в табличный документ или в формате lgd для внешнего анализа. При больших объёмах настройте сокращение журнала: Администрирование → Настройка журнала регистрации — там задаётся глубина хранения и уровни регистрируемых событий.
Как проверить результат
Строка видна при отборе по имени события и текущему времени
Записи нет — проверьте, что код реально выполнился (точка останова или сообщение)
Ошибки помечены значком ошибки, штатные события — информацией
Всё одним уровнем — фильтрация бесполезна
Двойной щелчок по записи открывает связанный объект
Поле данных пустое — ссылка не передавалась
Частые ошибки и ограничения
Первая ошибка — запись в цикле по каждой строке данных. Тысяча строк документа превращается в тысячу записей журнала, что замедляет и запись, и последующий просмотр. Агрегируйте: собирайте проблемные позиции в массив и пишите одну сводную запись.
Вторая ошибка — передача в параметр «Данные» несериализуемых объектов (например, ТаблицаЗначений большого размера) или огромных строк в комментарий. Журнал не предназначен для хранения мегабайтов текста; длинные дампы сохраняйте в файлы или в справочник протоколов, а в журнал пишите ссылку.
Третья ошибка — запись с клиента в массовых операциях. Каждый вызов с тонкого клиента идёт на сервер отдельным обращением. Если логирование нужно на клиенте, накапливайте записи и отправляйте пакетом одним серверным вызовом.
Ещё одно ограничение: журнал регистрации не заменяет полноценный аудит. Он хранится ограниченный срок (по настройке сокращения), его формат меняется между версиями платформы, а доступ к нему есть не у всех пользователей. Для юридически значимого протокола действий используйте версионирование объектов или отдельные регистры сведений.
FAQ
Почему моя запись не появляется в журнале регистрации?
Чаще всего код просто не выполняется: проверьте, что процедура реально вызывается (точка останова или Сообщить). Также убедитесь, что в отборе журнала не установлены фильтры по уровню или пользователю, скрывающие запись, и что смотрите журнал той же информационной базы.
Можно ли записать в журнал регистрации с клиента?
Да, метод доступен и на клиенте, но каждый вызов — это обращение к серверу. Для разовых событий это допустимо, для массовых — накапливайте данные в массив и передавайте одним серверным вызовом, где и выполняйте запись.
Как посмотреть журнал регистрации обычному пользователю без конфигуратора?
В режиме «1С:Предприятие» через раздел «Администрирование» — «Журнал регистрации». У пользователя должны быть соответствующие права; в типовых конфигурациях доступ обычно есть у администраторов и может настраиваться профилями групп доступа.
Чем отличаются КраткоеПредставлениеОшибки и ПодробноеПредставлениеОшибки?
Краткое — одна строка с сутью ошибки, удобная для показа пользователю. Подробное включает описание, модуль и строку кода, причину и вложенные ошибки. В журнал регистрации следует писать подробное представление, иначе расследовать инцидент будет не по чему.
Как ограничить рост файла журнала регистрации?
Через настройку журнала (в конфигураторе или в режиме Предприятия) задайте сокращение: хранить события за последние N дней либо не регистрировать события низкой важности. Дополнительно сократите собственное логирование — уберите записи из циклов и частых заданий.
Можно ли использовать журнал регистрации для аудита действий пользователей?
Частично: платформа сама фиксирует входы, изменения данных и отказы в доступе. Но журнал хранится ограниченное время и не даёт удобной аналитики. Для полноценного аудита с отчётами и длительным хранением используйте версионирование объектов или отдельные регистры протоколирования.
Что важно запомнить
Запись делается методом ЗаписьЖурналаРегистрации с осмысленным именем события, правильным уровнем важности и подробным текстом ошибки. Не пишите в цикле и не логируйте частые задания без фильтра. Проверяйте результат отбором по имени события и настройте сокращение журнала.