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