XML-схема печатной формы
Содержание
- Описание
- Структура документа
- Template
- Objects — объекты метаданных
- Queries — запросы
- Datasets — наборы данных
- Areas — области шаблона
- Joins — соединения наборов
- Parameters — входные параметры
- Events — события жизненного цикла
- Functions — пользовательские функции
- AvailableFields — доступные поля
- Типы значений Field.*
- Перечисления
Начиная с версии 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>
| Атрибут | Описание |
|---|---|
ResultType | ValueTable — обычный запрос; TempTable — временная таблица |
TempTable | Имя временной таблицы (если ResultType = TempTable) |
Invalid | true если в запросе обнаружены ошибки |
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 | Тип набора — см. перечисление |
SourceType | Query / Object / Algorithm |
UseInTemplate | Использовать поля набора в шаблоне |
Dataset.Field — типы полей
Значение Type | Описание |
|---|---|
Dataset | Поле из запроса или источника данных |
Description | Составное строковое представление (несколько реквизитов в одной ячейке) |
Numerator | Автоматическая нумерация строк |
Algorithm | Вычисляемое поле (код на 1С) |
Attribute | Дополнительное свойство объекта (БСП) |
ContactInfo | Контактная информация (БСП) |
Function | Пользовательская функция макета |
QRCode | QR-код |
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 |
QRCode | QR-код | 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 | Тип параметра — см. перечисление |
UseInTemplate | true — параметр доступен напрямую в ячейках шаблона без привязки к набору |
<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>
| Атрибут / Элемент | Описание |
|---|---|
DatasetKey | UUID набора данных |
DatasetFieldKey | UUID поля внутри набора |
DatasetFieldName | Имя поля (для читаемости) |
IsRowField | true — поле принадлежит строке коллекции (Collection) |
IsQueryField | true — поле является вложенным реквизитом ссылочного поля |
IsFunction | true — к значению применяется функция даты |
AggregateFunction | Агрегатная функция: Sum, Count, Max, Min, Avg |
JoinKey | UUID соединения (если поле из правого набора соединения) |
<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 | Год |