Свой вид счёта, акта или накладной: где правится макет печати и как не потерять правки при обновлении

· 10 мин

Содержание

Чтобы изменить печатную форму в 1С 8.3 без программиста, откройте Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм, найдите нужный макет, нажмите «Изменить», поправьте его и сохраните. Новый вид сразу появится при печати во всех документах этого типа, а стандартный макет можно вернуть одной командой.

Типичная ситуация: директор просит добавить в счёт на оплату строку «Оплата по счёту означает согласие с условиями поставки», а в акт — другую ширину колонок. Как в 1С изменить печатную форму, зависит от глубины правки. Текст, шрифт, рамки и логотип меняются мышкой. Новое поле с данными из базы или другой порядок строк — это уже конфигуратор, расширение или внешняя обработка.

Где хранятся макеты и какой способ правки выбрать

Макет — это заготовка печатной формы: табличный документ (MXL) или файл Word/OpenOffice с ячейками-параметрами. При печати программа берёт макет, подставляет в параметры номер, дату, контрагента, строки табличной части и показывает результат.

Хранится макет в одном из трёх мест:

  • 📁 В конфигурации — внутри объекта (Документы → РеализацияТоваровУслуг → Макеты) или в ветке Общие → Общие макеты. Это «заводской» вариант.
  • 🗄 В информационной базе — пользовательская копия, созданная через список «Макеты печатных форм». Она перекрывает заводскую, а конфигурация при этом не меняется.
  • 📦 Во внешнем файле — внешняя печатная форма (.epf) или расширение (.cfe) со своим макетом и своим кодом.
СпособЧто можно поменятьНужен программистПереживает обновление
Пользовательский макет в режиме ПредприятиеТекст, шрифты, рамки, ширину колонок, удалить лишнееНетДа, но не получает исправления из нового релиза
Правка в конфигуратореВсё, включая новые параметры и кодДаНет, правки сравниваются при каждом обновлении
Расширение конфигурацииВсё, основная конфигурация не трогаетсяДаДа, если не изменились перехваченные методы
Внешняя печатная формаОтдельная новая форма рядом с типовойДаДа, почти всегда
Что именно нужно поменять в печатной форме?

Как в 1С изменить печатную форму в пользовательском режиме

Этот способ работает в типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Нужны права администратора или роль, разрешающая менять макеты.

Шаг 1. Найдите макет в списке

  1. Откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Нажмите ссылку «Макеты печатных форм».
  3. В строке поиска наберите часть названия: «Счет на оплату», «Акт», «ТОРГ-12», «УПД».
  4. Выделите строку. Если в документе несколько вариантов формы (например, счёт с печатью и без), у каждого свой макет.

Есть путь короче: откройте документ, нажмите «Печать», выберите форму и в окне предварительного просмотра найдите в меню «Ещё» команду изменения макета. Откроется тот же макет, что и в списке.

Шаг 2. Отредактируйте макет

Нажмите «Изменить». MXL-макет откроется в редакторе табличного документа, офисный — в Word или LibreOffice.

В MXL-редакторе можно:

  • ✏️ дописать или исправить постоянный текст в ячейке;
  • 🔤 поменять шрифт, размер, выравнивание через контекстное меню ячейки;
  • 📏 растянуть колонки и строки мышкой за границу заголовка;
  • 🧱 добавить или убрать рамки;
  • 🗑 очистить ячейку с ненужным текстом.

Ячейки с текстом в квадратных скобках вроде [Номер] или [Контрагент] — это параметры. Их не переименовывайте и не удаляйте, если не уверены, что поле больше не нужно. Код ищет параметр по имени, и при несовпадении печать упадёт с ошибкой.

Не удаляйте целые строки и колонки внутри именованных областей («Шапка», «Строка», «Подвал»). Область задаётся диапазоном, и после удаления строки код может вывести обрезанную шапку или чужой кусок таблицы.

Шаг 3. Сохраните и проверьте

  1. Нажмите «Записать и закрыть».
  2. В списке у макета появится отметка, что он изменён.
  3. Откройте любой документ и распечатайте форму: правки видны сразу, перезапуск не нужен.

Чтобы вернуть заводской вариант, выделите макет в списке и выберите команду «Использовать стандартный макет». Ваша копия останется в базе, к ней можно вернуться командой «Использовать измененный макет».

Логотип, печать и подпись — без правки макета

Логотип, факсимиле печати и подпись руководителя в счёте и акте добавляют не через макет. В БП 3.0 это раздел «Логотип и печать» в карточке организации (Справочники → Организации). Загрузите картинки, и они появятся в формах, которые поддерживают факсимиле, обычно в варианте «с печатью и подписью».

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

Изменение печатной формы через конфигуратор

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

Подготовка

  1. Сделайте выгрузку базы: Администрирование → Выгрузить информационную базу в конфигураторе. Без копии в конфигуратор не заходите.
  2. Если конфигурация на поддержке, включите возможность изменения: Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения.
  3. Для нужного объекта поставьте правило «Объект поставщика редактируется с сохранением поддержки».

Правка макета

  1. В дереве конфигурации раскройте объект (например, Документы → СчетНаОплатуПокупателю), затем ветку «Макеты».
  2. Если макета там нет, ищите в Общие → Общие макеты или в обработке печати этого документа. Быстрее всего воспользоваться поиском по имени макета: имя видно в списке «Макеты печатных форм».
  3. Двойным щелчком откройте макет.
  4. Для новой ячейки с данными откройте её свойства и укажите «Заполнение» = «Параметр», а в поле «Параметр» — имя, например ВесБрутто.
  5. Если нужен текст с подстановкой, выберите «Заполнение» = «Шаблон» и напишите Вес: [ВесБрутто] кг.
  6. Проверьте, что новая ячейка попала в нужную именованную область. Имена областей видны слева и сверху от таблицы; новая область назначается через меню Таблица → Имена → Назначить имя.

Дальше параметр нужно заполнить в коде печати: модуле менеджера документа или общем модуле печати. Пример кода — в разделе о программной правке ниже.

Сохранение

Нажмите Конфигурация → Обновить конфигурацию базы данных (F7). Изменение макета не меняет структуру таблиц, поэтому обновление пройдёт быстро. Пользователям достаточно перезапустить 1С.

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

Расширение и внешняя печатная форма: правки, которые не мешают обновлениям

Опытный 1С-ник почти не трогает основную конфигурацию ради печати. Есть два чистых способа.

Расширение конфигурации

Расширения появились в платформе 8.3.6, и сейчас это основной инструмент доработок типовых конфигураций.

  1. В конфигураторе откройте Конфигурация → Расширения конфигурации и добавьте новое расширение.
  2. Заимствуйте документ, печатную форму которого меняете.
  3. В заимствованном объекте добавьте свой макет: проще всего скопировать типовой и поправить копию.
  4. В модуле менеджера расширения перехватите процедуру печати аннотацией &Вместо или &После и выводите свой макет.
  5. Сохраните расширение и обновите конфигурацию базы данных.

Готовое расширение сохраняется в файл .cfe. Подключить его к другой базе можно без конфигуратора: Администрирование → Печатные формы, отчеты и обработки → Расширения → Добавить из файла.

Внешняя печатная форма

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

  1. Программист готовит обработку с описанием в процедуре СведенияОВнешнейОбработке(): вид «Печатная форма» и список документов, к которым она относится.
  2. Откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  3. Нажмите «Добавить из файла», выберите .epf.
  4. На вкладке размещения проверьте, что указаны нужные документы. Запишите.
  5. В документе в меню «Печать» появится новая форма.

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

Как изменить печатную форму программно: заполнение макета кодом

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

Функция СформироватьАкт(Объект) Экспорт

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб = Истина;

    // В конфигурациях на БСП так учитывается пользовательский макет
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваровУслуг.ПФ_MXL_МойАкт");

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка.Параметры.Номер = Объект.Номер;
    ОбластьШапка.Параметры.Дата = Формат(Объект.Дата, "ДЛФ=D");
    ОбластьШапка.Параметры.Контрагент = Объект.Контрагент;
    ТабДок.Вывести(ОбластьШапка);

    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    НомерСтроки = 0;
    Для Каждого СтрокаТЧ Из Объект.Товары Цикл
        НомерСтроки = НомерСтроки + 1;
        ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
        ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
        ТабДок.Вывести(ОбластьСтрока);
    КонецЦикла;

    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьПодвал.Параметры.Сумма = Формат(Объект.Товары.Итог("Сумма"), "ЧДЦ=2");
    ТабДок.Вывести(ОбластьПодвал);

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

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

Что здесь важно:

  • 🔑 Параметры.Заполнить(СтрокаТЧ) переносит в область все поля строки, имена которых совпадают с именами параметров. Остальные параметры заполняйте явно.
  • 🧩 В конфигурации без БСП вместо УправлениеПечатью.МакетПечатнойФормы используйте ПолучитьМакет("ИмяМакета") в модуле объекта или менеджера.
  • 🔢 Числа выводите через Формат(): без него сумма напечатается с разделителями групп по настройкам системы, и в форме может не поместиться.

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

Перенос изменённого макета в другую базу

Способ переноса зависит от того, где лежит правка.

Где правкаКак перенести
Пользовательский макетОткройте макет в обеих базах, в исходной выделите всё (Ctrl+A), скопируйте и вставьте в макет второй базы, затем запишите
Внешняя печатная формаПодключите тот же файл .epf в другой базе через «Дополнительные отчеты и обработки»
РасширениеСохраните расширение в .cfe и загрузите в другую базу через раздел «Расширения»
КонфигураторКонфигурация → Сравнить, объединить с конфигурацией из файла, отметить только изменённый объект или макет

💡 MXL-макет из редактора можно сохранить в файл .mxl командой «Сохранить как». Такой файл открывается в любой базе и в бесплатной программе просмотра табличных документов, удобно для архива и для отправки программисту.

Перед копированием пользовательского макета сравните релизы двух баз. Если релизы разные, в типовом макете могли измениться параметры, и перенесённая копия напечатает пустые поля.

Как сделать печатную форму аккуратной и быстрой

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

Разрывы страниц

Шапка таблицы должна повторяться на каждом листе, а подвал с подписями не должен «отрываться» от итогов. Для этого в коде:

  • 📄 задайте строки шапки таблицы в свойстве ТабДок.ПовторятьПриПечатиСтроки;
  • 📐 перед выводом подвала проверьте, поместится ли он, методом ТабДок.ПроверитьВывод(МассивОбластей);
  • ✂️ если не помещается, вставьте разрыв через ТабДок.ВывестиГоризонтальныйРазделительСтраниц().

Масштаб и поля

  • 🖨 ТабДок.АвтоМасштаб = Истина вписывает форму в ширину листа.
  • 🧭 Широкие таблицы (реестры, ведомости) печатайте в альбомной ориентации: ОриентацияСтраницы.Ландшафт.
  • 📏 Поля страницы задаются свойствами ПолеСлева, ПолеСверху и аналогичными, в миллиметрах.

Скорость

Медленная печать почти всегда означает запросы в цикле. Если для каждой из 300 строк накладной код отдельно читает вес номенклатуры, получается 300 обращений к базе. Соберите все данные одним запросом до цикла, а в цикле только выводите.

Картинки в макете храните в разумном размере. Логотип на 5 МБ раздувает каждый PDF, который бухгалтер отправляет по почте.

Ошибки при изменении макета и что с ними делать

Диагностика: выберите симптом

Частые вопросы

Слетят ли мои правки макета после обновления 1С?
Пользовательский макет из списка «Макеты печатных форм» сохранится, но не получит изменений нового релиза. Правки в конфигураторе придётся сравнивать при обновлении, расширение и внешняя форма обычно переживают обновление без вмешательства.
Можно ли изменить печатную форму только для одной организации?
Пользовательский макет действует на всю базу. Для разных организаций нужна внешняя печатная форма или доработка кода, который выбирает макет по организации.
Почему кнопка «Изменить» в списке макетов недоступна?
У пользователя нет прав на изменение макетов. Обычно это доступно только администратору; попросите его выдать нужный профиль или внести правку самому.
Можно ли править макет в 1С:Фреш или другом облаке?
Пользовательские макеты и внешние печатные формы в облачных тарифах обычно доступны. Правка в конфигураторе там невозможна, а расширения подключаются по правилам конкретного сервиса.
Как узнать, какие макеты в базе уже изменены?
Откройте список «Макеты печатных форм»: у изменённых стоит отметка. Отфильтруйте по ней, чтобы перед обновлением проверить все свои правки разом.