Перейти к содержимому

Макет

Страница “Макет” одна из ключевых, с точки зрения настройки печатной формы. Внешний вид закладки напрямую зависит от настройки “Макет в формате Open Office Documents (*.docx)” заданной на странице “Описание”.

Вид закладки “Макет” для табличного документа

Вид закладки “Макет” для офисного документа

Форма закладки “Макет” разделена на 2 части:

  • левая сторона: макет печатной формы (табличный документ или просмотр офисного документа);
  • правая сторона: две табличные части:
    • области макета
    • параметры текущей области макета

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

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

После того, как области были заполнены автоматически, можно добавить области самостоятельно и выбрать одну из ранее найденных программой областей. Добавленные области могут быть удалены. При этом программа не даст удалить единственную (оставшуюся) область.

Одна область может стоять в таблице несколько раз. Вторая строка с тем же именем означает, что область выводится второй раз — так, например, повторяют разделитель или выводят подпись дважды, с разными условиями вывода. Из этого следует и обратное: пересборка состава кнопкой «Заполнить» лишние строки не удаляет — отличить намеренный повтор от строки, оставшейся после правки макета, программа не может. Если после удаления строк макета в таблице осталась лишняя область, удалите её строку вручную.

Рассмотрим колонки таблицы “Области макета”

Первые две колонки вместо заголовка отмечены пиктограммой.

КолонкаОписание
Индикатор условий вывода области. Заполнена — у области задано хотя бы одно правило, пустая — правил нет. Двойной клик по ячейке открывает редактор правил вывода (см. ниже)
Настройка вывода области. Существует только для табличного документа.
Имя областиИмя области, как оно задано в макете
Способ выводаСпособ вывода области макета
НаборИмя набора, с которым связана область макета. Доступна только для Способ вывода = По строкам коллекции

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

Варианты настройки вывода области

Рассмотрим варианты настройки:

ВариантОписаниеВ XML
Без настройкиОбласть будет выведена в табличный документ без какой-либо настройкиатрибут не задан
Новый разделНачиная с этой области, все предыдущие настройки обнуляются и можно задать новые области для повтора в шапке, подвале и контроля переноса на след. страницуNewSection
Повторять в шапкеОбласть будет повторяться в начале каждой страницы печатной формыRepeatInHeader
Повторять в подвалеОбласть будет повторяться в конце каждой страницы печатной формыRepeatInFooter
Проверить выводОбласть становится контрольной: перед выводом очередной строки программа проверяет, поместятся ли на остаток страницы все контрольные области раздела разом. Не помещаются — переносятся на следующую страницу вместе с последней выведенной областью. Подробнее — нижеCheckPrint

Для того, чтобы корректно настроить вывод областей, следует определиться какие области необходимо повторять в шапке или в подвале на каждой странице. А также требуется ли переносить какие-то области на новую страницу, если данная область не поместится с учетом ниже лежащих областей. Рассмотрим на примере:

Области макета “Счет на оплату”

Среди представленных областей, можно выделить следующие:

  • Шапка - это шапка табличной части счета на оплату. Ее необходимо выводить в начале табличной части и на каждой новой странице (если строки были перенесены на новую страницу);
  • Строка - это строки табличной части. Они будут выводиться согласно какому-то набору из макета. Заранее мы не знаем сколько будет строк, поэтому предполагаем что они могут не поместиться в какой-то определенный диапазон;
  • Подвал - это итоги табличной части. Данная область должна быть выведена после завершения вывода всех строк. При этом, если подвал не помещается на последнюю страницу, необходимо перенести последнюю строку на новую страницу и только после этого выводить подвал. Также мы помним, что при переносе строк на новую страницу, будет снова напечатана область “Шапка”;
  • Подписи - эта область с подписями и печатью организации. Она также должна быть проверена вместе с областью “Подвал”, помещается ли она с последней строкой на странице.

Таким образом, чтобы печатная форма выводилась корректно, нам необходимо настроить вывод областей следующим образом:

Настройки вывода областей макета “Счет на оплату”

  • Шапка - Повторять в шапке
  • Строка - без настройки
  • Подвал - Проверить вывод
  • Подписи - Проверить вывод

Согласно требованию область “Подписи” должна переноситься на новую страницу, если не вмещается целиком на текущую. При этом контроль на “вместимость” необходимо выполнять с учетом области “Подвал”, перед выводом последней строкой.

Для этого настройку “Проверить вывод” необходимо установить для области: Подвал, а также Подписи (на скриншоте дополнительно указана область Задолженность), чтобы они проверялись обе.

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

Границей набора служит раздел: настройка «Новый раздел» начинает отсчёт заново, и области, помеченные до неё, в проверке следующего раздела не участвуют.

Таким образом, при выводе последней строки набора “Товары” программа проверит вместимость данной области вместе с подвалом, подписью (и задолженностью). И если целиком на странице данные области не вместить, перенесет все на новую страницу. А поскольку для области “Шапка” установлено “Повторять в шапке” то в результате последняя страница печатной форма будет иметь вид:

Последняя страница печатной формы: подвал и подписи перенесены целиком

Несколько табличных частей различной структуры

Заголовок раздела «Несколько табличных частей различной структуры»

Если в одной печатной форме несколько табличных частей с различной структурой колонок, а также разными настройками вывода шапки (подвала и т.п.), необходимо для каждой области шапки, подвала (и т.п.) выставить соответствующие настройки. При этом, в таком случае, для области перед шапкой рекомендуется установить настройку Новый раздел. Таким образом, печатная форма будет разделена на части, для каждой из которых будут действовать свои настройки повторения шапки, подвала или контроля переноса.

Раньше для условного вывода области приходилось писать обработчик события ПередВыводомОбласти и устанавливать Отказ = Истина. Начиная с версии 2026.2.11 для типовых сценариев («вывести область только если поле равно значению», «пропустить область, если параметр не заполнен» и т.п.) программирование больше не требуется — условия задаются декларативно в отдельной форме редактора.

В таблице областей макета появилась первая колонка — вместо заголовка у неё пиктограмма , подсказка «Есть правила вывода области»:

  • пиктограмма пустая — у области нет правил, она выводится всегда (как раньше);
  • пиктограмма заполнена — у области задано хотя бы одно правило (даже отключённое).

Колонка-пиктограмма условий вывода в таблице областей макета

Двойной клик по ячейке колонки открывает форму «Правила вывода областей».

Форма редактора правил вывода области

В форме — плоский список правил с колонками:

КолонкаОписание
ИспользованиеФлажок. Если снят — правило не учитывается при выводе. Отключённое правило остаётся в списке и выделяется серым
Левое значениеПоле набора данных области. Выбирается из дерева доступных полей (как при настройке параметров области)
Вид сравненияСпособ сравнения левого и правого значений (см. таблицу ниже). Список значений автоматически фильтруется по типу левого поля
ЗначениеПравое значение. Тип поля ввода зависит от типа левого значения (строка / число / дата / ссылка / список значений). Для видов «Заполнено» и «Не заполнено» значение не задаётся

Команды панели:

  • Записать и закрыть — сохранить изменения и вернуться в макет
  • Добавить — добавить новое правило (по умолчанию: «Использование» = Истина, «Вид сравнения» = «Равно»)
  • ↑ / ↓ — переместить правило вверх/вниз по списку
  • Удалить (через контекстное меню) — удалить правило

Доступные виды сравнения совпадают с типовым 1С-перечислением ВидСравненияКомпоновкиДанных:

Выпадающий список видов сравнения, фильтрованный по типу левого значения

Вид сравненияПрименимостьОписание
Равно / Не равнолюбой типТочное совпадение значений
Меньше / Меньше или равно / Больше / Больше или равноЧисло, Дата, Строка, БулевоЧисловое или лексикографическое сравнение
В списке / Не в спискелюбой типПравое значение — список значений
В иерархии / Не в иерархиииерархические ссылкиЛевое значение принадлежит ветке иерархии правого
В списке по иерархии / Не в списке по иерархиииерархические ссылкиЛевое значение принадлежит хотя бы одной из веток списка
Содержит / Не содержитСтрокаПодстрока в строке
Заполнено / Не заполненолюбой типНе требует правого значения
Подобно / Не подобноСтрокаСравнение по шаблону (%, _)
Начинается с / Не начинается сСтрокаПрефиксное сравнение

При выводе области исполнитель до вызова события ПередВыводомОбласти:

  1. Если у области нет правил — вывод выполняется как обычно.
  2. Если правила есть — вычисляются все правила со включённым флажком «Использование» (отключённые игнорируются).
  3. Результаты включённых правил объединяются логическим И: область выводится, только если выполняются все включённые правила. Если включённых правил нет — итог считается истинным.
  4. Если итог — Ложь, область пропускается: события ПередВыводомОбласти и ПослеВыводаОбласти для этой области не вызываются, соседние области и повторения выводятся в обычном порядке.

Требуется вывести подвал страницы только начиная со второй страницы счёта. Без программирования это решается одним правилом:

ИспользованиеЛевое значениеВид сравненияЗначение
✓НаборыДанных.СистемныеПоля.НомерСтраницыБольше или равно2

Системный набор НаборыДанных.СистемныеПоля доступен в дереве полей и содержит готовые поля НомерСтраницы, ТекущаяДата, ТекущийПользователь.

Правила вывода закрывают типовые сценарии, но не все. По состоянию на версию 2026.3:

  • Левое значение — только поле набора данных. Поля свойств, контактной информации, нумератора, QR-кода, суммы прописью и алгоритма в правилах вывода не поддерживаются. Для таких сценариев пока используется обработчик ПередВыводомОбласти.
  • Правила объединяются только логическим И. Группы И/ИЛИ и произвольное выражение на встроенном языке запланированы как развитие.
  • Правила задаются на уровне области целиком. Условный вывод отдельных параметров, столбцов или страниц — также в планах.

Рассмотрим существующие способы вывода области в печатную форму:

Способ выводаОписаниеВид макетаВ XML
Без повторенийВывести область в печатную форму один развсеSingle
По строкам коллекцииВывести область в печатную форму для каждой строки коллекции, указанной в колонке НаборвсеCollection
Перенос строкиВывести область с переносом текста на новую строкувсеWrap
Верхний колонтитулВывести область как верхний колонтитулdocxHeader
Нижний колонтитулВывести область как нижний колонтитулdocxFooter
Не выводить на печать [без вывода]Не выводить область на печатьвсеSkip
Область колонки [без вывода]Область колонок (не используется)mxlColumn
Контрольная строка [служ: перенос строки]Служебная область. Только при наличии областей где Способом вывода = Перенос строкивсеControlRow
Строка переноса [служ: перенос строки]Служебная область. Только при наличии областей где Способом вывода = Перенос строкивсеWrapRow
Пустая область [служ: перенос строки]Служебная область. Только при наличии областей где Способом вывода = Перенос строкивсеEmpty

Колонка «В XML» — значение атрибута PrintMethod в схеме макета; полный разбор схемы в главе Схема XML.

Для каждого из трех базовых вариантов вывода области доступны разные наборы данных:

Способ выводаДанные наборов
Без повторенийНаборы с видом “Первая строка”, “Последняя строка”, “Соединение строк” полностью.
Наборы с видом “Многострочная коллекция” только итоговые колонки или количество строк
По строкам коллекцииНаборы с видом “Первая строка”, “Последняя строка”, “Соединение строк” полностью
Данные строки из коллекции, указанной в колонке “Набор” области
Наборы с видом “Многострочная коллекция” только итоговые колонки или количество строк
Перенос строкиНаборы с видом “Первая строка”, “Последняя строка”, “Соединение строк” полностью.
Наборы с видом “Многострочная коллекция” только итоговые колонки или количество строк
Верхний колонтитулНаборы с видом “Первая строка”, “Последняя строка”, “Соединение строк” полностью.
Наборы с видом “Многострочная коллекция” только итоговые колонки или количество строк
Нижний колонтитулНаборы с видом “Первая строка”, “Последняя строка”, “Соединение строк” полностью.
Наборы с видом “Многострочная коллекция” только итоговые колонки или количество строк

Способ вывода “Без повторений” и “По строкам коллекции” не требуют дополнительных настроек. Достаточно создать область, указать способ вывода и назначить набор (для вывода по строкам коллекции). Данные области будут выведены (как указывалось ранее) согласно последовательности в таблице областей.

Области со способами “Верхний колонтитул” и “Нижний колонтитул” могут располагаться в любой последовательности. В любом случае они будут выведены в соответствующих областях макета. При этом, если у макета отсутствуют колонтитулы или для области колонтитула изменен Способ вывода, данные области не будут выведены в печатную форму.

Оба способа относятся только к офисному документу (DOCX): в нём колонтитул — это область макета с собственным оформлением. В табличном документе колонтитул устроен иначе — это строка на полях листа, и задаётся она алгоритмом, см. Колонтитулы.

Способ вывода “Перенос строки” достаточно специфический и рассмотрен в отдельной главе.

Под табличной частью областей располагается таблица с параметрами области макета. Если в процессе редактирования макета или обновления областей параметры по каким-либо причинам не обновились, рекомендуется нажать кнопку “Обновить” для повторного чтения параметров.

Рассмотрим колонки таблицы “Параметры области”

КолонкаОписание
Параметр используется в расшифровке
ИмяИмя параметра, как оно задано в макете
ТипТип значения задаваемого в параметре
ЗначениеПредставление заданного значения
Настройка форматирования значения

Доступны следующие типы значения параметра:

ТипОписание
Значение набораСвязь параметра напрямую со значением из набора. Доступные значения наборов зависят от способа вывода области.
Конструктор строкиИспользование конструктора представления для формирования значения (см. рисунок ниже)
Произвольный алгоритмВычисление значения для подстановки произвольным кодом
Данные QR-кодаКонструктор значения для формирования QR-кода (подробнее)
Сумма прописьюКонструктор данных для формирования суммы прописью с учетом валюты (подробнее)

Конструктор представления параметра области

Для параметров области с типом “Значение набора” возможно редактирование текста (подбор) или автозаполнение (по кнопке “Заполнить” над табличной частью).

При автозаполнении программа находит поля в наборах с именем = имени параметра, но есть ограничения:

  • если по имени параметра найдено более 1 возможного поля из наборов, параметр не заполняется;
  • если способ вывода области = “По строкам коллекции”, совпадение анализируется только для указанного набора.

Тип «Произвольный алгоритм» — это код на встроенном языке, который считает значение параметра в момент вывода области. Он нужен, когда значение зависит от условия или собирается из нескольких полей, а конструктора представления не хватает.

Правила простые:

  • результат кладётся в переменную Результат;
  • работает и Возврат <выражение>; — программа сама превращает его в присвоение Результат и выход из алгоритма;
  • к данным обращаются по пути НаборыДанных.[Набор].[Поле] — теми же путями, что показывает дерево доступных полей: доступны поля наборов, строка текущей коллекции, итоги и системные поля.

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

Если НаборыДанных.Шапка.ДокументБезНДС Тогда
Результат = "Без налога (НДС)";
Иначе
Если НаборыДанных.Шапка.СуммаВключаетНДС Тогда
Результат = "В том числе НДС";
Иначе
Результат = "НДС сверху";
КонецЕсли;
КонецЕсли;

Алгоритм параметра области не путайте с вычисляемым полем набора: вычисляемое поле считается один раз на строку набора, обращается к её полям как СтрокаНабора.[Поле] и доступно потом всем областям; алгоритм параметра считается при выводе конкретной области и живёт только в ней. Если одно и то же выражение нужно в нескольких областях или в условиях вывода — его место в вычисляемом поле.

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

Для вывода картинки можно использовать следующие сочетания типов и значений:

ТипЗначение
Данные QR-кодаКартинка QR-кода генерируется автоматически, на основе данных (подсистема Генерация штрихкода БСП)
Значение набораЗначение набора с типом данных “Картинка”
Значение набораЗначение набора с типом данных “Двоичные данные”
Значение набораЗначение набора с типом данных ”…ПрисоединенныеФайлы” (подсистема Работа с файлами БСП)

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