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