Как увидеть полный текст ошибки при падении или открытии внешнего отчета в 1С

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При отладке и запуске внешних отчетов и обработок разработчики часто сталкиваются с ситуацией, когда всплывающее информационное окно обрезает текст системного исключения, не позволяя его выделить или прокрутить. В типовых конфигурациях на базе Библиотеки стандартных подсистем (БСП) создание и инициализация внешних объектов нередко перехватываются встроенными механизмами, из-за чего стандартный диалог с кнопкой подробного описания ошибки не появляется, а отладчик не прерывает выполнение. Разберем по шагам, как гарантированно получить полный текст ошибки и стек вызовов.

Способ 1. Программный перехват и запись ошибки в Журнал регистрации

Если внешний отчет подключается через механизм дополнительных отчетов и обработок или запускается программно, наиболее надежным способом является оборачивание вызова в блок Попытка ... Исключение с явной фиксацией системного сообщения через функцию ОписаниеОшибки() или ПодробноеПредставлениеОшибки().

Рассмотрим пример кода, который перехватывает сбой на этапе создания объекта внешнего отчета и записывает полные сведения в Журнал регистрации:


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

Разберем, как работает данный подход:

  1. Метод ВнешниеОтчеты.Создать() пытается инициализировать экземпляр внешнего отчета из переданного файла или временного хранилища.
  2. Если внутри модуля отчета, его схемы компоновки данных или при обращении к несуществующим процедурам возникает исключение, управление передается в секцию Исключение.
  3. Функция ЗаписьЖурналаРегистрации() сохраняет полный текст в системный журнал, после чего его можно открыть через Функции для технического специалиста (или Все функции) → Журнал регистрации и скопировать детальное описание проблемы.

Способ 2. Правильная настройка отладчика и перехват фоновых заданий

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

  1. Настройка автоматического подключения к фоновым потокам. В типовых решениях (например, «1С:Управление торговлей», «1С:ERP») инициализация внешних отчетов может выполняться в фоновом задании на стороне сервера. В меню конфигуратора выберем Отладка → Подключение... → нажмем кнопку Настройка автоматического подключения и обязательно установим флажки напротив пунктов Фоновые задания и Серверные модули.
  2. Остановка по ошибке на перехватываемых исключениях. Если ошибка возникает внутри типовой конструкции Попытка ... Исключение, отладчик по умолчанию ее пропускает. Перейдем в меню Отладка → Остановка по ошибке, включим флаг остановки и выберем режим обработки всех исключений, включая перехватываемые.
  3. Отладка на веб-сервере. Если база опубликована на веб-сервере (Apache или IIS), проверим файл default.vrd — в нем должен быть указан параметр отладки (например, debug="true").

Способ 3. Прямое открытие внешнего файла через меню «Файл — Открыть»

При тестировании отчетов, интегрированных в справочник «Дополнительные отчеты и обработки», типовые механизмы БСП выводят упрощенные уведомления. Чтобы увидеть стандартное окно ошибки платформы, откроем отчет напрямую:

  1. В пользовательском режиме перейдем в главное меню: Файл → Открыть... и выберем файл отчета с расширением .erf.
  2. При возникновении ошибки платформа отобразит стандартное модальное окно с кнопкой Подробно....
  3. Нажатие на кнопку откроет полный стек вызовов с указанием конкретных номеров строк и модулей, вызвавших сбой.

Способ 4. Просмотр через Центр оповещений интерфейса «Такси»

Если сообщение об ошибке появилось в виде всплывающего желтого окна в правом нижнем углу и исчезло или не позволяет выделить текст, обратим внимание на верхнюю панель программы. Все системные предупреждения дублируются в Центре оповещений (значок колокольчика). Открыв панель оповещений, найдем нужную запись — там текст доступен для полного выделения и копирования в буфер обмена.

Способ 5. Сбор сведений через Технологический журнал (ТЖ)

В сложных сценариях, когда ошибку не удается воспроизвести под отладчиком в интерактивном режиме, настроим сбор технологического журнала на сервере или локальном компьютере. Для этого создадим файл 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)

Если отчет успешно открывался в более старой версии конфигурации (например, «Управление торговлей 11.2»), а в новой (11.3) падает на этапе создания объекта, выясним наиболее частые причины:

  1. Изменение структуры экспортной функции СведенияОВнешнейОбработке(). При обновлении БСП меняются требования к возвращаемой таблице команд и обязательным полям структуры. Несоответствие параметров приводит к критическому сбою при валидации отчета подсистемой.
  2. Ограничения безопасного режима. В более свежих версиях платформы и БСП ужесточен контроль прав. Если отчет использует прямой доступ к файлам или выполняет привилегированные действия, необходимо явно запросить разрешения в структуре сведений об обработке либо отключить безопасный режим при регистрации.
  3. Переименование общих модулей и регистров. При смене версий типовых конфигураций разработчики нередко реструктурируют регистры учета (в частности, регистры партий и себестоимости) и меняют состав общих модулей, что приводит к ошибкам компиляции встроенного кода отчета при инициализации.
← На главную