Свой вид счёта, акта или накладной: где правится макет печати и как не потерять правки при обновлении
Содержание
Чтобы изменить печатную форму
в 1С 8.3 без программиста, откройте Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм, найдите нужный макет, нажмите «Изменить», поправьте его и сохраните. Новый вид сразу появится при печати во всех документах этого типа, а стандартный макет можно вернуть одной командой.
Типичная ситуация: директор просит добавить в счёт на оплату строку «Оплата по счёту означает согласие с условиями поставки», а в акт — другую ширину колонок. Как в 1С изменить печатную форму, зависит от глубины правки. Текст, шрифт, рамки и логотип меняются мышкой. Новое поле с данными из базы или другой порядок строк — это уже конфигуратор, расширение или внешняя обработка.
Где хранятся макеты и какой способ правки выбрать
Макет — это заготовка печатной формы: табличный документ (MXL) или файл Word/OpenOffice с ячейками-параметрами. При печати программа берёт макет, подставляет в параметры номер, дату, контрагента, строки табличной части и показывает результат.
Хранится макет в одном из трёх мест:
- 📁 В конфигурации — внутри объекта (
Документы → РеализацияТоваровУслуг → Макеты) или в веткеОбщие → Общие макеты. Это «заводской» вариант. - 🗄 В информационной базе — пользовательская копия, созданная через список «Макеты печатных форм». Она перекрывает заводскую, а конфигурация при этом не меняется.
- 📦 Во внешнем файле — внешняя печатная форма (
.epf) или расширение (.cfe) со своим макетом и своим кодом.
| Способ | Что можно поменять | Нужен программист | Переживает обновление |
|---|---|---|---|
| Пользовательский макет в режиме Предприятие | Текст, шрифты, рамки, ширину колонок, удалить лишнее | Нет | Да, но не получает исправления из нового релиза |
| Правка в конфигураторе | Всё, включая новые параметры и код | Да | Нет, правки сравниваются при каждом обновлении |
| Расширение конфигурации | Всё, основная конфигурация не трогается | Да | Да, если не изменились перехваченные методы |
| Внешняя печатная форма | Отдельная новая форма рядом с типовой | Да | Да, почти всегда |
Как в 1С изменить печатную форму в пользовательском режиме
Этот способ работает в типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Нужны права администратора или роль, разрешающая менять макеты.
Шаг 1. Найдите макет в списке
- Откройте
Администрирование → Печатные формы, отчеты и обработки. - Нажмите ссылку «Макеты печатных форм».
- В строке поиска наберите часть названия: «Счет на оплату», «Акт», «ТОРГ-12», «УПД».
- Выделите строку. Если в документе несколько вариантов формы (например, счёт с печатью и без), у каждого свой макет.
Есть путь короче: откройте документ, нажмите «Печать», выберите форму и в окне предварительного просмотра найдите в меню «Ещё» команду изменения макета. Откроется тот же макет, что и в списке.
Шаг 2. Отредактируйте макет
Нажмите «Изменить». MXL-макет откроется в редакторе табличного документа, офисный — в Word или LibreOffice.
В MXL-редакторе можно:
- ✏️ дописать или исправить постоянный текст в ячейке;
- 🔤 поменять шрифт, размер, выравнивание через контекстное меню ячейки;
- 📏 растянуть колонки и строки мышкой за границу заголовка;
- 🧱 добавить или убрать рамки;
- 🗑 очистить ячейку с ненужным текстом.
Ячейки с текстом в квадратных скобках вроде [Номер] или [Контрагент] — это параметры. Их не переименовывайте и не удаляйте, если не уверены, что поле больше не нужно. Код ищет параметр по имени, и при несовпадении печать упадёт с ошибкой.
Не удаляйте целые строки и колонки внутри именованных областей («Шапка», «Строка», «Подвал»). Область задаётся диапазоном, и после удаления строки код может вывести обрезанную шапку или чужой кусок таблицы.
Шаг 3. Сохраните и проверьте
- Нажмите «Записать и закрыть».
- В списке у макета появится отметка, что он изменён.
- Откройте любой документ и распечатайте форму: правки видны сразу, перезапуск не нужен.
Чтобы вернуть заводской вариант, выделите макет в списке и выберите команду «Использовать стандартный макет». Ваша копия останется в базе, к ней можно вернуться командой «Использовать измененный макет».
Логотип, печать и подпись — без правки макета
Логотип, факсимиле печати и подпись руководителя в счёте и акте добавляют не через макет. В БП 3.0 это раздел «Логотип и печать» в карточке организации (Справочники → Организации). Загрузите картинки, и они появятся в формах, которые поддерживают факсимиле, обычно в варианте «с печатью и подписью».
💡 Разовую правку перед печатью можно сделать прямо в окне предварительного просмотра: табличный документ там редактируется. Изменения не сохранятся в макете и пропадут при следующей печати.
Изменение печатной формы через конфигуратор
Конфигуратор нужен, когда в форму надо добавить данные, которых в ней нет, или поменять логику вывода. Пример: показать в накладной вес брутто или вывести строки без услуг.
Подготовка
- Сделайте выгрузку базы:
Администрирование → Выгрузить информационную базув конфигураторе. Без копии в конфигуратор не заходите. - Если конфигурация на поддержке, включите возможность изменения:
Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения. - Для нужного объекта поставьте правило «Объект поставщика редактируется с сохранением поддержки».
Правка макета
- В дереве конфигурации раскройте объект (например,
Документы → СчетНаОплатуПокупателю), затем ветку «Макеты». - Если макета там нет, ищите в
Общие → Общие макетыили в обработке печати этого документа. Быстрее всего воспользоваться поиском по имени макета: имя видно в списке «Макеты печатных форм». - Двойным щелчком откройте макет.
- Для новой ячейки с данными откройте её свойства и укажите «Заполнение» = «Параметр», а в поле «Параметр» — имя, например
ВесБрутто. - Если нужен текст с подстановкой, выберите «Заполнение» = «Шаблон» и напишите
Вес: [ВесБрутто] кг. - Проверьте, что новая ячейка попала в нужную именованную область. Имена областей видны слева и сверху от таблицы; новая область назначается через меню
Таблица → Имена → Назначить имя.
Дальше параметр нужно заполнить в коде печати: модуле менеджера документа или общем модуле печати. Пример кода — в разделе о программной правке ниже.
Сохранение
Нажмите Конфигурация → Обновить конфигурацию базы данных (F7). Изменение макета не меняет структуру таблиц, поэтому обновление пройдёт быстро. Пользователям достаточно перезапустить 1С.
Правки в конфигураторе остаются в основной конфигурации. При каждом обновлении релиза их придётся сравнивать и объединять вручную. Если базу обновляет автоматическое обновление или бухгалтер без программиста, выбирайте расширение.
Расширение и внешняя печатная форма: правки, которые не мешают обновлениям
Опытный 1С-ник почти не трогает основную конфигурацию ради печати. Есть два чистых способа.
Расширение конфигурации
Расширения появились в платформе 8.3.6, и сейчас это основной инструмент доработок типовых конфигураций.
- В конфигураторе откройте
Конфигурация → Расширения конфигурациии добавьте новое расширение. - Заимствуйте документ, печатную форму которого меняете.
- В заимствованном объекте добавьте свой макет: проще всего скопировать типовой и поправить копию.
- В модуле менеджера расширения перехватите процедуру печати аннотацией
&Вместоили&Послеи выводите свой макет. - Сохраните расширение и обновите конфигурацию базы данных.
Готовое расширение сохраняется в файл .cfe. Подключить его к другой базе можно без конфигуратора: Администрирование → Печатные формы, отчеты и обработки → Расширения → Добавить из файла.
Внешняя печатная форма
Это файл .epf с макетом и кодом, который добавляет в документ новую команду печати рядом с типовыми.
- Программист готовит обработку с описанием в процедуре
СведенияОВнешнейОбработке(): вид «Печатная форма» и список документов, к которым она относится. - Откройте
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. - Нажмите «Добавить из файла», выберите
.epf. - На вкладке размещения проверьте, что указаны нужные документы. Запишите.
- В документе в меню «Печать» появится новая форма.
Подключайте внешние обработки только из надёжного источника. Код в .epf выполняется с правами пользователя и может изменить или удалить данные.
Как изменить печатную форму программно: заполнение макета кодом
Любая печатная форма собирается одной схемой: получить макет, взять из него область, заполнить параметры, вывести область в табличный документ. Вот рабочий пример для своей формы с шапкой и таблицей товаров.
Функция СформироватьАкт(Объект) Экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.АвтоМасштаб = Истина;
// В конфигурациях на БСП так учитывается пользовательский макет
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваровУслуг.ПФ_MXL_МойАкт");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Номер = Объект.Номер;
ОбластьШапка.Параметры.Дата = Формат(Объект.Дата, "ДЛФ=D");
ОбластьШапка.Параметры.Контрагент = Объект.Контрагент;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
НомерСтроки = 0;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Сумма = Формат(Объект.Товары.Итог("Сумма"), "ЧДЦ=2");
ТабДок.Вывести(ОбластьПодвал);
Возврат ТабДок;
КонецФункции
Что здесь важно:
- 🔑
Параметры.Заполнить(СтрокаТЧ)переносит в область все поля строки, имена которых совпадают с именами параметров. Остальные параметры заполняйте явно. - 🧩 В конфигурации без БСП вместо
УправлениеПечатью.МакетПечатнойФормыиспользуйтеПолучитьМакет("ИмяМакета")в модуле объекта или менеджера. - 🔢 Числа выводите через
Формат(): без него сумма напечатается с разделителями групп по настройкам системы, и в форме может не поместиться.
Для типовой формы код печати уже написан. Чтобы добавить в неё поле, найдите процедуру, где выводится нужная область, и после строки с её заполнением допишите свой параметр. В расширении это делается через перехват метода, а не правкой типового кода.
Перенос изменённого макета в другую базу
Способ переноса зависит от того, где лежит правка.
| Где правка | Как перенести |
|---|---|
| Пользовательский макет | Откройте макет в обеих базах, в исходной выделите всё (Ctrl+A), скопируйте и вставьте в макет второй базы, затем запишите |
| Внешняя печатная форма | Подключите тот же файл .epf в другой базе через «Дополнительные отчеты и обработки» |
| Расширение | Сохраните расширение в .cfe и загрузите в другую базу через раздел «Расширения» |
| Конфигуратор | Конфигурация → Сравнить, объединить с конфигурацией из файла, отметить только изменённый объект или макет |
💡 MXL-макет из редактора можно сохранить в файл .mxl командой «Сохранить как». Такой файл открывается в любой базе и в бесплатной программе просмотра табличных документов, удобно для архива и для отправки программисту.
Перед копированием пользовательского макета сравните релизы двух баз. Если релизы разные, в типовом макете могли измениться параметры, и перенесённая копия напечатает пустые поля.
Как сделать печатную форму аккуратной и быстрой
Красивая форма на экране ещё не значит красивая на бумаге. Несколько приёмов, которые решают большинство жалоб пользователей.
Разрывы страниц
Шапка таблицы должна повторяться на каждом листе, а подвал с подписями не должен «отрываться» от итогов. Для этого в коде:
- 📄 задайте строки шапки таблицы в свойстве
ТабДок.ПовторятьПриПечатиСтроки; - 📐 перед выводом подвала проверьте, поместится ли он, методом
ТабДок.ПроверитьВывод(МассивОбластей); - ✂️ если не помещается, вставьте разрыв через
ТабДок.ВывестиГоризонтальныйРазделительСтраниц().
Масштаб и поля
- 🖨
ТабДок.АвтоМасштаб = Истинавписывает форму в ширину листа. - 🧭 Широкие таблицы (реестры, ведомости) печатайте в альбомной ориентации:
ОриентацияСтраницы.Ландшафт. - 📏 Поля страницы задаются свойствами
ПолеСлева,ПолеСверхуи аналогичными, в миллиметрах.
Скорость
Медленная печать почти всегда означает запросы в цикле. Если для каждой из 300 строк накладной код отдельно читает вес номенклатуры, получается 300 обращений к базе. Соберите все данные одним запросом до цикла, а в цикле только выводите.
Картинки в макете храните в разумном размере. Логотип на 5 МБ раздувает каждый PDF, который бухгалтер отправляет по почте.