Правка печатных форм 1С: от режима пользователя до кода
Содержание
Поменять макет печатной формы в типовой 1С 8.3 проще всего прямо в режиме Предприятия: в БП 3.0 и ЗУП 3.1 откройте Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм, найдите нужную форму и откройте её на редактирование. Правка сохранится в базе, конфигурация останется на поддержке, обновления пройдут без конфликтов.
Если нужно не сдвинуть подпись или поменять шрифт , а добавить новое поле с данными, одного редактора мало. Тогда выбирают между расширением конфигурации, внешней печатной формой и правкой в Конфигураторе. Первый способ — для бухгалтера, остальные — для программиста.
Что такое макет и когда его стоит менять
Макет — это заготовка документа внутри конфигурации. Чаще всего это табличный документ (формат .mxl): сетка ячеек, разбитая на именованные области вроде «Шапка», «Строка», «Подвал». При печати программа берёт области по очереди, подставляет данные и собирает готовый документ.
Кроме табличных, в конфигурации бывают и другие макеты:
- 📄 табличный документ — счета, акты, накладные, большинство печатных форм;
- 📝 офисный документ (DOCX или ODT) — договоры и письма в типовых на БСП;
- 🧩 схема компоновки данных — основа отчётов;
- 🔤 текстовый и двоичный — шаблоны текстов, картинки, служебные файлы.
Менять макет обычно приходится по таким причинам:
- 🖋 добавить логотип, печать, факсимиле подписи;
- 📐 переставить или растянуть колонки, чтобы документ влез на лист;
- ➕ вывести дополнительный реквизит (номер договора, склад, комментарий);
- ✏️ заменить формулировки в тексте договора или счёта;
- 🌐 подготовить форму под требования конкретного покупателя.
Какой способ изменения макета выбрать
Способов четыре. Они различаются тем, кто может их применить и что будет при обновлении конфигурации.
| Способ | Кто делает | Что можно поменять | Что с обновлениями |
|---|---|---|---|
| Редактор макетов в режиме Предприятия | Пользователь с правами администратора | Оформление, тексты, порядок существующих полей | Правка сохраняется, конфигурация не трогается |
Внешняя печатная форма (.epf) | Программист | Любую печатную форму целиком, с новыми данными | Не мешает обновлению |
| Расширение конфигурации | Программист | Макет и код его заполнения | Обычно переживает обновление, иногда требует проверки |
| Правка в Конфигураторе | Программист | Всё | Каждое обновление — сравнение и объединение |
Правка печатной формы в режиме 1С:Предприятие
Этот способ работает в конфигурациях на Библиотеке стандартных подсистем: БП 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Права нужны административные или специальная роль на изменение макетов.
| Конфигурация | Где список макетов |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм |
| Управление торговлей 11 | НСИ и администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм |
Пошагово
- Откройте список макетов по пути из таблицы.
- Найдите форму поиском по названию: «Счет на оплату», «Акт», «ТОРГ-12». Список длинный, искать глазами неудобно.
- Откройте макет двойным щелчком. Табличный макет откроется во встроенном редакторе, офисный — в Word или LibreOffice, установленном на компьютере.
- Внесите правки: шрифт, ширина колонок, границы, тексты, картинка.
- Сохраните и закройте редактор. Строка в списке пометится как изменённая.
- Распечатайте любой документ этого вида и проверьте результат.
Открыть макет можно и прямо из печати. В окне предпросмотра документа загляните в меню Ещё: там есть команда перехода к редактированию макета текущей формы. Удобно, когда не знаете точное название формы в списке.
Логотип и подпись руководителя в счёт на оплату в БП 3.0 проще добавить без редактора: они задаются в карточке организации, в разделе с логотипом и факсимиле. Редактор нужен, если требуется что-то сверх этого.
Как вернуть типовой макет
Если правка не удалась, в списке макетов выделите строку и выберите команду возврата к стандартному макету. Изменённая копия перестанет использоваться, документ будет печататься по заводской заготовке.
Не трогайте в редакторе текст в квадратных скобках и ячейки с параметрами. Это места, куда программа подставляет данные. Удалите параметр — и в документе пропадёт сумма или наименование товара.
Как поменять макет в Конфигураторе
Этот путь нужен для самописных конфигураций или когда правок много и они затрагивают код.
- Сделайте резервную копию:
Администрирование → Выгрузить информационную базув Конфигураторе. - Откройте дерево конфигурации (
Конфигурация → Открыть конфигурацию). - Найдите объект: например,
Документы → РеализацияТоваровУслуг, веткаМакеты. - Если конфигурация на поддержке и правка запрещена, включите возможность изменения:
Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения. - Откройте макет двойным щелчком и отредактируйте.
- Сохраните и обновите конфигурацию базы данных (
F7).
Снятие с поддержки — решение на годы. После этого каждое обновление типовой придётся ставить через сравнение и объединение, вручную проверяя изменённые объекты. Для типовых конфигураций лучше расширение или внешняя печатная форма.
Расширение конфигурации
Расширения появились в платформе 8.3.6. В расширение заимствуют объект (например, документ), добавляют в него свой макет и перехватывают процедуру печати аннотациями &Вместо, &После или &Перед. Типовая конфигурация остаётся нетронутой.
Порядок такой:
- В Конфигураторе:
Конфигурация → Расширения конфигурации, добавить новое расширение. - Заимствовать нужный документ и модуль, где формируется печать.
- Создать в расширении свой макет и написать перехват, который выводит его.
- Обновить конфигурацию базы данных, проверить печать.
Расширение подключается и к рабочей базе через Администрирование → Печатные формы, отчеты и обработки → Расширения в режиме Предприятия, файлом .cfe.
Внешняя печатная форма
Внешняя обработка .epf с макетом и процедурой печати подключается через Дополнительные отчеты и обработки в том же разделе администрирования. После регистрации в документе появляется ещё одна команда печати. Типовая форма остаётся на месте, пользователь выбирает, какую печатать.
Программное изменение макетов на встроенном языке
Табличный макет в коде получают методом ПолучитьМакет() у менеджера объекта, дальше берут области и заполняют параметры. Пример ниже печатает список строк самописного документа «Заявка» с табличной частью «Товары»:
Функция ПечатьЗаявки(ДокументСсылка) Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.Заявка.ПолучитьМакет("ПечатнаяФорма");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапка.Параметры.Номер = ДокументСсылка.Номер;
ОбластьШапка.Параметры.Дата = Формат(ДокументСсылка.Дата, "ДЛФ=D");
ТабДок.Вывести(ОбластьШапка);
Итого = 0;
Для Каждого СтрокаТЧ Из ДокументСсылка.Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
ТабДок.Вывести(ОбластьСтрока);
Итого = Итого + СтрокаТЧ.Сумма;
КонецЦикла;
ОбластьПодвал.Параметры.Итого = Итого;
ТабДок.Вывести(ОбластьПодвал);
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.АвтоМасштаб = Истина;
Возврат ТабДок;
КонецФункции
Что здесь важно:
- 🔹
Параметры.Заполнить(СтрокаТЧ)подставит значения во все параметры, чьи имена совпадают с колонками строки: «Номенклатура», «Количество», «Сумма». Лишние колонки он просто пропустит. - 🔹 Прямое присваивание
Параметры.Номер = …упадёт, если в области нет параметра с таким именем. - 🔹
АвтоМасштаб = Истинаужимает документ по ширине листа, это быстрый способ вылечить вылезающую колонку.
В типовых конфигурациях на БСП макет берите не напрямую, а через УправлениеПечатью.МакетПечатнойФормы("Документ.Заявка.ПечатнаяФорма"). Эта функция сначала смотрит, нет ли пользовательской копии макета, и только потом берёт заводской. Если обойти её через ПолучитьМакет(), правки пользователя из режима Предприятия перестанут работать.
Нюансы табличных макетов
Большинство проблем с печатью возникает не из-за кода, а из-за разметки самого макета.
Именованные области
Области бывают горизонтальные (группа строк) и вертикальные (группа колонок). Чтобы задать имя, выделите строки или колонки и выберите Таблица → Имена → Назначить имя. Имя должно совпадать с тем, что запрашивает код в ПолучитьОбласть(), буква в букву.
Пересечение горизонтальной и вертикальной области получают через вертикальную черту: Макет.ПолучитьОбласть("Строка|Колонка"). Так строят печать с переменным числом колонок, например по размерам или складам.
Заполнение ячейки
У каждой ячейки есть свойство «Заполнение» с тремя вариантами:
| Значение | Что в ячейке | Пример |
|---|---|---|
| Текст | Постоянный текст, печатается как есть | «Итого:» |
| Параметр | Имя параметра, вместо него подставляется значение | Сумма |
| Шаблон | Текст с параметрами в квадратных скобках | Счет № [Номер] от [Дата] |
Печать на листе
- 📏 Для шапки таблицы, которая должна повторяться на каждой странице, включите у области повтор при печати в свойствах табличного документа.
- 🧾 Чтобы строки не рвались пополам между листами, перед выводом проверяйте
ТабДок.ПроверитьВывод()и вставляйте разрыв страницыТабДок.ВывестиГоризонтальныйРазделительСтраниц(). - 🔠 Длинный текст в узкой ячейке обрезается. Включите перенос по словам в свойствах ячейки и уберите фиксированную высоту строки.
Перед правкой сохраните исходный макет файлом .mxl: в редакторе табличного документа есть сохранение копии. Если что-то пойдёт не так, его можно открыть и сравнить по ячейкам.
Изменение макетов в разных версиях 1С
Механика табличного макета с областями и параметрами одинакова в 8.2 и 8.3. Различается то, где пользователь может его править.
- 1С 8.3, интерфейс «Такси», типовые на БСП. Список «Макеты печатных форм», правки хранятся в базе отдельно от конфигурации, поддерживаются офисные макеты DOCX.
- 1С 8.3, самописные конфигурации без БСП. Пользовательского редактора макетов нет, правка только в Конфигураторе или через расширение.
- 1С 8.2, обычные формы. Расширений нет, они появились только в 8.3.6. Остаются внешние печатные формы и правка в Конфигураторе.
Для веб-клиента есть ограничение: офисные макеты редактируются через приложение на компьютере пользователя, поэтому в браузере без установленного расширения для работы с файлами правка DOCX может не открыться.
Ошибки при изменении макета
Инструменты, которые ускоряют работу с макетами
- 🛠 Конструктор печати в Конфигураторе. Он создаёт для документа макет с областями и процедуру печати по выбранным реквизитам. Хорошая заготовка для самописной формы, дальше её дорабатывают руками.
- 🔍 Сравнение и объединение конфигураций показывает различия макетов по ячейкам. Пригодится, когда типовой макет обновился, а у вас была своя версия.
- 📦 Внешние печатные формы удобно держать в одной базе и раздавать другим через файл
.epf. - 🧪 Тестовая копия базы: макет правят и проверяют на копии, а в рабочую переносят готовый результат.
Частые вопросы
Слетит ли изменённый макет после обновления конфигурации?
Можно ли перенести изменённый макет в другую базу?
.mxl из редактора, а в другой базе откройте тот же макет и вставьте содержимое. Для массового переноса удобнее внешняя печатная форма.