Где искать подробности сбоя в 1С 8.3 и как их прочитать

· 9 мин

Содержание

Отчет об ошибке в 1С 8.3 открывается прямо из окна сбоя: в нём есть ссылка «Сформировать отчет об ошибке», а рядом — кнопка с подробным текстом. Подробный текст показывает модуль и номер строки, где упал код. Сам отчет собирает версию платформы, конфигурацию, стек вызовов и сведения о компьютере в один файл, который можно сохранить и отправить.

Если окно уже закрыто, следы ошибки остаются в журнале регистрации. Для трудных случаев есть ещё два инструмента: режим отладки с остановкой по ошибке и технологический журнал с дампами. Ниже — порядок, от простого к глубокому.

Что видно в окне ошибки и как открыть отчет

Окно ошибки — первое и самое информативное место. Не закрывайте его сразу: после закрытия часть сведений придётся восстанавливать по журналу.

Короткое сообщение

Сверху окна — текст ошибки для пользователя. Например:

  • Поле объекта не обнаружено (Контрагент)
  • Значение не является значением объектного типа (Организация)
  • Ошибка при вызове метода контекста (Записать)
  • Ошибка СУБД: ... с текстом от SQL-сервера или PostgreSQL

Само по себе сообщение редко объясняет причину. Нужен контекст: где именно и на какой строке.

Подробный текст и стек

  1. В окне ошибки нажмите кнопку или ссылку с подробностями (обычно «Подробно» или «Подробный текст ошибки»).
  2. Откроется текст в фигурных скобках вида {Документ.РеализацияТоваровУслуг.МодульОбъекта(245)}: ....
  3. Выделите весь текст и скопируйте Ctrl+A, Ctrl+C.
  4. Вставьте его в письмо или заявку как есть, без пересказа.

Каждая строка в фигурных скобках — один уровень стека вызовов. Верхняя строка — место, где ошибка возникла. Нижние — откуда туда пришли.

Сам отчет об ошибке

  1. В окне ошибки нажмите ссылку «Сформировать отчет об ошибке».
  2. Откроется форма отчета. В ней видно, какие сведения попадут в отчет, и можно добавить свой комментарий: что делали перед сбоем.
  3. Если в форме есть галочка про снимок экрана — решите, включать ли его. На скриншоте могут быть персональные данные или суммы.
  4. Сохраните отчет в файл командой сохранения в форме. Получится архив, внутри — описание ошибки в формате JSON.
  5. Если в базе настроена автоматическая отправка, форма предложит отправить отчет сразу. Тогда файл уходит туда, куда указал администратор базы.

Если ссылки на отчет в окне нет, проверьте версию платформы в меню Справка → О программе. Механизм отчетов об ошибках есть в относительно свежих версиях 8.3. На старой платформе работайте с подробным текстом и журналом регистрации.

Режим отладки: как поймать ошибку на нужной строке

Подробный текст говорит, где упало. Отладчик показывает, почему: какие были значения переменных в момент сбоя. Это работа для программиста или администратора с доступом к Конфигуратору.

Файловая база

  1. Откройте базу в Конфигураторе.
  2. В меню Отладка включите Остановка по ошибке и отметьте нужные варианты.
  3. Запустите режим 1С:Предприятие кнопкой отладки (F5).
  4. Повторите действие, которое приводит к ошибке.
  5. Выполнение остановится на проблемной строке. Наведите курсор на переменные или откройте окно вычисления выражения (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Администрирование → Обслуживание → Журнал регистрации
Конфигуратор (любая конфигурация)Администрирование → Журнал регистрации
Конфигурация без раздела администрированияВсе функции → Стандартные → Журнал регистрации

Пункт «Все функции» в меню появляется после включения в параметрах программы флажка показа команды «Все функции».

Как найти нужную запись

  1. Установите отбор: период — около времени сбоя, уровень — Ошибка.
  2. Если известен пользователь, добавьте отбор по нему.
  3. Откройте запись двойным щелчком. В поле комментария лежит текст ошибки, часто со стеком.
  4. Посмотрите записи за минуту до ошибки у того же пользователя: видно, какой документ он открывал или записывал.

Где журнал лежит физически

  • Файловая база: папка 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 из папки дампов открывать самому смысла мало. Их передают разработчику конфигурации, партнёру или в поддержку платформы вместе с точной версией платформы. Без версии дамп почти бесполезен.

Как собрать отчет об ошибке вручную

Бывает, что ссылки на отчет нет, окно закрыто, а разбираться будет человек без доступа к базе. Тогда отчет собирают сами. Минимальный комплект:

  1. Текст ошибки — дословно, вместе со стеком из подробного текста или из журнала регистрации.
  2. Версия платформы — из Справка → О программе, все четыре числа, например 8.3.24.1586.
  3. Конфигурация и её релиз — там же.
  4. Вариант базы — файловая или клиент-серверная, какая СУБД.
  5. Тип клиента — тонкий, толстый, веб-клиент, браузер.
  6. Шаги воспроизведения — что открыли, что заполнили, на какую кнопку нажали.
  7. Повторяемость — каждый раз, иногда, только у одного пользователя, только на одном компьютере.
Комплект для разработчика
Выполнено: 0 / 7

Если ошибку ловит свой код

В доработках и внешних обработках удобно записывать полный текст ошибки в журнал регистрации самим. Тогда после сбоя всё нужное лежит в одной записи:

Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
    ЗаписьЖурналаРегистрации("Диагностика.Проведение",
        УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
    ВызватьИсключение;
КонецПопытки;

ВызватьИсключение без параметров передаёт исходную ошибку дальше, и пользователь всё равно увидит окно. Не глушите исключение молча: тихая ошибка хуже громкой.

Как читать отчет об ошибке и что передать разработчику

Отчет открыт, текст скопирован. Теперь важно понять, кто будет чинить: пользователь, администратор или программист.

Как читать строку стека

{ОбщийМодуль.ПроведениеСервер.Модуль(1532)}: Поле объекта не обнаружено (СуммаНДС)

  • ОбщийМодуль.ПроведениеСервер — объект конфигурации.
  • Модуль — какой модуль: модуль объекта, менеджера, формы, общий.
  • (1532) — номер строки.
  • После двоеточия — сама ошибка.

Если в верхней строке стека стоит ВнешняяОбработка или ВнешнийОтчет, виновата внешняя обработка, а не типовая конфигурация. Если Расширение или имя объекта с префиксом доработчика — смотрите расширения.

Кому передавать

Диагностика: выберите симптом

Частые сообщения и что за ними стоит

СообщениеЧто обычно значит
Поле объекта не обнаружено (...)Код обращается к реквизиту, которого нет: чаще после обновления, в устаревшей доработке
Значение не является значением объектного типа (...)Обращение к реквизиту пустой ссылки или неподходящего значения
Ошибка при вызове метода контекста (...)Ошибка внутри вызванного метода, подробности ниже по стеку
Ошибка СУБДОшибка на стороне сервера баз данных: блокировка, нехватка места, повреждение
Недостаточно прав для ...Не баг: у пользователя нет права на объект или действие

Сообщение про права — не повод звать программиста. Это настройка профиля или группы доступа пользователя.

Ошибка у одного пользователя часто уходит после очистки кэша клиента. Закройте 1С у этого пользователя и запустите её с параметром /ClearCache в строке запуска. Остальных пользователей это не затрагивает. Если сбой вернулся — значит, дело не в кэше, и отчет нужно отдавать дальше.

Частые вопросы

Можно ли открыть отчет об ошибке, если окно уже закрыто?
Сам отчет — нет, он формируется из окна сбоя. Но текст ошибки со стеком чаще всего есть в журнале регистрации: отбор по уровню «Ошибка» и времени сбоя.
Есть ли в отчете об ошибке пароли и данные базы?
Пароли в отчет не попадают. Но в снимке экрана и тексте ошибки могут быть суммы, ФИО и названия контрагентов. Перед отправкой посторонним снимите галочку снимка экрана.
Почему в подробном тексте нет номера строки?
Строки нет, если ошибка возникла внутри платформы или в модуле с закрытыми исходниками. Тогда опирайтесь на текст ошибки и шаги воспроизведения.
Что делать, если ошибка не повторяется?
Включите технологический журнал с событием EXCP на несколько дней. Когда ошибка повторится, в логе будет время, процесс и текст, даже если пользователь ничего не записал.
Нужно ли перед отладкой делать копию базы?
Для просмотра журнала регистрации — нет. Для отладки с остановками в клиент-серверной базе — желательно работать на копии, чтобы не держать блокировки у коллег.