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