Разработка внешних печатных форм (ВПФ) — стандартная задача для программиста 1С, однако с развитием Библиотеки стандартных подсистем (БСП) до версии 3.0 и выше, процесс отладки стал значительно сложнее. Это связано с тем, что код выполняется в безопасном режиме, на стороне сервера или во временных сеансах. В этой статье мы подробно разберем, как преодолеть эти трудности и настроить удобную среду для разработки.
Рассмотрим самый надежный и «классический» способ, который рекомендуют опытные разработчики. Суть заключается в том, чтобы временно добавить в саму внешнюю обработку форму, которая будет имитировать вызов печати из системы.
Алгоритм действий следующий:
ДокументСсылка.РеализацияТоваровУслуг).Печать из модуля объекта.Проанализируем пример кода, который позволит нам запустить процесс:
&НаКлиенте
Процедура ОтладитьПечать(Команда)
ОбъектВПФ = РеквизитФормыВЗначение("Объект");
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Объект.СсылкаНаДокумент);
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("НазваниеВашейПечатнойФормы");
ОбъектыПечати = Новый СписокЗначений;
ПараметрыВывода = УправлениеПечатьюКлиент.ПодготовитьПараметрыВыводаДляПечати();
// Вызываем процедуру модуля объекта
ОбъектВПФ.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
// Выводим результат (табличный документ) на экран
Для Каждого Стр Из КоллекцияПечатныхФорм Цикл
Стр.ТабличныйДокумент.Показать(Стр.СинонимМакета);
КонецЦикла;
КонецПроцедуры
Такой подход позволяет нам ставить точки останова непосредственно в модуле объекта и отлаживать логику формирования макета без необходимости каждый раз загружать обработку в справочник «Дополнительные отчеты и обработки».
Выясним причину, по которой точки останова часто не срабатывают, даже если вы подключены к серверу. В современных конфигурациях внешние обработки по умолчанию запускаются в безопасном режиме. В этом режиме 1С блокирует работу отладчика.
Чтобы отладка заработала, выполним следующие шаги:
Важно: После завершения отладки рекомендуется вернуть флажок на место, чтобы обеспечить безопасность информационной базы.
Посмотрим на ситуацию со стороны сервера. В БСП 3.0 большинство процедур печати выполняется на стороне сервера. Если ваша база работает в клиент-серверном варианте, стандартного подключения отладчика из конфигуратора к тонкому клиенту будет недостаточно.
Проанализируем настройки, необходимые для работы:
-debug. Если используется протокол HTTP, отладка должна быть включена в настройках сервера.Существуют готовые инструменты, такие как «Консоль для отладки ВПФ», адаптированные под БСП 3.x. Разберем принцип их работы. Эти обработки позволяют выбрать файл ВПФ прямо с диска, выбрать документ-основание и запустить формирование печати.
Это избавляет от необходимости добавлять формы в каждую разрабатываемую обработку. Консоль сама эмулирует программную среду БСП, создавая необходимые структуры данных: КоллекцияПечатныхФорм, ОбъектыПечати и ПараметрыВывода. При использовании таких консолей код запускается через команду ВнешниеОбработки.Создать(ПутьКФайлу, Ложь), где второй параметр Ложь как раз отключает безопасный режим программно.
Рассмотрим фрагмент кода, который обычно используется в таких консолях для программного вызова:
// Пример программного подключения ВПФ без установки в систему
ПутьКФайлу = "C:\MyReports\MyPrintForm.epf";
ВПФОбъект = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь); // Ложь = БезопасныйРежимВыключен
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ВыбраннаяСсылка);
КоллекцияПечатныхФорм = ПодготовитьКоллекцию();
ОбъектыПечати = Новый СписокЗначений;
ПараметрыВывода = ПодготовитьПараметры();
// Здесь точка останова сработает!
ВПФОбъект.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Если печатная форма крайне сложная и требует взаимодействия с множеством внутренних функций конфигурации, рассмотрим вариант временного переноса кода в расширение. Код в расширениях отлаживается гораздо стабильнее, так как конфигуратор всегда «видит» исходный текст в контексте базы данных.
После того как вы полностью отладили алгоритм заполнения макета внутри расширения, вы можете просто скопировать текст модулей обратно во внешнюю обработку и проверить финальную работу уже в режиме ВПФ.
В БСП 3.0 печать может уходить в фоновое задание, особенно если макеты «тяжелые». В этом случае отладка стандартными методами не сработает, так как выполнение кода переходит в отдельный поток. Чтобы избежать этого при отладке, проверьте настройки программы или временно измените код вызова печати так, чтобы он выполнялся синхронно, либо настройте автоматическое подключение к фоновым заданиям в параметрах отладки Конфигуратора.
Подведем итог: для успешной отладки в БСП 3.0 необходимо сочетать знание структуры печатных форм (процедура Печать с правильной сигнатурой) и понимание механизмов работы платформы (безопасный режим и серверная отладка). Мы рекомендуем использовать метод со вспомогательной формой для быстрой проверки логики и консоли отладки для финального тестирования в среде, максимально приближенной к боевой.