gifts2017

Алгоритм добавления печатных форм в конфигурацию Управление торговлей 11

Опубликовал Роман Гаманец (_Ramzes) в раздел Программирование - Работа с интерфейсом

Многим из нас при внедрении 1С УТ11 требуется расширять функциональные возможности продукта путем добавления внешних печатных форм.
В данной статье я на примере внешней печатной формы Спецификации показываю как можно добавить в конфигурацию внешнюю печатную форму, чтобы пользователь не видел разницы, работает он с типовым объектом, или доработанной вами внешней печатной формой.

Работая в конфигурации Управление торговлей 10.3 многие дорабатывали не типовые печатные формы, а создавали внешние печатные формы, и уже их устанавливали через механизм добавления внешних печатных форм.

В конфигурации Управление торговлей 11 данный механизм остался, но показывать пользователю, что нужно зайти в подменю Печать – Дополнительные печатные формы – (Добавленная печатная форма), что для пользователя является  не очень удобным.

Мне хотелось бы рассказать про механизм добавления печатных форм в подменю печать, чтобы сформированный документ отображался для пользователя в привычной ему форме «Печать документов».

1)      Создаем команду для печати

Имя  произвольное
Синоним как вы хотите чтобы команда отображалась для пользователя
Группа  Командная панель формы.Печать
ТипПараметраКоманды  Указываем ссылку на документ, для которого хотим добавить печатную форму, например (ДокументСсылка.РеализацияТоваровУслуг)
Режим использования команды Множественный (позволяет пользователю указывать список документов на печать)

2)      Предоставляем пользователям права на использование созданной команды, для этого заходим в дополнительные параметры команды (клик правой кнопкой мыши по команде – Дополнительно), переходим на вкладку права, указываем право использования команды для определенной роли, например «Базовые права» - дает право использовать команду всем пользователям.

3)      Открываем модуль команды и в процедуре ОбработкаКоманды пишем следующий код:

                Если УправлениеПечатьюКлиент.ПроверитьДокументыПроведены(ПараметрКоманды, ПараметрыВыполненияКоманды.Источник) Тогда

                               УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(

                                               "Документ.РеализацияТоваровУслуг",

                                               "ПечатьСертификатов",

                                               ПараметрКоманды,

                                               Неопределено,

                                               Неопределено);

                КонецЕсли;

Первое условие проверяет проведены ли документы, если проверка не нужна, то вставляем код без указанного условия.

4)      Открываем модуль менеджера, процедура Печать и добавляем в конец следующее условие:

        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПечатьСертификатов") Тогда

                       УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПечатьСертификатов", "Сертификаты", ПечатьСертификатов(МассивОбъектов, ОбъектыПечати));

        КонецЕсли;

5)      Для того чтобы сработало условие УправлениеПечатью.НужноПечататьМакет() нужно для объекта указанного в пункте 3 «Документ.РеализацияТоваровУслуг» создать макет «ПечатьСертификатов», неважно будете ли вы его использовать или нет.

6)      В модуле менеджера создаете функцию вызов которой вы описали в пункте 4, в моем случае это «ПечатьСертификатов(МассивОбъектов, ОбъектыПечати))», в которой описываете процедуру печати. Объекты для печати хранятся в параметре МассивОбъектов. Функция должна возвращать Табличный документ.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Ожерельев (Поручик) 05.02.12 01:18
Есть небольшой нюанс. Этот метод предполагает вторжение в конфигурацию (включение возможности изменений) и на ходу такую форму не отредактируешь и в базу не зальёшь. Требуется обновление конфигурации базы данных, значит выгонять пользователей.
3. Дэн Счастливый (happyden) 05.02.12 12:55
Тут кому как удобно я бы сказал, если нет умения продавить пользовательский тупизм типа "я не привык, сделайте как было" тогда путь один - представленное решение :)