Создание внешней печатной формы
На примере внешней печатной формы для «Акта об оказании услуг»для «1С:Бухгалтерии 8» редакции 3.0
Многим предприятиям в процессе работы требуется вносить изменения в печатные формы, создавать новые или корректировать имеющиеся под существующий документооборот. Например, в «Счет на оплату покупателю» вывести логотип фирмы или информацию о сроках поставки. Можно это осуществлять с помощью внесения изменений в конфигурацию, но при этом возникают неудобства, связанные с обновлением программ, особенно типовых конфигураций 1С, т.к. при этом необходимо учитывать эти изменения, чтобы их не затереть.
Чтобы снизить неудобство, связанное с изменением печатных форм, во многих конфигурациях поддерживается механизм так называемых внешних печатных форм. Этот стандартизованный механизм позволяет создать произвольную печатную форму к любому документу без изменения конфигурации.
В результате чего:
- повышается удобство при обновлении;
- появляется возможность переносить печатные формы между одинаковыми программами
Рассмотрим пошаговый алгоритм: как создать внешнюю печатную форму «Акта об оказании услуг» для документа «Реализация товаров и услуг».
Шаг 1. Создаем новую обработку
Нажимаем <Ctrl> + <N> и выбираем «Внешняя обработка», т.к. все внешние печатные формы описываются с помощью внешних обработок.
Назначаем имя печатной формы и добавляем макет (табличный документ с внешним видом будущей печатной формы). В данном случае макетом будет стандартная печатная форма акта из документа «РеализацияТоваровУслуг», которую и скопируем (см. рис. 1).
Шаг 2. Укажем параметры регистрации внешней печатной формы
Откроем модуль объекта внешней обработки: «Действия -Открыть модуль объекта».
В модуле создаем экспортную функцию «СведенияОВ-нешнейОбработке», которая будет возвращать структуру с параметрами регистрации. Эти параметры стандартны для любых внешних печатных форм и будут различаться только их значениями (см. листинг 1).
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»);
ПараметрыРегистрации.Вставить(«Назначение», ↵
ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить(«Наименование», ↵
«Акт (внешняя печатная форма)»);
ПараметрыРегистрации.Вставить(«Версия», «1.0″);
ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина);
ПараметрыРегистрации.Вставить(«Информация», ↵
«Обработка формирования внешней печатной формы: Акт»);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, ↵
«Акт (внешняя печатная форма)»,»АктВнешний», ↵
«ВызовСерверногоМетода»,Истина,»ПечатьMXL»);
ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьНазначениеОбработки()
Назначение = Новый Массив;
Назначение.Добавить(«Документ.РеализацияТоваровУслуг»);
Возврат Назначение;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить(«Представление», ↵
Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«Идентификатор», ↵
Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«Использование», ↵
Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«ПоказыватьОповещение», ↵
Новый ОписаниеТипов(«Булево»));
Команды.Колонки.Добавить(«Модификатор», ↵
Новый ОписаниеТипов(«Строка»));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, ↵
Идентификатор, Использование, ↵
ПоказыватьОповещение = Ложь, Модификатор = «»)
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Параметры, возвращаемые функцией: Вид. Определяет вид обработки и принимает одно из следующих текстовых значений:
- > «ДополнительнаяОбработка»;
- > «ДополнительныйОтчет»;
- > «ЗаполнениеОбъекта»;
- > «Отчет»;
- > «ПечатнаяФорма»;
- > «СозданиеСвязанныхОбъектов».
В нашем случае это будет «ПечатнаяФорма».
Назначение. Определяет список объектов метаданных, для которых будет использоваться эта печатная форма. Задается массивом с перечислением типов объектов метаданных. В нашем случае это будет документ «Реализация товаров и услуг».
Наименование. Определяет наименование печатной формы, которое будет отображаться в справочнике «Дополнительные отчеты и обработки», в который мы будет добавлять внешнюю печатную форму для использования в конфигурации. В нашем случае будет равно «Акт (внешняя печатная форма)».
Версия. Определяет номер версии печатной формы
Используется для разграничения модификаций печатной формы. В нашем случае значение параметра будет равно «1.0».
БезопасныйРежим. Параметр булевого типа. Определяет использование безопасного режима при использовании печатной формы. Как правило, внешние обработки должны исполняться в безопасном режиме. Это помогает гарантировать, что обработка не содержит «ненадежный» программный код. Установим параметр в значение «Истина».
Информация. Краткая справочная информация с описанием печатной формы. Установим значение «Обработка формирования внешней печатной формы: Акт».
Команды. Описывает команды, выполняемые обработкой. Параметр является таблицей значений с определенными колонками.
Колонки таблицы команд:
- > Представление — представление команды в пользовательском интерфейсе.
- > Идентификатор — идентификатор команды; любая строка, уникальная в пределах данной печатной формы.
- > Использование — вариант запуска команды:
ОткрытиеФормы — открыть форму обработки;
- » ВызовКлиентскогоМетода — вызвать клиентскую экспортную процедуру из модуля формы обработки;
- » ВызовСерверногоМетода — вызвать серверную экспортную процедуру из модуля объекта обработки;
- » СценарийВБезопасномРежиме — вызвать серверную экспортную функцию из модуля объекта для формирования сценария выполнения.
> ПоказыватьОповещение — Истина, если требуется показать оповещение при начале и при завершении работы обработки. Например, при запуске обработки без открытия формы.
> Модификатор — дополнительный модификатор команды. Используется для дополнительных обработок печатных форм на основе табличных макетов. Для таких команд должен содержать строку «ПечатьМХ1_».
Шаг 3. Создание процедуры «Печать»
В процедуре формируется необходимая печатная форма и выводится на экран
Процедура «Печать» содержит стандартные входные параметры:
- > МассивОбъектов — массив ссылок на объекты, для которых необходимо сформировать печатную форму.
- > КоллекцияПечатныхФорм — служебная таблица значений. Через нее передаются имена макетов, для которых должны быть сформированы табличные документы. Возвращаются синонимы макетов (представление), сформированные табличные документы с указанием количества экземпляров, картинка для отображения на закладке соответствующего табличного документа в форме печати документов.
- > ОбъектыПечати — список значений, в котором обработчик печати устанавливает соответствие между объектами и именами областей печати табличного документа: значение — объект, представление — имя области, в которой был выведен объект.
- > ПараметрыВывода — структура, дополнительные параметры сформированных табличных документов.
Чтобы не создавать с нуля процедуру печати «Акта об оказании услуг», можно скопировать процедуру формирования данной формы из документа «РеализацияТоваровУслуг».
Для этого необходимо:
- > Открыть модуль менеджера документа «РеализацияТоваровУслуг»: «Действия — Открыть модуль менеджера».
- > Найти там процедуру «Печать».
- > Скопировать текст в процедуре, ответственный за формирование печатной формы акта, и перенести его в процедуру «Печать» внешней печатной формы.
- > Заменить идентификатор команды «Акт» на «АктВнеш-ний», т.к. в списке команд мы определили имя команды печати как «АктВнешний».
- > Перенесем процедуру «ПечатьАктаОбОказанииУслуг» из общего модуля «ПечатьТорговыхДокументов» в модуль объекта печатной формы.
- > Подменим макет акта на макет внешней обработки в процедуре «ПечатьАктаОбОказанииУслуг»:
Макет = ПолучитьМакет(«ПФ_МХЬ_Акт»)
- > Нажав на клавишу «Проверки модуля» (<Ctrl> + <F7>), определяем, каких еще процедур или функций не хватает в модуле обработки, чтобы сформировалась печатная форма с помощью функции «ПечатьАкта-ОбОказанииУслуг».
В данном случае мы перенесем из общего модуля еще две функции:
- > ПолучитьТаблицуСведенийАктаОбОказанииУслуг.
- > ПолучитьТекстЗапросаДляФормированияТаблицыСве-денийАктаОбОказанииУслуг
Шаг 4. Подключение внешней печатной формы
Для этого в пользовательском режиме «1С:Бухгалтерии» ред. 3.0:
- > Откроем справочник внешних отчетов и обработок: «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки».
- > Добавим нашу внешнюю печатную форму, нажав на кнопку «Создать» и выбрав нашу обработку. Выбрав печатную форму, система автоматически заполнит необходимые данные той информацией, что мы указывали в функции «СведенияОВнешнейОбработке».
- > Затем сохраним значение и откроем какой-либо документ реализации. В нем уже добавится в список печатных форм наша внешняя печатная форма акта (см. рис. 3).
Мы рассмотрели, как нам создать внешнюю печатную форму, не изменяя функционала в конфигураторе. Эту задачу при необходимости мы можем усложнять:
> выводить дополнительные данные во внешней печатной форме.
> создавать свои печатные формы с уникальными макетами.
Но основа при этом останется прежней, просто изменятся параметры, макет и процедура печати.
В итоге, овладев методикой создания внешних печатных форм, можно значительно упростить жизнь разработчика на 1С при обновлении конфигурации. Кроме того, разработав один раз для клиента необходимую ему печатную форму, можно предлагать ее другим потенциальным клиентам, которым она могла быть интересна
Источник: Журнал системный администратор март 2016
Ответить
Хотите присоединиться к дискуссии?Приглашаем поучаствовать!