Почему колонка «Данные» в Журнале регистрации 1С остается пустой и как правильно записывать в нее информацию?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Разберем разницу отображения в Конфигураторе и режиме Предприятия

Основная причина, по которой мы не видим заполненную колонку «Данные», заключается в том, откуда именно мы просматриваем Журнал регистрации. Проанализируем, как система работает "под капотом":

  1. Режим Конфигуратора: Конфигуратор является средой разработки и не имеет прямого пользовательского доступа к таблицам базы данных для "на лету" интерпретации ссылочных типов. Когда мы передаем ссылку в метод записи, параметр физически сохраняет в логе уникальный идентификатор (GUID) объекта базы данных. Конфигуратор не может по двойному клику открыть форму самого документа или справочника, поэтому для ссылочных типов колонка выглядит пустой.
  2. Режим Предприятия: В пользовательском режиме система полноценно оперирует данными. Открывая Журнал регистрации в Предприятии, платформа "на лету" обращается к базе по записанному GUID, получает объект и позволяет нам по двойному клику открыть форму этого объекта. Здесь колонка всегда будет отрабатывать корректно.

Что касается поля «Представление данных» — это простая текстовая строка, которая формируется в момент генерации события. Платформа сохраняет ее "как есть" в текстовом виде, поэтому представление без проблем читается и в Конфигураторе, и в Предприятии.

Как записать информативную таблицу или структуру в колонку «Данные»?

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

Согласно синтаксис-помощнику, параметр может принимать только строго определенные типы: Любая ссылка, Число, Строка, Дата, Булево, Неопределено, Null, Тип. Передать туда напрямую ТаблицуЗначений, Структуру или Массив напрямую нельзя.

Рассмотрим рабочие способы обойти это ограничение и сформировать красивый вывод:

  1. Форматированная многострочная строка. Мы можем обойти нашу структуру или таблицу циклом и сформировать обычную строку, используя переносы Символы.ПС и табуляцию Символы.Таб. Эту текстовую таблицу затем передаем в параметры записи.
  2. Использование JSON или XML. Это наиболее современный и правильный подход. Мы сериализуем структуру с данными в JSON-строку. В современных версиях Библиотеки Стандартных Подсистем (БСП) форма просмотра журнала регистрации умеет распознавать структурированный текст (JSON/XML) и автоматически выводить его пользователю в удобном для чтения и анализа виде.

Посмотрим на пример кода, как можно записать структуру в Журнал регистрации через JSON:


// Формируем структуру с важными данными
ДанныеОшибки = Новый Структура;
ДанныеОшибки.Вставить("Пользователь", ИмяПользователя());
ДанныеОшибки.Вставить("НайденныеДубли", МассивДублей);
ДанныеОшибки.Вставить("Описание", "Попытка создания дублирующей записи");

// Сериализуем структуру в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеОшибки);
СтрокаДанныхJSON = ЗаписьJSON.Закрыть();

// Записываем событие в Журнал регистрации
ЗаписьЖурналаРегистрации(
    "Пользователи.Попытка создания дубля", 
    УровеньЖурналаРегистрации.Предупреждение, 
    , 
    , 
    СтрокаДанныхJSON // Передаем нашу JSON-строку в комментарий или данные
);

Стандарты 1С по работе с данными в Журнале регистрации

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

  1. Строгость имени события. Категорически запрещено включать конкретные данные (например, ФИО пользователя или номер документа) прямо в параметр имени события. Не следует писать "Удаление дубля Иванов И.И.". Имя события должно быть общим и сгруппированным, например: "Пользователи.Попытка создания дубля".
  2. Использование параметров. Всю специфическую информацию (ссылку на проблемного пользователя, таблицу совпадений, технические детали ошибки) следует помещать исключительно в параметры данных и комментария. Это предотвращает бесконечное разрастание словаря событий в базе данных.

Подводя итог: если вы программно записали ссылку в лог и не видите её в Конфигураторе — это нормальное поведение системы. Откройте Журнал регистрации в режиме Предприятия, и вы увидите нужную информацию. А для записи сложных коллекций используйте предварительную сериализацию в строку или формат JSON.

← На главную