Создание внешних печатных форм 8.2. Добавление внешней печатной формы в базу
Рассмотрим написание простейшей печатной формы в 1с 8.1 — 8.2 на примере конфигурации Бухгалтерия предприятия 2.0 . Допустим требуется написать внешнюю печатную форму к документу : вывести основные данные документа, а так же из табличной части Товары : номенклатуру, цену, количество и сумму.
Скачать получившийся пример можно по .
В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл->Новый->Внешняя обработка ), задаем имя, создаем обязательный для внешней печатной формы реквизит СсылкаНаОбъект с типом ДокументСсылка.РеализацияТоваровУслуг .
Создание макета печатной формы
Добавляем новый макет , тип макета оставляем Табличный документ . На макете создаем три области: Шапка, Данные и Подвал . Сделать это можно выделив нужное количество строк и нажав меню Таблица->Имена->Назначить имя (Ctrl+Shift+N) .
После этого начинаем располагать в областях текст и параметры. В шапку выведем название печатной формы, номер документа и организацию , а также нарисуем границы шапки таблицы и напишем имена колонок. При создании параметра в свойствах ячейки, на закладке макет следует установить свойство Заполнение в значение Параметр .
В области Данные создадим параметры для вывода строк табличной части(Номенклатура, цена и т.д.), а в области Подвал для итогов по количеству и сумме.
Программирование
Зайдем в модуль объекта печатной формы Действия->Открыть модуль объекта .
Создадим там обязательную для печатных форм экспортную функцию Печать() .
Функция Печать() Экспорт КонецФункцииВ функции создадим переменную для табличного документа , в который будет выводится печатная форма, получим макет и области макета .
ТабДок = новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет" ); ОбластьШапки = Макет.ПолучитьОбласть("Шапка" ); ОбластьДанные = Макет.ПолучитьОбласть("Данные" ); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал" );
Заполним параметры шапки и выведем ее в табличный документ .
ОбластьШапки.Параметры.ТекстЗаголовка = +СсылкаНаОбъект.Номер; ОбластьШапки.Параметры.Организация = СсылкаНаОбъект.Организация; ТабДок.Вывести(ОбластьШапки);
Для того чтобы получить строки табличной части Товары используем запрос.
Запрос = новый запрос; Запрос.УстановитьПараметр("Ссылка" ,СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Сумма, | РеализацияТоваровУслугТовары.Цена, | РеализацияТоваровУслугТовары.Количество |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка" ;
В параметр запроса передаем реквизит СсылкаНаОбъект , что бы указать в условии ГДЕ , что нам нужны данные только того документа из которого выводим печатную форму. Чтобы получить выборку запроса, сначала выполняем его, а затем выбираем строки.
Выборка = Запрос.Выполнить().Выбрать();
Далее в цикле заполняем параметры области Данные для каждой строки выборки документа и выводим их в табличный документ . Также в цикле считаем итоговые значения количества и суммы . Заполнять каждый параметр в отдельности мы не будем, а используем процедуру ЗаполнитьЗначенияСвойств((<Приемник>, <Источник>) из глобального контекста , она копирует значения свойств <Источника> в свойства <Приемника> . Сопоставление производится по именам свойств. Подробнее об этом можно прочитать в синтаксис-помощнике 1С Предприятия 8 .
ИтогоСумма = 0 ; ИтогоКоличество = 0 ; Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,Выборка); ИтогоСумма = ИтогоСумма + Выборка.Сумма; ИтогоКоличество = ИтогоКоличество + Выборка.Количество; ТабДок.Вывести(ОбластьДанные); КонецЦикла ;
Заполним и выведем область Подвал .
ОбластьПодвал.Параметры.ИтогоКоличество = ИтогоКоличество; ОбластьПодвал.Параметры.ИтогоСумма = ИтогоСумма; ТабДок.Вывести(ОбластьПодвал);
Возвращаем заполненный табличный документ из функции Печать() .
возврат ТабДок;Если вы используете одну из типовых конфигураций, то после возврата табличного документа 1С само выведет на экран печатную форму. Так же для вывода можно использовать метод табличного документа Показать() .
5. Подключение печатной формы к документу
В типовых конфигурациях 1С 8 для регистрации внешних печатных форм существует справочник ВнешниеОбработки . Для подключения следует в режиме предприятия зайти в меню Сервис->Дополнительные отчеты и обработки->Дополнительные внешние печатные формы .
Добавляем новый элемент справочника, загружаем печатную форму с диска и выбираем тип документа.
Теперь в документе Реализация товаров и услуг появится новая печатная форма.
Авторегистрация печатной формы
Для того чтобы при подключении печатной формы не нужно было выбирать тип документа вручную можно настроить авторегистрацию . Для этого добавляем новый макет и называем его Параметры_Авторегистрации (только так) и в первой его ячейке пишем Документы.<Наименование документа> (либо Справочники.<Наименование справочника> ).
Теперь при подключении печатной формы нам будет предложено воспользоваться параметрами авторегистрации .
Внешние печатные формы для обычного приложения (для конфигурация Бухгалтерия предприятия 2.0, Зарплата и управление персоналом 2.5, Управление торговлей 10.3 и т.д.) создаются довольно просто по сравнению с внешними печатными формами для управляемого приложения.
Для чего создавать внешние печатные формы
Преимущество внешней печатной формы по сравнению с обычной в том, что она позволяет избежать изменения конфигурации информационной базы. А это значит, что процесс последующего обновления конфигурации не будет усложнен. Кроме того, внешние печатные формы наряду с внешними обработками являются единственным вариантом расширения функционала базовых версий конфигураций 1С, которые нельзя изменять вообще.
Ну и последнее: внешние печатные формы легче тиражировать, т.к. они представляют собой отдельный файл, который можно быстро подключить к информационной базе.
Как создать внешнюю печатную форму
Рассмотрим процесс создания внешней печатной формы 1С по шагам:
- Создаем внешнюю обработку. Для этого в конфигураторе выбираем пункт меню Файл — Новый… И в открывшемся диалоговом окне — Внешняя обработка .
- Создаем реквизит внешней обработки с именем СсылкаНаОбъект . Тип реквизита — ссылка на справочник или документ, для которого создается внешняя печатная форма. Одна и та же форма может применяться для нескольких типов объектов, в этом случае тип данных реквизита СсылкаНаОбъект должен быть составным.
- В модуле объекта создаем экспортную функцию с именем Печать , которая должна возвращать готовый табличный документ печатной формы.
Часто бывает, что нужно слегка подкорректировать макет уже существующей печатной формы и сделать ее внешней. Например, добавить на макет печать организации и подпись руководителя.
Создание внешней печатной формы на основе стандартной с незначительными изменениями
Рассмотрим эту процедуру на примере создания внешней печатной формы универсального передаточного документа для документа Реализация товаров и услуг 1С:Бухгалтерии. От стандартной печатной формы она будет отличаться наличием печати организации.
- Создаем внешнюю обработку с реквизитом СсылкаНаОбъект, тип данных — ДокументСсылка.РеализацияТоваровУслуг.
- Находим макет стандартной печатной формы УПД (он находится в общих макетах) и копируем (перетаскиваем) его в окно внешней обработки. Макеты других печатных форм могут находиться в самих документах или справочниках.
- Вносим необходимые изменения в скопированный макет печатной формы.
- Находим функцию, отвечающую за формирование печатной формы. Эта функция должна возвращать сформированный табличный документ. Копируем ее содержание в экспортную функцию Печать()
в модуле объекта внешней обработки.
В нашем случае это функция ПечатьУниверсальногоПередаточногоДокумента() Экспорт из модуля объекта документа Реализация товаров и услуг.
Если изменения макета были существенными (изменялись области и/или параметры), то необходимо внести соответствующие корректировки в функцию печати. - Пытаемся сохранить внешнюю обработку. При этом, скорее всего, появятся сообщения об ошибках, связанных с отсутствием некоторых процедур и функций, вызываемых функцией печати. Эти функции и процедуры необходимо найти в исходном документе и так же скопировать в модуль объекта внешней обработки. Либо скорректировать ссылку, если исходная функция или процедура экспортная.
- (не обязательно). Для тестирования внешней печатной формы удобно сделать ее форму, на которую вынести реквизит СсылкаНаОбъект . Кнопка Выполнить должна вызывать процедуру Печать() из модуля объекта. Для этого событию нажатия кнопки задается процедура:
В данной статье описано как подключить внешнюю печатную форму в базу 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
— подключенная нами внешняя печатная форма (см. рис. ниже ↓)