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