Как настроить отладку внешней печатной формы в 1С 8.3 (ЗУП 3.1)

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

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

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

Для начала проанализируем ситуацию и выясним причину такого поведения системы. Когда мы работаем с обычным внешним отчетом или обработкой, мы открываем файл через меню Файл — Открыть. В случае с ВПФ ситуация иная. Мы подключаем обработку в справочник ДополнительныеОтчетыИОбработки. С этого момента 1С сохраняет файл во внутреннее хранилище базы данных в виде двоичных данных.

В момент вызова команды печати система выполняет следующие действия:

  1. Извлекает двоичные данные из справочника.
  2. Создает временный файл во временном каталоге на сервере или клиенте.
  3. Запускает этот временный файл.

Ваш конфигуратор «знает» о файле .epf, который лежит у вас на диске D:\Work\MyPrintForm.epf, но он ничего не знает о временном файле с произвольным именем в недрах операционной системы, который исполняет сервер 1С. Связь между исходным кодом и исполняемым объектом разрывается. Кроме того, выполнение кода печати чаще всего происходит на стороне сервера, что требует особых настроек.

Шаг 1: Настройка серверной отладки

Если ваша база данных работает в клиент-серверном режиме, первым делом проверим настройки службы сервера 1С. По умолчанию отладка на сервере часто выключена для экономии ресурсов. Посмотрим, как ее включить.

Разберем процесс для протокола TCP/IP. Нам необходимо изменить параметры запуска службы 1C:Enterprise 8.3 Server Agent:

  1. Откроем редактор реестра Windows (regedit).
  2. Перейдем в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.
  3. Найдем параметр ImagePath.
  4. В конец строки добавим флаг -debug.
  5. Перезапустим службу сервера 1С через консоль services.msc.

Если вы используете платформу версии 8.3.7 и выше, рекомендуем рассмотреть отладку по протоколу HTTP. Это более современный и стабильный метод. Для этого в файле conf.cfg на сервере настраивается соответствующий адрес, а вместо флага -debug используется -http.

Шаг 2: Включение отладки фоновых заданий

Многие современные конфигурации (ЗУП 3.1, ERP, КА) используют механизм ДлительныеОперации. Это означает, что при нажатии кнопки «Печать» формируется фоновое задание на сервере. Для конфигуратора это отдельный процесс, к которому он не подключается автоматически.

Проанализируем настройки конфигуратора:

  1. Зайдем в меню Отладка — Настройка подключения...
  2. В открывшемся окне найдем область Автоматическое подключение.
  3. Установим галочку напротив пункта Фоновые задания.
  4. Нажмем «ОК».

Теперь при старте фонового задания сервер будет «сообщать» об этом конфигуратору, и точка останова в серверном коде сработает.

Шаг 3: Создание формы-заглушки для отладки

Поскольку отлаживать ВПФ непосредственно из справочника «Дополнительные отчеты и обработки» крайне неудобно, применим проверенный метод — создание вспомогательной формы. Рассмотрим по шагам:

  1. В вашей внешней обработке создадим новую форму (назовем ее ФормаОтладки).
  2. Назначим ее основной формой обработки.
  3. Добавим на форму реквизит СсылкаНаОбъект с типом того документа, который мы печатаем (например, ДокументСсылка.ПриемНаРаботу).
  4. Добавим кнопку «Выполнить печать».
  5. В модуле формы пропишем вызов основной экспортной процедуры из модуля объекта.

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


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

&НаСервере
Процедура ПечатьНаСервере(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    // Здесь ставим точку останова!
    ОбработкаОбъект.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры

Теперь мы можем просто открыть .epf файл через Файл — Открыть, выбрать нужный документ и нажать кнопку. Конфигуратор четко отработает точку останова, так как путь к файлу на диске совпадает с тем, что открыто в редакторе.

Шаг 4: Принудительный останов (Hard Debug)

Бывают ситуации, когда доступ к настройкам сервера ограничен (например, в облачных сервисах или при строгих политиках безопасности), и включить -debug невозможно. В этом случае программисты используют метод «искусственной ошибки».

Разберем, как это реализовать. В нужном месте кода мы можем вставить конструкцию, которая гарантированно прервет выполнение программы:


// Вместо точки останова используем исключение
Если ИмяПользователя() = "Администратор" Тогда
    ВызватьИсключение "Остановка для проверки переменных: " + ЗначениеПеременной;
КонецЕсли;

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

Также можно использовать «дедовский» способ с делением на ноль, упомянутый в обсуждении, но ВызватьИсключение выглядит более профессионально и позволяет вывести информативное сообщение.

Особенности безопасного режима

Не забудем про Безопасный режим. В 1С:ЗУП 3.1 при подключении ВПФ по умолчанию предлагается запуск в безопасном режиме. Это накладывает ограничения на использование некоторых серверных методов и может блокировать работу отладчика в определенных сценариях.

Проанализируем карточку обработки в режиме «Предприятие»:

Резюме

Для успешной отладки внешней печатной формы в управляемом приложении необходимо соблюдение трех условий:

  1. Флаг отладки в параметрах службы сервера 1С.
  2. Включенное автоматическое подключение фоновых заданий в конфигураторе.
  3. Использование прямого открытия файла обработки с вспомогательной формой вместо запуска через справочник дополнительных обработок.

Соблюдение этих правил сэкономит вам массу времени и позволит отлаживать даже самые сложные алгоритмы формирования макетов ТабличныйДокумент в учетных решениях на базе 1С.

← На главную