К статье
Практический материал

Разработка и Конфигурация · 11 мин

1С: как записать в журнал регистрации

Как записать событие в журнал регистрации 1С через ЗаписьЖурналаРегистрации: синтаксис, уровни важности, примеры кода, отбор и просмотр записей.

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

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

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

Синтаксис метода ЗаписьЖурналаРегистрации

Метод имеет пять параметров, все кроме первого необязательные, но на практике стоит заполнять минимум три:

ЗаписьЖурналаРегистрации(

"Обмен с сайтом.Выгрузка заказов", // Имя события

УровеньЖурналаРегистрации.Информация, // Уровень важности

Метаданные.Документы.ЗаказКлиента, // Объект метаданных

ЗаказСсылка, // Данные (ссылка, значение)

"Выгружено 3 заказа, ответ сервера: 200 OK" // Комментарий

);

Параметр Имя события — строка, по которой потом удобно фильтровать. Рекомендуется иерархический формат через точку: "Интеграция.WMS.ЗагрузкаОстатков". Тогда в отборе по событию можно указать общий префикс и увидеть всю группу.

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

Уровни важности и когда какой выбирать

Уровень определяет, как запись отображается и фильтруется. Платформа предоставляет четыре значения перечисления УровеньЖурналаРегистрации:

  • Ошибка — сбой операции: исключение, отказ внешнего сервиса, невозможность провести документ. Такие записи смотрят в первую очередь.
  • Предупреждение — операция завершилась, но с отклонением: частичная загрузка, устаревший курс валюты, пропущенная строка файла.
  • Информация — штатные события: старт и завершение обмена, успешная отправка письма. Основной уровень для бизнес-протоколирования.
  • Примечание — отладочные и второстепенные детали. В продуктивных базах этим уровнем часто пренебрегают, чтобы не раздувать журнал.

Правильный выбор уровня критичен для эксплуатации: если все писать с уровнем «Информация», реальные ошибки тонут в потоке. Если весь поток помечать «Ошибка», администратор перестанет реагировать на сигнал.

Маршрут решения

Как выбрать уровень записи

Возникло исключение, операция не выполненаУровень Ошибка, в комментарий — ОписаниеОшибки() или ПодробноеПредставлениеОшибки
Операция завершена, но часть данных пропущена или использованы значения по умолчаниюУровень Предупреждение с перечислением проблемных позиций
Штатное начало или завершение процедуры, итоговая статистикаУровень Информация
Технические детали для разработчика, нужные только при расследованииУровень Примечание и по возможности отключаемый флаг логирования

Запись ошибок из обработчиков исключений

Самый частый сценарий — фиксация исключения в конструкции Попытка...Исключение. Здесь важно писать не краткое, а подробное представление ошибки, иначе в журнал попадёт бессодержательная строка без стека и контекста:

Попытка

ОтправитьПакетНаСервер(Пакет);

Исключение

ИнфоОшибки = ИнформацияОбОшибке();

ЗаписьЖурналаРегистрации(

"Интеграция.ОтправкаПакета",

УровеньЖурналаРегистрации.Ошибка,

,

Пакет.Ссылка,

ПодробноеПредставлениеОшибки(ИнфоОшибки));

КонецПопытки;

Функция ПодробноеПредставлениеОшибки() даёт полное описание с местом возникновения, а КраткоеПредставлениеОшибки() — одну строку для показа пользователю. В журнал пишите подробное, пользователю показывайте краткое.

Учтите: если после записи в журнал исключение пробрасывается дальше (ВызватьИсключение) и транзакция откатывается, запись в журнале останется. Это и есть желаемое поведение — след ошибки не должен исчезать вместе с данными.

bsl
ЗаписьЖурналаРегистрации("Обмен.ЗагрузкаКурсов", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));

Протоколирование фоновых и регламентных заданий

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

Для регламентных заданий платформа сама фиксирует запуск и аварийное завершение, но не знает бизнес-семантики. Запись вида «Обработано 1 240 документов, пропущено 12, длительность 45 с» превращает расследование инцидентов из гадания в чтение протокола.

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

Порядок добавления логирования в процедуру
  1. 1
    Определите точки: старт, успешное завершение, ветки ошибок
  2. 2
    Придумайте иерархическое имя события с префиксом подсистемы
  3. 3
    Добавьте ЗаписьЖурналаРегистрации с уровнем Информация на старт и финиш
  4. 4
    Оберните рискованный код в Попытка/Исключение и пишите Ошибку с ПодробноеПредставлениеОшибки
  5. 5
    В параметр Данные передавайте ссылку на ключевой объект для быстрого перехода
  6. 6
    Выполните процедуру и проверьте записи в журнале регистрации с отбором по событию

Просмотр и отбор записей

В режиме «1С:Предприятие» журнал открывается через меню: Администрирование → Обслуживание → Журнал регистрации (в типовых конфигурациях путь может немного отличаться). В конфигураторе — через меню Администрирование → Журнал регистрации.

Кнопка «Отбор» позволяет сузить список по периоду, уровню важности, пользователю, событию (в том числе по подстроке вашего префикса), метаданным и данным. Для анализа своих записей удобнее всего отбор по имени события — именно поэтому единообразие префиксов так важно.

Журнал можно выгрузить в табличный документ или в формате lgd для внешнего анализа. При больших объёмах настройте сокращение журнала: Администрирование → Настройка журнала регистрации — там задаётся глубина хранения и уровни регистрируемых событий.

Контрольные точки

Как проверить результат

Запись появилась в журнале
Норма

Строка видна при отборе по имени события и текущему времени

Тревожный признак

Записи нет — проверьте, что код реально выполнился (точка останова или сообщение)

Уровень важности
Норма

Ошибки помечены значком ошибки, штатные события — информацией

Тревожный признак

Всё одним уровнем — фильтрация бесполезна

Переход к объекту
Норма

Двойной щелчок по записи открывает связанный объект

Тревожный признак

Поле данных пустое — ссылка не передавалась

Частые ошибки и ограничения

Первая ошибка — запись в цикле по каждой строке данных. Тысяча строк документа превращается в тысячу записей журнала, что замедляет и запись, и последующий просмотр. Агрегируйте: собирайте проблемные позиции в массив и пишите одну сводную запись.

Вторая ошибка — передача в параметр «Данные» несериализуемых объектов (например, ТаблицаЗначений большого размера) или огромных строк в комментарий. Журнал не предназначен для хранения мегабайтов текста; длинные дампы сохраняйте в файлы или в справочник протоколов, а в журнал пишите ссылку.

Третья ошибка — запись с клиента в массовых операциях. Каждый вызов с тонкого клиента идёт на сервер отдельным обращением. Если логирование нужно на клиенте, накапливайте записи и отправляйте пакетом одним серверным вызовом.

Типичные ошибки
01
Запись внутри цикла по строкам — журнал раздувается, операция тормозит; пишите сводную запись
02
КраткоеПредставлениеОшибки вместо подробного — в журнале нет контекста для расследования
03
Отсутствие имени события или случайные имена — невозможно построить отбор
04
Логирование каждого запуска частого регламентного задания без фильтра — тысячи пустых записей в день
05
Передача в Данные больших несериализуемых структур — ошибки записи и разрастание журнала

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

FAQ

Почему моя запись не появляется в журнале регистрации?

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

Можно ли записать в журнал регистрации с клиента?

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

Как посмотреть журнал регистрации обычному пользователю без конфигуратора?

В режиме «1С:Предприятие» через раздел «Администрирование» — «Журнал регистрации». У пользователя должны быть соответствующие права; в типовых конфигурациях доступ обычно есть у администраторов и может настраиваться профилями групп доступа.

Чем отличаются КраткоеПредставлениеОшибки и ПодробноеПредставлениеОшибки?

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

Как ограничить рост файла журнала регистрации?

Через настройку журнала (в конфигураторе или в режиме Предприятия) задайте сокращение: хранить события за последние N дней либо не регистрировать события низкой важности. Дополнительно сократите собственное логирование — уберите записи из циклов и частых заданий.

Можно ли использовать журнал регистрации для аудита действий пользователей?

Частично: платформа сама фиксирует входы, изменения данных и отказы в доступе. Но журнал хранится ограниченное время и не даёт удобной аналитики. Для полноценного аудита с отчётами и длительным хранением используйте версионирование объектов или отдельные регистры протоколирования.

Итог

Что важно запомнить

Запись делается методом ЗаписьЖурналаРегистрации с осмысленным именем события, правильным уровнем важности и подробным текстом ошибки. Не пишите в цикле и не логируйте частые задания без фильтра. Проверяйте результат отбором по имени события и настройте сокращение журнала.