Где 1С записывает ошибки и как включить подробный лог
Содержание
Чтобы 1С записывала ошибки, включите уровень «Регистрировать ошибки» (или подробнее) в журнале регистрации: в Конфигураторе это Администрирование → Настройка журнала регистрации. Для глубокой диагностики платформы добавьте файл logcfg.xml в каталог conf — тогда заработает технологический журнал. А если ошибку нужно сделать самому, для теста, — вызовите её в коде командой ВызватьИсключение.
Всё это работает одинаково в Бухгалтерии, ЗУП, УТ и любой другой конфигурации на платформе 1С:Предприятие 8.3. Настройки относятся к платформе, а не к конкретной программе.
Куда 1С пишет ошибки: четыре источника
У платформы несколько механизмов регистрации. Они не заменяют друг друга, а ловят разное.
| Инструмент | Что фиксирует | Кто настраивает | Когда включать |
|---|---|---|---|
| Журнал регистрации | События базы: вход, запись, удаление, ошибки прикладного кода | Администратор базы | Всегда, постоянно |
| Технологический журнал (ТЖ) | Исключения платформы, запросы к СУБД, блокировки, соединения | Администратор сервера | На время расследования |
| Отладчик | Пошаговое выполнение кода, значения переменных | Программист | На тестовой копии |
| Дампы | Состояние процесса в момент аварийного падения | Администратор сервера | При вылетах 1С без сообщения |
Логика простая. Пользователь видит окно с ошибкой — ищите запись в журнале регистрации. 1С тормозит, виснет или падает — нужен технологический журнал. 1С закрывается без всякого сообщения — нужны дампы.
Журнал регистрации: как включить запись ошибок в 1С
Журнал регистрации есть в каждой базе. Но уровень детализации у него настраивается, и в некоторых базах его снижают ради места на диске.
Настройка уровня в Конфигураторе
- Откройте базу в режиме Конфигуратор.
- Выберите
Администрирование → Настройка журнала регистрации. - Отметьте нужный уровень.
- Нажмите «ОК». Перезапуск базы не нужен.
Уровни вложены друг в друга, каждый следующий включает предыдущие:
- 🚫 Не регистрировать — журнал пуст. Для рабочей базы так делать нельзя.
- ❌ Регистрировать ошибки — только события уровня «Ошибка».
- ⚠️ Регистрировать ошибки и предупреждения.
- ℹ️ Регистрировать ошибки, предупреждения и информацию — сюда попадают входы пользователей, запись и удаление объектов.
- 📝 Регистрировать все события — плюс примечания. Самый подробный вариант.
Для рабочей базы обычно хватает уровня «информация». Он показывает и саму ошибку, и действия пользователя перед ней.
В том же окне задаётся разделение журнала по периодам — по дням, неделям, месяцам. При разделении старые файлы легко удалить или убрать в архив. Там же есть кнопка «Сократить» — она удаляет записи до выбранной даты.
Перед сокращением журнала сохраните удаляемые записи в файл (это предлагается в том же диалоге). Восстановить удалённую историю потом будет не из чего.
Где лежат файлы журнала
- 📁 Файловая база — подкаталог
1Cv8Logв каталоге базы. - 🖥️ Клиент-серверная база
—
srvinfo\reg_1541\<идентификатор базы>\1Cv8Logна сервере 1С. Путь кsrvinfoзависит от параметров службы сервера.
С версии 8.3.5 журнал по умолчанию хранится в одном файле формата SQLite с расширением .lgd. Старый формат — это файлы .lgf и .lgp.
Как найти ошибку в журнале
В пользовательском режиме журнал открывается двумя путями:
- через
Администрирование → Обслуживание— в БП 3.0, ЗУП 3.1 и УТ 11 там есть ссылка «Журнал регистрации»; - через
Главное меню → Функции для технического специалиста → Стандартные → Журнал регистрации(в старых релизах платформы этот пункт назывался «Все функции»).
Откройте отбор и выставьте:
- Интервал — время, когда пользователь увидел ошибку, с запасом 10–15 минут.
- Уровень — «Ошибка».
- Пользователя, если ошибка возникла у конкретного человека.
В колонке «Комментарий» будет текст ошибки и стек вызовов: модуль, строка, процедура. С этим текстом уже можно идти к программисту или искать решение.
💡 Двойной щелчок по записи открывает её целиком. Текст из неё можно скопировать — он полнее, чем в окне ошибки у пользователя.
Технологический журнал: настройка logcfg.xml
Технологический журнал (ТЖ) пишет то, что журнал регистрации не видит: исключения внутри платформы, долгие запросы к СУБД, взаимоблокировки, разрывы соединений. По умолчанию он выключен. Включается он одним XML-файлом.
Куда положить файл
Файл называется logcfg.xml. Его кладут в каталог conf платформы:
- общий для всех версий —
C:\Program Files\1cv8\conf\; - для конкретной версии —
C:\Program Files\1cv8\<номер версии>\bin\conf\.
Для клиент-серверной базы файл нужен на сервере 1С, а не на компьютере пользователя. Платформа перечитывает файл примерно раз в минуту, перезапуск службы не требуется.
Минимальная настройка для ошибок
Этот вариант ловит только исключения и ничего лишнего:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\1c_techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="EXCPCNTX"/>
</event>
<property name="all"/>
</log>
</config>
Что здесь важно:
location— папка для логов. Выбирайте диск со свободным местом, не системный.history— сколько часов хранить файлы. 24 часа хватает для разовой ошибки.EXCP— исключения платформы,EXCPCNTX— контекст, в котором они возникли.property name="all"— писать все свойства события.
Какие события добавить под задачу
| Задача | События |
|---|---|
| Ошибки и падения | EXCP, EXCPCNTX |
| Ошибки блокировок, «конфликт блокировок» | TLOCK, TTIMEOUT, TDEADLOCK |
| Медленные запросы к MS SQL | DBMSSQL |
| Ошибки запросов к PostgreSQL | DBPOSTGRS |
| Проблемы соединения с сервером | CONN, PROC |
| Долгие серверные вызовы | CALL |
Файлы ТЖ — обычный текст. Каждый процесс пишет в свою подпапку (rphost_<номер>, 1cv8c_<номер> и т. д.), файлы разбиты по часам. Ищите текст ошибки поиском по папке или командой findstr в Windows.
Не включайте все события без фильтра на рабочем сервере. Логи растут на гигабайты в час, сервер начинает тормозить из-за записи на диск.
Когда расследование закончено, удалите logcfg.xml или переименуйте его. Без этого журнал продолжит писать.
Отладка в Конфигураторе: остановка на ошибке
Если ошибка воспроизводится, отладчик покажет её причину точнее любого журнала. Работайте на копии базы: в рабочей отладка мешает пользователям.
Запуск отладки
- В Конфигураторе выберите
Отладка → Начать отладку(клавиша F5). - Откроется база в пользовательском режиме, подключённая к отладчику.
- В Конфигураторе включите
Отладка → Остановка по ошибкеи поставьте флажок «Останавливаться по ошибке». - Повторите в базе действия, которые приводят к ошибке.
Выполнение остановится ровно на строке, где возникло исключение. Видны значения переменных, а через «Стек вызовов» — цепочка процедур, которая к ней привела.
Шаги и точки останова
- F9 — поставить или снять точку останова на строке.
- F11 — шагнуть внутрь процедуры.
- F10 — шагнуть через процедуру.
- Shift+F11 — выйти из текущей процедуры.
💡 Отладчик останавливается и на ошибках, перехваченных в Попытка … Исключение. Если таких срабатываний много, в окне «Остановка по ошибке» задайте фрагмент текста нужной ошибки — остальные будут пропускаться.
Отладка на сервере
Для клиент-серверной базы серверный код отлаживается, только если сервер 1С запущен с ключом -debug. Ключ добавляют в строку запуска службы агента сервера. Пользовательский клиент для подключения к отладке запускают с ключом /DEBUG.
Изменение параметров службы требует её перезапуска — все сеансы пользователей оборвутся. Делайте это в нерабочее время и не оставляйте -debug на рабочем сервере постоянно.
Замер производительности
Если «ошибка» — это зависание или очень долгая операция, включите Отладка → Замер производительности. После выполнения операции 1С покажет, сколько раз и сколько времени выполнялась каждая строка кода. Узкое место видно сразу.
Дампы памяти: когда 1С падает без сообщения
Если клиент или рабочий процесс сервера закрывается молча, журналы обычно пусты: процесс умер раньше, чем успел записать. Здесь нужен дамп — снимок памяти процесса в момент падения.
Как включить создание дампов
Дампы настраиваются в том же logcfg.xml, отдельным элементом:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump create="true" location="D:\1c_dumps" type="3"/>
</config>
location— папка для дампов.type— объём сохраняемых данных. Чем больше значение, тем подробнее дамп и тем больше файл.
Файлы имеют расширение .mdmp и в имени содержат название процесса и номер версии платформы, например rphost_8.3.xx.xxxx_…mdmp.
Что делать с дампом
- Посмотрите имя процесса.
rphost— упал рабочий процесс сервера,1cv8c— тонкий клиент,1cv8— толстый клиент или Конфигуратор. - Сопоставьте время файла с жалобами пользователей и с записями журнала регистрации.
- Если падения повторяются, обновите платформу на актуальный релиз вашей ветки — часть аварий исправляется именно так.
- Если не помогло — передайте дамп и описание шагов партнёру 1С или в техподдержку платформы. Самостоятельно дамп разбирают отладчиком WinDbg, но без исходников платформы вывод даёт немного.
Полный дамп рабочего процесса весит столько же, сколько процесс занимал в памяти, — это могут быть гигабайты. Следите за местом на диске.
Как сделать ошибку в 1С намеренно: код для тестов
Иногда ошибку нужно вызвать специально: проверить, как обработчик реагирует на сбой, или запретить пользователю некорректное действие. Для этого есть оператор ВызватьИсключение.
Вызов собственной ошибки
Если Сумма <= 0 Тогда
ВызватьИсключение "Сумма платежа должна быть больше нуля";
КонецЕсли;
Выполнение прервётся, пользователь увидит окно с этим текстом, а событие попадёт в журнал регистрации с уровнем «Ошибка».
Перехват, запись в журнал и проброс дальше
Этот шаблон полезен в регламентных заданиях и обменах, где ошибку никто не видит на экране:
Процедура ВыполнитьОбмен() Экспорт
Попытка
Результат = 10 / 0; // искусственная ошибка: деление на ноль
Исключение
Инфо = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации("Обмен.ОшибкаВыгрузки",
УровеньЖурналаРегистрации.Ошибка, , ,
ПодробноеПредставлениеОшибки(Инфо));
ВызватьИсключение; // повторно вызвать ту же ошибку
КонецПопытки;
КонецПроцедуры
Что делает каждая часть:
ИнформацияОбОшибке()— получает описание исключения внутри блокаИсключение.ЗаписьЖурналаРегистрации— пишет событие с собственным именем. По имени «Обмен.ОшибкаВыгрузки» запись потом легко найти отбором.ПодробноеПредставлениеОшибки— текст ошибки вместе со стеком вызовов.ВызватьИсключениебез параметров — пробрасывает ошибку дальше, чтобы вызывающий код тоже узнал о сбое.
Ошибка без исключения: отказ при записи
Если нужно не прервать код, а запретить запись документа с понятным сообщением, используйте параметр Отказ в модуле объекта:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не ЗначениеЗаполнено(Контрагент) Тогда
ОбщегоНазначения.СообщитьПользователю(
"Не заполнен контрагент", ЭтотОбъект, "Контрагент", , Отказ);
КонецЕсли;
КонецПроцедуры
Процедура ОбщегоНазначения.СообщитьПользователю есть в типовых конфигурациях на БСП. Она выводит сообщение с переходом к полю и сама выставляет Отказ = Истина.
Правки кода типовой конфигурации делайте в расширении, а не в основной конфигурации. Так изменения не потеряются при обновлении.
Ошибки при настройке логирования
Чаще всего логи «не пишутся» не из-за платформы, а из-за мелочей в настройке.
Частые вопросы
Почему обычный пользователь не видит журнал регистрации?
Влияет ли подробный журнал регистрации на скорость 1С?
Где смотреть ошибки фонового и регламентного задания?
ЗаписьЖурналаРегистрации. Если задание упало молча, ошибка обычно перехвачена в коде без записи — нужен шаблон с повторным ВызватьИсключение.