При обновлении конфигурации на свежие релизы с БСП версии 2.4 и выше программисты часто сталкиваются с ситуацией, когда у самописного документа исчезает кнопка Печать. В предыдущих версиях библиотек было достаточно добавить экспортную процедуру ДобавитьКомандыПечати в модуль менеджера документа. Однако в БСП 2.4+ подход к формированию командной панели изменился.
Разберем подробно причины, по которым механизм печати перестает выводить команды на форму, и проанализируем решения, позволяющие вернуть печатную форму без снятия конфигурации с поддержки.
Посмотрим, что изменилось в логике библиотеки стандартных подсистем. Начиная с версии БСП 2.4, подсистема Управление печатью и подсистема Подключаемые команды работают в тесной связке. Чтобы командная панель документа сформировала подменю Печать, подсистеме необходимо знать, какие объекты метаданных в принципе поддерживают команды печати.
Для этого в конфигурации используется общий модуль УправлениеПечатьюПереопределяемый и его процедура ПриОпределенииОбъектовСКомандамиПечати. Если объект метаданных не добавлен в состав этого списка, платформа не будет запрашивать команды печати из модуля менеджера документа, и кнопка на форме просто не появится.
Для начала убедимся, что в самом документе прописаны необходимые стандартные процедуры. Разместим в модуле менеджера документа следующую структуру экспортных методов:
#Область Печать
// Заполняет список команд печати.
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПечатьPDF417";
КомандаПечати.Представление = НСтр("ru = 'PDF417'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецПроцедуры
// Сформировать печатные формы объектов.
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// Логика формирования табличного документа
КонецПроцедуры
#КонецОбласти
Если код в модуле менеджера присутствует, но команда все равно не выводится на форму, перейдем к регистрации документа в подсистеме печати.
Чтобы не ломать типовую конфигурацию и не снимать её с поддержки, наилучшим решением является использование расширения конфигурации. Разберем по шагам, как правильно переопределить состав объектов с командами печати.
УправлениеПечатьюПереопределяемый.&Перед для процедуры ПриОпределенииОбъектовСКомандамиПечати.Рассмотрим пример кода в модуле расширения:
&Перед("ПриОпределенииОбъектовСКомандамиПечати")
Процедура Расш1_ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов)
СписокОбъектов.Добавить(Документы._ЗапросНаПолучениеШтрихкодаЕГАИС);
КонецПроцедуры
Важный момент: проверьте режим совместимости расширения конфигурации. Если режим совместимости расширения установлен неправильно или отличается от конфигурации-источника, изменения могут не примениться в сеансе 1С:Предприятия.
Если команда печати не отображается даже после добавления объекта в список, проанализируем дополнительные требования БСП к метаданным и форме:
ОбъектСДополнительнымиКомандами (а при наличии в конфигурации — и в ОбъектСКомандамиПечати).ПодключаемыеКоманды. В процедуре ПриСозданииНаСервере модуля формы должен присутствовать вызов ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект), а в ПриОткрытии — ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект).Ссылка в динамическом списке должно быть установлено свойство Использовать всегда.Мы проанализировали механизм работы команд печати в БСП 2.4+. Чтобы вернуть пропавшую кнопку печати для самописного документа, достаточно выполнить три основных шага: проверить наличие стандартизированных процедур в модуле менеджера, зарегистрировать объект в УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати с помощью расширения и убедиться в правильности настроек формы и режима совместимости.