При отладке и запуске внешних отчетов и обработок разработчики часто сталкиваются с ситуацией, когда всплывающее информационное окно обрезает текст системного исключения, не позволяя его выделить или прокрутить. В типовых конфигурациях на базе Библиотеки стандартных подсистем (БСП) создание и инициализация внешних объектов нередко перехватываются встроенными механизмами, из-за чего стандартный диалог с кнопкой подробного описания ошибки не появляется, а отладчик не прерывает выполнение. Разберем по шагам, как гарантированно получить полный текст ошибки и стек вызовов.
Если внешний отчет подключается через механизм дополнительных отчетов и обработок или запускается программно, наиболее надежным способом является оборачивание вызова в блок Попытка ... Исключение с явной фиксацией системного сообщения через функцию ОписаниеОшибки() или ПодробноеПредставлениеОшибки().
Рассмотрим пример кода, который перехватывает сбой на этапе создания объекта внешнего отчета и записывает полные сведения в Журнал регистрации:
Попытка
ПараметрыОтчета.Объект = ВнешниеОтчеты.Создать(ПараметрыОтчета.Имя);
Исключение
ТекстОшибки = ОписаниеОшибки();
Сообщить(ТекстОшибки);
ЗаписьЖурналаРегистрации(
"Отчеты.Ведомость по партиям ТМЦ",
УровеньЖурналаРегистрации.Ошибка,
,
,
ТекстОшибки
);
КонецПопытки;
Разберем, как работает данный подход:
ВнешниеОтчеты.Создать() пытается инициализировать экземпляр внешнего отчета из переданного файла или временного хранилища.Исключение.ЗаписьЖурналаРегистрации() сохраняет полный текст в системный журнал, после чего его можно открыть через Функции для технического специалиста (или Все функции) → Журнал регистрации и скопировать детальное описание проблемы.Нередко включение режима отладки в конфигураторе не приводит к остановке на строке с ошибкой. Проанализируем основные причины такого поведения и настроим отладчик:
Фоновые задания и Серверные модули.Попытка ... Исключение, отладчик по умолчанию ее пропускает. Перейдем в меню Отладка → Остановка по ошибке, включим флаг остановки и выберем режим обработки всех исключений, включая перехватываемые.default.vrd — в нем должен быть указан параметр отладки (например, debug="true").При тестировании отчетов, интегрированных в справочник «Дополнительные отчеты и обработки», типовые механизмы БСП выводят упрощенные уведомления. Чтобы увидеть стандартное окно ошибки платформы, откроем отчет напрямую:
.erf.Если сообщение об ошибке появилось в виде всплывающего желтого окна в правом нижнем углу и исчезло или не позволяет выделить текст, обратим внимание на верхнюю панель программы. Все системные предупреждения дублируются в Центре оповещений (значок колокольчика). Открыв панель оповещений, найдем нужную запись — там текст доступен для полного выделения и копирования в буфер обмена.
В сложных сценариях, когда ошибку не удается воспроизвести под отладчиком в интерактивном режиме, настроим сбор технологического журнала на сервере или локальном компьютере. Для этого создадим файл logcfg.xml в каталоге конфигурационных файлов платформы (каталог conf) со следующим содержимым:
<config xmlns="v8.1c.ru/v8/tech-log">
<log location="C:\v8logs" history="4">
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="EXCPCNTX"/>
</event>
<property name="all"/>
</log>
</config>
События EXCP и EXCPCNTX зафиксируют точный текст ошибки и контекст исполнения в текстовый лог в момент падения отчета независимо от внутренних блоков обработки исключений конфигурации.
Если отчет успешно открывался в более старой версии конфигурации (например, «Управление торговлей 11.2»), а в новой (11.3) падает на этапе создания объекта, выясним наиболее частые причины:
СведенияОВнешнейОбработке(). При обновлении БСП меняются требования к возвращаемой таблице команд и обязательным полям структуры. Несоответствие параметров приводит к критическому сбою при валидации отчета подсистемой.