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