14.10.2016

1С внешняя печатная форма

Автор: Белозерских Евгений

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

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

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

    А мы пока продолжим дальше!

Задача

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

Поехали!

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

1. Обработка внешней печатной формы 1С

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

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

2. Макет внешней печатной формы 1С

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

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

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

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

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

Печатаем!

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

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

Другие статьи

Работа с файлами - Диалог выбора файла

    Простой пример организации выбора файла на управляемой форме «1С»

Список значений 1С

    Практические примеры работы со списком значений в платформе «1С:Предприятие»

Отличие структуры от соответствия в «1С»

    «Соответствие» и «Структура» близкие по сути коллекции в платформе «1С:Предприятие». Обе коллекции представляют собой пару ключ и значение. Однако отличия все-таки есть

Примеры работы со строками в «1С» 8.3

    Примеры наиболее распространенных приемов при работе со строками в «1С»

Программная работа с торговым оборудование 1С 8.2

    В статье приведены примеры программного кода для подключения торгового оборудования, и обработки поступающих данных. Пример подходит для таких конфигураций как: Управление торговлей ред.10.3, Комплексная автоматизация ред.1.1, УПП ред. 1.3

Печать штрих-кода в 1С 8.2 (8.3)

    Практический пример вывода штрих-кода на печатную форму 1С

Работа с деревом значений в 1С 8.3

   В статье рассмотрены примеры программного кода для выполнения различных операций над реквизитом объекта с типом данных «Дерево значений»

Определить GUID по "<Объект не найден>..." 1С

     Программный код для определения GUID объекта базы 1С, на который есть ссылка, а самого объекта нет. Т.е. когда вместо объекта, строка вида "<Объект не найден> (52:fe9233554c4425daa3eef4a851abc631)"

Узнать версию платформы и конфигурации 1С программно

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

Узнать версию платформы и конфигурации 1С

      Первое что нужно знать при работе в 1С, это используемая конфигурация, ее версия, а так же версия платформы "1С:Предприятие". Выяснить это достаточно просто.
 

Получить макет в управляемых формах 1С 8.3

Рассмотрим как можно получить макет объекта (отчета, обработки), когда методы объекта не доступны на сервере

Про управляемые формы 1С (Начало)

Самое самое самое простое (начальное) что необходимо знать про управляемые формы )

Проверка файловой базы данных 1С (chdbfl.exe)

Проверка физической целостности базы данных на платформе "1С:Предприятие" утилитой chdbfl.exe

Тестирование и исправление базы

Немного о том, какими способами осуществляется тестирование и исправление базы данных на платформе "1С:Предприятие"

Журнал регистрации 1С

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

Что такое платформа "1С:Предприятие"

Перед тем как начать разработку в среде 1С, необходимо определиться что же такое ПЛАТФОРМА, для чего она нужна и чего не будет без нее! Этому вопросу и посвящена данная статья.