рубрики: Начинающим | Дата: 24 июня, 2014
Всем известно что в конфигурациях 1С существует такая замечательная возможность как создание внешних печатных форм и обработок по заполнению табличных частей. А кто еще этим не пользовался, может открыть любую типовую конфигурацию 1С в режиме предприятия и в меню перейти по адресу «Сервис» — «Дополнительные отчеты и обработки» — «Дополнительные внешние печатные формы» («Дополнительные внешние обработки табличных частей»). Оба этих меню открывают один и тот же справочник — «ВнешниеОбработки», только с разным отбором по реквизиту «ВидОбработки».
В чем же прелесть этого функционала. Допустим у вас есть типовой документ (справочник) и вас не устраивает стандартный вывод его на печать или вы хотите добавить еще одну печатную форму (или обработку по заполнению табличной части). Первое что приходит в голову — это открыть конфигуратор и внести соответствующие изменения. Но тогда при последующих обновлениях каждый раз придется отслеживать эти изменения. Особенно неудобно это делать, если изменения вносились в макет. Чтобы избежать изменения типового функционала, фирмой 1С практически во всех типовых конфигурациях реализован механизм внешних печатных форм и заполнения табличных частей.
Чтобы внешние обработки работали корректно они должны соответствовать определенным правилам. Рассмотрим эти правила.
Создаем внешнюю обработку. В ней должны присутствовать следующие обязательные элементы:
Функция Печать() Экспорт
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаШапка.Параметры.МойПараметр = "Мой параметр";
//ТабДокумент.Показать();
Возврат ТабДокумент;
КонецФункции
Хочу обратить внимание на закомментированную строку «//ТабДокумент.Показать();». Эта строка в раскомментированном виде используется для отладки.
Несколько слов про отладку. Поскольку внешние обработки хранятся в справочнике, то при их использовании механизм внешних печатных форм предварительно извлекает их во временную папку. Таким образом, чтобы начать отладку внешней печатной формы надо где-то в общих модулях найти место, когда внешняя обработка уже сохранена во временный каталог, но еще не запущена на выполнение, поставить там точку останова, и потом когда точка останова отработает — открыть в конфигураторе внешнюю обработку из временного каталога, и только тогда можно приступать к отладке. Согласитесь, что процесс достаточно муторный.
Чтобы облегчить процесс отладки, я обычно создаю форму (хотя в принципе для работы обработки она не нужна), вывожу на форму реквизит СсылкаНаОбъект, а по кнопке выполнить вызываю функцию Печать(), которая описана выше.
Процедура КнопкаВыполнитьНажатие(Кнопка)
Печать();
КонецПроцедуры
Внешняя обработка по заполнению табличной части должна удовлетворять следующим условиям:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноПолеОбъекта) Экспорт
здесь:
И опять же для отладки удобно в обработку добавить реквизиты со ссылкой на документ или справочник, а также с именем табличной части. Или в коде имя табличной части задать. И соответсnвенно по кнопке выполнить вызываем процедуру Инициализировать()
Добавить комментарий