Редактор макетов 1С: области, параметры и вывод из кода
Содержание
Макет в 1С 8.3 редактируют в Конфигураторе: откройте объект в дереве конфигурации, раскройте ветку Макеты и дважды щёлкните нужный макет. Для типовой печатной формы без доработки конфигурации есть второй путь — режим 1С:Предприятие, Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.
Первый путь даёт полный контроль: области, параметры, код вывода. Второй подходит бухгалтеру, которому нужно сдвинуть подпись или добавить строку в шапку счёта, не снимая конфигурацию с поддержки. Ниже — оба способа и программная часть, без которой табличный макет остаётся пустой заготовкой.
Какие бывают макеты и где они лежат
Макет — это объект конфигурации-шаблон. Сам по себе он ничего не печатает: его читает код и по нему собирает итоговый документ.
Макеты бывают двух уровней:
- 📁 Общие макеты — ветка
Общие → Макеты. Ими пользуются сразу несколько объектов: например, общий макет подписи или логотип. - 📄 Макеты объекта — внутри конкретного документа, справочника, отчёта или обработки. Чаще всего это печатные формы.
При создании макета Конфигуратор спрашивает его тип. Основные:
| Тип макета | Для чего используют |
|---|---|
| Табличный документ | Печатные формы, бланки, отчёты «по старинке» (файл .mxl) |
| Схема компоновки данных | Отчёты на СКД: запрос, поля, группировки, оформление |
| Макет оформления компоновки данных | Единый внешний вид для нескольких отчётов на СКД |
| Двоичные данные | Картинки, файлы Word/Excel, шаблоны, любые вложения |
| Текстовый документ | Шаблоны текстовых файлов для выгрузок |
| HTML-документ | Справочные страницы и HTML-шаблоны |
| Графическая и географическая схема | Схемы процессов и карты |
В этой инструкции речь в основном про табличный документ: именно его правят, когда «надо поменять печатную форму». Про СКД — отдельный раздел ниже, там своя логика оформления.
В типовых конфигурациях на БСП имена макетов печатных форм начинаются с ПФ_MXL_. Так их проще найти в длинном списке: ищите по этому префиксу.
Редактор табличного макета в Конфигураторе
Когда макет открыт, в главном меню Конфигуратора появляется пункт Таблица. Через него работают с именами областей, оформлением, вставкой картинок и параметрами печати.
Главные инструменты редактора:
- 🔲 Сетка ячеек — как в Excel: выделение, объединение, ширина колонок и высота строк мышкой.
- 🏷️ Палитра свойств — открывается клавишами
Alt+Enterили из контекстного меню ячейки. Здесь шрифт, рамки, выравнивание, формат и тип заполнения. - 📐 Заголовки строк и колонок — по ним выделяют области и видят их имена слева и сверху.
- 🖨️ Предварительный просмотр и параметры страницы — для проверки, как макет ляжет на лист A4.
Для сложных макетов есть Конструктор печати. Он вызывается из меню Конструкторы при открытом модуле документа или обработки. Конструктор сам создаёт макет с областями «Заголовок», «Шапка», «Строка», «Подвал» и пишет процедуру печати. Результат потом дорабатывают вручную.
Типовая конфигурация на поддержке не даст изменить макет, пока объект не разрешено редактировать. Снимать объект с поддержки ради одной надписи — плохая идея: каждое обновление придётся объединять вручную. Для доработок типовых форм используйте расширение (см. раздел про версионирование).
Области и параметры: как макет превращается в документ
Табличный макет делят на именованные области. Код берёт область по имени, заполняет и выводит в результат столько раз, сколько нужно. Шапку — один раз, строку товаров — по числу строк.
Как назначить имя области
- Выделите строки (кликом по заголовкам строк слева) или колонки.
- Откройте меню
Таблица → Имена → Назначить имя. - Введите имя латиницей или кириллицей без пробелов:
Шапка,Строка,Итого. - Включите отображение имён через меню
Таблица, раздел вида, — имена появятся на полях макета.
Области бывают трёх видов:
| Вид области | Как выделять | Пример применения |
|---|---|---|
| Горизонтальная | Целые строки | Шапка, строка таблицы, подвал |
| Вертикальная | Целые колонки | Колонки по месяцам в отчёте |
| Прямоугольная | Диапазон ячеек | Отдельный блок, например подпись |
Пересечение горизонтальной и вертикальной области получают в коде через вертикальную черту: "Строка|Месяц".
Три режима заполнения ячейки
В палитре свойств у ячейки есть свойство Заполнение:
- 📝 Текст — неизменная надпись: «Поставщик:», «Итого:».
- 🔣 Параметр — в ячейку подставится значение. Имя параметра задают в свойстве
Параметр, напримерНомерДокумента. - 🧩 Шаблон — текст с параметрами в квадратных скобках:
Счёт № [Номер] от [Дата]. Удобно, когда значение встроено во фразу.
Ещё одно полезное свойство — Параметр расшифровки. Если его заполнить, то по двойному щелчку на ячейке в готовом документе откроется ссылка: договор, контрагент, номенклатура.
Формат даты и числа задают прямо в свойстве ячейки Формат: например ДФ=dd.MM.yyyy или ЧДЦ=2. Тогда в коде не нужно форматировать значение вручную.
Оформление: стили, цвета и «условное» выделение
Отдельного механизма условного оформления у табличного макета нет. Есть два рабочих подхода.
1. Оформление в макете. Шрифт, рамки, цвет фона задают в палитре свойств ячейки. Если в конфигурации есть элементы стиля (Общие → Элементы стиля), выбирайте цвет и шрифт из них, а не «жёстким» значением. Тогда смена стиля поправит сразу все формы.
2. Оформление из кода по условию. Например, подсветить строку с просроченной оплатой:
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Заполнить(Выборка);
Если Выборка.ДнейПросрочки > 0 Тогда
ОбластьСтрока.Область().ЦветФона = WebЦвета.СветлоРозовый;
КонецЕсли;
ТабДок.Вывести(ОбластьСтрока);
Цвет меняется только у этой копии области, сам макет остаётся прежним.
Условное оформление в отчётах на СКД
В схеме компоновки данных условное оформление есть «из коробки». В макете СКД откройте вкладку Настройки, внизу — закладку Условное оформление. Там задают:
- поля, к которым применяется оформление;
- условие (отбор): например, «Сумма меньше 0»;
- само оформление: цвет текста, фона, формат.
Пользователь отчёта может настроить то же самое в режиме 1С:Предприятие через настройки отчёта, без Конфигуратора.
Заполнение макета из модуля: рабочий пример
Ниже — полная процедура печати счёта по табличному макету. Её размещают в модуле менеджера документа или в обработке.
Функция СформироватьСчет(СсылкаНаДокумент) Экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок.КлючПараметровПечати = "ПечатьСчета";
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.АвтоМасштаб = Истина;
Макет = Документы.СчетНаОплатуПокупателю.ПолучитьМакет("ПФ_MXL_Счет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьШапка.Параметры.Заполнить(СсылкаНаДокумент);
ТабДок.Вывести(ОбластьШапка);
НомерСтроки = 0;
СуммаВсего = 0;
Для Каждого СтрокаТЧ Из СсылкаНаДокумент.Товары Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
ТабДок.Вывести(ОбластьСтрока);
СуммаВсего = СуммаВсего + СтрокаТЧ.Сумма;
КонецЦикла;
ОбластьИтого.Параметры.СуммаВсего = СуммаВсего;
ТабДок.Вывести(ОбластьИтого);
Возврат ТабДок;
КонецФункции
Что здесь важно:
ПолучитьМакетвызывают у менеджера объекта или у самого объекта. Для общего макета —ПолучитьОбщийМакет("Имя").Параметры.Заполнить()переносит значения из ссылки или строки таблицы во все параметры с совпадающими именами. Остальные параметры заполняют вручную.- Область строки получают один раз до цикла. В цикле её только перезаполняют и выводят — так быстрее.
КлючПараметровПечатизапоминает настройки страницы, которые пользователь поменял в предпросмотре.
Имя документа и табличной части в примере условное: подставьте свои из дерева конфигурации.
Вертикальные области и разрывы страниц
Для колонок по периодам используют Присоединить вместо Вывести: метод добавляет область справа, а не снизу.
Чтобы строки не рвались между листами, перед выводом проверяют, поместится ли блок:
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьСтрока);
МассивОбластей.Добавить(ОбластьИтого);
Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Правка макета пользователем без Конфигуратора
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) макет печатной формы можно изменить прямо в рабочей базе:
- Откройте
Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. - Найдите форму поиском по названию, например «Счет на оплату».
- Откройте её на редактирование. Откроется копия макета в редакторе табличного документа.
- Поменяйте текст, шрифт, ширину колонок, добавьте ячейку с текстом.
- Сохраните. В списке у формы появится отметка, что используется изменённый макет.
Чтобы вернуть типовой вариант, в том же списке выберите использование стандартного макета.
Так меняют только оформление и надписи. Новый параметр, которого нет в коде печати, не заполнится: процедура печати о нём не знает. Для новых данных нужна доработка в Конфигураторе или расширении.
После обновления конфигурации изменённый пользовательский макет не обновляется сам. Если разработчики 1С поменяли форму по закону, вы продолжите печатать старую. Проверяйте список изменённых макетов после каждого крупного обновления.
Выгрузка, загрузка и версии макетов
Сохранить макет в файл и загрузить обратно
Табличный макет можно сохранить отдельным файлом .mxl: откройте его и выберите Файл → Сохранить копию. Файл открывается в любой 1С через Файл → Открыть, его удобно передать коллеге или приложить к задаче.
Чтобы загрузить готовый макет из файла, откройте .mxl, выделите всё (Ctrl+A), скопируйте и вставьте в открытый макет конфигурации. Имена областей при копировании сохраняются, но проверьте их после вставки.
Сравнить два варианта формы помогает Файл → Сравнить файлы: платформа подсветит различающиеся ячейки табличных документов.
Доработка через расширение
Расширение конфигурации (доступно с платформы 8.3.6) — правильный способ менять типовые печатные формы:
- 🧱 заимствуйте в расширение нужный документ;
- ➕ добавьте в него свой макет и свою команду печати, либо заимствуйте типовой макет и измените его;
- 🔄 при обновлении основной конфигурации расширение остаётся на месте, его не нужно объединять вручную.
Хранилище и Git
В командной разработке версии макетов ведут двумя способами:
| Способ | Как работает с макетами | Кому подходит |
|---|---|---|
| Хранилище конфигурации | Захват объекта, правка, помещение с комментарием; есть история версий | Команды на Конфигураторе |
| Выгрузка в файлы + Git | Конфигурация → Выгрузить конфигурацию в файлы, каждый макет — отдельный файл в каталоге объекта | Команды на EDT и с код-ревью |
Учтите: табличный макет в файловой выгрузке — это XML. В Git видно, что он поменялся, но смотреть разницу глазами неудобно. Для ревью проще открыть оба варианта и сравнить средствами платформы.
Ошибки при работе с макетами и как их отлаживать
Большинство проблем ловится отладчиком. Поставьте точку останова (F9) на строке ТабДок.Вывести(...) и посмотрите в табло, что лежит в Область.Параметры.
Ещё три приёма, которые экономят время на отладке:
- 🔍 Выведите в результат весь макет целиком (
ТабДок.Вывести(Макет)) — сразу видно, какие области и параметры в нём есть. - 🧪 Тестируйте форму на документе с одной строкой и с сотней строк: разрывы страниц ломаются только на длинных документах.
- 📋 Если меняли имя параметра, найдите старое имя поиском по модулям (
Ctrl+Shift+F): обычно его присваивают где-то вручную.
Частые вопросы
Можно ли вставить в макет картинку или логотип?
Таблица, раздел вставки, и выберите картинку. Если логотип должен меняться по организации, вставьте рисунок и заполняйте его из кода через свойство Картинка у рисунка области.Чем макет отличается от печатной формы?
Как сделать штрихкод в макете?
Почему макет в Конфигураторе нельзя изменить?
Можно ли редактировать макет в Excel?
.xlsx, но обратно в макет с областями и параметрами он не превратится. Правьте в редакторе 1С: имена областей и параметры живут только в формате .mxl.