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