1. Задача

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

2. Создание внешней обработки

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

Создание внешней обработки

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

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

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

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

Макет печатной формы

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

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

Переход в модуль объекта

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

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

КонецФункции

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

ТабДок = новый ТабличныйДокумент;

Макет = ПолучитьМакет("Макет");

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

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

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

ТабДок.Вывести(ОбластьШапки);

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

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

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

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

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

ИтогоСумма = 0;
ИтогоКоличество = 0;

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

    ИтогоСумма = ИтогоСумма + Выборка.Сумма;
    ИтогоКоличество = ИтогоКоличество + Выборка.Количество;

    ТабДок.Вывести(ОбластьДанные);
КонецЦикла;

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

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

ТабДок.Вывести(ОбластьПодвал);

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

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

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

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

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

Открытие справочника внешних обработок

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

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

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

Список печатных форм документа

Печатная форма

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

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

Настройка авторегистрации

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

Применение параметров авторегистрации

Читайте также статью о создании печатной формы в управляемом приложении 1С.

Смотрите видео по созданию внешней печатной формы для управляемого приложения:

5 78326 12
ДобавленоVital729 дней назад
Отредактировано73 дня назад


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

Аноним написал:615 дней назад0

Спасибо!

Ответить

Аноним написал:613 дней назад0

Откуда берётся переменная СсылкаНаОбъект?

Ответить

Аноним написал:580 дней назад0

Создаем новый реквизит, называем его “СсылкаНаОбъект” и указываем для него тип, который нам нужен.

Ответить

Аноним написал:557 дней назад0

Из реквизитов.

Ответить

Аноним написал:549 дней назад0

Скорее всего так СсылкаНаОбъект = Объект.Ссылка; Или вместо СсылкаНаОбъект писать просто Объект.Ссылка

Ответить

Кирилл написал:540 дней назад0

В обработке нужно создать реквизит “СсылкаНаОбъект”, которому присвоить тип нужного документа

Ответить

Аноним написал:498 дней назад0

Вроде бы сделал все как описано выше, но при печати выдает ошибку: “Не удалось сформировать внешнюю печатную форму! Метод объекта не обнаружен (Печать)” хотя Функция Печать() Экспорт в модуле объекта присутствует…

Ответить

Кирилл написал:497 дней назад0

Может быть у вас проблема с прикреплением ? Может быть не тот файл прикрепляете?

Сделал по этой схеме очень много печатных форм - всё отлично :)

Ответить

Аноним написал:364 дня назад0

Спасибо, получается! Я как полный “0” в этом вопросе справился за 1,5 дня…( Больше всего ругалось вот тут: Макет = ПолучитьМакет(“Макет”); Так как мы создаем Макет1 (как описано выше в инструкции), то и ссылаться нужно на “Макет1”.

Ответить

Кирилл написал:337 дней назад0

Это уж как назвали :)))

Ответить

Аноним написал:309 дней назад0

Уважуха, спасибо!

Ответить

Аноним написал:262 дня назад0

Спасибо, делал не так, но нашел как обратиться к параметрам макета:

ОбластьИтог = Макет.ПолучитьОбласть(“ГруппыИтог”); ОбластьИтог.Параметры.ЗакупСумма= ЭлементыФормы.НоменклатурныеГруппы.Колонки.ЗакупСумма.ТекстПодвала; … ТабДок.Вывести(ОбластьИтог);

Ответить

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

Добавить статью!

Наш канал на Youtube

Изучаете 1С? Скачайте 200 видео по 1С бесплатно:

Похожее

Создание обработки заполнения табличной части 1С 8

1. Постановка задачи В этой статье рассмотрим процесс написания простейшей внеш...

Создание внешнего отчета в 1с 8

Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки ...

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

Рассмотрим создание внешней печатной формы из встроенной на примере Торг 12 из т...

Создание печатной формы для управляемого приложения в 1с 8.3

1. Задача Рассмотрим написание простейшей печатной формы в 1с 8.2 - 8.3 для упр...

Подключение внешней обработки, печатной формы, отчета в 1С

Для использования внешних (подключаемых) обработок, отчетов, печатных форм, нет ...

Новое

Swiss replica calidad superior mikrogirder relojes en línea .

[b][url=http://es.tagheuerwatches.me/]TAG Heuer relojes lista de precios[/url][/...

Blancpain Replilca relojes suizos

[b][url=http://www.fakewatchesuk.cc/es/]réplicas de relojes suizos aaa +[/url][/...

Vestidos baratos de la boda, vestidos de partido en línea, los mejores vestidos de boda, vestidos de diseñador Online

[b][url=http://es.weddingsales.cn/]Comprar Vestidos de novia[/url][/b] [b]Compra...

Crear cuenta : Profesional réplicas de relojes tienda, buywatch.top

omega relojes a la venta relojes Omega réplica [b][url=http://www.buywatch.top/e...