Как настроить журнал регистрации 1С, писать в него из кода и находить причины сбоев
Содержание
Журнал регистрации 1С включают в Конфигураторе: Администрирование → Настройка журнала регистрации, уровень «Регистрировать ошибки, предупреждения и информацию» подходит почти любой рабочей базе. Смотреть записи можно там же (Администрирование → Журнал регистрации) или в пользовательском режиме: в БП 3.0, ЗУП 3.1 и УТ 11 это Администрирование → Обслуживание → Журнал регистрации. Свою запись из кода добавляет метод ЗаписьЖурналаРегистрации().
Журнал — это лог платформы. Он фиксирует, кто и когда вошёл в базу, какие объекты изменил, где упала транзакция и какую ошибку получил пользователь. Работает одинаково в любой конфигурации на платформе 8.3, разница только в том, как открыть форму просмотра.
Какие события записывает журнал и как задать уровень
Платформа делит события на пять уровней важности. Настройка определяет, начиная с какого уровня события попадают в лог.
| Уровень в настройке | Что пишется | Когда выбирать |
|---|---|---|
| Не регистрировать | Ничего | Никогда для рабочей базы |
| Регистрировать ошибки | Только ошибки | Огромные базы с жёсткой экономией диска |
| Ошибки и предупреждения | Плюс предупреждения | Компромисс по объёму |
| Ошибки, предупреждения и информацию | Плюс входы, изменения данных, запуск регламентных заданий | Рекомендуемый вариант |
| Регистрировать все события | Плюс примечания (служебные мелочи) | Временно, на время отладки |
Как поменять уровень:
- Откройте базу в Конфигураторе под пользователем с правами администратора.
- Выберите
Администрирование → Настройка журнала регистрации. - Отметьте нужный уровень и нажмите «ОК».
Настройка действует сразу, перезапускать сеансы пользователей не нужно.
Уровень «Регистрировать все события» быстро раздувает лог: в базе на 30–50 активных пользователей файлы растут на гигабайты в месяц. Включайте его на день-два, пока ловите проблему, потом возвращайте прежний.
В том же окне есть кнопка «Сократить» и настройка разделения журнала по периодам. О них — в разделе про хранение.
Как писать в журнал регистрации из кода
Платформа сама пишет системные события. Но для своих обработок, обменов и регламентных заданий полезно оставлять собственные записи: что загрузили, сколько объектов, на каком документе споткнулись.
Метод глобального контекста:
ЗаписьЖурналаРегистрации(ИмяСобытия, Уровень, ОбъектМетаданных, Данные, Комментарий, РежимТранзакции);
Что передавать:
- 📝 ИмяСобытия — строка, по ней потом фильтруют. Удобно группировать через точку:
"ОбменСБанком.Загрузка","ОбменСБанком.Ошибка". - ⚠️ Уровень — значение
УровеньЖурналаРегистрации.Ошибка,.Предупреждение,.Информацияили.Примечание. - 📦 ОбъектМетаданных — например,
Метаданные.Документы.ПоступлениеНаРасчетныйСчет. Даёт отбор по объекту. - 🔗 Данные — ссылка на конкретный документ или элемент. В форме просмотра по ней можно открыть объект.
- 💬 Комментарий — произвольный текст, сюда кладут описание ошибки.
- 🔁 РежимТранзакции —
РежимТранзакцииЗаписиЖурналаРегистрации.Независимая(по умолчанию) или.Транзакционная.
Типичная запись ошибки в обработке выгрузки:
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации("ЗагрузкаВыписки.Ошибка",
УровеньЖурналаРегистрации.Ошибка,
ДокументОбъект.Метаданные(),
ДокументОбъект.Ссылка,
ТекстОшибки);
КонецПопытки;
И итоговая информационная запись после цикла:
ЗаписьЖурналаРегистрации("ЗагрузкаВыписки.Итог",
УровеньЖурналаРегистрации.Информация, , ,
СтрШаблон("Загружено документов: %1, с ошибками: %2",
Формат(Загружено, "ЧН=0; ЧГ=0"), Формат(Ошибок, "ЧН=0; ЧГ=0")));
Независимая или транзакционная запись
Разница важна при отладке. Независимая запись остаётся в журнале, даже если внешняя транзакция откатилась. Транзакционная попадёт в лог только при успешной фиксации транзакции.
Ошибки внутри транзакции пишите в независимом режиме — иначе запись исчезнет вместе с откатом, и вы не узнаете, что произошло.
Запись с клиента
На тонком клиенте и в веб-клиенте метод ЗаписьЖурналаРегистрации недоступен: журнал ведётся на сервере. Варианты:
- вызвать серверную процедуру общего модуля, которая сделает запись;
- в типовых конфигурациях на БСП — накопить сообщения через
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(), библиотека сама передаст их на сервер.
Не пишите в журнал в каждой итерации цикла на 100 тысяч строк. Одна запись на ошибку и одна итоговая — этого достаточно. Иначе лог раздуется, а нужное событие утонет среди служебных.
Как открыть журнал регистрации 1С и читать записи
Форма просмотра одна и та же — меняется только путь к ней.
| Где открываете | Путь |
|---|---|
| Конфигуратор | Администрирование → Журнал регистрации |
| БП 3.0, ЗУП 3.1, УТ 11, КА 2 | Администрирование → Обслуживание → Журнал регистрации |
| Любая конфигурация, режим 1С:Предприятие | Все функции → Стандартные → Журнал регистрации |
Команда «Все функции» по умолчанию скрыта. Включите её через главное меню (кнопка с тремя полосками слева вверху): Сервис → Параметры, флажок «Отображать команду „Все функции“».
Что видно в списке:
- 🕒 Дата — время события на сервере.
- 👤 Пользователь и компьютер — кто работал и откуда.
- 🖥 Приложение — тонкий клиент, Конфигуратор, фоновое задание, COM-соединение, веб-клиент.
- 🏷 Событие — например, «Сеанс. Начало», «Данные. Изменение», «Транзакция. Отмена».
- 📄 Метаданные и данные — какой объект и какой именно документ.
- 💬 Комментарий — сюда платформа кладёт текст ошибки.
Двойной щелчок по строке открывает карточку события с полным текстом. По ссылке в поле «Данные» можно перейти к самому документу.
Пиктограмма слева от строки показывает уровень: красная — ошибка, жёлтая — предупреждение, синяя — информация. При просмотре большого журнала это главный ориентир.
Отбор событий: как быстро найти нужную запись
Журнал рабочей базы за месяц — это сотни тысяч строк. Листать его бесполезно, работают только отборы. В форме просмотра нажмите «Отбор» (или «Установить отбор» — название кнопки зависит от вида формы).
Поля отбора, которыми пользуются чаще всего:
- Период — всегда сужайте до часов вокруг сбоя. Это и ускоряет открытие.
- Уровень — для поиска сбоя оставьте только «Ошибка».
- Пользователи — если жалуется конкретный сотрудник.
- События — дерево событий: можно выбрать только «Данные. Удаление» или свои события вроде
ЗагрузкаВыписки.Ошибка. - Метаданные — например, все изменения документов «Реализация товаров и услуг».
- Данные — история одного конкретного документа.
- Комментарий — поиск по фрагменту текста ошибки.
Три частых сценария:
| Задача | Как настроить отбор |
|---|---|
| Кто удалил документ | Метаданные — нужный вид документа, событие «Данные. Удаление», период |
| Почему пользователь не может войти | Пользователь, события группы «Сеанс», уровень «Ошибка» |
| Упал ли ночной обмен | Приложение «Фоновое задание», уровень «Ошибка», период — ночь |
Отбор по полю «Данные» работает только для записей, где ссылка была передана. Если документ уже удалён, ищите по метаданным и периоду.
Результат можно сохранить в файл: в форме журнала есть команда сохранения списка в табличный документ. Удобно, чтобы переслать разработчику или во внешнюю поддержку.
Как анализировать ошибки по журналу
Журнал отвечает на вопросы «что, когда, кто». Порядок работы при разборе сбоя:
- Узнайте точное время ошибки у пользователя — хотя бы с точностью до 10–15 минут.
- Поставьте отбор по периоду и уровню «Ошибка».
- Откройте событие и прочитайте комментарий целиком. Там есть текст исключения и, часто, модуль со строкой:
{ОбщийМодуль.ИмяМодуля.Модуль(245)}. - Посмотрите соседние записи без отбора по уровню: что этот же сеанс делал за минуту до ошибки.
- Проверьте поле «Сеанс»: номер сеанса связывает все события одного подключения.
Номер строки в комментарии сразу ведёт к месту в коде: откройте модуль в Конфигураторе и перейдите к строке через Ctrl+G.
Пример разбора. Бухгалтер говорит: «утром не провелась реализация, выдало ошибку и всё». Ставим отбор на 9:00–10:00 и пользователя. Видим три записи подряд: «Данные. Проведение» с уровнем «Ошибка», затем «Транзакция. Отмена». В комментарии первой — текст про недостаток остатков и ссылка на документ. Причина найдена за пару минут, без переписки скриншотами.
Если ошибка воспроизводится, её можно поймать ещё точнее. Временно включите уровень «Регистрировать все события», повторите действие и сразу верните прежний уровень. Так в журнал попадут примечания, которые обычно отсекаются.
Когда журнала мало: технологический журнал
Журнал регистрации не показывает тексты запросов, длительность вызовов и блокировки СУБД. Для этого есть технологический журнал платформы. Его включают файлом logcfg.xml в каталоге conf установленной платформы, и он пишет логи в указанный там каталог.
Это инструмент для медленной работы и взаимоблокировок. Для вопросов «кто изменил» и «почему не провёлся» хватает журнала регистрации.
Где хранится журнал регистрации и как его чистить
Физически журнал лежит в каталоге 1Cv8Log:
- файловая база — внутри каталога базы, рядом с
1Cv8.1CD; - клиент-серверная — в каталоге кластера:
srvinfo\reg_1541\<идентификатор базы>\1Cv8Log. По умолчаниюsrvinfoнаходится в каталоге установки сервера 1С.
Идентификатор базы покажет команда rac infobase summary list --cluster=<id кластера>, а id кластера — rac cluster list.
Форматы файлов
| Формат | Файлы | Особенности |
|---|---|---|
| Последовательный | 1Cv8.lgf + много *.lgp | Быстрая запись, файлы легко архивировать по одному |
| SQLite | 1Cv8.lgd | Один большой файл, при росте до десятков гигабайт форма просмотра заметно тормозит |
Формат видно по расширению файлов в каталоге.
Сокращение журнала
В Конфигураторе: Администрирование → Настройка журнала регистрации → Сократить. Укажите дату — всё, что раньше, удалится. Удалённые события можно сохранить в отдельный файл: отметьте эту опцию и задайте путь.
Сокращение необратимо. Перед ним скопируйте каталог 1Cv8Log целиком. Журнал часто нужен для разбора спорных ситуаций: кто провёл документ задним числом, кто удалил контрагента.
Для последовательного формата удобно включить разделение журнала по периодам в том же окне настроек. Тогда старые файлы *.lgp можно переносить в архив, не трогая текущий.
Сколько хранить — решает регламент компании. Ориентир: держать в рабочей базе 3–6 месяцев, старое — в архиве.
Если журнал повреждён
Признаки: форма просмотра открывается с ошибкой или пустой, хотя пользователи работают. Порядок действий:
- Попросите пользователей завершить работу — следующий шаг затрагивает активные сеансы.
- Для клиент-серверной базы остановите службу агента сервера 1С в нерабочее время.
- Переименуйте каталог
1Cv8Log(например, в1Cv8Log_old). - Запустите службу — платформа создаст пустой журнал.
Старые файлы не удаляйте: их часто удаётся открыть позже, скопировав в каталог тестовой базы.
Особенности журнала в разных режимах работы
| Режим | Что учесть |
|---|---|
| Файловая база | Журнал пишет клиентское приложение в каталог базы. Нужны права на запись в 1Cv8Log у каждого пользователя Windows |
| Клиент-сервер | Журнал ведёт рабочий процесс кластера. Права на запись нужны пользователю, от которого запущена служба 1С |
| Веб-клиент и публикация на веб-сервере | События пишутся так же, как у кластера или файловой базы; в поле «Приложение» видно веб-клиент |
| Фоновые и регламентные задания | Пользователь может быть пустым, если задание запущено без указания пользователя |
| Внешнее соединение (COM) | Приложение — «COM-соединение», удобно отбирать интеграции |
| Конфигуратор | Входы в Конфигуратор и обновление конфигурации тоже фиксируются в журнале |
Если в файловой базе журнал перестал пополняться у части пользователей — первым делом проверьте их права на каталог 1Cv8Log.
Частые вопросы
Можно ли отредактировать или удалить одну запись из журнала регистрации?
Видно ли в журнале, какие именно реквизиты документа поменяли?
Почему время событий в журнале не совпадает с часами пользователя?
Можно ли выгрузить журнал программно?
ВыгрузитьЖурналРегистрации(). Он принимает таблицу значений или имя файла и структуру отбора с полями вроде ДатаНачала, ДатаОкончания, Уровень.