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

Макет конструктора

Основой для работы PrintWizard является макет конструктора (не путать с макетом печатной формы). Создание макета может быть выполнено:

  • визуально при помощи конструктора макета;
  • программно при помощи объектов схемы PrintWizard.

Макет конструктора содержит следующие разделы:

  • описание и объекты метаданных;
  • запросы данных;
  • наборы данных;
  • соединения наборов;
  • макет печатной формы;
  • события конструктора;
  • функции конструктора.

Данный раздел содержит информацию о печатной форме:

  • Полное имя
  • Номер унифицированной формы
  • Документ утверждения печатной формы
  • Дата документа утверждения печатной формы
  • Ссылка на форму из ОКУД

Каждая печатная форма, как правило, формируется для определенного объекта метаданных. Ограничение одно: объект должен быть ссылочным — у него должно быть предопределенное поле “Ссылка”, по которому программа определяет, для кого формируется печатная форма. То есть в обычном режиме для одной ссылки формируется одна печатная форма.

Поэтому в выборе целевого объекта доступны справочники, документы, планы обмена, перечисления, планы видов характеристик, планы счетов, планы видов расчета, бизнес-процессы, точки маршрута бизнес-процессов и задачи — как из конфигурации, так и из расширений.

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

Дополнительно, с целью оптимизации сбора данных система выполняет контроль на наличие отбора по переданному массиву ссылок. Данный контроль выполняется для запросов, без признака “Это общий запрос”.

Рис. Настройка целевых объектов метаданных

Запросы данных - один из способов доступа к данным, которые в дальнейшем будут использоваться в качестве источников для наборов. Используя этот механизм, разработчик может читать данные, хранящиеся в информационной базе. Изменение данных при помощи запросов невозможно.

Разработчик, создавая макет конструктора, может добавить запросы любого вида и в любом количестве, которые ему необходимы. При этом текст запроса может быть получен следующим образом:

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

Если редактор кода недоступен — в веб-клиенте, на платформе младше 8.3.24 под macOS и Linux или когда в настройках выбран обычный редактор, — текст запроса правится в обычном поле ввода.

В зависимости от запроса, результат выполнения может быть различного типа (определяется автоматически):

  • в таблицу значений (для использования в наборах)
  • во временную таблицу (для использования в других запросах)

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

  • вручную, путем ввода данных (простого типа) или выбора из информационной базы (ссылочные типы);
  • программно, при помощи алгоритма вычисления значения для подстановки.

Рис. Форма настройки запросов

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

Каждый набор может иметь один из 4 видов:

  • Первая строка. Для печатной формы доступны данные только 1й строки;
  • Последняя строка. Для печатной формы доступны данные только последней строки;
  • Соединение строк. Набор сворачивается в одну строку, при этом уникальные значения внутри колонки соединяются в строку с разделителем ”; ”;
  • Многострочная коллекция. Набор представляет собой таблицу. В печатной форме доступны данные итога по числовым полям или построчный вывод.

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

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

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

Рис. Форма настройки наборов данных

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

Каждое поле имеет тип, который определяет поведение поля и возможности его редактирования:

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

Очередность расчета полей см. в главе “Наборы”

Поле набора данных может быть использовано как:

Поле источника - это предопределенное поле, полученное из источника данных (например: запроса). Тип данных поля источника устанавливается автоматически при обновлении полей из запроса.

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

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

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

Работает это так: если в наборе есть поле «Организация» с типом СправочникСсылка.Организации, а у справочника заведён доп. реквизит «Аффилированная организация», то напротив поля появится признак наличия доп. реквизитов. Выбрав нужный из списка, разработчик получает готовое поле набора «Организация_АффилированнаяОрганизация» с типом «Булево» — значение считается автоматически при формировании печатной формы. Порядок действий — в главе Наборы.

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

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

Устроено так же, как поле доп. реквизита: у поля «Покупатель» с типом СправочникСсылка.Контрагенты появится признак наличия контактной информации, а после выбора вида — поле «Покупатель_ЮридическийАдрес» с типом «Строка». Подробнее — в главе Наборы.

В некоторых случаях для вывода в печатную форму необходимо “сконструировать” строковое значение. Например наименование организации с указанием: ИНН, КПП, ОГРН, а также адресом и номером телефона.

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

Конструктор позволяет:

  • задать в табличном виде перечень полей из наборов, которые потребуются для формирования представления;
  • определить порядок полей при соединении;
  • указать “префикс”, то есть строковые данные, которые будут подставлены перед значением поля;
  • указать формат обработки значения из поля набора данных;
  • при этом поля, значения у которых отсутствуют не будут выведены (в том числе и префикс).

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

При формировании печатных форм также может потребоваться выполнить вложенную нумерацию.

Например, есть таблица:

Тип файлаИмя файлаСквозной №№ внутри типа
docxИмя файла11
docxИмя файла22
xlsxИмя файла31
xlsxИмя файла42

Поля “Тип файла”, “Имя файла” и “Сквозной №” были получены из запроса. А поле ”№ внутри типа” необходимо добавить для вывода в печатную форму.

Для этого можно добавить поле нумератора, с указанием поля критерия отбора “ТипФайла”. Таким образом, для каждого значения колонки “ТипФайла” будет выполнена своя сквозная нумерация согласно расположению строк в наборе.

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

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

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

Рис. Форма настройки соединения наборов данных

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

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

Рис. Форма настройки макета печатной формы

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

Для каждой области задается:

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

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

Для параметра макета необходимо указать тип источника данных:

ТипОписание
Значение набораУказывается поле из доступных для данной области наборов данных
Конструктор строкиНастройка “конструирования” строки представления. Механизм аналогичен полю представления из полей наборов данных
Произвольный алгоритмВозможность задать собственный алгоритм вычисления значения поля, при помощи языка платформы 1С
Данные QR-кодаКонструктор данных для создания QR-кода (по формату УФЭБС или произвольному набору данных)
Сумма прописьюКонструктор данных для формирования суммы прописью с учетом валюты

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

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

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

Форма настройки обработчиков событий конструктора

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

Функции позволяют более гибко подходить к разработке печатных форм: разделять сложные методы на отдельные части.

Форма добавления функций в макет