Фиксация ошибок 1С: от журнала регистрации до отчёта разработчику
Содержание
Чтобы зарегистрировать ошибку
в конфигурации 1С, сначала найдите её в журнале регистрации (Администрирование → Обслуживание → Журнал регистрации, отбор по уровню «Ошибка»), затем сохраните подробный текст ошибки, версии платформы и конфигурации и шаги воспроизведения. Для повторяющихся сбоев добавьте программную запись через ЗаписьЖурналаРегистрации, а падения процессов ловите технологическим журналом и дампами.
Типичная ситуация: бухгалтер пишет «документ не проводится, выскочило окно и пропало». Текста нет, скриншота нет, повторить не получается. Ниже — способы, которые превращают такое сообщение в зарегистрированную ошибку с понятной причиной. Всё описанное относится к платформе 1С:Предприятие 8.3 и работает в любой конфигурации: БП 3.0, ЗУП 3.1, УТ 11 и других.
Журнал регистрации: где ошибка уже записана
Платформа сама пишет в журнал регистрации все исключения, которые не обработал код конфигурации. Поэтому первое место, куда стоит смотреть, — именно он. Часто ошибка уже зарегистрирована, её просто никто не открыл.
Как открыть журнал
- 🖥 В пользовательском режиме (БП 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Журнал регистрации. Нужны права администратора. - 🛠 В Конфигураторе:
Администрирование → Журнал регистрации.
Как найти нужную запись
- Нажмите кнопку Установить отбор в командной панели журнала.
- Задайте интервал: время сбоя плюс-минус 10–15 минут.
- Укажите пользователя, у которого возникла ошибка.
- В поле уровня оставьте только «Ошибка».
- Откройте запись двойным щелчком. В поле «Комментарий» — полный текст исключения, включая модуль и строку, если она есть.
Если записей нет вообще, проверьте настройку журнала. В Конфигураторе: Администрирование → Настройка журнала регистрации. Уровень должен быть не ниже «Регистрировать ошибки». Вариант «Не регистрировать» встречается в старых базах, которые когда-то «ускоряли».
Где лежат файлы журнала
Журнал хранится в каталоге 1Cv8Log:
| Вариант базы | Где искать |
|---|---|
| Файловая | 1Cv8Log внутри каталога базы (рядом с 1Cv8.1CD) |
| Клиент-серверная | srvinfo\reg_1541\<идентификатор базы>\1Cv8Log на сервере 1С |
Файлы с расширением .lgd — это новый формат (одна база SQLite). Пара .lgf и .lgp — старый текстовый формат. Если журнал разросся до гигабайтов, включите в настройках разделение по периодам: так проще отправить разработчику кусок за нужный день.
Отладчик: как поймать ошибку в момент возникновения
Журнал говорит, что случилось. Отладчик показывает, почему: значения переменных, стек вызовов, ветку кода. Это способ для того, у кого есть доступ к Конфигуратору и тестовой копии базы.
Остановка по ошибке
- Откройте Конфигуратор на копии базы и запустите
Отладка → Начать отладку → 1С:Предприятие(или тонкий клиент). - В Конфигураторе откройте
Отладка → Остановка по ошибке. - Включите флажок Останавливаться по ошибке. При необходимости задайте фрагмент текста ошибки в фильтре — тогда отладчик не будет тормозить на каждом мелком исключении.
- Повторите действия пользователя. Как только возникнет исключение, отладчик остановится на строке, где оно произошло.
- Посмотрите
Отладка → Стек вызовови вычислите выражения (Shift+F9), которые кажутся подозрительными.
Отлаживайте на копии базы, а не на рабочей. Остановка в отладчике удерживает транзакцию и блокировки, и другие пользователи начнут получать ошибки ожидания.
Отладка серверного кода
В клиент-серверном варианте серверный код можно отлаживать, только если сервер 1С запущен с ключом -debug. Ключ добавляют в параметры службы агента сервера (ragent). После изменения службу нужно перезапустить.
Перезапуск службы агента разорвёт все сеансы пользователей на этом сервере. Делайте это вне рабочего времени и предупредите людей заранее.
Отладку исключений внутри Попытка ... Исключение по умолчанию отладчик пропускает. Если ошибку «глотает» чей-то обработчик, ищите в окне остановки по ошибке флажок, который разрешает останавливаться и внутри попытки.
Программная регистрация через ЗаписьЖурналаРегистрации
Когда ошибка перехвачена в коде через Попытка ... Исключение, платформа её уже не записывает. Если разработчик не добавил запись сам, сбой бесследно исчезает. Это самая частая причина фразы «в журнале пусто, а у пользователя ошибка».
Шаблон обработки исключения
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ИнфоОбОшибке = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации(
"Проведение.ОшибкаПроведения",
УровеньЖурналаРегистрации.Ошибка,
ДокументОбъект.Метаданные(),
ДокументОбъект.Ссылка,
ПодробноеПредставлениеОшибки(ИнфоОбОшибке));
ВызватьИсключение КраткоеПредставлениеОшибки(ИнфоОбОшибке);
КонецПопытки;
Что делает каждый параметр:
| Параметр | Что передаём | Зачем |
|---|---|---|
| Имя события | "Проведение.ОшибкаПроведения" | По нему удобно ставить отбор в журнале |
| Уровень | УровеньЖурналаРегистрации.Ошибка | Запись попадёт в отбор по ошибкам |
| Метаданные | ДокументОбъект.Метаданные() | Видно, к какому объекту относится сбой |
| Данные | ДокументОбъект.Ссылка | Из журнала можно открыть сам документ |
| Комментарий | подробное представление | Полный стек с модулями и строками |
В последних версиях платформы для подробного текста есть также ОбработкаОшибок.ПодробноеПредставлениеОшибки(). Старая глобальная функция продолжает работать.
Три правила, без которых запись бесполезна
- 🔁 Пробрасывайте исключение дальше (
ВызватьИсключение), если операция действительно не выполнилась. Иначе пользователь решит, что всё прошло. - 🧾 Пишите подробное представление, а не краткое. Краткое даёт только текст, без модуля и строки.
- 🏷 Используйте иерархию в имени события через точку: «Обмен.Загрузка», «Обмен.Выгрузка». Так в журнале легко собрать все сбои одной подсистемы.
В транзакции запись журнала по умолчанию делается независимо от неё. Если транзакция откатится, запись останется. За это отвечает последний параметр РежимТранзакции — без особой причины его не трогайте.
Технологический журнал и дампы памяти
Если 1С падает целиком — окно закрывается без сообщения, рабочий процесс сервера перезапускается, — журнал регистрации записать ничего не успевает. Здесь нужен технологический журнал и дампы.
Настройка технологического журнала
Журнал включают файлом logcfg.xml в каталоге conf платформы (например, C:\Program Files\1cv8\conf). Пример для записи исключений:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\1c_logs\tj" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="EXCPCNTX"/>
</event>
<property name="all"/>
</log>
<dump create="1" location="D:\1c_logs\dumps" type="3"/>
</config>
- 📁
location— куда писать логи. Каталог должен существовать, а у пользователя службы 1С должны быть права на запись. - ⏳
history="24"— хранить 24 часа, потом удалять. - 💥
EXCP— исключения,EXCPCNTX— контекст, в котором они возникли. - 🧠 Блок
dumpвключает создание дампов при аварийном завершении процесса.
Платформа перечитывает logcfg.xml примерно раз в минуту, перезапуск не нужен.
Не оставляйте свойство all включённым надолго на нагруженном сервере. Логи растут на гигабайты в час и занимают весь диск. Собрали данные за нужный период — уберите файл или сузьте отбор.
Что делать с дампом
Файл .mdmp — это снимок процесса в момент падения. Самостоятельно его разбирают отладчиком Windows (WinDbg), но для пользователя полезнее другое: дамп — главное вложение к обращению в поддержку, если падает сама платформа.
Без настройки клиентские дампы обычно попадают в %LOCALAPPDATA%\1C\1cv8\dumps профиля пользователя, под которым работал процесс. Ищите файл по времени создания, совпадающему со сбоем.
| Что упало | Что собирать |
|---|---|
| Клиент на одном компьютере | Дамп из профиля пользователя, версия платформы, ОС |
| Рабочий процесс сервера (rphost) | Дамп из каталога настройки, ТЖ за 10–15 минут до сбоя |
| Только при определённой операции | ТЖ с EXCP + шаги воспроизведения |
Отправка ошибок во внешнюю систему через HTTP
Когда баз много или работа идёт удалённо, журнал регистрации неудобен: в каждую базу нужно заходить отдельно. Решение — собирать ошибки в одном месте.
Встроенный отчёт об ошибке
В современных версиях платформы окно ошибки содержит команду формирования отчёта об ошибке. Отчёт собирает текст, стек, версии платформы и конфигурации и сведения о компьютере. Его можно сохранить в файл и приложить к обращению. Если администратор или разработчик конфигурации указал адрес сервиса сбора отчётов, отчёт уходит туда автоматически, без участия пользователя.
Своя отправка из кода
Второй путь — отправлять ошибку из обработчика исключения на свой сервис (система заявок, сервер мониторинга):
Процедура ОтправитьОшибку(ТекстОшибки) Экспорт
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Данные = Новый Структура;
Данные.Вставить("base", СтрокаСоединенияИнформационнойБазы());
Данные.Вставить("user", ИмяПользователя());
Данные.Вставить("error", ТекстОшибки);
ЗаписатьJSON(Запись, Данные);
Соединение = Новый HTTPСоединение("monitor.example.local", 443,,,, 10,
Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/api/errors");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8);
Попытка
Соединение.ОтправитьДляОбработки(Запрос);
Исключение
ЗаписьЖурналаРегистрации("Мониторинг.ОтправкаНеУдалась",
УровеньЖурналаРегистрации.Предупреждение,,,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
Таймаут в 10 секунд и собственная Попытка здесь обязательны. Если сервис мониторинга недоступен, пользователь не должен получить вторую ошибку поверх первой.
Обратное направление: HTTP-сервис в конфигурации
Бывает наоборот: внешняя программа (сайт, мобильное приложение, обработчик обмена) должна сообщить 1С о своей ошибке. Для этого в конфигурацию добавляют HTTP-сервис, публикуют его на веб-сервере, а в обработчике метода POST разбирают JSON и вызывают ЗаписьЖурналаРегистрации. Тогда сбои интеграции видны в том же журнале, что и ошибки самой базы.
Карточка ошибки: как зарегистрировать сбой вручную
Все способы выше дают сырьё. Чтобы ошибку исправили, её нужно оформить так, чтобы разработчик мог её повторить. Неважно, куда уходит обращение: внутренний программист, партнёр-франчайзи или разработчик конфигурации.
Что собрать перед обращением
- Версии. Откройте
Справка → О программе(в главном меню «Такси» — через кнопку с тремя полосками). Перепишите версию платформы и точное название и номер релиза конфигурации. - Текст ошибки. В окне ошибки откройте подробный текст и скопируйте его целиком, а не скриншотом.
- Шаги. Пронумерованный список: что открыли, что заполнили, на какую кнопку нажали.
- Ожидание и факт. Что должно было произойти и что произошло.
- Частота. Всегда, иногда, только у одного пользователя, только в одной базе.
- Данные. Ссылка на документ или выгрузка проблемного объекта, если разработчику нужна точно такая же ситуация.
- Доработки. Есть ли в базе расширения или изменения типовой конфигурации. Включите проверку на чистой демобазе того же релиза.
Как проверить, ваша ли это ошибка
Перед тем как писать разработчику типовой конфигурации, отключите расширения: Администрирование → Печатные формы, отчёты и обработки → Расширения, снимите флажок «Активно» и перезапустите сеанс. Если ошибка пропала, проблема в доработке, а не в типовом коде.
Если ошибка повторяется на чистой демобазе того же релиза, проверьте перечень публичных ошибок фирмы 1С: возможно, сбой уже зарегистрирован и есть номер релиза, в котором его исправят.
Внутренний реестр ошибок
Если в компании свой программист, удобно завести справочник или регистр сведений «Инциденты» прямо в базе или в отдельной служебной базе. Минимальный набор полей: дата, пользователь, база, текст ошибки, статус (новая / в работе / исправлена), ответственный, релиз с исправлением. Так ошибки не теряются в мессенджерах, а повторные обращения видно сразу.
Какой способ выбрать под вашу ситуацию
Частые вопросы
Сколько хранится журнал регистрации?
Можно ли смотреть журнал регистрации без входа в базу?
.lgd — это база SQLite, её можно открыть сторонним просмотрщиком на копии файла. Удобнее, впрочем, скопировать каталог 1Cv8Log и отправить разработчику целиком.Почему в журнале ошибка без номера строки?
EXCPCNTX.Нужны ли права администратора для записи в журнал?
ЗаписьЖурналаРегистрации работает под любым пользователем. Права нужны только чтобы журнал смотреть.Влияет ли технологический журнал на скорость работы?
history и выключайте журнал после сбора данных.