К статье
Практический материал

Разработка и Конфигурация · 10 мин

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

Практическое руководство по отладке внешних отчетов 1С: подключение через ОткрытьФорму, точки останова, параметры отладки, типичные ошибки и FAQ.

Внешний отчет 1С не входит в состав конфигурации, поэтому стандартная отладка через конфигуратор не видит его код «из коробки». Чтобы остановиться на точке останова в модуле внешнего отчета, нужно либо открыть файл отчета напрямую в предприятии и отладить его как отдельный объект, либо настроить отладку HTTP-запросов и подключиться к сеансу, в котором отчет уже запущен.

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

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

Что нужно подготовить перед отладкой

Для отладки понадобятся: сам файл внешнего отчета (.erf), доступ к тестовой копии базы, конфигуратор той же версии платформы, что и у клиента, и права на запуск отладки. Работать лучше на копии базы: точки останова с остановкой выполнения блокируют сеанс, а на рабочей базе это может прервать процессы пользователей или фоновые задания.

Проверьте, что отладка разрешена. В файловом варианте отладка включается в конфигураторе: Сервис → Параметры → вкладка «Запуск 1С:Предприятия» → «Основные» → установите флаг «Устанавливать режим разрешения отладки». В клиент-серверном варианте сервер 1С должен быть запущен с ключом -debug (для агента сервера в параметрах службы), иначе конфигуратор не сможет подключиться к серверным процедурам.

Способ 1. Открыть отчет напрямую и отладить как внешний файл

Самый простой сценарий подходит, когда отчет запускается вручную, а не через подсистему дополнительных отчетов. Откройте 1С:Предприятие в режиме отладки (запуск из конфигуратора по F5 или подключение к уже работающему сеансу через Отладка → Подключение). Затем в предприятии выберите Файл → Открыть и укажите файл .erf.

После этого в конфигураторе откройте модуль отчета: Отладка → Предметы отладки либо через диалог подключения, где среди доступных объектов появится внешний отчет. Поставьте точку останова в нужной процедуре (например, в ПриКомпоновкеРезультата) и сформируйте отчет в предприятии — выполнение остановится на вашей строке.

Порядок действий
  1. 1
    Скопируйте базу или убедитесь, что работаете на тестовой
  2. 2
    Запустите конфигуратор и включите режим разрешения отладки
  3. 3
    Запустите предприятие по F5 или подключитесь к сеансу через Отладка → Подключение
  4. 4
    В предприятии откройте файл отчета через Файл → Открыть
  5. 5
    В конфигураторе откройте модуль внешнего отчета и расставьте точки останова
  6. 6
    Сформируйте отчет и проходите код по шагам (F11 — с заходом, F10 — через вызов)
  7. 7
    Проверьте значения переменных в табло (Shift+F9) и окне выражений

Способ 2. Отладка отчета, подключенного через дополнительные отчеты и обработки

Когда отчет зарегистрирован в справочнике «Дополнительные отчеты и обработки», его модуль исполняется платформой из двоичных данных, и открыть его как файл в сеансе нельзя. Здесь работают два подхода.

Первый — временно заменить хранилище: вместо правки конфигурации откройте тот же .erf напрямую (как в способе 1) и воспроизведите ошибку там. В большинстве случаев логика СКД и обработчиков идентична, различия касаются только параметров подключения. Это самый быстрый и безопасный путь.

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

Способ 3. Обработка-запускатор для отладки

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

Пример кода запуска в модуле формы обработки:

&НаКлиенте

Процедура СформироватьНажатие(Команда)

ПараметрыОтчета = Новый Структура;

ПараметрыОтчета.Вставить("Период", Период);

ОткрытьФорму("ВнешнийОтчет.МойОтчет.Форма", ПараметрыОтчета);

КонецПроцедуры

Для полноценной отладки серверной части удобнее получить объект отчета и вызвать формирование программно: ВнешниеОтчеты.Создать("ПолноеИмяФайла") для файлового варианта или загрузка через ВнешниеОтчеты.Создать() с предварительной регистрацией. После создания объекта доступны его схема компоновки, настройки и метод СкомпоноватьРезультат, на котором можно поставить точку останова и пошагово пройти формирование.

Отладка схемы компоновки данных и типичные места ошибок

Большинство проблем внешних отчетов связано не с кодом модуля, а со схемой компоновки данных: неверные связи наборов данных, ошибки в запросе, неправильные выражения вычисляемых полей, некорректные параметры виртуальных таблиц. Отладчик кода здесь помогает ограниченно — нужен анализ самой СКД.

Практический прием: откройте отчет в конфигураторе как внешний файл (Файл → Открыть в конфигураторе), перейдите к основной схеме компоновки и проверьте запрос в консоли запросов с теми же параметрами. Если запрос возвращает пустой результат или ошибку — проблема найдена. Также полезно в обработчике ПриКомпоновкеРезультата вывести макет компоновки через СхемаКомпоновкиДанных и настройки, чтобы увидеть, какие именно настройки реально применяются.

Типичные ошибки
01
Отладка серверного кода без ключа -debug на сервере — точки останова в серверных процедурах просто не срабатывают, и создается ложное ощущение, что код не выполняется
02
Правка файла .erf, который не совпадает с версией, загруженной в справочник дополнительных отчетов, — исправления не попадают в рабочий запуск
03
Поиск ошибки в модуле, когда проблема в запросе СКД — время тратится на отладчик, а причина в соединениях таблиц или параметрах виртуальной таблицы
04
Отладка на рабочей базе с остановкой выполнения — блокируются сеансы пользователей и фоновые задания

Как проверить результат и убедиться, что ошибка устранена

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

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

Контрольные точки

Как проверить результат

Совпадение итогов с типовым отчетом за тот же период
Норма

Суммы и количество строк совпадают или расхождения объяснимы логикой отчета

Тревожный признак

Расхождения без причины — вероятна ошибка в запросе или связях СКД

Формирование под пользователем с ограниченными правами
Норма

Отчет формируется, данные соответствуют доступным

Тревожный признак

Ошибка доступа или пустой результат у части пользователей

Запуск через дополнительные отчеты после загрузки новой версии
Норма

Версия в справочнике обновлена, отчет формируется без ошибок

Тревожный признак

Запускается старая версия — файл не перезагружен в хранилище

Частые вопросы по отладке внешних отчетов

Почему точка останова в модуле внешнего отчета не срабатывает?

Чаще всего отчет запущен не как открытый файл, а из справочника дополнительных отчетов — тогда его модуль недоступен конфигуратору напрямую. Откройте .erf через Файл → Открыть в предприятии и повторите. Если код серверный, проверьте, что сервер 1С запущен с ключом -debug и что в настройках подключения отмечены серверные предметы отладки.

Как отладить отчет, который формируется регламентным заданием?

Включите в диалоге подключения предмет отладки «Фоновое задание» и дождитесь запуска задания — конфигуратор подключится к его сеансу. Альтернатива: временно запустить ту же логику через обработку-запускатор в интерактивном сеансе, где отладка проще.

Можно ли отладить запрос СКД без изменения отчета?

Да. Скопируйте текст запроса из схемы компоновки в консоль запросов, подставьте реальные значения параметров и выполните по частям. Также полезно временно добавить в обработчик ПриКомпоновкеРезультата вывод текста итогового запроса макета компоновки через Сообщить() — это показывает, какой запрос реально уходит в базу.

Отчет работает у разработчика, но падает у пользователя. Что проверять?

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

Как понять, что проблема в безопасном режиме, а не в коде?

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

Нужно ли включать отладку на рабочем сервере для разового поиска ошибки?

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

Итог

Что важно запомнить

Ключ к отладке внешнего отчета — сделать его модуль видимым для конфигуратора: открыть .erf напрямую, использовать обработку-запускатор или подключение по предметам отладки. Серверная отладка требует ключа -debug, работы ведутся на копии базы, а результат проверяется сравнением с эталонными данными и повторным запуском через штатный механизм дополнительных отчетов.