Запись в журнал регистрации 1С: где смотреть и как писать свои события

· 9 мин

Содержание

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

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

Что хранит журнал и откуда берутся записи

Журнал регистрации — это служебный лог базы. Он живёт отдельно от самой базы, в каталоге журнала, и не занимает места в таблицах данных. Для файловой базы это подкаталог 1Cv8Log рядом с файлом 1Cv8.1CD. Для клиент-серверной — каталог на сервере 1С:Предприятия.

В каждой записи есть набор полей:

  • 🕒 дата и время события;
  • 👤 пользователь и компьютер, с которого он работал;
  • 🧩 приложение: толстый клиент, тонкий клиент, веб-клиент, фоновое задание, сервер;
  • 📌 событие, например Данные.Изменение или Сеанс.Аутентификация;
  • ⚙️ уровень: Информация, Предупреждение, Ошибка, Примечание;
  • 📄 метаданные, к которым относится событие, и представление данных;
  • 💬 комментарий.

Часть событий платформа пишет всегда. Какие именно, зависит от настроек журнала. Всё, что вы добавите из кода, ложится в тот же журнал рядом с системными записями и видно теми же средствами.

Журнал регистрации — не то же самое, что история изменений объекта и не то же самое, что подсистема «Версионирование». Журнал отвечает на вопрос «что происходило в системе», а не «какой реквизит был до правки».

Как открыть журнал и разобрать записи

Откройте журнал из раздела Администрирование → Поддержка и обслуживание → Журнал регистрации. В некоторых конфигурациях раздел называется чуть иначе, но искать надо в «Администрировании». Нужны права администратора или специальная роль на просмотр журнала.

Откроется список событий за последнее время. Каждая строка — одно событие. Двойной клик покажет подробности: полный комментарий, данные, сеанс, транзакцию.

Как читать список

  1. Смотрите на колонку «Уровень». Красные строки — ошибки, с них и начинайте.
  2. Найдите время, когда пользователь пожаловался на сбой. Событие, как правило, будет рядом.
  3. Откройте запись и прочитайте комментарий целиком. В таблице он обрезан, в карточке виден полностью.
  4. Посмотрите соседние записи того же пользователя за 1–2 минуты до ошибки: там часто виден путь, который привёл к сбою.

Если нужна полная картина по сеансу, используйте номер сеанса и номер соединения из карточки события.

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

Основной инструмент — процедура ЗаписьЖурналаРегистрации. Она работает и на клиенте, и на сервере, но на практике её вызывают на сервере, в общем модуле.

Минимальный пример:

ЗаписьЖурналаРегистрации(
    "МояКонфигурация.ЗагрузкаПрайса",
    УровеньЖурналаРегистрации.Информация,
    Метаданные.Справочники.Номенклатура,
    ,
    "Загружено позиций: " + КоличествоПозиций);

Параметры по порядку:

ПараметрЧто передать
Имя событияСтрока. Удобно писать иерархически: «Подсистема.Операция»
УровеньУровеньЖурналаРегистрации.Информация, .Предупреждение, .Ошибка или .Примечание
Объект метаданныхОбъект метаданных, к которому относится запись. Можно пропустить
ДанныеСсылка на объект или другое значение, которое нужно привязать к событию
КомментарийТекст события
Режим транзакцииНеобязательный параметр: как запись ведёт себя внутри транзакции

Ссылка на объект в параметре «Данные» удобна тем, что в журнале по ней можно сделать отбор: вы видите все события, связанные с конкретным документом.

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

Самый частый случай использования — перехват ошибки в Попытка … Исключение:

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

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

Не пишите в журнал пароли, токены, номера карт и персональные данные из комментариев. Журнал читают администраторы, и записи часто выгружают для анализа.

Какой уровень выбрать

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

Если всё писать с уровнем «Ошибка», красные строки перестанут привлекать внимание. Уровень должен соответствовать смыслу.

Транзакции и независимая запись

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

Отборы: как найти нужное среди миллионов строк

В активной базе журнал быстро разрастается. Без отбора искать в нём бесполезно.

В окне журнала откройте команду настройки отбора. Доступны основные условия:

УсловиеДля чего
Интервал датСузить поиск до времени сбоя
ПользовательПоказать действия одного человека
УровеньОставить только ошибки и предупреждения
СобытиеВыбрать конкретный тип, например вход в систему
ПриложениеОтделить фоновые задания от интерактивной работы
МетаданныеПоказать события по одному справочнику или документу
ДанныеНайти события по конкретной ссылке
КомментарийПоиск по тексту

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

Для своих событий придерживайтесь единого префикса в имени, например МояКонфигурация.. Тогда по одному отбору по событию вы увидите всё, что пишет ваш код, и ничего лишнего.

Программная выгрузка записей

Если записи нужны не глазами, а для обработки, используйте ВыгрузитьЖурналРегистрации. Она заполняет таблицу значений записями по заданному отбору:

Отбор = Новый Структура;
Отбор.Вставить("Уровень", УровеньЖурналаРегистрации.Ошибка);
Отбор.Вставить("ДатаНачала", НачалоДня(ТекущаяДатаСеанса()));

ТаблицаСобытий = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(ТаблицаСобытий, Отбор);

Состав ключей отбора и колонок результата уточняйте в справке по вашей версии платформы. Выгрузку выполняйте на сервере и ограничивайте интервал: без отбора по датам вы получите всё содержимое журнала.

Какие события встречаются чаще всего и что они значат

Названия событий в журнале составные, формата «Раздел.Действие». Самые полезные для разбора:

СобытиеО чём говорит
Сеанс.АутентификацияПользователь вошёл или попытка входа
Сеанс.ЗавершениеСеанс закрыт
Данные.Изменение, Данные.Добавление, Данные.УдалениеКто и когда менял данные
Транзакция.Начало, Транзакция.Фиксация, Транзакция.ОтменаГраницы транзакций
Фоновое задание. Запуск и Фоновое задание. ЗавершениеРабота регламентных и фоновых заданий
Конфигурация.ИзменениеПравка конфигурации в Конфигураторе
Ошибка выполнения и ошибки блокировокСбои, которые стоит разбирать в первую очередь

Точные названия зависят от версии платформы и языка интерфейса, поэтому ориентируйтесь на смысл, а не на дословное совпадение.

Три быстрых сценария разбора

  1. Кто удалил документ. Отбор по событию удаления данных и по метаданным документа. В карточке видно пользователя и время.
  2. Почему не запустилось задание. Отбор по приложению «Фоновое задание» и уровню «Ошибка». Комментарий покажет текст исключения.
  3. Кто заблокировал работу. Смотрите записи об ожидании блокировок и транзакциях в нужный интервал: они покажут пользователей и объекты.
Диагностика: выберите симптом

Мини-кейс: обмен с сайтом падает по ночам

Интернет-магазин выгружает остатки в 03:00. Утром менеджеры жалуются, что на сайте старые цены. Что делает администратор.

  1. Открывает журнал, ставит интервал с 02:50 до 03:30 и уровень «Ошибка».
  2. Находит запись от фонового задания с текстом исключения, например о недоступности сервера сайта.
  3. Смотрит предыдущие записи с префиксом обмена: последнее информационное событие показывает, на каком шаге оборвалось.
  4. Исправляет причину и добавляет в код обмена запись «Информация» в начале и в конце выгрузки.

Теперь по двум строкам журнала видно, завершился ли обмен и сколько позиций ушло. Разбор занимает минуту, а не вечер.

Параметры журнала: что писать, а что нет

Параметры журнала настраиваются в Конфигураторе через Администрирование → Журнал регистрации → Параметры либо, в части конфигураций, в клиентском режиме. Для этого требуются права администратора.

Основное, что настраивается:

  • 📁 Каталог журнала. Хранить журнал лучше на отдельном быстром диске, чтобы он не мешал основной работе.
  • ⏱️ Разделение по периодам. Журнал делится на файлы по часу, дню, неделе, месяцу, году. Мелкие периоды удобнее для очистки.
  • 🔧 Список событий. Можно отключить регистрацию событий, которые вам не нужны.

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

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

Размер журнала, очистка и регламентные задания

Журнал растёт сам. На нагруженной базе он может занимать десятки гигабайт, и это отражается на скорости открытия и отбора.

Как сократить журнал

  1. Откройте Конфигуратор и подключитесь к базе.
  2. Перейдите в Администрирование → Журнал регистрации.
  3. Выберите команду сокращения журнала и укажите дату, до которой записи можно удалить.
  4. Решите, нужен ли архив: при сокращении можно сохранить удаляемые записи в файл.

Прежде чем сокращать журнал, сохраните его копию, если он нужен для расследования или аудита. Удалённые записи не вернуть.

Автоматическая очистка

Платформа не чистит журнал сама, если вы не настроили этого. Есть два подхода:

  • 🗓️ Разделение по периодам. Выбираете месяц как период и раз в месяц удаляете файлы старше нужного срока средствами операционной системы или сокращением из Конфигуратора.
  • ⚙️ Регламентное задание или внешний скрипт. Если вам нужна автоматика, её строят силами администрирования: запуск сокращения по расписанию. Подходящий способ зависит от вашей платформы и режима работы, поэтому подробности смотрите в документации администратора.

Прежде чем что-то удалять, определите срок хранения. Для небольшой организации хватает 3–6 месяцев. Если есть требования по безопасности, срок может быть больше.

Перед чисткой журнала
Выполнено: 0 / 5

Частые вопросы

Можно ли добавить запись в журнал регистрации вручную через интерфейс?
Нет. Через интерфейс записи только просматривают. Свои события добавляют из кода командой ЗаписьЖурналаРегистрации.
Кто видит записи журнала?
Администраторы и пользователи с ролью на просмотр журнала. Обычному сотруднику журнал недоступен.
Можно ли изменить или удалить одну запись?
Нет, журнал защищён от правки отдельных записей. Доступно только сокращение за период.
Почему журнал стал очень большим?
Обычно из-за детальной регистрации событий данных на нагруженной базе и из-за того, что очистка не настроена. Отключите ненужные события и настройте срок хранения.
Влияет ли запись в журнал на скорость работы?
Каждая запись стоит времени. Одно событие на операцию незаметно, а запись в цикле по тысячам строк уже заметна. Пишите итог, а не каждую итерацию.