XML-схема печатной формы

Содержание
  1. Описание
  2. Структура документа
  3. Template
    1. Template / Attributes
  4. Objects — объекты метаданных
  5. Queries — запросы
  6. Datasets — наборы данных
    1. Dataset.Field — типы полей
  7. Areas — области шаблона
    1. Area.Parameter — типы привязки ячейки
  8. Joins — соединения наборов
  9. Parameters — входные параметры
  10. Events — события жизненного цикла
  11. Functions — пользовательские функции
  12. AvailableFields — доступные поля
  13. Типы значений Field.*
    1. Field.Dataset — поле из набора данных
    2. Field.Description — составное представление
    3. Field.SumInWords — сумма прописью
    4. Field.QRCode — QR-код
    5. Field.Function — произвольный алгоритм
    6. Field.Attribute — дополнительное свойство (БСП)
    7. Field.ContactInfo — контактная информация (БСП)
  14. Перечисления
    1. Kind — вид объекта
    2. Dataset.Type — тип набора
    3. Area.Method — способ вывода
    4. Area.Settings — настройка вывода
    5. QRCode.Type — тип QR-кода
    6. Event.Name — события жизненного цикла
    7. Query.ResultType — тип результата запроса
    8. Parameter.Type — тип входного параметра
    9. Field.Dataset.Functions — функции дат

Начиная с версии 2025.2 для формирования печатных форм, а также для обмена данными используется унифицированная XML-схема печатной формы.

Описание

Макеты PrintWizard экспортируются и импортируются в формате XML, соответствующем схеме версии 6.1 (http://printwizard.ru/export/v6.1). Эта страница описывает структуру XML и допустимые значения перечислений.

Структура документа

XML-файл макета содержит единственный корневой элемент Template со всеми вложенными коллекциями:

Template
├── Attributes              — реквизиты макета (название, флаги)
├── Properties[]            — произвольные свойства (ключ–значение)
├── Objects[]               — объекты метаданных 1С
│     └── Command           — настройка команды печати
├── Queries[]               — запросы к данным
│     └── Fields[]          — поля запроса
├── Datasets[]              — наборы данных
│     ├── Source            — источник данных
│     └── Fields[]          — поля набора
├── Joins[]                 — соединения наборов
│     └── Fields[]          — пары полей соединения
├── Parameters[]            — входные параметры печати
├── PrintParameters[]       — параметры страницы (поля, ориентация…)
├── Areas[]                 — области шаблона
│     └── Parameters[]      — параметры ячеек (привязка к данным)
├── Events[]                — обработчики событий жизненного цикла
├── Functions[]             — пользовательские функции
│     └── Parameters[]      — параметры функции
├── AvailableFields[]       — вычисляемый список доступных полей
├── DataLinks[]             — связи между таблицами схемы
├── PrintTemplate           — шаблон (base64: MXL или XLSX/DOCX)
└── Variants[]              — варианты печати
      ├── PrintParameters[]
      ├── Areas[]
      ├── Events[]
      └── PrintTemplate

Template

Корневой элемент макета.

<Template pw_type="Template"
          Key="e7a1c3b2-..."
          Name="РеализацияТоваровУслуг">

  <Attributes IsRegistry="false" IsOfficeOpenXML="false">
    <Presentation>Счёт на оплату</Presentation>
    <Description>Счёт на оплату покупателю</Description>
  </Attributes>

  <Objects>...</Objects>
  <Queries>...</Queries>
  <Datasets>...</Datasets>
  <Parameters>...</Parameters>
  <Areas>...</Areas>
  <AvailableFields>...</AvailableFields>

</Template>
АтрибутОбязателенОписание
KeyУникальный идентификатор макета (UUID)
Name Внутреннее имя макета
pw_type Всегда Template

Template / Attributes

Атрибут / ЭлементОбязателенОписание
IsRegistryМакет является реестром (многострочный список)
IsOfficeOpenXMLШаблон в формате Office Open XML (DOCX/XLSX)
ExtKey Внешний ключ для интеграции
<Presentation>Краткое наименование (отображается в списке)
<Description> Полное наименование
<Code> Уникальный код макета
<Comment> Комментарий разработчика

Objects — объекты метаданных

Каждый элемент Objects описывает объект 1С, для которого создана печатная форма.

<Objects pw_type="Object"
         Number="1"
         Key="a1b2c3d4-..."
         Kind="Документы"
         Name="РеализацияТоваровУслуг"
         FullName="Документы.РеализацияТоваровУслуг"
         UseCommand="true">
  <Command Id="print_cmd_1" Order="1"
           Presentation="Счёт на оплату"
           CheckPosting="false"
           SkipPreview="false"/>
</Objects>
АтрибутОписание
KindВид коллекции метаданных — см. перечисление
FullNameПолное имя: Документы.РеализацияТоваровУслуг
UseCommandСоздавать команду в меню «Печать»

Queries — запросы

Запрос содержит текст на языке запросов 1С и список полей результата.

<Queries pw_type="Query"
         Number="1"
         Key="b2c3d4e5-..."
         Name="QueryGoods"
         ResultType="ValueTable"
         TempTable=""
         Invalid="false"
         NotFilterByRef="false">
  <Text>ВЫБРАТЬ
    Строки.Номенклатура КАК Номенклатура,
    Строки.Количество  КАК Количество,
    Строки.Сумма       КАК Сумма
  ИЗ Документы.РеализацияТоваровУслуг.Товары КАК Строки
  ГДЕ Строки.Ссылка В (&МассивОбъектов)</Text>
  <Errors/>
  <Guidelines/>
  <Fields>
    <Fields pw_type="Query.Field" Key="c1-..." Name="Номенклатура" Field="Номенклатура"/>
    <Fields pw_type="Query.Field" Key="c2-..." Name="Количество"   Field="Количество"/>
    <Fields pw_type="Query.Field" Key="c3-..." Name="Сумма"        Field="Сумма"/>
  </Fields>
</Queries>
АтрибутОписание
ResultTypeValueTable — обычный запрос; TempTable — временная таблица
TempTableИмя временной таблицы (если ResultType = TempTable)
Invalidtrue если в запросе обнаружены ошибки
NotFilterByRefНе применять стандартный отбор по ссылке объекта

Datasets — наборы данных

Набор данных связывает запрос с областью шаблона и описывает состав полей.

<Datasets pw_type="Dataset"
          Number="1"
          Key="d1e2f3a4-..."
          Name="DSGoods"
          Type="Collection"
          SourceType="Query"
          UseInTemplate="true">
  <Source pw_type="DataSource" Type="Query" QueryKey="b2c3d4e5-..."/>
  <Fields>
    <Fields pw_type="Dataset.Field" Key="f1-..." Name="Номенклатура" Type="Dataset"/>
    <Fields pw_type="Dataset.Field" Key="f2-..." Name="Количество"   Type="Dataset"/>
    <Fields pw_type="Dataset.Field" Key="f3-..." Name="НомерСтроки"  Type="Numerator"/>
  </Fields>
</Datasets>
АтрибутОписание
TypeТип набора — см. перечисление
SourceTypeQuery / Object / Algorithm
UseInTemplateИспользовать поля набора в шаблоне

Dataset.Field — типы полей

Значение TypeОписание
DatasetПоле из запроса или источника данных
DescriptionСоставное строковое представление (несколько реквизитов в одной ячейке)
NumeratorАвтоматическая нумерация строк
AlgorithmВычисляемое поле (код на 1С)
AttributeДополнительное свойство объекта (БСП)
ContactInfoКонтактная информация (БСП)
FunctionПользовательская функция макета
QRCodeQR-код

Areas — области шаблона

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

<Areas pw_type="Area"
       Number="1"
       Key="e1f2a3b4-..."
       Name="Header"
       PrintMethod="Single"
       DatasetKey="..."
       Order="1">
  <Parameters>
    <Parameters pw_type="Area.Parameter"
                Key="p1-..."
                Name="Контрагент"
                Type="Dataset"
                IsPicture="false"
                IsDetails="false">
      <Value pw_type="Field.Dataset"
             DatasetKey="..."
             DatasetFieldKey="..."
             DatasetFieldName="Контрагент"
             IsRowField="false"/>
      <Presentation/>
    </Parameters>

    <Parameters pw_type="Area.Parameter"
                Key="p2-..."
                Name="ИтогоПрописью"
                Type="SumInWords"
                IsPicture="false"
                IsDetails="false">
      <Value pw_type="Field.SumInWords">
        <NumberField pw_type="Field.Dataset"
                     DatasetKey="..." DatasetFieldKey="..."
                     DatasetFieldName="СуммаДокумента"/>
        <CurrencyDefault>RUB</CurrencyDefault>
        <NoFractions>false</NoFractions>
        <FormatString/>
        <Parameters/>
      </Value>
      <Presentation/>
    </Parameters>
  </Parameters>
</Areas>
АтрибутОписание
PrintMethodСпособ вывода — см. перечисление
PrintSettingsДополнительная настройка — см. перечисление
DatasetKeyКлюч связанного набора данных (обязателен для Collection)
OrderПорядок вывода области

Area.Parameter — типы привязки ячейки

Значение TypeОписаниеТип значения <Value>
DatasetПоле из набора данныхField.Dataset
DescriptionСоставное представлениеField.Description
AlgorithmПроизвольный код 1СField.Function
SumInWordsСумма прописьюField.SumInWords
QRCodeQR-кодField.QRCode

Joins — соединения наборов

Соединение связывает два набора данных по ключевым полям — аналог JOIN в SQL. Используется когда данные из двух запросов нужно объединить в одну строку вывода.

<Joins pw_type="Join"
       Number="1"
       Key="j1a2b3c4-..."
       Name="JoinContractor"
       Type="FirstRow"
       LeftDatasetKey="d1e2f3a4-..."
       RightDatasetKey="d5e6f7a8-...">
  <Fields>
    <Fields pw_type="Join.Field"
            LeftFieldKey="f1-..."
            RightFieldKey="f9-..."/>
  </Fields>
</Joins>
АтрибутОбязателенОписание
TypeТип соединения — то же перечисление что у Dataset.Type
LeftDatasetKeyКлюч левого (основного) набора данных
RightDatasetKeyКлюч правого (присоединяемого) набора данных

Каждый элемент Fields внутри Joins содержит пару ключей:

АтрибутОписание
LeftFieldKeyКлюч поля из левого набора
RightFieldKeyКлюч поля из правого набора

После создания соединения поля правого набора становятся доступны по пути НаборыДанных.[ЛевыйНабор].[ИмяСоединения].[Поле].


Parameters — входные параметры

Входные параметры передаются в макет при вызове печати. Стандартный параметр МассивОбъектов добавляется автоматически.

<Parameters pw_type="Parameter"
            Key="pm1-..."
            Name="НачалоПериода"
            Type="Value"
            UseInTemplate="false">
  <Datatypes>Дата</Datatypes>
  <Value/>
  <Presentation/>
</Parameters>
Атрибут / ЭлементОписание
TypeТип параметра — см. перечисление
UseInTemplatetrue — параметр доступен напрямую в ячейках шаблона без привязки к набору
<Datatypes>Тип данных значения
<Value>Значение по умолчанию
<Presentation>Строковое представление значения по умолчанию

Events — события жизненного цикла

События позволяют выполнять произвольный код на 1С в определённые моменты формирования печатной формы.

<Events pw_type="Event" Name="BeforeFormation">
  <Algorithm>
    // Код на встроенном языке 1С
    Если НЕ ЗначениеЗаполнено(МассивОбъектов) Тогда
        Отказ = Истина;
    КонецЕсли;
  </Algorithm>
</Events>

Элемент Events содержит единственный дочерний элемент <Algorithm> с кодом на встроенном языке 1С. Допустимые значения атрибута Name — см. перечисление.


Functions — пользовательские функции

Функции макета содержат повторно используемый код, доступный из алгоритмов и параметров областей.

<Functions pw_type="Function"
           Key="fn1-..."
           Name="ФорматДаты">
  <Description>Форматирует дату в строку вида «дд месяц гггг г.»</Description>
  <Algorithm>
    Дата = Параметры.Дата;
    Возврат Формат(Дата, "ДЛФ=D");
  </Algorithm>
  <Parameters>
    <Parameters pw_type="Function.Parameter"
                Number="1"
                Key="fnp1-..."
                Name="Дата">
      <Description>Дата для форматирования</Description>
      <Datatypes>Дата</Datatypes>
    </Parameters>
  </Parameters>
</Functions>
Элемент / АтрибутОписание
<Description>Описание назначения функции
<Algorithm>Тело функции на встроенном языке 1С
<Parameters>Список параметров функции
Parameters.NameИмя параметра — доступен внутри алгоритма как Параметры.ИмяПараметра
Parameters.NumberПорядковый номер параметра (1-based)

AvailableFields — доступные поля

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

<AvailableFields pw_type="AvailableField"
                 Key="af1-..."
                 Path="НаборыДанных.DSGoods.Строка.Номенклатура"
                 DatasetKey="d1e2f3a4-..."
                 DatasetFieldKey="f1-..."
                 DatasetFieldName="Номенклатура"
                 IsRowField="true">
  <Presentation>Номенклатура</Presentation>
  <Datatypes>СправочникСсылка.Номенклатура</Datatypes>
</AvailableFields>

Пути строятся по следующим шаблонам:

Тип набораШаблон пути
FirstRow / LastRow / ConcatenationНаборыДанных.[Набор].[Поле]
Collection — поле строкиНаборыДанных.[Набор].Строка.[Поле]
Collection — итогНаборыДанных.[Набор].Итог.[Поле]
Collection — количество строкНаборыДанных.[Набор].КоличествоСтрок
Через соединениеНаборыДанных.[Набор].[Соединение].[Поле]

Типы значений Field.*

Каждый параметр области (Area.Parameter) и поле набора данных содержат элемент <Value>, тип которого определяется атрибутом pw_type. Ниже описаны все возможные структуры значений.


Field.Dataset — поле из набора данных

Самый распространённый тип. Указывает на конкретное поле конкретного набора.

<Value pw_type="Field.Dataset"
       DatasetKey="d1e2f3a4-..."
       DatasetFieldKey="f1-..."
       DatasetFieldName="Номенклатура"
       IsRowField="true"
       IsQueryField="false"
       IsFunction="false">
  <!-- опционально: вложенный реквизит ссылочного поля -->
  <QueryField>Наименование</QueryField>
  <!-- опционально: функция над датой -->
  <FunctionName>BegOfMonth</FunctionName>
  <Datatypes>СправочникСсылка.Номенклатура</Datatypes>
</Value>
Атрибут / ЭлементОписание
DatasetKeyUUID набора данных
DatasetFieldKeyUUID поля внутри набора
DatasetFieldNameИмя поля (для читаемости)
IsRowFieldtrue — поле принадлежит строке коллекции (Collection)
IsQueryFieldtrue — поле является вложенным реквизитом ссылочного поля
IsFunctiontrue — к значению применяется функция даты
AggregateFunctionАгрегатная функция: Sum, Count, Max, Min, Avg
JoinKeyUUID соединения (если поле из правого набора соединения)
<QueryField>Имя вложенного реквизита (например Наименование у поля Контрагент)
<FunctionName>Функция над датой — см. перечисление

Field.Description — составное представление

Объединяет несколько полей в одну строку с префиксами и окончаниями. Используется когда в одной ячейке нужно вывести несколько реквизитов, например ИНН: 7701234567, КПП: 770101001.

<Value pw_type="Field.Description">
  <Row pw_type="Field.Description.Row" Number="1"
       Prefix="ИНН: " Ending=", ">
    <SourceField pw_type="Field.Dataset"
                 DatasetKey="..." DatasetFieldKey="..."
                 DatasetFieldName="ИНН"/>
  </Row>
  <Row pw_type="Field.Description.Row" Number="2"
       Prefix="КПП: " Ending="">
    <SourceField pw_type="Field.Dataset"
                 DatasetKey="..." DatasetFieldKey="..."
                 DatasetFieldName="КПП"/>
  </Row>
</Value>

Каждый элемент Row описывает одну часть составной строки:

Атрибут / ЭлементОписание
NumberПорядковый номер части (1-based)
PrefixТекст перед значением, например "ИНН: "
EndingТекст после значения, например ", "
<SourceField>Источник значения — структура Field.Dataset
<Format>Форматирование значения — структура Format

Field.SumInWords — сумма прописью

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

<Value pw_type="Field.SumInWords">
  <NumberField pw_type="Field.Dataset"
               DatasetKey="..." DatasetFieldKey="..."
               DatasetFieldName="СуммаДокумента"/>
  <CurrencyField pw_type="Field.Dataset"
                 DatasetKey="..." DatasetFieldKey="..."
                 DatasetFieldName="Валюта"/>
  <CurrencyDefault>RUB</CurrencyDefault>
  <NoFractions>false</NoFractions>
  <FormatString/>
  <Parameters/>
</Value>
ЭлементОписание
<NumberField>Источник числового значения суммы — структура Field.Dataset
<CurrencyField>Источник валюты — структура Field.Dataset. Если не указан, используется CurrencyDefault
<CurrencyDefault>Валюта по умолчанию в ISO 4217: RUB, USD, EUR, KZT и др.
<NoFractions>true — не выводить копейки / центы
<FormatString>Строка форматирования (переопределяет стандартный вывод)
<Parameters>Дополнительные параметры функции прописью

Field.QRCode — QR-код

Генерирует QR-код из данных. Поддерживает несколько форматов, включая УФЭБС для платёжных реквизитов.

<Value pw_type="Field.QRCode"
       Type="JSON"
       Accuracy="0"
       Size="200">
  <Algorithm/>
  <Rows>
    <Rows pw_type="Field.QRCode.Row" Name="ИНН">
      <SourceField pw_type="Field.Dataset"
                   DatasetKey="..." DatasetFieldKey="..."
                   DatasetFieldName="ИНН"/>
    </Rows>
    <Rows pw_type="Field.QRCode.Row" Name="Сумма">
      <SourceField pw_type="Field.Dataset"
                   DatasetKey="..." DatasetFieldKey="..."
                   DatasetFieldName="Сумма"/>
    </Rows>
  </Rows>
</Value>
Атрибут / ЭлементОписание
TypeФормат QR-кода — см. перечисление
AccuracyУровень коррекции ошибок (0–3)
SizeРазмер изображения в пикселях
<Algorithm>Код на 1С для формирования данных (если Type = Algorithm)
<Rows>Список полей для QR-кода (если Type = Bank, XML или JSON)
Rows.NameИмя поля в структуре QR-кода
Rows.<SourceField>Источник значения поля — структура Field.Dataset
Rows.<Format>Форматирование значения перед кодированием

Field.Function — произвольный алгоритм

Вычисляемое значение — произвольный код на встроенном языке 1С. Результат функции подставляется в ячейку.

<Value pw_type="Field.Function">
  <Algorithm>
    Возврат Формат(ТекущаяДата(), "ДЛФ=D");
  </Algorithm>
</Value>

Внутри алгоритма доступны все данные макета: наборы, параметры, глобальные переменные формирования.


Field.Attribute — дополнительное свойство (БСП)

Значение дополнительного реквизита или свойства объекта из подсистемы БСП («Свойства»).

<Value pw_type="Field.Attribute"
       AttrSetId="..."
       AttrSetName="НастройкиКонтрагентов"
       AttrId="..."
       AttrName="КатегорияКлиента"
       AttrDescription="Категория клиента">
  <AttrSetDescription>Настройки контрагентов</AttrSetDescription>
  <AttrIdDev>КатегорияКлиента</AttrIdDev>
  <SourceField pw_type="Field.Dataset"
               DatasetKey="..." DatasetFieldKey="..."
               DatasetFieldName="Контрагент"/>
</Value>
Атрибут / ЭлементОписание
AttrSetId / AttrSetNameИдентификатор и имя набора дополнительных реквизитов
AttrId / AttrNameИдентификатор и имя конкретного реквизита
AttrDescriptionПредставление реквизита для пользователя
<SourceField>Поле-владелец реквизита (например, ссылка на контрагента)

Field.ContactInfo — контактная информация (БСП)

Значение контактной информации объекта из подсистемы БСП («Контактная информация»): телефон, адрес, email и т.п.

<Value pw_type="Field.ContactInfo"
       KindParentId="..."
       KindParentName="Контрагенты"
       KindId="..."
       KindName="ЮридическийАдрес"
       KindDescription="Юридический адрес">
  <KindIdDev>ЮридическийАдрес</KindIdDev>
  <KindNamePredefined/>
  <SourceField pw_type="Field.Dataset"
               DatasetKey="..." DatasetFieldKey="..."
               DatasetFieldName="Контрагент"/>
  <PeriodField pw_type="Field.Dataset"
               DatasetKey="..." DatasetFieldKey="..."
               DatasetFieldName="Дата"/>
</Value>
Атрибут / ЭлементОписание
KindParentId / KindParentNameВладелец вида контактной информации
KindId / KindNameИдентификатор и имя вида (например ЮридическийАдрес)
KindDescriptionПредставление для пользователя
<SourceField>Поле-объект, для которого запрашивается контактная информация
<PeriodField>Поле с датой актуальности (опционально)

Перечисления

Kind — вид объекта

Допустимые значения атрибута Kind у элемента Objects:

Справочники · Документы · БизнесПроцессы · Задачи · РегистрыБухгалтерии · РегистрыСведений · РегистрыНакопления · ПланыСчетов · ПланыВидовХарактеристик · Перечисления · Константы · КритерииОтбора · ЖурналыДокументов · ПланыОбмена · ПланыВидовРасчета · РегистрыРасчета · Перерасчеты · ВнешниеИсточникиДанных · НумераторыДокументов · Последовательности


Dataset.Type — тип набора

ЗначениеОписание
FirstRowБерётся только первая строка результата
LastRowБерётся только последняя строка
ConcatenationСтроки объединяются в одно значение
CollectionМногострочная коллекция — цикл по каждой строке

Area.Method — способ вывода

ЗначениеОписание
SingleБез повторений — вывести один раз
CollectionПо строкам коллекции — цикл по набору
HeaderВерхний колонтитул (повторяется на каждой странице)
FooterНижний колонтитул (повторяется на каждой странице)
WrapПеренос строки
SkipНе выводить
ColumnКолонка
ControlRowКонтрольная строка
WrapRowСтрока переноса
EmptyПустая область

Area.Settings — настройка вывода

ЗначениеОписание
NewSectionНачать новый раздел (разрыв страницы перед областью)
RepeatInHeaderПовторять в шапке каждой страницы
RepeatInFooterПовторять в подвале каждой страницы
CheckPrintПроверять необходимость вывода перед выводом области

QRCode.Type — тип QR-кода

ЗначениеОписание
BankУФЭБС (стандарт быстрого платежа)
XMLПроизвольный XML
JSONПроизвольный JSON
AlgorithmПроизвольный алгоритм на 1С

Event.Name — события жизненного цикла

ЗначениеКогда срабатывает
BeforeInitializationПеред инициализацией макета
OnDataReceivingПри получении данных
BeforeFormationПеред началом формирования
BeforePageOutputПеред выводом каждой страницы
BeforeAreaOutputПеред выводом каждой области
AfterAreaOutputПосле вывода области
AfterPageOutputПосле вывода страницы
AfterFormationПосле завершения формирования

Query.ResultType — тип результата запроса

ЗначениеОписание
ValueTableОбычный запрос, результат используется как набор данных
TempTableВременная таблица — промежуточный результат для других запросов

Parameter.Type — тип входного параметра

ЗначениеОписание
ValueЕдинственное значение
ListСписок значений
TableТаблица значений
AlgorithmВычисляется алгоритмом

Field.Dataset.Functions — функции дат

Применяются к полям типа Дата через атрибут IsFunction = true и элемент <FunctionName>:

ЗначениеОписание
BegOfMinute / EndOfMinuteНачало / конец минуты
BegOfHour / EndOfHourНачало / конец часа
BegOfDay / EndOfDayНачало / конец дня
BegOfWeek / EndOfWeekНачало / конец недели
BegOfMonth / EndOfMonthНачало / конец месяца
BegOfQuarter / EndOfQuarterНачало / конец квартала
BegOfYear / EndOfYearНачало / конец года
SecondСекунда
MinuteМинута
HourЧас
DayДень месяца
WeekDayДень недели (1 = понедельник)
DayOfYearДень года
WeekOfYearНеделя года
MonthМесяц
YearГод