Создание внешней печатной формы из типовой

На примере создания печатной формы расходной накладной рассмотрим возможность создания любой внешней печатной формы из типовой.

печатная форма 1С

Для начала необходимо создать внешнюю обработку и правильно описать сведения о внешней обработке. Для этого открываем модуль внешней обработки и создаем там следующую экспортную процедуру:

Функция СведенияОВнешнейОбработке() Экспорт
   ПараметрыРегистрации = Новый Структура;

   мПредставление = ЭтотОбъект.Метаданные().Представление();
   мИмя = ЭтотОбъект.Метаданные().ПолноеИмя();

   ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
   ПараметрыРегистрации.Вставить("Наименование", мПредставление);
   ПараметрыРегистрации.Вставить("Версия", "1.0");
   ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
   ПараметрыРегистрации.Вставить("Информация", мПредставление);
   ПараметрыРегистрации.Вставить("ВерсияБСП", "2.3.6.53");

   //Команды
   Команды = Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
   Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("ПроверкаПроведенияПередПечатью", Новый ОписаниеТипов("Булево"));

   Команда = Команды.Добавить();
   Команда.Представление = мПредставление + " (внешний)";
   Команда.Идентификатор = "РасходнаяНакладнаяВн";
   Команда.Использование = "ВызовСерверногоМетода";
   Команда.ПоказыватьОповещение = Ложь;
   Команда.Модификатор = "ПечатьMXL";
   Команда.ПроверкаПроведенияПередПечатью = Истина;

   ПараметрыРегистрации.Вставить("Команды",Команды);

   //Назначение
   Назначения = Новый Массив;
   Назначения.Добавить("Документ.РеализацияТоваровУслуг");
   ПараметрыРегистрации.Вставить("Назначение",Назначения);

   Возврат ПараметрыРегистрации;
КонецФункции

После этого необходимо найти, где хранится процедура, обрабатывающая печать расходной накладной. Данная печатная форма вызывается из документа «Реализация товаров и услуг», поэтому переходим в модуль менеджера этого документа и находим процедуру «Печать» и процедуру «ДобавитьКомандыПечати». Если просмотреть эти процедуры, то мы найдем в них либо обработчик для формирования печатной формы, либо кнопку добавления печатной формы в список. Для некоторых печатных форм, таких как УПД, ТОРГ12 и другие, строки добавления кнопки печатной формы находятся в другой процедуре:

РеализацияТоваровУслугЛокализация.ДобавитьКомандыПечати(КомандыПечати);

Таким образом, например, добавляется форма УПД:

внешняя печатная форма

И код печати УПД находится в обработке «ПечатьОбщихФорм».

Для нашей печатной формы «Расходная накладная» код находится в процедуре «Печать»:

печатная форма 1с

Необходимо скопировать кусок вызывающего кода из функции печати и процедуру формирования печатной формы «СформироватьПечатнуюФормуРасходнаяНакладная». При этом необходимо в функции «Печать» поменять идентификатор на тот, который указан в процедуре «СведенияОВнешнейОбработке»:

печатная форма 1С

Если этого не выполнить, то печатная форма будет формироваться пустой. В процедуре «СформироватьПечатнуюФормуРасходнаяНакладная» необходимо найти код, получающий макет:

печатная форма 1С

Скопировать этот макет во внешнюю обработку:

печатная форма 1С

Подменить код получения макета в процедуре обработки:

печатная форма 1С

После этого во внешней обработке запускаем синтакс-контроль и в случае, если выявляются ссылки на какие-либо процедуры, которых нет во внешней обработки, то копируем их из основной конфигурации до тех пор, пока синтакс-помощник не перестанет выдавать ошибки. На примере данной печатной формы ошибок не было, поэтому обработка готова.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

code