В данной статье я на примере внешней печатной формы Спецификации показываю как можно добавить в конфигурацию внешнюю печатную форму, чтобы пользователь не видел разницы, работает он с типовым объектом, или доработанной вами внешней печатной формой.
Работая в конфигурации Управление торговлей 10.3 многие дорабатывали не типовые печатные формы, а создавали внешние печатные формы, и уже их устанавливали через механизм добавления внешних печатных форм.
В конфигурации Управление торговлей 11 данный механизм остался, но показывать пользователю, что нужно зайти в подменю Печать – Дополнительные печатные формы – (Добавленная печатная форма), что для пользователя является не очень удобным.
Мне хотелось бы рассказать про механизм добавления печатных форм в подменю печать, чтобы сформированный документ отображался для пользователя в привычной ему форме «Печать документов».
1) Создаем команду для печати
Имя | произвольное |
Синоним | как вы хотите чтобы команда отображалась для пользователя |
Группа | Командная панель формы.Печать |
ТипПараметраКоманды | Указываем ссылку на документ, для которого хотим добавить печатную форму, например (ДокументСсылка.РеализацияТоваровУслуг) |
Режим использования команды | Множественный (позволяет пользователю указывать список документов на печать) |
2) Предоставляем пользователям права на использование созданной команды, для этого заходим в дополнительные параметры команды (клик правой кнопкой мыши по команде – Дополнительно), переходим на вкладку права, указываем право использования команды для определенной роли, например «Базовые права» — дает право использовать команду всем пользователям.
3) Открываем модуль команды и в процедуре ОбработкаКоманды пишем следующий код:
Если УправлениеПечатьюКлиент.ПроверитьДокументыПроведены(ПараметрКоманды, ПараметрыВыполненияКоманды.Источник) Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(
«Документ.РеализацияТоваровУслуг»,
«ПечатьСертификатов»,
ПараметрКоманды,
Неопределено,
Неопределено);
КонецЕсли;
Первое условие проверяет проведены ли документы, если проверка не нужна, то вставляем код без указанного условия.
4) Открываем модуль менеджера, процедура Печать и добавляем в конец следующее условие:
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «ПечатьСертификатов») Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «ПечатьСертификатов», «Сертификаты», ПечатьСертификатов(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
5) Для того чтобы сработало условие УправлениеПечатью.НужноПечататьМакет() нужно для объекта указанного в пункте 3 «Документ.РеализацияТоваровУслуг» создать макет «ПечатьСертификатов», неважно будете ли вы его использовать или нет.
6) В модуле менеджера создаете функцию вызов которой вы описали в пункте 4, в моем случае это «ПечатьСертификатов(МассивОбъектов, ОбъектыПечати))», в которой описываете процедуру печати. Объекты для печати хранятся в параметре МассивОбъектов. Функция должна возвращать Табличный документ.
Есть небольшой нюанс. Этот метод предполагает вторжение в конфигурацию (включение возможности изменений) и на ходу такую форму не отредактируешь и в базу не зальёшь. Требуется обновление конфигурации базы данных, значит выгонять пользователей.
Тут кому как удобно я бы сказал, если нет умения продавить пользовательский тупизм типа «я не привык, сделайте как было» тогда путь один — представленное решение 🙂