Как эффективно тестировать и отлаживать внешние печатные формы в 1С на базе БСП 3.0

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

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

Метод 1: Создание вспомогательной формы внутри ВПФ

Рассмотрим самый надежный и «классический» способ, который рекомендуют опытные разработчики. Суть заключается в том, чтобы временно добавить в саму внешнюю обработку форму, которая будет имитировать вызов печати из системы.

Алгоритм действий следующий:

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

Проанализируем пример кода, который позволит нам запустить процесс:


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

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

Метод 2: Отключение безопасного режима

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

Чтобы отладка заработала, выполним следующие шаги:

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

Метод 3: Настройка серверной отладки

Посмотрим на ситуацию со стороны сервера. В БСП 3.0 большинство процедур печати выполняется на стороне сервера. Если ваша база работает в клиент-серверном варианте, стандартного подключения отладчика из конфигуратора к тонкому клиенту будет недостаточно.

Проанализируем настройки, необходимые для работы:

  1. Убедимся, что сервер «1С:Предприятия» запущен с параметром -debug. Если используется протокол HTTP, отладка должна быть включена в настройках сервера.
  2. В Конфигураторе перейдем в меню «Отладка» — «Подключение».
  3. В списке доступных предметов отладки найдем сеанс типа «Сервер» и нажмем «Подключить».
  4. Только после этого точки останова в серверных модулях (к которым относится и модуль объекта ВПФ) станут активными.

Метод 4: Использование специализированных консолей отладки

Существуют готовые инструменты, такие как «Консоль для отладки ВПФ», адаптированные под БСП 3.x. Разберем принцип их работы. Эти обработки позволяют выбрать файл ВПФ прямо с диска, выбрать документ-основание и запустить формирование печати.

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

Рассмотрим фрагмент кода, который обычно используется в таких консолях для программного вызова:


// Пример программного подключения ВПФ без установки в систему
ПутьКФайлу = "C:\MyReports\MyPrintForm.epf";
ВПФОбъект = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь); // Ложь = БезопасныйРежимВыключен

МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ВыбраннаяСсылка);

КоллекцияПечатныхФорм = ПодготовитьКоллекцию();
ОбъектыПечати = Новый СписокЗначений;
ПараметрыВывода = ПодготовитьПараметры();

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

Метод 5: Отладка через расширения конфигурации

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

После того как вы полностью отладили алгоритм заполнения макета внутри расширения, вы можете просто скопировать текст модулей обратно во внешнюю обработку и проверить финальную работу уже в режиме ВПФ.

Особенности фонового выполнения печати

В БСП 3.0 печать может уходить в фоновое задание, особенно если макеты «тяжелые». В этом случае отладка стандартными методами не сработает, так как выполнение кода переходит в отдельный поток. Чтобы избежать этого при отладке, проверьте настройки программы или временно измените код вызова печати так, чтобы он выполнялся синхронно, либо настройте автоматическое подключение к фоновым заданиям в параметрах отладки Конфигуратора.

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

← На главную