Разработка и Конфигурация · 10 мин
Как отладить внешний отчет 1С: практическое руководство
Практическое руководство по отладке внешних отчетов 1С: подключение через ОткрытьФорму, точки останова, параметры отладки, типичные ошибки и FAQ.
Внешний отчет 1С не входит в состав конфигурации, поэтому стандартная отладка через конфигуратор не видит его код «из коробки». Чтобы остановиться на точке останова в модуле внешнего отчета, нужно либо открыть файл отчета напрямую в предприятии и отладить его как отдельный объект, либо настроить отладку HTTP-запросов и подключиться к сеансу, в котором отчет уже запущен.
Практическая сложность в том, что внешние отчеты часто подключаются через механизм дополнительных отчетов и обработок (БСП), и тогда их модуль выполняется в контексте безопасного режима, а сам объект недоступен конфигуратору как открытый файл. В таких случаях помогают вспомогательные приемы: отладочная обработка-запускатор, вывод сообщений, замер производительности и временное отключение безопасного режима на тестовой базе.
Ниже разобраны рабочие способы отладки для файловой и клиент-серверной базы, настройка конфигуратора, приемы поиска ошибок в СКД и ограничения, о которых нужно помнить, чтобы не навредить рабочим данным.
Что нужно подготовить перед отладкой
Для отладки понадобятся: сам файл внешнего отчета (.erf), доступ к тестовой копии базы, конфигуратор той же версии платформы, что и у клиента, и права на запуск отладки. Работать лучше на копии базы: точки останова с остановкой выполнения блокируют сеанс, а на рабочей базе это может прервать процессы пользователей или фоновые задания.
Проверьте, что отладка разрешена. В файловом варианте отладка включается в конфигураторе: Сервис → Параметры → вкладка «Запуск 1С:Предприятия» → «Основные» → установите флаг «Устанавливать режим разрешения отладки». В клиент-серверном варианте сервер 1С должен быть запущен с ключом -debug (для агента сервера в параметрах службы), иначе конфигуратор не сможет подключиться к серверным процедурам.
Способ 1. Открыть отчет напрямую и отладить как внешний файл
Самый простой сценарий подходит, когда отчет запускается вручную, а не через подсистему дополнительных отчетов. Откройте 1С:Предприятие в режиме отладки (запуск из конфигуратора по F5 или подключение к уже работающему сеансу через Отладка → Подключение). Затем в предприятии выберите Файл → Открыть и укажите файл .erf.
После этого в конфигураторе откройте модуль отчета: Отладка → Предметы отладки либо через диалог подключения, где среди доступных объектов появится внешний отчет. Поставьте точку останова в нужной процедуре (например, в ПриКомпоновкеРезультата) и сформируйте отчет в предприятии — выполнение остановится на вашей строке.
- 1Скопируйте базу или убедитесь, что работаете на тестовой
- 2Запустите конфигуратор и включите режим разрешения отладки
- 3Запустите предприятие по F5 или подключитесь к сеансу через Отладка → Подключение
- 4В предприятии откройте файл отчета через Файл → Открыть
- 5В конфигураторе откройте модуль внешнего отчета и расставьте точки останова
- 6Сформируйте отчет и проходите код по шагам (F11 — с заходом, F10 — через вызов)
- 7Проверьте значения переменных в табло (Shift+F9) и окне выражений
Способ 2. Отладка отчета, подключенного через дополнительные отчеты и обработки
Когда отчет зарегистрирован в справочнике «Дополнительные отчеты и обработки», его модуль исполняется платформой из двоичных данных, и открыть его как файл в сеансе нельзя. Здесь работают два подхода.
Первый — временно заменить хранилище: вместо правки конфигурации откройте тот же .erf напрямую (как в способе 1) и воспроизведите ошибку там. В большинстве случаев логика СКД и обработчиков идентична, различия касаются только параметров подключения. Это самый быстрый и безопасный путь.
Второй подход — отладка по предмету отладки. В конфигураторе выберите Отладка → Подключение, включите отбор по предметам отладки и отметьте нужные типы (клиент, сервер, фоновое задание). Затем запустите формирование отчета из интерфейса дополнительных отчетов. Если код выполняется на сервере, убедитесь, что сервер запущен с ключом -debug, иначе серверные процедуры будут недоступны для остановки.
Способ 3. Обработка-запускатор для отладки
Когда отчет нужно отлаживать именно в контексте программного вызова (например, он формируется регламентным заданием), удобно создать простую внешнюю обработку, которая программно открывает и формирует отчет. Ее модуль доступен конфигуратору как обычный внешний файл, и вы можете отладить всю цепочку.
Пример кода запуска в модуле формы обработки:
&НаКлиенте
Процедура СформироватьНажатие(Команда)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("Период", Период);
ОткрытьФорму("ВнешнийОтчет.МойОтчет.Форма", ПараметрыОтчета);
КонецПроцедуры
Для полноценной отладки серверной части удобнее получить объект отчета и вызвать формирование программно: ВнешниеОтчеты.Создать("ПолноеИмяФайла") для файлового варианта или загрузка через ВнешниеОтчеты.Создать() с предварительной регистрацией. После создания объекта доступны его схема компоновки, настройки и метод СкомпоноватьРезультат, на котором можно поставить точку останова и пошагово пройти формирование.
Отладка схемы компоновки данных и типичные места ошибок
Большинство проблем внешних отчетов связано не с кодом модуля, а со схемой компоновки данных: неверные связи наборов данных, ошибки в запросе, неправильные выражения вычисляемых полей, некорректные параметры виртуальных таблиц. Отладчик кода здесь помогает ограниченно — нужен анализ самой СКД.
Практический прием: откройте отчет в конфигураторе как внешний файл (Файл → Открыть в конфигураторе), перейдите к основной схеме компоновки и проверьте запрос в консоли запросов с теми же параметрами. Если запрос возвращает пустой результат или ошибку — проблема найдена. Также полезно в обработчике ПриКомпоновкеРезультата вывести макет компоновки через СхемаКомпоновкиДанных и настройки, чтобы увидеть, какие именно настройки реально применяются.
Как проверить результат и убедиться, что ошибка устранена
После исправления сформируйте отчет на контрольном наборе данных с известным результатом: например, за период, по которому есть проверенные цифры из стандартного отчета конфигурации. Сравнение с эталонным отчетом — самый надежный способ верификации, потому что внешний отчет часто дублирует или расширяет типовую аналитику.
Дополнительно проверьте граничные случаи: пустой период, отбор без данных, пользователь с ограниченными правами (RLS может менять результат запроса), формирование на сервере и на клиенте. Если отчет работает через дополнительные отчеты, после отладки файла не забудьте загрузить исправленную версию в справочник и повторить проверку уже в штатном режиме запуска.
Как проверить результат
Суммы и количество строк совпадают или расхождения объяснимы логикой отчета
Расхождения без причины — вероятна ошибка в запросе или связях СКД
Отчет формируется, данные соответствуют доступным
Ошибка доступа или пустой результат у части пользователей
Версия в справочнике обновлена, отчет формируется без ошибок
Запускается старая версия — файл не перезагружен в хранилище
Частые вопросы по отладке внешних отчетов
Почему точка останова в модуле внешнего отчета не срабатывает?
Чаще всего отчет запущен не как открытый файл, а из справочника дополнительных отчетов — тогда его модуль недоступен конфигуратору напрямую. Откройте .erf через Файл → Открыть в предприятии и повторите. Если код серверный, проверьте, что сервер 1С запущен с ключом -debug и что в настройках подключения отмечены серверные предметы отладки.
Как отладить отчет, который формируется регламентным заданием?
Включите в диалоге подключения предмет отладки «Фоновое задание» и дождитесь запуска задания — конфигуратор подключится к его сеансу. Альтернатива: временно запустить ту же логику через обработку-запускатор в интерактивном сеансе, где отладка проще.
Можно ли отладить запрос СКД без изменения отчета?
Да. Скопируйте текст запроса из схемы компоновки в консоль запросов, подставьте реальные значения параметров и выполните по частям. Также полезно временно добавить в обработчик ПриКомпоновкеРезультата вывод текста итогового запроса макета компоновки через Сообщить() — это показывает, какой запрос реально уходит в базу.
Отчет работает у разработчика, но падает у пользователя. Что проверять?
В первую очередь права: RLS и ограничения на уровне ролей меняют состав данных и могут приводить к ошибкам в вычисляемых полях. Далее — безопасный режим подключения дополнительного отчета и различия в настройках, сохраненных у конкретного пользователя.
Как понять, что проблема в безопасном режиме, а не в коде?
Признак — ошибки вида «Операция не разрешена в безопасном режиме» при обращении к файлам, COM или внешним компонентам. Откройте карточку отчета в справочнике дополнительных отчетов и проверьте настройки безопасного режима и разрешений. На тестовой базе можно временно отключить безопасный режим и убедиться, что отчет формируется.
Нужно ли включать отладку на рабочем сервере для разового поиска ошибки?
Нежелательно: режим -debug снижает производительность сервера. Безопаснее воспроизвести проблему на копии базы. Если без рабочего сервера не обойтись, включайте отладку на минимальное время, используйте подключение к конкретному сеансу и отключайте режим сразу после диагностики.
Что важно запомнить
Ключ к отладке внешнего отчета — сделать его модуль видимым для конфигуратора: открыть .erf напрямую, использовать обработку-запускатор или подключение по предметам отладки. Серверная отладка требует ключа -debug, работы ведутся на копии базы, а результат проверяется сравнением с эталонными данными и повторным запуском через штатный механизм дополнительных отчетов.