Почему отладчик не останавливается в подключенной внешней печатной форме (ВПФ) и как это исправить?

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

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

Разберем причину поведения системы

Для начала проанализируем ситуацию: почему поведение системы меняется? Когда мы запускаем ВПФ через меню Файл — Открыть, платформа работает напрямую с файлом .epf на диске. В этом случае путь к файлу в конфигураторе и путь исполняемого кода совпадают.

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

  1. Извлекает двоичные данные обработки из информационной базы.
  2. Сохраняет их во временный файл в директории пользователя (обычно это папка AppData\Local\Temp).
  3. Присваивает временному файлу уникальное имя (например, v8_2345_12.epf).
  4. Подключает и запускает именно этот временный файл.

Важный момент: точки останова, расставленные вами в исходном файле МояПечатнаяФорма.epf, никак не связаны с временным файлом, который создала система. Для конфигуратора это два абсолютно разных объекта.

Способ 1. Настройка серверной отладки

Прежде чем приступать к программным хитростям, проверим базовые настройки. В современных версиях 1С:Управление торговлей 11.5 печать практически всегда выполняется на стороне сервера. Если у вас клиент-серверный вариант базы, отладчик не остановится, если сервер не переведен в специальный режим.

Выясним, включена ли отладка на сервере. Для этого убедимся, что служба сервера «1С:Предприятия» запущена с ключом -debug. Если этот параметр отсутствует, серверный код будет выполняться без возможности прерывания отладчиком.

Также пройдем в меню конфигуратора Отладка — Установка предметов отладки. Нам нужно убедиться, что в списке типов подключений активны пункты Сервер и Фоновые задания. Без включения отладки фоновых заданий мы не сможем «поймать» момент формирования печатной формы, если система отправляет задачу на печать в фоновом режиме.

Способ 2. Отладка через временный файл

Рассмотрим пошагово метод, который позволяет использовать стандартные точки останова даже в подключенной ВПФ:

  1. Найдем в конфигурации общий модуль, отвечающий за запуск дополнительных обработок (обычно это ДополнительныеОтчетыИОбработки).
  2. Поставим точку останова в месте, где происходит вызов метода ПодключитьВнешнююОбработку() или перед выполнением команды.
  3. Запустим печать из интерфейса пользователя.
  4. Когда отладчик остановится в общем модуле, вычислим значение переменной, содержащей путь к временному файлу.
  5. Скопируем этот путь, нажмем Файл — Открыть в конфигураторе и вставим путь в строку имени файла.
  6. Теперь, когда открыт именно временный файл, расставим в нем точки останова. Процесс пойдет дальше, и отладчик сработает.

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

Способ 3. Метод программной остановки («Вызов исключения»)

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


Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    // Временно вставляем для отладки
    ВызватьИсключение "Остановка для отладки";
    
    // Далее идет основной код
    ...
КонецПроцедуры

При запуске печати система выдаст окно с критической ошибкой. Нам нужно нажать кнопку Подробно, а затем — кнопку Конфигуратор. Платформа сама откроет тот самый временный файл на нужной строке. После этого мы можем спокойно ставить точки останова ниже по коду, удалить строку с исключением и продолжить работу в текущей сессии.

Способ 4. Использование внешних обработок-отладчиков

Самый профессиональный и удобный метод — использование специальных «отладчиков ВПФ». Рассмотрим принцип их работы. Это внешние обработки, которые эмулируют среду запуска печатной формы. Вместо того чтобы подключать ВПФ в справочник, мы открываем обработку-отладчик, в которой:

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

Способ 5. Отключение безопасного режима и фоновой печати

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

Также в настройках некоторых конфигураций (включая УТ 11.5) существует опция фоновой печати. Если форма формируется в фоне, основной сеанс отладчика ее «не видит». Попробуйте временно отключить использование фоновых заданий для печати в настройках программы или используйте подключение к фоновым заданиям в меню Автоматическое подключение настроек отладки.

Протокол отладки: HTTP или TCP/IP

Начиная с версии платформы 8.3.7, разработчикам доступен протокол HTTP для отладки. Если вы сталкиваетесь с тем, что отладчик «отваливается» или не видит серверные вызовы в распределенной сети, попробуйте переключить настройки отладки в конфигураторе на использование HTTP. Этот протокол работает более стабильно при прохождении через брандмауэры и при отладке серверных процессов в сложных инфраструктурах.

Подведем итог: для успешной отладки ВПФ в УТ 11.5 наиболее эффективным является сочетание включенной серверной отладки и использование метода «программной остановки» через исключение или специальных обработок для тестирования. Это избавляет от необходимости вручную искать временные файлы и позволяет сосредоточиться на логике кода.

← На главную