Создание внешней печатной формы

На примере внешней печатной формы для «Акта об оказании услуг»для «1С:Бухгалтерии 8» редакции 3.0

Многим предприятиям в процессе работы требуется вносить изменения в печатные формы, создавать новые или коррек­тировать имеющиеся под существующий документооборот. Например, в «Счет на оплату покупателю» вывести логотип фирмы или информацию о сроках поставки. Можно это осу­ществлять с помощью внесения изменений в конфигура­цию, но при этом возникают неудобства, связанные с об­новлением программ, особенно типовых конфигураций 1С, т.к. при этом необходимо учитывать эти изменения, чтобы их не затереть.

Чтобы снизить неудобство, связанное с изменением пе­чатных форм, во многих конфигурациях поддерживается механизм так называемых внешних печатных форм. Этот стандартизованный механизм позволяет создать произ­вольную печатную форму к любому документу без измене­ния конфигурации.

В результате чего:

  • повышается удобство при обновлении;
  • появляется возможность переносить печатные формы между одинаковыми программами

Рассмотрим пошаговый алгоритм: как создать внешнюю печатную форму «Акта об оказании услуг» для документа «Реализация товаров и услуг».

 Шаг 1. Создаем новую обработку

Нажимаем <Ctrl> + <N> и выбираем «Внешняя обработка», т.к. все внешние печатные формы описываются с помощью внешних обработок.

Назначаем имя печатной формы и добавляем макет (та­бличный документ с внешним видом будущей печатной фор­мы). В данном случае макетом будет стандартная печатная форма акта из документа «РеализацияТоваровУслуг», кото­рую и скопируем (см. рис. 1).

Шаг 2. Укажем параметры регистрации внешней печатной формы

Откроем модуль объекта внешней обработки: «Действия -­Открыть модуль объекта».

В модуле создаем экспортную функцию «СведенияОВ-нешнейОбработке», которая будет возвращать структуру с параметрами регистрации. Эти параметры стандартны для любых внешних печатных форм и будут различаться только их значениями (см. листинг 1).

Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»);
ПараметрыРегистрации.Вставить(«Назначение», ↵
ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить(«Наименование», ↵
«Акт (внешняя печатная форма)»);
ПараметрыРегистрации.Вставить(«Версия», «1.0»);
ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина);
ПараметрыРегистрации.Вставить(«Информация», ↵
«Обработка формирования внешней печатной формы: Акт»);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, ↵
«Акт (внешняя печатная форма)»,»АктВнешний», ↵
«ВызовСерверногоМетода»,Истина,»ПечатьMXL»);
ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьНазначениеОбработки()
Назначение = Новый Массив;
Назначение.Добавить(«Документ.РеализацияТоваровУслуг»);
Возврат Назначение;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить(«Представление», ↵
Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«Идентификатор», ↵
Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«Использование», ↵
Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«ПоказыватьОповещение», ↵
Новый ОписаниеТипов(«Булево»));
Команды.Колонки.Добавить(«Модификатор», ↵
Новый ОписаниеТипов(«Строка»));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, ↵
Идентификатор, Использование, ↵
ПоказыватьОповещение = Ложь, Модификатор = «»)
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

forma

Параметры, возвращаемые функцией: Вид. Определяет вид обработки и принимает одно из сле­дующих текстовых значений:

  • >   «ДополнительнаяОбработка»;
  • >   «ДополнительныйОтчет»;
  • >   «ЗаполнениеОбъекта»;
  • >   «Отчет»;
  • >   «ПечатнаяФорма»;
  • >   «СозданиеСвязанныхОбъектов».

В нашем случае это будет «ПечатнаяФорма».

Назначение. Определяет список объектов метаданных, для которых будет использоваться эта печатная форма. Задается массивом с перечислением типов объектов мета­данных. В нашем случае это будет документ «Реализация товаров и услуг».

Наименование. Определяет наименование печатной формы, которое будет отображаться в справочнике «До­полнительные отчеты и обработки», в который мы будет добавлять внешнюю печатную форму для использования в конфигурации. В нашем случае будет равно «Акт (внешняя печатная форма)».

Версия. Определяет номер версии печатной формы

Используется для разграничения модификаций печатной формы. В нашем случае значение параметра будет равно «1.0».

БезопасныйРежим. Параметр булевого типа. Определя­ет использование безопасного режима при использовании печатной формы. Как правило, внешние обработки должны исполняться в безопасном режиме. Это помогает гаран­тировать, что обработка не содержит «ненадежный» про­граммный код. Установим параметр в значение «Истина».

Информация. Краткая справочная информация с опи­санием печатной формы. Установим значение «Обработка формирования внешней печатной формы: Акт».

Команды. Описывает команды, выполняемые обработ­кой. Параметр является таблицей значений с определенны­ми колонками.

Колонки таблицы команд:

  • >   Представление — представление команды в пользова­тельском интерфейсе.
  • >   Идентификатор — идентификатор команды; любая стро­ка, уникальная в пределах данной печатной формы.
  • >   Использование — вариант запуска команды:

ОткрытиеФормы — открыть форму обработки;

  • » ВызовКлиентскогоМетода — вызвать клиентскую экспортную процедуру из модуля формы обработки;
  • » ВызовСерверногоМетода — вызвать серверную экс­портную процедуру из модуля объекта обработки;
  • » СценарийВБезопасномРежиме — вызвать серверную экспортную функцию из модуля объекта для форми­рования сценария выполнения.

>   ПоказыватьОповещение — Истина, если требуется по­казать оповещение при начале и при завершении работы обработки. Например, при запуске обработки без откры­тия формы.

>   Модификатор — дополнительный модификатор команды. Используется для дополнительных обработок печатных форм на основе табличных макетов. Для таких команд должен содержать строку «ПечатьМХ1_».

Шаг 3. Создание процедуры «Печать»

В процедуре формируется необходимая печатная форма и выводится на экран

forma-2

Процедура «Печать» содержит стандартные входные па­раметры:

  • >   МассивОбъектов — массив ссылок на объекты, для кото­рых необходимо сформировать печатную форму.
  • >   КоллекцияПечатныхФорм — служебная таблица значе­ний. Через нее передаются имена макетов, для которых должны быть сформированы табличные документы. Воз­вращаются синонимы макетов (представление), сформи­рованные табличные документы с указанием количества экземпляров, картинка для отображения на закладке со­ответствующего табличного документа в форме печати документов.
  • >   ОбъектыПечати — список значений, в котором обработ­чик печати устанавливает соответствие между объектами и именами областей печати табличного документа: зна­чение — объект, представление — имя области, в которой был выведен объект.
  • >   ПараметрыВывода — структура, дополнительные пара­метры сформированных табличных документов.

Чтобы не создавать с нуля процедуру печати «Акта об ока­зании услуг», можно скопировать процедуру формирования данной формы из документа «РеализацияТоваровУслуг».

Для этого необходимо:

  • >   Открыть модуль менеджера документа «Реализация­ТоваровУслуг»: «Действия — Открыть модуль менед­жера».
  • >   Найти там процедуру «Печать».
  • >   Скопировать текст в процедуре, ответственный за формирование печатной формы акта, и перенести его в процедуру «Печать» внешней печатной формы.
  • >   Заменить идентификатор команды «Акт» на «АктВнеш-ний», т.к. в списке команд мы определили имя команды печати как «АктВнешний».
  • >   Перенесем процедуру «ПечатьАктаОбОказанииУслуг» из общего модуля «ПечатьТорговыхДокументов» в мо­дуль объекта печатной формы.
  • >   Подменим макет акта на макет внешней обработки в процедуре «ПечатьАктаОбОказанииУслуг»:

 Макет = ПолучитьМакет(«ПФ_МХЬ_Акт»)

  • >             Нажав на клавишу «Проверки модуля» (<Ctrl> + <F7>), определяем, каких еще процедур или функций не хватает в модуле обработки, чтобы сформировалась печатная форма с помощью функции «ПечатьАкта-ОбОказанииУслуг».

В данном случае мы перенесем из общего модуля еще две функции:

  • >   ПолучитьТаблицуСведенийАктаОбОказанииУслуг.
  • >   ПолучитьТекстЗапросаДляФормированияТаблицыСве-денийАктаОбОказанииУслуг

 Шаг 4. Подключение внешней печатной формы

Для этого в пользовательском режиме «1С:Бухгалтерии» ред. 3.0:

  • >   Откроем справочник внешних отчетов и обработок: «Администрирование — Печатные формы, отчеты и об­работки — Дополнительные отчеты и обработки».
  • >   Добавим нашу внешнюю печатную форму, нажав на кнопку «Создать» и выбрав нашу обработку. Выбрав печатную форму, система автоматически заполнит не­обходимые данные той информацией, что мы указыва­ли в функции «СведенияОВнешнейОбработке».
  • >   Затем сохраним значение и откроем какой-либо до­кумент реализации. В нем уже добавится в список печатных форм наша внешняя печатная форма акта (см. рис. 3).

forma-1

Мы рассмотрели, как нам создать внешнюю печатную форму, не изменяя функционала в конфигураторе. Эту за­дачу при необходимости мы можем усложнять:

>   выводить дополнительные данные во внешней печат­ной форме.

>   создавать свои печатные формы с уникальными маке­тами.

Но основа при этом останется прежней, просто изменят­ся параметры, макет и процедура печати.

 

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

Источник:  Журнал системный администратор март 2016

 

0 ответы

Ответить

Хотите присоединиться к дискуссии?
Приглашаем поучаствовать!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *