Где искать подробности сбоя в 1С 8.3 и как их прочитать
Содержание
Отчет об ошибке в 1С 8.3 открывается прямо из окна сбоя: в нём есть ссылка «Сформировать отчет об ошибке», а рядом — кнопка с подробным текстом. Подробный текст показывает модуль и номер строки, где упал код. Сам отчет собирает версию платформы, конфигурацию, стек вызовов и сведения о компьютере в один файл, который можно сохранить и отправить.
Если окно уже закрыто, следы ошибки остаются в журнале регистрации. Для трудных случаев есть ещё два инструмента: режим отладки с остановкой по ошибке и технологический журнал с дампами. Ниже — порядок, от простого к глубокому.
Что видно в окне ошибки и как открыть отчет
Окно ошибки — первое и самое информативное место. Не закрывайте его сразу: после закрытия часть сведений придётся восстанавливать по журналу.
Короткое сообщение
Сверху окна — текст ошибки для пользователя. Например:
Поле объекта не обнаружено (Контрагент)Значение не является значением объектного типа (Организация)Ошибка при вызове метода контекста (Записать)Ошибка СУБД: ...с текстом от SQL-сервера или PostgreSQL
Само по себе сообщение редко объясняет причину. Нужен контекст: где именно и на какой строке.
Подробный текст и стек
- В окне ошибки нажмите кнопку или ссылку с подробностями (обычно «Подробно» или «Подробный текст ошибки»).
- Откроется текст в фигурных скобках вида
{Документ.РеализацияТоваровУслуг.МодульОбъекта(245)}: .... - Выделите весь текст и скопируйте
Ctrl+A,Ctrl+C. - Вставьте его в письмо или заявку как есть, без пересказа.
Каждая строка в фигурных скобках — один уровень стека вызовов. Верхняя строка — место, где ошибка возникла. Нижние — откуда туда пришли.
Сам отчет об ошибке
- В окне ошибки нажмите ссылку «Сформировать отчет об ошибке».
- Откроется форма отчета. В ней видно, какие сведения попадут в отчет, и можно добавить свой комментарий: что делали перед сбоем.
- Если в форме есть галочка про снимок экрана — решите, включать ли его. На скриншоте могут быть персональные данные или суммы.
- Сохраните отчет в файл командой сохранения в форме. Получится архив, внутри — описание ошибки в формате JSON.
- Если в базе настроена автоматическая отправка, форма предложит отправить отчет сразу. Тогда файл уходит туда, куда указал администратор базы.
Если ссылки на отчет в окне нет, проверьте версию платформы в меню Справка → О программе. Механизм отчетов об ошибках есть в относительно свежих версиях 8.3. На старой платформе работайте с подробным текстом и журналом регистрации.
Режим отладки: как поймать ошибку на нужной строке
Подробный текст говорит, где упало. Отладчик показывает, почему: какие были значения переменных в момент сбоя. Это работа для программиста или администратора с доступом к Конфигуратору.
Файловая база
- Откройте базу в Конфигураторе.
- В меню
ОтладкавключитеОстановка по ошибкеи отметьте нужные варианты. - Запустите режим 1С:Предприятие кнопкой отладки (
F5). - Повторите действие, которое приводит к ошибке.
- Выполнение остановится на проблемной строке. Наведите курсор на переменные или откройте окно вычисления выражения (
Shift+F9) и посмотрите значения.
Клиент-серверная база
Для серверной базы отладку на сервере нужно разрешить. Служба агента сервера запускается с ключом -debug в командной строке службы. Без него отладчик не увидит серверный код, а большинство ошибок проведения возникает именно на сервере.
Добавление ключа требует перезапуска службы сервера 1С. Все пользователи будут отключены — делайте это вне рабочего времени и предупредите людей заранее.
Отлаживать удобнее на копии базы. В рабочей базе остановка на точке прерывания держит транзакцию и блокировки, остальные пользователи могут «зависнуть» на этих же данных.
Отладка без Конфигуратора
Клиент можно запустить с параметром /debug, тогда он будет доступен для подключения отладчика. Пример ярлыка:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8c.exe" ENTERPRISE /F"D:\Bases\Buh" /debug
Номер версии в пути подставьте свой. Подключаются из Конфигуратора через Отладка → Подключение.
Журнал регистрации: что произошло, когда и у кого
Журнал регистрации пишет ошибки, вход и выход пользователей, запись и удаление данных . Если пользователь закрыл окно ошибки и прислал только «у меня всё упало», начинайте отсюда.
Где открыть журнал регистрации
| Где | Путь |
|---|---|
| Бухгалтерия 3.0, ЗУП 3.1, УТ 11 | Администрирование → Обслуживание → Журнал регистрации |
| Конфигуратор (любая конфигурация) | Администрирование → Журнал регистрации |
| Конфигурация без раздела администрирования | Все функции → Стандартные → Журнал регистрации |
Пункт «Все функции» в меню появляется после включения в параметрах программы флажка показа команды «Все функции».
Как найти нужную запись
- Установите отбор: период — около времени сбоя, уровень — Ошибка.
- Если известен пользователь, добавьте отбор по нему.
- Откройте запись двойным щелчком. В поле комментария лежит текст ошибки, часто со стеком.
- Посмотрите записи за минуту до ошибки у того же пользователя: видно, какой документ он открывал или записывал.
Где журнал лежит физически
- Файловая база: папка
1Cv8Logвнутри каталога базы. - Клиент-серверная база
: каталог кластера на сервере, вида
srvinfo\reg_1541\<идентификатор базы>\1Cv8Log.
Новый формат журнала — один файл .lgd. Старый — набор файлов .lgf и .lgp. Формат и уровень записи меняются в Конфигураторе: Администрирование → Настройка журнала регистрации.
Если журнал пуст, проверьте уровень записи в этой настройке. При уровне «Не регистрировать» ошибки туда не попадают вовсе.
Выгрузка для разработчика
В форме журнала можно сохранить отобранные записи в файл. Передавайте разработчику не весь журнал за год, а отбор за час вокруг сбоя. Так быстрее и меньше лишних данных уходит на сторону.
Технологический журнал и дампы: снимок в момент падения
Если 1С не просто выдаёт сообщение, а закрывается целиком или зависает, обычного отчета не будет. Тогда нужен технологический журнал и дамп процесса — снимок памяти в момент аварии.
Настройка через logcfg.xml
Технологический журнал включается файлом logcfg.xml. Его кладут в каталог conf платформы, например C:\Program Files\1cv8\conf\. На сервере — на той машине, где работает служба 1С.
Пример: писать исключения и создавать минимальные дампы при падении.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\v8logs" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
<dump create="true" location="C:\v8dumps" type="0"/>
</config>
Что здесь важно:
- 📁
location— папки должны существовать, и у пользователя, от имени которого работает 1С, должны быть права на запись. - ⏱
history="24"— хранить логи 24 часа, старые удаляются сами. - 🧾
EXCP— событие исключения. В логе будет текст ошибки, процесс и время. - 💾
type="0"— минимальный дамп. Он небольшой, но для первичного разбора его хватает.
Платформа перечитывает файл сама, перезапуск не нужен. Дождитесь пары минут и проверьте, что в C:\v8logs появились подпапки.
Технологический журнал с отбором «все события» за час занимает гигабайты. Включайте только нужные события и выключайте журнал после разбора: удалите или переименуйте logcfg.xml.
Что делать с дампом
Файлы .mdmp из папки дампов открывать самому смысла мало. Их передают разработчику конфигурации, партнёру или в поддержку платформы вместе с точной версией платформы. Без версии дамп почти бесполезен.
Как собрать отчет об ошибке вручную
Бывает, что ссылки на отчет нет, окно закрыто, а разбираться будет человек без доступа к базе. Тогда отчет собирают сами. Минимальный комплект:
- Текст ошибки — дословно, вместе со стеком из подробного текста или из журнала регистрации.
- Версия платформы — из
Справка → О программе, все четыре числа, например8.3.24.1586. - Конфигурация и её релиз — там же.
- Вариант базы — файловая или клиент-серверная, какая СУБД.
- Тип клиента — тонкий, толстый, веб-клиент, браузер.
- Шаги воспроизведения — что открыли, что заполнили, на какую кнопку нажали.
- Повторяемость — каждый раз, иногда, только у одного пользователя, только на одном компьютере.
Если ошибку ловит свой код
В доработках и внешних обработках удобно записывать полный текст ошибки в журнал регистрации самим. Тогда после сбоя всё нужное лежит в одной записи:
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации("Диагностика.Проведение",
УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
ВызватьИсключение;
КонецПопытки;
ВызватьИсключение без параметров передаёт исходную ошибку дальше, и пользователь всё равно увидит окно. Не глушите исключение молча: тихая ошибка хуже громкой.
Как читать отчет об ошибке и что передать разработчику
Отчет открыт, текст скопирован. Теперь важно понять, кто будет чинить: пользователь, администратор или программист.
Как читать строку стека
{ОбщийМодуль.ПроведениеСервер.Модуль(1532)}: Поле объекта не обнаружено (СуммаНДС)
ОбщийМодуль.ПроведениеСервер— объект конфигурации.Модуль— какой модуль: модуль объекта, менеджера, формы, общий.(1532)— номер строки.- После двоеточия — сама ошибка.
Если в верхней строке стека стоит ВнешняяОбработка или ВнешнийОтчет, виновата внешняя обработка, а не типовая конфигурация. Если Расширение или имя объекта с префиксом доработчика — смотрите расширения.
Кому передавать
Частые сообщения и что за ними стоит
| Сообщение | Что обычно значит |
|---|---|
Поле объекта не обнаружено (...) | Код обращается к реквизиту, которого нет: чаще после обновления, в устаревшей доработке |
Значение не является значением объектного типа (...) | Обращение к реквизиту пустой ссылки или неподходящего значения |
Ошибка при вызове метода контекста (...) | Ошибка внутри вызванного метода, подробности ниже по стеку |
Ошибка СУБД | Ошибка на стороне сервера баз данных: блокировка, нехватка места, повреждение |
Недостаточно прав для ... | Не баг: у пользователя нет права на объект или действие |
Сообщение про права — не повод звать программиста. Это настройка профиля или группы доступа пользователя.
Ошибка у одного пользователя часто уходит после очистки кэша клиента. Закройте 1С у этого пользователя и запустите её с параметром /ClearCache в строке запуска. Остальных пользователей это не затрагивает. Если сбой вернулся — значит, дело не в кэше, и отчет нужно отдавать дальше.