ПОСТАНОВКА ЗАДАЧИ
Итак, перейдем сразу к делу. ТЗ: нам нужна печатная форма для документа «Реализация товаров услуг», которая выводит на печать список номенклатуры, цены, менеджера и дату документа (задание упрощено для наглядности примера).
РЕАЛИЗАЦИЯ ЗАДАЧИ
С заданием покончено, переходим к реализации. Для начала нам нужно определить контейнер, где будут храниться макеты печатных форм, ну и исполняемый код. Итак, создадим пустую обработку (мы ее будем подключать как внешнюю обработку к конфигурации), заполним код модуля объекта для подключения к конфигурации, определим экспортную функцию Печать, нарисуем макет нашей печатной формы. Весь код немножко громоздок, поэтому не буду приводить его здесь, кому интересно может скачать файл, прикрепленный к статье и посмотреть.
Заполним алгоритм построения и вывода печатной формы. Приводить сам алгоритм не стану (он очень банален). После окончания написания процедуры Печать необходимо подключить нашу обработку как внешнюю обработку к конфигурации. Во время подключения при выборе пользователя выберите себя, а раздел командного интерфейса – Администрирование (хотя принципиальной разницы нету).
Хорошо, с контейнером все готово. Теперь перейдем к конфигурированию. Создадим обработку в конфигурации и дадим ей имя ПечатьВнешнихФорм.
После создания обработки определим в ней команду ПечатьРеализацияТоваровУслуг, и внесем в команду следующий код:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если УправлениеПечатьюКлиент.ПроверитьДокументыПроведены(ПараметрКоманды, ПараметрыВыполненияКоманды.Источник) Тогда
ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, БезопасныйРежим, ОбъектыНазначения", "РеализацияТоваровУслуг", Ложь, Новый Структура("МассивДокументов", ПараметрКоманды));
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", Новый Структура("ИсточникДанных, ПараметрыИсточника", ПолучитьСсылкуНаВншнююОбработку(), ПараметрыИсточника));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьСсылкуНаВншнююОбработку()
// 6ca58296-6d4b-11e2-8c2f-14dae9dfbe72 - идентификатор внешней обработки «Печать внешних форм»
Возврат Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку(Новый УникальныйИдентификатор("6ca58296-6d4b-11e2-8c2f-14dae9dfbe72"));
КонецФункции
Теперь, после написания кода, необходимо определить некоторые параметры нашей команды. Перейдем в палитру свойств и установим следующие значения:
Группа | Командная панель формы.Печать |
Тип параметра команды | ДокументСсылка.РеализацияТоваровУслуг |
Режим использования команды | Множественный |
Создание команды завершено. Далее нужно определить роль, которая открывает доступ к команде (в статье писать не стану, кому интересно сделает самостоятельно).
РЕЗУЛЬТАТЫ
Обновим конфигурацию и посмотрим, что у нас получилось.
В меню Печать документа «Реализация товаров и услуг» появился пункт «Печать списка номенклатуры», с помощью которого мы и печатаем.
Метод очень удобен, поскольку:
- Не вызывает проблем с обновление конфигурации.
- Меню печати очень удобное для пользователей.
- Вносить изменения в печатную форму можно «на лету», без остановки работы базы.
Конфигурация: Управление торговлей для Украины, редакция 3.0 (3.0.1.7)
Что то я не понял…
1) А почему не зарегистрировать сразу как «внешнюю печатную форму» и она тоже появиться в меню печать (указанного) документа, и при этом вообще без включения «возможности редактирования конфигурации»?
2) А откуда у вашей обработки взялся идентификатор — 6ca58296-6d4b-11e2-8c2f-14dae9dfbe72? Где это видно в статье?
1) Если Вы подключите печатную форму как внешнюю, она появится в меню печать, но, для того чтобы ее запустить нужно будет выполнить следующие действия: Печать — Внешние печатные формы — Имя нашей печатной формы. В организации где я работаю, менеджеры не хотят так печатать ибо в день человек печатает 100 — 150 накладных. Поэтому поставили хотелку сделать чтобы печатало быстро и прямо из меню Печать (без дополнительных действий). В конфигурацию мы только добавляем обработку, что не должно сказаться на обновлении. Зато у нас появиться дополнительная гибкость — мы сможем менять содержимое печатной формы «на лету», что критично для нас, поскольку руководство запрещает останавливать базу с 8 утра до 10 вечера.
2. Уникальный идентификатор получен из ссылки на внешнюю обработку, при написании статьи в коде указан комментарий откуда идентификатор, а как его получить все знают сами.