Как я сделал печатную форму в управляемых формах, кому то точно пригодиться. Чтобы не граблиться как я. ;-)
Был у меня опыт написания внешних печатных форм в ЗУП 2.5 и я наивно решил что ЗУП 3.1 ничем не отличается. Взял обработку из 2.5 за шаблон и начал его переделывать, с макета причем. ))) Макет подготовил, решил проверить как будет выглядеть. Открыл инструкции в инете по новой версии с использованием Функции СведенияОВнешнейОбработке() Добавил все как написано, параметры регистрации и даже команду для кнопки печати похоже. До кучи закинул функцию запроса данных.
Форма регистрируется в доп обработках, функция сведений работает. Запускаю все это дело и получаю отлуп. Первое, открытый документ после регистрации ВПФ нужно переоткрыть заново.
Но это еще не все. Вылетела ошибка "{ВнешняяОбработка.РежимРаботы.МодульОбъекта(9)}: Значение не является значением объектного типа (Организация)
Запрос.УстановитьПараметр("Орги", СсылкаНаОбъект.Организация);"
Причем вроде в прошлых версиях нормально работала. СсылкаНаОбъект - тип строка. Поэтому ничего не находит. Ладно, меняю на документ.
Паралельно вспоминаю, что есть проблема отладки внешних печатных форм. Есть вариант вставить код выдающий ошибку и тормозится в конфе на ошибках.
Для этого вводиться ошибочная операция, и в конфигурации включается режим остановки по ошибке.
Но он мне не понравился. Испытывал я его на ЗУП 2.5. Каждый раз открывает временный файл, который ты машинально начинаешь редактировать. ))) Это отнимает время на исправление, и постоянно контролировать закрытие временных файлов обработок.
Сделал форму для проверки печатной формы как внешней обработки. Вроде все правильно, указывал документ. Есть кнопка с отсылкой в модульную процедуру Печать. Временно закоментил запрос, чтобы не искать там ошибки. И все равно ошибка выскакивает в общем модуле. Почему то он не находит такой метод у внешних данных наверно. Тогда уже решил тупо по схеме сделать образец пустой печатной формы. Этот заработал сразу. Сразу же нашлась и ошибочка в коде ИмяМакета тот который идентификатор задавал не верно. Ну макет выдался, пустой без параметров. Опять встал вопрос как отладить?
Сделал отдельную форму с реквизитами вида ссылка на доки и кодом ссылка на функции печати из модуля. Почему то не запустился, Тогда добавил в форму реквизит таблица и стал выводить туда ТабличныйДокумент. В этот раз все получилось. В форме появился макет. Правда во внешней форме такой же пустой. Копал и понял что реквизит СсылкаНаОбъект больше не нужен. Вместо него теперь работает параметр МассивНазначений. В нем первым элементом встроенная функция печати передает ссылку на документ. Ссылку на документ я получал из МассиваНазначений. Правда выдавал ошибку Про {ВнешняяОбработка.РежимРаботы.МодульОбъекта(125)}: Получение элемента по индексу для значения не определено СсылкаНаОбъект = МассивОбъектовНазначения[0];
Но это происходило по причине того что я из формы запускал процедуру печати где в этот массив записывался объект документа. А в форме он был ревизитом формы. Добавил переменную ссылку на объект документа в Печать и все заработало.
Вот такие вопросы встречались в процессе создания ВПФ на 8.3. Может кому то поможет.