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

Редактор макетов

Главная форма редактирования записи справочника pw_Макеты — конструктор печатных форм PrintWizard. Здесь пользователь создаёт и настраивает всё, что нужно для формирования печатной формы: визуальный макет, источники данных, правила заполнения параметров, обработчики событий и пользовательские функции. Поддерживаются два формата: табличный документ (.mxl) и офисный документ (.docx).

Имя формы в метаданных конфигурации: Справочник.pw_Макеты.Форма.ФормаЭлемента

Форма решает полный цикл разработки печатной формы: от создания визуального макета до блокировки, после которой кнопка «Печать» целевого объекта метаданных становится доступна пользователям.

Исполнитель — внутренняя обработка PrintWizard, отвечающая за фактическое формирование печатной формы по подготовленному в редакторе макету (внутреннее имя — pw_Исполнитель). Далее в документе используется короткое имя «Исполнитель».

На форме физически семь страниц первого уровня:

  1. Описание — шапка макета, настройки формата, объекты метаданных.
  2. Макет — визуальный редактор шаблона и таблица областей.
  3. Запросы — запросы к данным информационной базы.
  4. Наборы — наборы данных, формируемые на основе запросов или алгоритмов.
  5. Соединения — связи между наборами для построения «доступных полей».
  6. События — обработчики жизненного цикла формирования.
  7. Функции — пользовательские функции многократного использования.

В режиме отладки видна дополнительная страница Журнал событий.

Несколько ключевых сущностей в этом документе вынесены отдельными разделами для удобства поиска, хотя физически они находятся внутри других страниц: «Объекты метаданных» (на странице «Описание»), «Области макета» (на странице «Макет»). Также отдельным разделом описаны «Доступные поля» — концепция, общая для нескольких вкладок.

Форма открывается из формы списка справочника pw_Макеты:

  • кнопка «Создать» — новый элемент;
  • двойной клик по строке или кнопка «Изменить» — открыть существующий макет.

На форме списка и форме элемента доступны дополнительные команды:

  • Экспорт в файл — сохранить макет в формате .pdwx (собственный формат PrintWizard) или .xml;
  • Загрузить из файла (форма списка) — создать новый макет из файла .pdwx или .xml;
  • Выгрузить как внешнюю обработку — сформировать автономный файл .epf;
  • Выгрузить как расширение — сформировать файл расширения конфигурации .cfe.
СостояниеПризнакЧто значит
РедактируемыйЗаблокирована = falseРазработка; кнопка печати в интерфейсе объекта недоступна
Заблокированный (production)Заблокирована = trueКнопка «Печать» добавлена в интерфейс целевых объектов метаданных; редактирование формы заблокировано
Образ для разработкиЭтоОбразДляРазработки = trueКопия заблокированного макета; имеет подменю «Разработка» для передачи изменений в основной макет; показывает предупреждающий баннер
  1. Разработка в разблокированном макете.
  2. Тестирование и отладка.
  3. Заблокировать → комплексная проверка → кнопка печати активируется (при условии включённого признака «Команда печати» хотя бы для одного объекта метаданных, см. ниже).
  4. При необходимости доработок: создать образ для разработки → внести изменения → передать в основной макет.

Условия появления кнопки печати у объекта

Заголовок раздела «Условия появления кнопки печати у объекта»

Чтобы кнопка «Печать» появилась в интерфейсе целевого объекта метаданных, должны выполниться оба условия:

  1. Макет заблокирован (Заблокирована = Истина).
  2. На странице «Описание» в таблице «Объекты метаданных» у нужного объекта включён признак «Команда печати» (пиктограмма принтера в шапке колонки).

Если макет заблокирован, но признак «Команда печати» снят — кнопка не появится. Если признак включён, но макет не заблокирован — кнопка тоже не появится.

Формат (табличный или офисный) задаётся пользователем на странице «Описание» в любой момент. При переключении области и параметры обновляются из нового шаблона; если имена совпадают с предыдущими — настройки заполнения параметров сохраняются.

Лучше определять формат сразу в начале работы. У офисного формата есть ограничения по сравнению с табличным:

  • доступны не все настройки областей;
  • доступны не все типы доступных полей.

Поэтому если изначально создавать макет под .docx, можно избежать переделки настроек, которые позже окажутся неподдерживаемыми.

Независимый от состояния макета переключатель. При включённом режиме Исполнитель собирает подробный журнал каждого этапа формирования; после запуска «Тестирования» журнал отображается на вкладке «Журнал событий». Режим может замедлять печать.

Первая страница формы. Содержит шапку макета, настройки формата и таблицу объектов метаданных.

ПолеНазначение
НаименованиеЗаголовок, который видит пользователь и который попадает в имя кнопки печати, если для объекта метаданных не задано имя команды
Полное наименованиеИспользуется в форме списка справочника pw_Макеты для классификации
ОКУДКод общероссийского классификатора управленческой документации; справочное поле
Номер унифицированной формыСправочное поле для классификации в компаниях с большим парком печатных форм
Утверждена документом / Утверждена датаРеквизиты приказа, утвердившего форму; справочные поля

Поля «ОКУД», «Номер унифицированной формы», «Утверждена…» в формирование печатной формы не вмешиваются — это метаданные для классификации.

Настройка (синоним)Внутреннее имяНазначение
Макет в формате Open Office Documents (*.docx)ЭтоOfficeOpenXMLПереключатель табличный документ ↔ офисный документ. Меняет вид страницы «Макет»: вместо встроенного редактора таблицы — просмотр загруженного .docx
Это реестрЭтоРеестрУправляет режимом печати при множественном выделении ссылок

Семантика признака «Это реестр»:

  • Это реестр = Ложь — для каждой выделенной ссылки формируется отдельная печатная форма (например, приходная накладная: 5 выделенных документов → 5 печатных форм);
  • Это реестр = Истина — для всех выделенных ссылок формируется одна печатная форма со списком (например, журнал накладных: 5 выделенных → 1 печатная форма со всеми внутри).

Таблица на странице «Описание». Целевые объекты, для которых предназначен макет (Справочники, Документы и т.п.). Для каждого объекта указывается имя команды печати, которая появится в его меню после блокировки макета.

Колонка (синоним)Внутреннее имяНазначение
Объект метаданныхОбъектыМетаданных.ПолноеИмяОбъектаНапример, Документ.РеализацияТоваровУслуг
ЗаголовокОбъектыМетаданных.КомандаПредставлениеИмя кнопки в меню «Печать». Если оставить пустым — сформируется автоматически из «Наименование» макета. Можно переопределить вручную
Печать (пиктограмма принтера в шапке колонки)ОбъектыМетаданных.КомандаПечатиВключает фактическое создание команды печати для этого объекта. Без включённого признака кнопка «Печать» в интерфейсе объекта не появится, даже если макет заблокирован
КомандаДействие
Заполнить запросы по метаданнымПерезаполняет запросы на основе указанных объектов метаданных
Обновить наличие полей БСППроверяет наличие подсистем БСП «Доп. реквизиты и сведения» и «Контактная информация» в конфигурации; включает/выключает соответствующие колонки в форме списка полей наборов
Навигатор по объектуОткрывает просмотр метаданных через расширение Infostart Toolkit (если оно подключено в конфигурации)
Открыть представления ЗУПСпециальный конструктор запросов «Представлений» из конфигурации 1С:ЗУП

Поддерживается, но не рекомендуется в текущей версии: команда печати добавляется к каждому объекту, запросы строятся через ОБЪЕДИНИТЬ (отдельно для шапки и для каждой табличной части). Механизм будет переработан — останется один основной объект, остальные через другой механизм.

Вторая страница формы. Содержит визуальный редактор шаблона и таблицу областей.

Внешний вид страницы зависит от настройки формата на странице «Описание»:

  • Табличный документ (.mxl) — встроенный редактор табличного документа.
  • Офисный документ (.docx) — просмотр загруженного файла Word.

Переключение между двумя видами происходит автоматически при изменении настройки формата.

Встроенный редактор с поддержкой форматирования (шрифт, выравнивание, границы, цвет, объединение ячеек). Области задаются стандартными средствами 1С (именованные области в табличном документе).

Перенос из Excel. Отдельной кнопки загрузки из Excel нет. Перенос делается через буфер обмена: выделить область в Excel → копировать → вставить в табличный документ редактора. Форматирование при этом сохраняется. Области и параметры размечаются вручную.

КомандаЧто загружает
Загрузить из файлаИз файла .mxl на диске
Загрузить из метаданныхИз любого макета любого объекта метаданных конфигурации
Загрузить из общего макетаИз состава общих макетов конфигурации
Загрузить из макета объектаИз макетов объекта метаданных, указанного на странице «Описание»

Стандартные три варианта типа ячейки табличного документа:

  • Текст — статичный, не меняется при печати.
  • Параметр — параметр макета; при печати заменяется на данные.
  • Шаблон — комбинация: "Текст [ИмяПараметра] ещё текст".

Команды панели заполнения: Заполнение → Текст / Параметр / Шаблон.

КомандаНазначение
Вставить картинку из файлаСтатичная картинка из файла
Вставить картинку пустуюПустая картинка с именем параметра; данные задаются через параметры области
Вставить картинку QR-кодаКартинка под QR-код; содержимое настраивается в параметрах области
Вставить картинку с печатьюКартинка для печати организации; заполняется из реальных данных через параметры области
Вставить картинку с подписьюКартинка для подписи (руководителя, бухгалтера); аналогично «Печати»

Загрузка из файла, подготовленного в Word или совместимом редакторе по правилам разметки PrintWizard. Области и параметры определяются автоматически при загрузке.

Специальные теги в тексте документа:

ТегНазначение
{v8 Область.ИмяОбласти}Начало области
{/v8 Область.ИмяОбласти}Конец области
{v8 ИмяПараметра}Параметр внутри области

При просмотре макета .docx данные макета передаются в S3-хранилище для серверной обработки. Перед первой передачей запрашивается согласие пользователя. Подробнее — общая форма pw_СогласиеНаОбработкуДанных.

Таблица на странице «Макет» (под редактором шаблона). Перечень областей шаблона с правилами заполнения параметров для каждой области.

Колонка (синоним)Внутреннее имяНазначение
Имя областиОбластиМакета.ИмяОбластиИмя именованной области в шаблоне (.mxl/.docx)
Способ выводаОбластиМакета.СпособВыводаКак выводится область при формировании; см. ниже
НаборОбластиМакета.КлючСтрокиНабораИмя набора, по строкам которого повторяется область (для способа вывода «По строкам коллекции»)
Есть правила вывода (значок-фильтр в шапке колонки)ОбластиМакета.ЕстьПравилаВыводаПиктограмма видна, когда у области заданы правила условного вывода. По клику открывается редактор правил вывода области (форма pw_Редакторы.Форма.ПравилаВыводаОбласти); см. «Правила вывода области»

Все значения — в общем модуле pw_Перечисления.СпособВыводаОбласти(). Колонка «Внутреннее имя» — то, что хранится в данных и используется в коде; колонка «Синоним» — то, что видит пользователь в выпадающем списке.

Синоним (что видит пользователь)Внутреннее имяСемантика
Без повторенийБезПовторенийОбласть выводится один раз
По строкам коллекцииПоСтрокамКоллекцииОбласть повторяется для каждой строки набора, указанного в колонке «Набор». Набор должен иметь вид «Многострочная коллекция»
Перенос строкиПереносСтрокиОбласть служебная для механизма переноса (см. «Настройки переноса»)
Верхний колонтитулВерхнийКолонтитулВыводится в верхнем колонтитуле каждой страницы
Нижний колонтитулНижнийКолонтитулВыводится в нижнем колонтитуле каждой страницы
Не выводить на печать [без вывода]НеВыводитьНаПечатьОбласть отключена; используется для черновиков и временно выключенных блоков
Область колонки [без вывода]ОбластьКолонкиИспользуется для многоколоночного вывода
Контрольная строка [служ: перенос строки]КонтрольнаяСтрокаСлужебная область для контроля переноса (см. «Настройки переноса»)
Строка переноса [служ: перенос строки]СтрокаПереносаАналогично — для механизма переноса
Пустая область [служ: перенос строки]ПустаяОбластьЗаглушка для выравнивания вывода

Пометки [без вывода] и [служ: перенос строки] отображаются в самом названии значения списка — так задано в pw_Перечисления для подсказки пользователю.

Правая таблица для каждой строки области — список параметров и правила их заполнения. Колонки:

Колонка (синоним)Внутреннее имяНазначение
ИмяОбластиМакетаПараметры.ИмяПараметраИмя параметра шаблона (для .mxl — имя параметра ячейки; для .docx — имя из тега {v8 ИмяПараметра})
ТипОбластиМакетаПараметры.ТипПараметраИсточник данных; см. «Доступные поля» и таблицу ниже
ЗначениеОбластиМакетаПараметры.ЗначениеТекстЗначение в формате, зависящем от типа параметра

Типы параметра — из pw_Перечисления.ТипПараметраМакета():

Тип (синоним)Внутреннее имяЗначение/настройка
Значение набораЗначениеНабораУказание на поле набора через путь (см. «Доступные поля»)
Конструктор строкиКонструкторСтрокиШаблон вида [Префикс][ПолеНабора][Окончание]. Несколько фрагментов; настройка — в форме редактора из обработки pw_Редакторы
АлгоритмПроизвольныйАлгоритмBSL-алгоритм, возвращающий значение параметра
Данные QR-кодаДанныеQRКодаДля параметров под QR-картинку. Тип кода (УФЭБС / XML / JSON / Алгоритм) задаётся в форме настройки QR из обработки pw_Редакторы
Сумма прописьюСуммаПрописьюПреобразование числа в строку. Настройки (валюта, язык, дробная часть) — в форме редактора из обработки pw_Редакторы

Декларативная альтернатива событию «ПередВыводомОбласти» для условного вывода. Позволяют задать условия пропуска области без программирования на BSL.

Логика: область выводится, если все заданные правила истинны (логическое И). Если хотя бы одно правило ложно — область пропускается. Если правил нет — область выводится всегда (поведение по умолчанию).

Структура правила:

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

Хранение: табличная часть ОбластиПравилаВывода справочника pw_Макеты; флаг наличия правил в колонке ОбластиМакета.ЕстьПравилаВывода обновляется автоматически.

Открытие редактора: в таблице «Области макета» клик по колонке «Есть правила вывода» (значок-фильтр) у нужной области. Открывается форма редактора правил pw_Редакторы.Форма.ПравилаВыводаОбласти — там доступно дерево «Доступных полей» для левого/правого значения, список «Видов сравнения» по типу данных, добавление/удаление строк правил.

Когда использовать правила, а когда событие. Правила удобнее для типовых условий: сравнение поля набора с константой, проверка непустоты, диапазоны значений, наличие признака. Событие — для сложной логики (несколько условий с разной комбинацией ИЛИ/И, вычисления, обращения к внешним источникам). Правила и событие «ПередВыводомОбласти» совместимы: если правила пропустили область, событие для неё не вызывается; если правила пропустили проверку — событие может всё равно пропустить область через Отказ = Истина.

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

Колонка (синоним)Внутреннее имяНазначение
ПараметрОбластиМакета.ИмяПараметраПереносаИмя параметра, через который пробрасывается значение при переносе
Контроль 1ОбластиМакета.ИмяКонтрольнойОбласти1Имя контрольной области для механизма переноса
Контроль 2ОбластиМакета.ИмяКонтрольнойОбласти2Вторая контрольная область
Область печатиОбластиМакета.ИмяДополнительнойОбластиИмя дополнительной области

Тема сложная и в этом документе подробно не раскрывается — используйте по согласованию с разработчиком PrintWizard.

КомандаДействие
Заполнить области макетаПеречитывает шаблон и обновляет состав областей (если автоматический разбор отработал некорректно)
Обновить параметры области макетаОбновляет состав параметров в текущей области
Заполнить параметры области макета по наборуСопоставляет параметры области и поля выбранного набора по совпадающим именам, при совпадении проставляет соответствие

Третья страница формы. Запросы к данным информационной базы, на основе которых строятся наборы. Запросы автоматически генерируются при добавлении объекта метаданных на странице «Описание»; могут быть отредактированы вручную.

Колонка (синоним)Внутреннее имяНазначение
ЗапросЗапросыДанных.ИмяЗапросаИмя запроса. Уникальное в пределах макета
Врем. таблицаЗапросыДанных.ИмяВременнойТаблицыИмя временной таблицы для типа результата «Временная таблица»
Это общий запросЗапросыДанных.ЭтоОбщийЗапросСм. ниже
Текст запросаЗапросыДанных.ТекстЗапросаТекст BSL-запроса

При множественном выделении ссылок в форме списка обычные запросы получают параметр &МассивОбъектов и должны иметь:

  • отбор ГДЕ Ссылка В (&МассивОбъектов);
  • поле Ссылка в выборке.

В случаях, когда отбор по ссылкам нецелесообразен (например, остатки по всей номенклатуре независимо от выделенных документов), запрос помечается как «Общий» (ЭтоОбщийЗапрос = Истина). Тогда отбор по МассивОбъектов не применяется и проверка наличия поля Ссылка не выполняется.

Таблица параметров под текстом запроса. Тип параметра — из pw_Перечисления.ТипПараметра():

Тип (синоним)Внутреннее имяКогда использовать
ЗначениеЗначениеПо умолчанию — обычное значение указанного типа
СписокСписокВключается флагом «Это список» в строке параметра. Передаётся как Массив / СписокЗначений в запрос
АлгоритмАлгоритмВключается флагом «Это алгоритм». Значение параметра вычисляется BSL-алгоритмом перед выполнением запроса
ТаблицаТаблицаЗарезервирован, в текущей версии не используется

Алгоритм-параметр выполняется на сервере перед запросом. Контракт переменных описывается в отдельной задаче по подсказкам в полях алгоритмов.

КомандаДействие
Открыть конструктор запросаСтандартный конструктор платформы 1С или конструктор из расширения Infostart Toolkit (если подключено)
Открыть консоль запросовВстроенная в PrintWizard консоль запросов (для тестового исполнения)
Проверить запросОтправляет текст запроса на проверку встроенному в PrintWizard ассистенту. Ассистент анализирует запрос и возвращает свои замечания
Заполнить запросы по метаданнымПерегенерирует запросы по объектам метаданных, заданным на странице «Описание»
Обновить поля запросов данныхИзвлекает список колонок из результата запроса для дальнейшего сопоставления с полями наборов
Обновить параметры запросаПеречитывает текст запроса и обновляет таблицу параметров

Под текстом запроса — две области с результатами автоматического анализа запроса:

  • Ошибки запроса — некорректные конструкции, не позволяющие исполнить запрос.
  • Рекомендации запроса — замечания об оптимизации и стиле, не блокирующие исполнение.

Анализ выполняется автоматически при редактировании текста запроса.

Четвёртая страница формы. Наборы данных — таблицы значений для вывода областей. Один набор соответствует одному источнику. Один источник (запрос) может питать несколько наборов.

Колонка (синоним)Внутреннее имяНазначение
Источник данныхНаборыДанных.ИмяЗапросаИмя набора — уникальное в пределах макета. Колонка названа «Источник данных», поскольку часто совпадает с именем запроса-источника
ИсточникНаборыДанных.КлючСтрокиЗапросаСсылка на запрос (для типа источника «Запрос»). Один набор = одна строка результата запроса
АлгоритмНаборыДанных.АлгоритмОбработкиВТBSL-код, формирующий или дообрабатывающий данные набора
Вид набораНаборыДанных.ВидНабораКак Исполнитель интерпретирует данные набора (см. ниже)

Из pw_Перечисления.ТипИсточникаНабора():

Тип (синоним)Внутреннее имяСемантика
ЗапросЗапросДанные берутся из именованного запроса через колонку «Источник»
АлгоритмАлгоритмДанные формирует BSL-алгоритм (колонка «Алгоритм»); результат — таблица значений
ОбъектОбъектЗарезервирован: указание объекта метаданных напрямую (Справочник.Имя, Документ.Имя.ИмяТабличнойЧасти, регистры). В текущей версии не используется

Из pw_Перечисления.ВидНабора():

Вид (синоним)Внутреннее имяСемантика
Первая строкаПерваяСтрокаБерётся одна (первая) строка результата — типично для шапки
Последняя строкаПоследняяСтрокаАналогично — последняя строка
Соединение строкСоединениеСтрокВсе строки склеиваются в одно значение через разделитель
Многострочная коллекцияМногострочнаяКоллекцияВсе строки набора доступны построчно — для способа вывода области «По строкам коллекции»

Вид набора влияет на видимость полей в других областях — см. «Доступные поля».

Таблица в правой части страницы. Колонка «Тип данных» (НаборыДанныхПоля.ТипДанных) показывает тип поля. Поля либо берутся из запроса/алгоритма автоматически, либо добавляются пользователем как «дополнительные». Все типы — из pw_Перечисления.ТипПоля():

Тип (синоним в выпадающем списке)Внутреннее имяСодержимое
Поле источникаПолеИсточникаПоле из результата запроса или из таблицы значений алгоритма источника
Поле алгоритмаПолеАлгоритмаЗначение вычисляется BSL-алгоритмом обработки набора
Поле свойстваПолеСвойстваДополнительный реквизит / свойство из подсистемы БСП «Доп. реквизиты и сведения» — произвольные реквизиты, задаваемые в режиме «Предприятие» без вмешательства в конфигурацию
Поле конт. инф.ПолеКонтИнфАдрес / телефон / e-mail и т.п. из подсистемы БСП «Контактная информация»
Поле представленияПолеПредставленияКонструктор строки по шаблону [Префикс][ПолеНабора][Окончание] — несколько фрагментов; форма редактирования — в обработке pw_Редакторы
Поле нумератораПолеНумератораАвтоматическая нумерация по правилам. Пример: 10 строк, 5 уникальных номенклатур → нумератор по полю Номенклатура даст номера 1..5 (вместо обычных 1..10)
Вычисляемое полеВычисляемоеПолеРезультат вычисления BSL-выражения от других полей того же набора
Поле QR-кодаПолеQRКодаВ полях набора создать нельзя. «Обёртка» для типа параметра области «Данные QR-кода»
КомандаТип поля
Добавить поле набора данных нумераторНумератор
Добавить поле набора данных вычисляемоеВычисляемое
Добавить поле набора данных алгоритмАлгоритм
Добавить поле набора данных конструкторПредставление
Добавить поле набора данных контактная информацияКонтактная информация
Добавить поля набора данных доп. сведенияСвойство
КомандаДействие
Обновить наборы данных по запросамПересоздаёт наборы из текущего списка запросов
Обновить поля набора данных из запросаПеречитывает поля выбранного набора из результата привязанного запроса
Обновить поля набора данных из набораПеречитывает поля из соединённого набора
Обновить поля набора из алгоритмаИзвлекает поля из таблицы значений, формируемой алгоритмом источника
Обновить использование полей набораКонтроль сквозной связи: поле запроса → параметр области (через алгоритмы и соединения)
Вывести связи поля набора данныхСообщение пользователю «Поле X используется в: …» с перечислением мест использования. Реализация — pw_СхемаСвязьДанных
Синтаксический контроль набораПроверяет алгоритм набора (см. ниже)

Применяется ко всем полям с алгоритмами на языке 1С: разбор алгоритма в синтаксическое дерево, поиск ошибок (неинициализированные переменные, недопустимые конструкции). Аналогичные команды есть для событий («Синтаксический контроль события») и функций («Синтаксический контроль функции»).

Пятая страница формы. Дерево связей между наборами. Цель — расширить «Доступные поля» наборов: добавить в левый набор поля правого набора через имя соединения.

Важно: соединения не добавляют колонки в сам набор (внутри pw_Исполнителя каждый набор — таблица значений). Соединения добавляются в дерево «Доступных полей» левого набора в виде вложенного «соединённого» набора с именем ИмяСоединения. См. «Доступные поля».

Колонка (синоним)Внутреннее имяНазначение
Левая сторона (набор / поле)ДеревоСоединений.ИмяЛевоНабор (или поле — в зависимости от уровня дерева) слева
Правая сторона (набор / поле)ДеревоСоединений.ИмяПравоНабор (или поле) справа
СоединениеДеревоСоединений.ИмяСоединенияИмя вложенного «доступного» набора. Используется в пути доступа: НаборыДанных.ИмяЛевогоНабора.ИмяСоединения.ИмяПоляПравогоНабора
№ *ДеревоСоединений.НомерСтрокиНомер строки в дереве (служебный)
КомандаЧто добавляет
Добавить соединение → Связь наборовСоединение целиком — аналог соединения таблиц в SQL-запросе
Добавить соединение → Связь полейУсловие соединения — пара полей внутри уже существующей связи наборов

Можно менять стандартными командами MoveUp / MoveDown. На исполнение не влияет.

Тип источника наборов (запрос / алгоритм) и вид набора (первая строка / многострочная коллекция / …) — не ограничивают возможность соединения. Внутри pw_Исполнителя любой набор — таблица значений.

Набор не обязан быть упомянут в дереве соединений. По умолчанию все наборы — свободные.

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

Возможные формы пути:

ПутьСемантика
НаборыДанных.ИмяНабора.ИмяПоляОбычное поле набора
НаборыДанных.ИмяНабора.Итог.ИмяПоля.АгрегатнаяФункцияИтог по полю набора. См. таблицу агрегатных функций ниже
НаборыДанных.ИмяНабора.Строка.ИмяПоляДанные конкретной строки при выводе области, связанной с многострочной коллекцией
НаборыДанных.ИмяНабораЛево.ИмяСоединения.ИмяПоляПравоПоле через соединение
НаборыДанных.СистемныеПоля.ИмяПоляПредопределённые системные данные

Дополнительно для каждого поля хранится JSON-расшифровка с информацией о поле (тип, представление и т.п.).

Для итогов по полям наборов. Имена и синонимы — из pw_Перечисления.АгрегатнаяФункция():

Синоним (что видит пользователь)Внутреннее имя
СуммаСумма
КоличествоКоличество
Количество различныхКоличествоРазличных
МаксимумМаксимум
МинимумМинимум
СреднееСреднее
Итог накопительныйИтогНакопительный
Итог по страницеИтогПоСтранице
Процент к итогуПроцентКИтогу

Свободно стоящие наборы (не упомянутые в соединениях):

Вид набораЧто видно из других областей
Первая строка / Последняя строка / Соединение строкПоля видны для всех областей
Многострочная коллекция — поля итогов (агрегатов)Видны для всех областей
Многострочная коллекция — поля построчного выводаВидны только в области, связанной с этим набором через колонку «Набор» (КлючСтрокиНабора)

Правила видимости полей через соединения

Заголовок раздела «Правила видимости полей через соединения»

В соединениях построчный вывод не предусмотрен. Поэтому:

Вид правого набораЧто доступно через соединение
Первая строка / Последняя строка / Соединение строкВсе поля правого набора
Многострочная коллекцияТолько поля итогов (агрегатов)

Связь колонки «Набор» области и дерева соединений

Заголовок раздела «Связь колонки «Набор» области и дерева соединений»

Никак не связаны. Видимость полей определяется правилами выше, а не наличием/отсутствием набора в дереве соединений.

Шестая страница формы. Обработчики жизненного цикла формирования печатной формы. Список событий — фиксированный, определяется в pw_КонструкторКлиентСервер.СобытияКонструктора(). Полный перечень с параметрами и типичным использованием — в разделе «События жизненного цикла».

  • Слева — список событий.
  • Справа — текст алгоритма выбранного события.
  • Под алгоритмом — подсказка (доступные переменные).
КомандаДействие
Заполнить событияПроверяет наличие всех 8 событий; если каких-то нет — создаёт пустые «болванки»
Синтаксический контроль событияРазбирает алгоритм события в синтаксическое дерево, ищет ошибки (см. «Синтаксический контроль» на вкладке «Наборы»)

В группе подсказок выводятся переменные, доступные в выбранном событии. Конкретный перечень переменных по каждому событию документируется отдельно — в задаче по подсказкам в полях алгоритмов.

Пользователь пишет код события самостоятельно. Готовых шаблонов нет.

Седьмая страница формы. Пользовательские функции многократного использования.

  • Слева — список функций.
  • Справа — текст алгоритма функции.
  • Под текстом функции — таблица параметров.
Свойство (синоним)Внутреннее имяНазначение
ИмяФункции.ИмяФункцииИмя функции — уникальное в пределах макета
ПараметрыФункцииПараметрыТаблица параметров функции (см. ниже)
АлгоритмФункции.АлгоритмТекст функции на языке 1С

Контекст исполнения — только серверный (текущая версия). Возврат необязателен — функция может ничего не возвращать (роль процедуры).

Таблица параметров. Колонки:

Колонка (синоним)Внутреннее имяОбязательность
ИмяФункцииПараметры.ИмяПараметраОбязательно
ТипФункцииПараметры.ОписаниеТиповЖелательно — если указан, консоль кода даёт подсказки
ОписаниеФункцииПараметры.ОписаниеЖелательно

Функция видна из любого алгоритма в макете:

  • из событий;
  • из параметров областей (тип параметра «Алгоритм», внутреннее имя ПроизвольныйАлгоритм);
  • из текстов запросов;
  • из алгоритмов полей наборов;
  • из алгоритмов параметров запроса.

Функции могут вызывать сами себя (рекурсия).

В алгоритмах макета доступен контекст ЭтотМакет. Функции вызываются через ЭтотМакет.ВыполнитьФункцию(...). Имя функции передаётся как ЭтотМакет.Функции.ИмяФункции.

Поддерживаются два способа передачи параметров.

Вариант 1. Позиционные параметры (по порядку, как в таблице параметров функции):

ВалютаРегУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
Для Каждого СтрокаШапки Из ДанныеЗапроса Цикл
ПараметрыДокумента = ЭтотМакет.ВыполнитьФункцию(ЭтотМакет.Функции.ПараметрыДокумента,
СтрокаШапки,
ВалютаРегУчета);
// далее мы уже можем использовать ПараметрыДокумента по необходимости
КонецЦикла;

Вариант 2. Через структуру параметров (когда параметров много или порядок неудобен):

ПараметрыМетода = ЭтотМакет.ПараметрыФункции(ЭтотМакет.Функции.ПараметрыДокумента);
ПараметрыМетода.СтрокаШапки = СтрокаШапки;
ПараметрыМетода.ВалютаРегУчета = ВалютаРегУчета;
ЭтотМакет.ВыполнитьФункцию(ЭтотМакет.Функции.ПараметрыДокумента, ПараметрыМетода);

ЭтотМакет.ПараметрыФункции(...) возвращает структуру с полями по именам параметров функции. Поля заполняются и структура передаётся вторым аргументом в ВыполнитьФункцию — Исполнитель сам сопоставляет значения по именам.

КомандаДействие
Синтаксический контроль функцииРазбирает алгоритм функции в синтаксическое дерево, ищет ошибки

Дополнительная страница, видна только при включённом режиме отладки. Содержит подробный трейс этапов формирования печатной формы, собранный pw_Исполнителем при последнем «Тестировании».

Содержимое и формат журнала меняются — детали в этом документе не описаны. Используйте журнал для диагностики после включения «Отладки» и запуска «Тестирования».

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

КомандаДействие
Заблокировать / РазблокироватьБлокирует или снимает блокировку макета. Перед блокировкой выполняется комплексная проверка
ТестированиеЗапускает формирование печатной формы через Исполнитель; результат открывается в виде табличного документа
Тестирование → ПовторитьПовторяет последний запуск тестирования с теми же параметрами
Режим отладкиПереключатель: при включении Исполнитель собирает подробный трейс; после «Тестирования» трейс виден на вкладке «Журнал событий». Может замедлять печать
Управление параметрами печати (иконка ключа)Открывает форму редактирования параметров печати макета (pw_НастройкиПечати): ориентация, размер страницы, поля, поля колонтитула, двусторонняя печать, чередование, точность. Привязка через КлючПараметровПечати. Если ключ ещё формируется автоматически и настроек нет — диалог предлагает задать собственное значение ключа. Изменения отложенные — копятся в реквизите формы и применяются при записи макета; пока есть несохранённые правки, в заголовке кнопки виден маркер «*»
Обработка / ЭкспортПодменю экспорта: в .pdwx, .xml, выгрузка как внешняя обработка .epf, выгрузка как расширение .cfe
Разработка → Записать изменения макета разработкиТолько в образе для разработки. Передаёт текущие изменения в основной (заблокированный) макет
Разработка → Закрыть образ для разработкиТолько в образе для разработки. Передаёт финальные изменения в основной макет и удаляет образ

Создание нового макета (рекомендуемый порядок)

Заголовок раздела «Создание нового макета (рекомендуемый порядок)»
  1. В форме списка нажать «Создать».
  2. На странице «Описание» ввести наименование.
  3. Выбрать формат макета: табличный документ или офисный документ.
  4. На странице «Описание» в таблице «Объекты метаданных» добавить целевой объект (Справочник или Документ). Запросы и наборы по реквизитам объекта и его табличным частям сформируются автоматически.
  5. Перейти на страницу «Макет» и создать шаблон:
    • для .mxl: нарисовать вручную, вставить из Excel или загрузить из вариантов конфигурации;
    • для .docx: подготовить файл в Word по правилам PrintWizard, загрузить кнопкой «Обновить из файла».
  6. После сохранения/загрузки шаблона области и параметры определятся автоматически. В таблице «Области макета» последовательно настроить правила заполнения параметров каждой области.
  7. Если нужны данные, которых нет в автосгенерированных запросах: отредактировать запросы на странице «Запросы», добавить дополнительные поля в наборы на странице «Наборы».
  8. Задать порядок вывода областей: какие повторяются в шапке/подвале при переносе страницы.
  9. При необходимости добавить обработчики событий на странице «События».
  10. Нажать «Тестирование» и проверить результат. При обнаружении проблем включить «Режим отладки» и изучить журнал событий.
  11. Нажать «Заблокировать» → пройти проверку → кнопка печати появится в интерфейсе целевого объекта.

Доработка заблокированного макета через образ для разработки

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

Форма читает и записывает следующие табличные части справочника pw_Макеты:

Табличная частьДанные
ОбъектыМетаданныхЦелевые объекты и команды печати
ЗапросыДанныхТексты запросов и их параметры
НаборыДанных, НаборыДанныхПоляНаборы и их поля (включая дополнительные типы)
НаборыДанныхСоединенияДерево связей между наборами
ОбластиМакета, ОбластиМакетаПараметрыОбласти шаблона и правила заполнения параметров
ОбластиПравилаВыводаДекларативные условия вывода областей (см. «Правила вывода области»)
СобытияАлгоритмы обработчиков событий
Функции, ФункцииПараметрыПользовательские функции

Внешние зависимости:

  • pw_ФормаКонструктора — общий модуль (40+ методов): синхронизация данных формы, валидация, автогенерация запросов и наборов по объекту метаданных, обновление доступных полей.
  • pw_Исполнитель — вызывается при «Тестировании» и «Отладке» для фактического формирования печатной формы.
  • pw_СхемаДоступныеПоля — предоставляет дерево доступных полей при выборе источника параметра.
  • pw_СхемаСвязьДанных — обеспечивает «Вывести связи поля набора данных».
  • pw_КонструкторКлиентСервер — хранит фиксированный список 8 событий жизненного цикла формирования.
  • pw_Перечисления — единый источник истины для всех типов и видов (СпособВыводаОбласти, ТипПоля, ТипПараметра, ВидНабора, ТипИсточникаНабора, ТипПараметраМакета, АгрегатнаяФункция, ТипАлгоритма и др.).
  • pw_Редакторы — обработка с формами редактирования: конструктор строки, настройка QR-кода, настройка «Сумма прописью», редактор правил вывода области (ПравилаВыводаОбласти).
  • pw_НастройкиПечати — обработка, открывается командой «Управление параметрами печати»; редактирует параметры печати макета (ориентация, размер страницы, поля, поля колонтитула, двусторонняя печать, чередование, точность). Хранение настроек — по КлючПараметровПечати макета.

Список событий фиксированный, определяется в pw_КонструкторКлиентСервер.СобытияКонструктора().

СобытиеКогда вызываетсяОсновные параметрыТипичное использование
ПередИнициализациейДо любой обработки, в самом началеМассивОбъектов, ВнешниеПараметры, ОтказПредварительная подготовка данных; отказ от печати
ПриПолученииДанныхПосле выполнения всех запросов, до «нарезки» сводных таблиц на наборы для каждого объекта (ссылки)ДанныеМакетаИзменение или дополнение сводных таблиц данных перед тем, как они будут разделены на наборы по объектам
ПередФормированиемПеред началом вывода в документТабличныйДокумент, НаборыДанных, ОтказНастройки документа; отказ от дальнейшей обработки
ПередВыводомСтраницыПеред выводом каждой страницыТабличныйДокумент, НаборыДанныхВставка заголовка страницы
ПередВыводомОбластиПеред выводом каждой областиИмяОбласти, ОбластьМакета, ОтказПропуск области или изменение её данных. Декларативная альтернатива для простых условий пропуска — см. «Области макета» → «Правила вывода области»
ПослеВыводаОбластиПосле вывода областиИмяОбласти, НачалоОбласти, ОтказПостобработка выведенной области
ПослеВыводаСтраницыПосле вывода страницыНачалоСтраницыВставка итогов страницы
ПослеФормированияПосле завершения всего формированияТабличныйДокумент, НаборыДанныхФинальная обработка результирующего документа
  • Блокировка не пройдена: при нажатии «Заблокировать» выполняется комплексная проверка; ошибки выводятся списком и должны быть устранены перед повторной попыткой.
  • Редактирование заблокированного макета: все поля формы неактивны. Для изменений необходимо создать образ для разработки.
  • Дублирование имён: области, наборы, запросы, функции должны иметь уникальные имена; ошибка выводится при сохранении.
  • Запрос без отбора по Ссылка: для не-общих запросов «Проверить запрос» сообщит об отсутствии ГДЕ Ссылка В (&МассивОбъектов) или поля Ссылка в выборке.
  • Ошибки в тексте запроса: диагностируются автоматически при редактировании текста (см. область «Ошибки запроса»); для глубокого разбора — команда «Проверить запрос» (отправка ассистенту PrintWizard) или «Открыть консоль запросов».
  • Образ для разработки: при открытии образа отображается предупреждающий баннер; непередача изменений в основной макет перед удалением образа приведёт к их потере (кнопка «Закрыть образ» передаёт автоматически).
  • Переключение формата: при смене .mxl ↔ .docx настройки параметров, имена которых не совпадают с новым шаблоном, будут сброшены.
  • Многообъектность макета: текущий механизм объединения запросов через ОБЪЕДИНИТЬ будет переработан. Старайтесь использовать один основной объект на макет.
  • Тип источника «Объект» у набора: зарезервирован, не используется в текущей версии.
  • Тип параметра запроса «Таблица»: зарезервирован, не используется в текущей версии.
  • QR-код в полях набора: создать нельзя; QR-код реализуется через тип параметра области «Данные QR-кода».

Q: Как кнопка печати появляется в меню «Печать» объекта? A: Нужно заблокировать макет (кнопка «Заблокировать»). Для этого должен быть указан хотя бы один объект метаданных. До блокировки макет недоступен для конечных пользователей.

Q: Как редактировать уже заблокированный макет? A: Создать образ для разработки. Изменения вносятся в образ; после завершения передаются в основной макет через «Разработка → Записать изменения макета разработки» или «Разработка → Закрыть образ для разработки».

Q: Откуда берётся список параметров в таблице областей? A: Автоматически из табличного документа (.mxl) при его редактировании, или из офисного документа (.docx) при загрузке. Первичен шаблон: области и параметры синхронизируются с его содержимым. Если автоматический разбор отработал некорректно — есть команды «Заполнить области макета» и «Обновить параметры области макета».

Q: Как указать, что параметр заполняется из поля запроса? A: На странице «Макет» → таблица «Области макета» → выбрать нужную область → в строке параметра задать «Тип параметра» = «Значение набора» → выбрать поле из дерева доступных полей. Дерево формируется по правилам, описанным в разделе «Доступные поля».

Q: Чем «Тестирование» отличается от «Режима отладки»? A: «Тестирование» — запуск формирования через Исполнитель. «Режим отладки» — переключатель: при включении Исполнитель собирает подробный трейс; после запуска тестирования трейс виден на вкладке «Журнал событий».

Q: Нужно ли указывать объект метаданных? A: Рекомендуется. При добавлении объекта запросы и наборы создаются автоматически. Без объекта метаданных блокировка невозможна, а значит — кнопка печати в интерфейсе не появится.

Q: Можно ли переключить макет с .mxl на .docx? A: Да, в любой момент. Области и параметры будут обновлены из нового шаблона. Если имена совпадают — настройки заполнения сохранятся, иначе — сбросятся.

Q: В чём разница между «Это реестр = Истина» и «Это реестр = Ложь»? A: При выделении нескольких ссылок в форме списка: Ложь — для каждой ссылки своя печатная форма; Истина — одна печатная форма со списком всех выделенных внутри (например, журнал накладных).

Q: Зачем нужен «Ключ макета»? A: Это внутренний идентификатор. Используется как КлючПараметровПечати табличного документа — пользовательские настройки печати (масштаб, поля, ориентация) и параметры печати макета из формы «Управление параметрами печати» сохраняются в привязке к этому ключу. Кнопок просмотра/обновления ключа в форме нет: значение видно и может быть переопределено через диалог при первом открытии «Управление параметрами печати», если ключ всё ещё формируется автоматически.

Q: Как настроить параметры печати макета (ориентация, поля, двусторонняя)? A: На главной командной панели формы — кнопка «Управление параметрами печати» (иконка ключа). Открывается форма pw_НастройкиПечати, в которой задаются ориентация, размер страницы, поля, поля колонтитула, двусторонняя печать, чередование, точность. Изменения копятся как отложенные и применяются при записи макета — пока есть несохранённые правки, в заголовке кнопки виден маркер «*».

Q: Чем правила вывода области отличаются от события «ПередВыводомОбласти»? A: Правила — декларативные условия (Левое значение / Вид сравнения / Правое значение), задаются в редакторе без написания кода. Событие — программный обработчик на BSL с произвольной логикой. Правила хороши для типовых сравнений (поле = значение, поле заполнено, поле в диапазоне), событие — для сложной логики с несколькими ветвями, вычислениями, обращениями к внешним источникам. Если правила пропустили область — событие для неё не вызывается.

Q: Какой запрос сделать «общим»? A: Тот, что не должен фильтроваться по Ссылка В (&МассивОбъектов) — например, остатки по всей номенклатуре, справочные данные. Для таких запросов установите флаг «Это общий запрос», и проверка наличия отбора по ссылкам не будет применяться.

Q: Как поле одного набора попадает в параметр области, использующей другой набор? A: Через дерево соединений. Соединение добавляет в «Доступные поля» левого набора вложенный «соединённый» набор с именем ИмяСоединения. В параметре области поле задаётся через путь НаборыДанных.ИмяЛевогоНабора.ИмяСоединения.ИмяПоляПравогоНабора. См. «Доступные поля».

Q: Может ли пользовательская функция вызывать саму себя? A: Да, рекурсия поддерживается. Также функции видны из любого алгоритма в макете — события, поля наборов, параметры областей, тексты запросов, параметры запросов.