Печатные формы 1С — создание и настройка

Как создать свою печатную форму в 1С 8.3: от простого макета до сложных отчётов. Практические примеры и готовый код.

📋 Способы создания печатных форм

  • Табличный документ — классический способ через макет
  • СКД (Система компоновки данных) — гибкие настраиваемые отчёты
  • Внешняя печатная форма — без изменения конфигурации
  • Расширение — добавление через механизм расширений

Способ 1. Табличный документ (макет)

Шаг 1. Создание макета

  1. Откройте документ в Конфигураторе
  2. Добавьте макет: ПКМ → Добавить → Макет
  3. Тип макета: Табличный документ
  4. Нарисуйте форму в редакторе макета

Шаг 2. Области макета

Создайте именованные области для заполнения данными:

  • Шапка — реквизиты организации, номер, дата
  • СтрокаТЧ — строка табличной части
  • Подвал — итоги, подписи

Шаг 3. Код печати

Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм)
    
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        "МояПечатнаяФорма",
        "Моя печатная форма",
        СформироватьПечатнуюФорму(МассивОбъектов));
    
КонецФункции

Функция СформироватьПечатнуюФорму(МассивОбъектов)
    
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("МояПечатнаяФорма");
    
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТЧ");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    
    Для Каждого Ссылка Из МассивОбъектов Цикл
        
        Объект = Ссылка.ПолучитьОбъект();
        
        // Шапка
        ОбластьШапка.Параметры.Номер = Объект.Номер;
        ОбластьШапка.Параметры.Дата = Формат(Объект.Дата, "ДЛФ=DD");
        ТабДок.Вывести(ОбластьШапка);
        
        // Табличная часть
        Для Каждого Строка Из Объект.Товары Цикл
            ОбластьСтрока.Параметры.Заполнить(Строка);
            ТабДок.Вывести(ОбластьСтрока);
        КонецЦикла;
        
        // Подвал
        ОбластьПодвал.Параметры.Итого = Объект.Товары.Итог("Сумма");
        ТабДок.Вывести(ОбластьПодвал);
        
    КонецЦикла;
    
    Возврат ТабДок;
    
КонецФункции

Способ 2. Внешняя печатная форма

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

Структура обработки:

  1. Создайте внешнюю обработку (.epf)
  2. Добавьте макет
  3. Реализуйте обязательные функции:
    • СведенияОВнешнейОбработке()
    • Печать()
Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Наименование", "Моя печатная форма");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление");
    Команды.Колонки.Добавить("Идентификатор");
    Команды.Колонки.Добавить("Использование");
    Команды.Колонки.Добавить("Модификатор");
    
    Команда = Команды.Добавить();
    Команда.Представление = "Моя печатная форма";
    Команда.Идентификатор = "МояПечатнаяФорма";
    Команда.Использование = "ВызовСерверногоМетода";
    Команда.Модификатор = "ПечатьMXL";
    
    ПараметрыРегистрации.Вставить("Команды", Команды);
    
    Назначение = Новый Массив;
    Назначение.Добавить("Документ.РеsлизацияТоваровУслуг");
    ПараметрыРегистрации.Вставить("Назначение", Назначение);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Полезные приёмы

Добавление логотипа

// В макете создайте ячейку с картинкой
// В коде:
ОбластьШапка.Рисунки.Логотип.Картинка = Организация.Логотип.Получить();

Настройка полей страницы

ТабДок.ПолеСлева = 20;
ТабДок.ПолеСправа = 10;
ТабДок.ПолеСверху = 15;
ТабДок.ПолеСнизу = 15;

Авторазмер колонок

ТабДок.АвтоМасштаб = Истина;

Нужна печатная форма?

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

Заказать разработку →