Печатная форма документа 1с. Публикации

Внешние печатные формы для обычного приложения (для конфигурация Бухгалтерия предприятия 2.0, Зарплата и управление персоналом 2.5, Управление торговлей 10.3 и т.д.) создаются довольно просто по сравнению с внешними печатными формами для управляемого приложения.

Для чего создавать внешние печатные формы

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

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

Как создать внешнюю печатную форму

Рассмотрим процесс создания внешней печатной формы 1С по шагам:

  1. Создаем внешнюю обработку. Для этого в конфигураторе выбираем пункт меню Файл — Новый… И в открывшемся диалоговом окне — Внешняя обработка .
  2. Создаем реквизит внешней обработки с именем СсылкаНаОбъект . Тип реквизита — ссылка на справочник или документ, для которого создается внешняя печатная форма. Одна и та же форма может применяться для нескольких типов объектов, в этом случае тип данных реквизита СсылкаНаОбъект должен быть составным.
  3. В модуле объекта создаем экспортную функцию с именем Печать , которая должна возвращать готовый табличный документ печатной формы.

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

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

Рассмотрим эту процедуру на примере создания внешней печатной формы универсального передаточного документа для документа Реализация товаров и услуг 1С:Бухгалтерии. От стандартной печатной формы она будет отличаться наличием печати организации.

  1. Создаем внешнюю обработку с реквизитом СсылкаНаОбъект, тип данных — ДокументСсылка.РеализацияТоваровУслуг.
  2. Находим макет стандартной печатной формы УПД (он находится в общих макетах) и копируем (перетаскиваем) его в окно внешней обработки. Макеты других печатных форм могут находиться в самих документах или справочниках.
  3. Вносим необходимые изменения в скопированный макет печатной формы.
  4. Находим функцию, отвечающую за формирование печатной формы. Эта функция должна возвращать сформированный табличный документ. Копируем ее содержание в экспортную функцию Печать() в модуле объекта внешней обработки.
    В нашем случае это функция ПечатьУниверсальногоПередаточногоДокумента() Экспорт из модуля объекта документа Реализация товаров и услуг.
    Если изменения макета были существенными (изменялись области и/или параметры), то необходимо внести соответствующие корректировки в функцию печати.
  5. Пытаемся сохранить внешнюю обработку. При этом, скорее всего, появятся сообщения об ошибках, связанных с отсутствием некоторых процедур и функций, вызываемых функцией печати. Эти функции и процедуры необходимо найти в исходном документе и так же скопировать в модуль объекта внешней обработки. Либо скорректировать ссылку, если исходная функция или процедура экспортная.
  6. (не обязательно). Для тестирования внешней печатной формы удобно сделать ее форму, на которую вынести реквизит СсылкаНаОбъект . Кнопка Выполнить должна вызывать процедуру Печать() из модуля объекта. Для этого событию нажатия кнопки задается процедура:

Рассмотрим написание простейшей печатной формы в 1с 8.1 — 8.2 на примере конфигурации Бухгалтерия предприятия 2.0 . Допустим требуется написать внешнюю печатную форму к документу : вывести основные данные документа, а так же из табличной части Товары : номенклатуру, цену, количество и сумму.

Скачать получившийся пример можно по .

В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл->Новый->Внешняя обработка ), задаем имя, создаем обязательный для внешней печатной формы реквизит СсылкаНаОбъект с типом ДокументСсылка.РеализацияТоваровУслуг .

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

Добавляем новый макет , тип макета оставляем Табличный документ . На макете создаем три области: Шапка, Данные и Подвал . Сделать это можно выделив нужное количество строк и нажав меню Таблица->Имена->Назначить имя (Ctrl+Shift+N) .

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

В области Данные создадим параметры для вывода строк табличной части(Номенклатура, цена и т.д.), а в области Подвал для итогов по количеству и сумме.

Программирование

Зайдем в модуль объекта печатной формы Действия->Открыть модуль объекта .

Создадим там обязательную для печатных форм экспортную функцию Печать() .

Функция Печать() Экспорт КонецФункции

В функции создадим переменную для табличного документа , в который будет выводится печатная форма, получим макет и области макета .

ТабДок = новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет" ); ОбластьШапки = Макет.ПолучитьОбласть("Шапка" ); ОбластьДанные = Макет.ПолучитьОбласть("Данные" ); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал" );

Заполним параметры шапки и выведем ее в табличный документ .

ОбластьШапки.Параметры.ТекстЗаголовка = +СсылкаНаОбъект.Номер; ОбластьШапки.Параметры.Организация = СсылкаНаОбъект.Организация; ТабДок.Вывести(ОбластьШапки);

Для того чтобы получить строки табличной части Товары используем запрос.

Запрос = новый запрос; Запрос.УстановитьПараметр("Ссылка" ,СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Сумма, | РеализацияТоваровУслугТовары.Цена, | РеализацияТоваровУслугТовары.Количество |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка" ;

В параметр запроса передаем реквизит СсылкаНаОбъект , что бы указать в условии ГДЕ , что нам нужны данные только того документа из которого выводим печатную форму. Чтобы получить выборку запроса, сначала выполняем его, а затем выбираем строки.

Выборка = Запрос.Выполнить().Выбрать();

Далее в цикле заполняем параметры области Данные для каждой строки выборки документа и выводим их в табличный документ . Также в цикле считаем итоговые значения количества и суммы . Заполнять каждый параметр в отдельности мы не будем, а используем процедуру ЗаполнитьЗначенияСвойств((<Приемник>, <Источник>) из глобального контекста , она копирует значения свойств <Источника> в свойства <Приемника> . Сопоставление производится по именам свойств. Подробнее об этом можно прочитать в синтаксис-помощнике 1С Предприятия 8 .

ИтогоСумма = 0 ; ИтогоКоличество = 0 ; Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,Выборка); ИтогоСумма = ИтогоСумма + Выборка.Сумма; ИтогоКоличество = ИтогоКоличество + Выборка.Количество; ТабДок.Вывести(ОбластьДанные); КонецЦикла ;

Заполним и выведем область Подвал .

ОбластьПодвал.Параметры.ИтогоКоличество = ИтогоКоличество; ОбластьПодвал.Параметры.ИтогоСумма = ИтогоСумма; ТабДок.Вывести(ОбластьПодвал);

Возвращаем заполненный табличный документ из функции Печать() .

возврат ТабДок;

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

5. Подключение печатной формы к документу

В типовых конфигурациях 1С 8 для регистрации внешних печатных форм существует справочник ВнешниеОбработки . Для подключения следует в режиме предприятия зайти в меню Сервис->Дополнительные отчеты и обработки->Дополнительные внешние печатные формы .

Добавляем новый элемент справочника, загружаем печатную форму с диска и выбираем тип документа.

Теперь в документе Реализация товаров и услуг появится новая печатная форма.

Авторегистрация печатной формы

Для того чтобы при подключении печатной формы не нужно было выбирать тип документа вручную можно настроить авторегистрацию . Для этого добавляем новый макет и называем его Параметры_Авторегистрации (только так) и в первой его ячейке пишем Документы.<Наименование документа> (либо Справочники.<Наименование справочника> ).

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

2016-12-01T12:56:42+00:00

В 1С:Бухгалтерия 8.3 (редакция 3.0) появилась замечательная возможность. Теперь пользователь в режиме 1С:Предприятия может совершенно спокойно редактировать макеты печатных форм.

Когда это может быть полезно? Ну, например, есть некоторая печатная форма, скажем, "Требование-накладная" в которой вы каждый раз после вывода её на печать вносите какие-то изменения. Меняете шрифт, допечатываете поля, убираете лишнее.

Так зачем же это делать каждый раз?! Если мы можем один раз внести эти изменения в макет печатной формы и программа всегда будет выводить печатную форму так как нам нужно.

Ниже по шагам я покажу как изменить макет печатной формы "Требование-накладная". Мы добавим туда новое поле: "Ответственный".

1. Сформируйте печатную форму (по кнопке "Печать") и нажмите в открывшейся форме кнопку (справа) "Ещё"->"Изменить макет":

2. Откроется макет печатной формы. Внесите в него необходимые изменения, но будьте осторожны, чтобы не получилось вот . Скажу сразу, что шрифты и размеры полей можно менять совершенно точно, но вот удалять существующие поля (особенно те, что в <угловых скобках>) не стоит. Если требуется скрыть поле в <угловых скобках>, просто сделайте его невидимым (цветом или размером), но оно должно остаться на форме, так как оно требуется программному коду 1С.

3. Мы добавим поле "Ответственный" и нажмем кнопку "Записать и закрыть".

4. Печатная форма переформировалась в новом виде как мы и хотели.

Если же после изменения печатной формы она перестала работать, то вам .

С уважением, Владимир Милькин (преподаватель и разработчик ).

В данной статье описано как подключить внешнюю печатную форму в базу 1С на примере конфигурации «Управление торговлей 10.3»

Конфигурация «Управление торговлей 10.3» — это конфигурация на, так называемых, «ОБЫЧНЫХ» формах, а не на «УПРАВЛЯЕМЫХ» как «Управление торговлей 11.2», для «УПРАВЛЯЕМЫХ» форм рекомендуем прочитать .

Наша инструкция «показывает» как подключить внешнюю печатную форму в 1С с конфигурацией на «ОБЫЧНЫХ» формах а именно:

  • «Бухгалтерия 2.0»
  • «Управление торговлей 10.3»
  • «Зарплата и управление персоналом 2.5»
  • «Комплексная автоматизация 1.1»
  • «Управление производственным предприятием 1.3»
  • «Розница 1.0»
  • и другие подобные конфигурации.

Для того чтобы подключить внешнюю печатную форму в 1С нам понадобится пройти 11 шагов.

1 — Меню «Сервис». 2 — Выбираем «Внешние печатные формы и обработки». 3 — Далее — «Внешние печатные формы» (см. рис. ниже ↓)

Для того чтобы убедить вас в том, что данная инструкция подходит и для других конфигураций на «ОБЫЧНЫХ» формах — представим те же начальные 1-2-3 шага, но уже не в «Управление торговлей 10.3», а в «Бухгалтерия 2.0» там всё также за исключением чуть-чуть измененных слов в подпунктах, а именно…

1 — Меню «Сервис»(так же как и в «УТ 10.3», да и в других).
2 — Здесь «Дополнительные отчеты и обработки», а не «Внешние печатные формы и обработки» как в «УТ 10.3»,
но все-равно смысл тот-же и находится там же в меню «Сервис».
3 — И затем — «Дополнительные внешние печатные формы», т.е. лишнее слово «Дополнительные», если сравнивать с «УТ 10.3» (см. рис. ниже ↓)

Далее продолжим все-таки на примере «Управление торговлей 10.3» без лишних сравнений.
4 — Нажимаем на кнопку «+« т.е. «Добавить». 5 — Кнопка где нарисована папка (при наведении появится подсказка: «Заменить файл внешней обработки»).

В новых версиях 1С (начиная с августа 2016 года) в программу встроен механизм предупреждения об опасности использования неизвестных внешних обработок, которые могут содержать «вирусы», в более ранних версиях программы предупреждение возникать не будет! Если оно возникло, то для подключения внешней обработки будет необходимо - 6 - нажать кнопку «Продолжить». (см. рис. ниже ↓)

7 — Выбираем каталог, в котором размещен нужный нам файл внешней печатной формы. 8 — Выделяем наш файл. 9 — Нажимаем «Открыть» (см. рис. ниже ↓)

10 — Внешняя печатная форма может иметь параметры авторегистрации, как в нашем случае, здесь имеет смысл нажать «Да» — тем самым использовать эти параметры при регистрации, т.е. автоматически выбрать те объекты (документы или может, например, справочники) в которых можно будет использовать подключаемую внешнюю печатную форму (см. рис. ниже ↓)

Вот и все, у нас заполнилась таблица «Принадлежность печатной формы», благодаря параметрам авторегистрации, мы видим наименование подключаемой внешней печатной формы, возможно у вас заполнится поле «Комментарий» и т.п. Вы можете добавлять свои объекты в таблицу «Принадлежность печатной формы», например, для наших обработок «Универсальная печатная форма договора», которая поддерживает печать многих документов и справочников, но параметры авторегистрации установлены только для основных: 10* — Нажимаете на зеленую кнопку «Добавить» и выбираете в какие объекты так же разместить в обработку. Теперь остается только — 11 — нажать на кнопку «ОК» и (см. рис. ниже ↓)

Сейчас стоит проверить — все ли мы сделали правильно?
Для этого выберем, объект для проверки, например документ «Реализация товаров и услуг», который указан в таблице «Принадлежность печатной формы», это значит что подключенную печатную форму можно использовать в данном документе! Проверим… (см. рис. ниже ↓)

Для проверки возможности печати открываем любой документ вида: «Реализация товаров и услуг». 13 — Нажимаем кнопку «Печать».
Видим — появилось окно выбора печатных форм, среди них присутствует — 14 — подключенная нами внешняя печатная форма (см. рис. ниже ↓)

Итак! Есть конфигурация (например "Управление торговлей", редакция 10.3), и для нее необходимо разработать внешнюю печатную форму. Для примера возьмем типовой документ "Счет на оплату покупателю" (хотя внешние печатные формы можно создавать не только для документов, но и для справочников).

Пример для 1С 8.3 (Управляемые формы)

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

Задача

Разработать внешнюю печатную форму, которая будет доступна из документа "Счет на оплату покупателю", и которая будет содержать наименование организации, контрагента и перечень товаров с ценой, суммой и количеством.

Поехали!

Первое что нужно сделать, это создать файл внешней обработки. Обработка должна содержать три основных момента:
  1. Реквизит "СсылкаНаОбъект" с типом "ДокументСсылка.СчетНаОплатуПокупателю"
  2. Макет, который будет выводиться на печать
  3. Экспортную Функцию "Печать()" которая возвращает табличный документ
Эти действия видны на рисунке №1

"Рисуем макет"

Наш макет будет содержать две области:
  1. Заголовок (шапка) документа (в этой области будут размещены наименования организации и контрагента), и шапка таблицы (с наименованием колонок)
  2. Таблица с товарами (колонки, с наименование количество и суммой)
На рисунке №2 показан макет внешней печатной формы. Обратите внимание на то, что ячейки таблицы и шапки содержат параметры, а не просто текст.

Функция "Печать()"

Вот форма почти и готова. Осталось написать программное заполнение полей табличного документа. Эти действия выполняются в модуле объекта обработки, в функции под название "Печать", которая ОБЯЗАТЕЛЬНО должны быть экспортной.
Этап №1. Получение данных для шапки, заполнение параметров шапки, и ее вывод в табличный документ ТабличныйДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("НашМакет"); ЗапросДанных = Новый Запрос("ВЫБРАТЬ | ПРЕДСТАВЛЕНИЕ(СчетНаОплатуПокупателю.Контрагент) КАК Контрагент, | ПРЕДСТАВЛЕНИЕ(СчетНаОплатуПокупателю.Организация) КАК Организация |ИЗ | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю |ГДЕ | СчетНаОплатуПокупателю.Ссылка = &Ссылка"); ЗапросДанных.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Шапка = ЗапросДанных.Выполнить().Выбрать(); Шапка.Следующий(); Область = Макет.ПолучитьОбласть("Шапка"); Область.Параметры.Заполнить(Шапка); ТабличныйДокумент.Вывести(Область); Этап №2. Получение данных табличной части, и построчный вывод товаров
ЗапросДанных.Текст = "ВЫБРАТЬ | _Товары.НомерСтроки, | ПРЕДСТАВЛЕНИЕ(_Товары.Номенклатура) КАК Номенклатура, | _Товары.Количество, | _Товары.Цена, | _Товары.Сумма |ИЗ | Документ.СчетНаОплатуПокупателю.Товары КАК _Товары |ГДЕ | _Товары.Ссылка = &Ссылка"; Выборка = ЗапросДанных.Выполнить().Выбрать(); Область = Макет.ПолучитьОбласть("Данные"); Пока Выборка.Следующий() Цикл Область.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(Область); КонецЦикла; Этап №3. Возврат табличного документа и функции печать Возврат ТабличныйДокумент;

Добавляем нашу внешнюю печатную форму в 1С

Заходим в меню "Сервис - Внешние печатные формы и обработки - Внешние печатные формы"

В открывшемся окне создания элемента, выполняем следующие действия:

  1. Загружаем файл внешней обработки
  2. Указываем для какого документа (или справочника) конфигурации, предназначена печатная форма
  3. Записываем изменения

Печатаем!

Открываем любой документ "Счет на оплату покупателю" (с заполненной табличной частью "Товары", потому что именно оттуда мы берем данные для заполнения), нажимаем кнопку "Печать", в открывшемся окне, выбираем НАШУ печатную форму, и нажимаем "Печать"


ВНИМАНИЕ! Такой алгоритм разработки подходит ТОЛЬКО для "Обычного приложения". Печатные формы для конфигураций в режиме "Управляемое приложение" отличаются!

Файл печатной форме которая показана в примере можно