# Спецификация XML-формата схемы компоновки данных 1С (DCS)
Спецификация формата `DataCompositionSchema` — макетов типа «Схема компоновки данных» в конфигурации 1С:Предприятие 8.3.
Составлена на основе анализа 930 схем конфигурации «Бухгалтерия предприятия 3.0.180» (платформа 8.3.24).
---
## 0. Файловая структура
### Два файла на каждую схему
```
<Объект>/Templates/
ИмяМакета.xml ← метаданные (UUID, имя, TemplateType)
ИмяМакета/
Ext/
Template.xml ← тело схемы (DataCompositionSchema)
```
Типичные имена макетов: `ОсновнаяСхемаКомпоновкиДанных`, `СхемаКомпоновкиДанных`, произвольные.
### Метаданные макета — шаблон
```xml
ОсновнаяСхемаКомпоновкиДанных
ru
Основная схема компоновки данных
DataCompositionSchema
```
Значение `TemplateType` для DCS всегда: **`DataCompositionSchema`**.
### Где встречаются DCS-макеты
| Тип объекта метаданных | Частота | Примечание |
|---|---|---|
| Reports (Отчёты) | ~420 | Основное место — каждый отчёт СКД |
| DataProcessors (Обработки) | ~11 | Обработки с отчётными функциями |
| Enums (Перечисления) | ~20 | Дополнительные ссылки |
| Catalogs (Справочники) | ~5 | Запросы к справочным данным |
| DocumentJournals | ~4 | Журналы документов |
| CommonTemplates | ~3 | Общие макеты |
| InformationRegisters | ~2 | Регистры сведений |
| Documents (Документы) | ~1 | Редко |
---
## 1. Пространства имён
Корневой элемент — ``.
```xml
```
| Префикс | URI | Назначение |
|---|---|---|
| *(default)* | `.../data-composition-system/schema` | Элементы схемы (dataSource, dataSet, field, parameter, ...) |
| `dcscom` | `.../data-composition-system/common` | Общие типы СКД (dimension, account, role, ...) |
| `dcscor` | `.../data-composition-system/core` | Ядро СКД (Field, SettingsParameterValue, ChoiceParameterLinks, ...) |
| `dcsset` | `.../data-composition-system/settings` | Настройки варианта (selection, filter, order, group, ...) |
| `v8` | `.../data/core` | Типы данных ядра (LocalStringType, Type, StandardPeriod, ...) |
| `v8ui` | `.../data/ui` | UI-типы (HorizontalAlign, ...) |
| `xs` | `.../XMLSchema` | Стандартные XSD-типы (string, dateTime, boolean, decimal, ...) |
| `xsi` | `.../XMLSchema-instance` | Атрибуты экземпляра (xsi:type, xsi:nil) |
Дополнительные пространства имён (появляются в `settingsVariant`):
| Префикс | URI | Где |
|---|---|---|
| `style` | `http://v8.1c.ru/8.1/data/ui/style` | В settings — стили оформления |
| `sys` | `http://v8.1c.ru/8.1/data/ui/fonts/system` | В settings — системные шрифты |
| `web` | `http://v8.1c.ru/8.1/data/ui/colors/web` | В settings — веб-цвета |
| `win` | `http://v8.1c.ru/8.1/data/ui/colors/windows` | В settings — цвета Windows |
---
## 2. Общая структура DataCompositionSchema
Элементы верхнего уровня (порядок фиксирован):
```
DataCompositionSchema
├── dataSource* — источники данных (раздел 3)
├── dataSet* — наборы данных (раздел 4)
├── dataSetLink* — связи между наборами (раздел 5)
├── calculatedField* — вычисляемые поля (раздел 6)
├── totalField* — итоговые поля (раздел 7)
├── parameter* — параметры схемы (раздел 8)
├── template* — макеты областей (раздел 9)
├── groupTemplate* — привязки макетов группировок (раздел 10)
├── settingsVariant* — варианты настроек (раздел 11)
```
`*` — 0..N элементов.
Минимальная DCS содержит: 1 dataSource + 1 dataSet + 1 settingsVariant.
---
## 3. Источники данных (dataSource)
```xml
ИсточникДанных1
Local
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `name` | да | Уникальное имя, на которое ссылаются наборы данных |
| `dataSourceType` | да | Тип: `Local` (текущая информационная база) или `External` (внешний) |
В подавляющем большинстве случаев — один источник `Local`. Имя произвольное: `ИсточникДанных1`, `ИнформационнаяБаза` и т.п.
---
## 4. Наборы данных (dataSet)
Тип набора определяется атрибутом `xsi:type`. Три типа:
### 4.1. DataSetQuery — запрос
Самый распространённый тип. Содержит SQL-подобный запрос на языке 1С.
```xml
НаборДанных1
...
ИсточникДанных1
ВЫБРАТЬ ... ИЗ ...
false
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `name` | да | Уникальное имя набора |
| `field` | нет | Описания полей (раздел 4.4) |
| `dataSource` | да | Ссылка на имя dataSource |
| `query` | да | Текст запроса на языке 1С (XML-экранирование: `&` для `&`, `>` для `>`) |
| `autoFillFields` | нет | `false` — отключить автозаполнение полей из запроса (по умолчанию `true`) |
#### Особенности запросов в DCS
- Параметры: `&ИмяПараметра` (в XML: `&ИмяПараметра`)
- Авторазметка полей в фигурных скобках: `{ВЫБРАТЬ ...}`, `{ГДЕ ...}`, `{ЛЕВОЕ СОЕДИНЕНИЕ ...}` — позволяют СКД автоматически модифицировать запрос
- Пакетные запросы: несколько запросов через `; ////////////////`
- Временные таблицы: `ПОМЕСТИТЬ ИмяВТ`, `ИНДЕКСИРОВАТЬ ПО`
### 4.2. DataSetObject — объект
Данные берутся из программно заполненной таблицы значений.
```xml
НаборДанных1
...
ИсточникДанных1
ТаблицаПроверки
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `objectName` | да | Имя объекта (таблицы значений), передаваемого программно |
### 4.3. DataSetUnion — объединение
Объединяет поля из нескольких наборов. Сам не содержит запросов — объединяет подчинённые наборы.
```xml
РасчетНалога
...
-
ДанныеПоСтоимости
...
-
ДанныеПоКадастру
...
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `field` | нет | Поля объединения (описывают результирующие колонки) |
| `item` | да | Вложенные наборы (DataSetQuery или другие) |
### 4.4. Поля набора данных (field)
Каждое поле — элемент ``:
```xml
ОстаточнаяСтоимость
ОстаточнаяСтоимость
ru
Остаточная стоимость
true
true
xs:string
11
Variable
Формат
ЧДЦ=2
...
...
```
#### Элементы поля
| Элемент | Обязат. | Описание |
|---|---|---|
| `dataPath` | да | Путь к данным (имя поля в результате СКД). Через точку — реквизиты: `Номенклатура.Артикул` |
| `field` | да | Имя поля в запросе (может отличаться от dataPath) |
| `title` | нет | Локализованный заголовок (`v8:LocalStringType`) |
| `useRestriction` | нет | Ограничения использования поля (раздел 4.5) |
| `attributeUseRestriction` | нет | Ограничения использования реквизитов поля (раздел 4.5) |
| `role` | нет | Роль поля в СКД (раздел 4.6) |
| `valueType` | нет | Тип значения поля (раздел 4.7) |
| `appearance` | нет | Оформление — список параметров `dcscor:item` (раздел 4.8) |
| `inputParameters` | нет | Параметры ввода / связи параметров выбора (раздел 4.9) |
| `presentationExpression` | нет | Выражение для формирования представления (на языке 1С) |
### 4.5. Ограничения использования поля (useRestriction / attributeUseRestriction)
```xml
true
true
true
true
```
Каждый подэлемент — `true`/`false` (по умолчанию `false` = разрешено). Можно указывать подмножество.
`attributeUseRestriction` — аналогичная структура, применяется к реквизитам (дочерним полям) поля.
### 4.6. Роли полей (role)
```xml
true
true
Счет.Вид
```
| Подэлемент | Описание |
|---|---|
| `dcscom:dimension` | Поле является измерением (`true`/`false`) |
| `dcscom:account` | Поле является счётом |
| `dcscom:accountTypeExpression` | Выражение для определения типа счёта |
| `dcscom:balance` | Поле является остатком |
| `dcscom:balanceGroup` | Группа остатка |
| `dcscom:periodNumber` | Номер периода (обычно `1`) |
| `dcscom:periodType` | Тип периода (`Main`, `Additional`) |
### 4.7. Тип значения (valueType)
```xml
xs:string
11
Variable
```
Типы: `xs:string`, `xs:dateTime`, `xs:decimal`, `xs:boolean`, ссылочные типы конфигурации.
Ссылочные типы объявляются с inline namespace на элементе ``:
```xml
d5p1:CatalogRef.Номенклатура
```
Префикс (`d5p1`, `d4p1` и т.д.) — автогенерируемый, суть в URI `http://v8.1c.ru/8.1/data/enterprise/current-config`. Поддерживаются: `CatalogRef`, `DocumentRef`, `EnumRef`, `ChartOfAccountsRef`, `ChartOfCharacteristicTypesRef` и др.
Квалификаторы:
- `v8:StringQualifiers` → `v8:Length`, `v8:AllowedLength` (Fixed/Variable)
- `v8:DateQualifiers` → `v8:DateFractions` (Date/Time/DateTime)
- `v8:NumberQualifiers` → `v8:Digits`, `v8:FractionDigits`, `v8:AllowedSign` (Any/Nonnegative)
### 4.8. Оформление полей (appearance)
Список параметров оформления:
```xml
Формат
ЧДЦ=2
ГоризонтальноеПоложение
Center
```
Типичные параметры оформления:
| Параметр | Тип значения | Пример |
|---|---|---|
| `Формат` | `xs:string` | `ЧДЦ=2`, `ЧГ=0`, `ЧН=0`, `ДФ=dd.MM.yyyy`, `Л=ru; ДФ=ММММ` |
| `ГоризонтальноеПоложение` | `v8ui:HorizontalAlign` | `Left`, `Center`, `Right` |
### 4.9. Параметры ввода (inputParameters)
Связи параметров выбора для интерактивных полей:
```xml
СвязиПараметровВыбора
Отбор.Владелец
Организация
Clear
```
Используется для каскадных зависимостей в пользовательских настройках (например, подразделение зависит от организации).
---
## 5. Связи между наборами данных (dataSetLink)
Позволяют передавать параметры из одного набора в другой:
```xml
Периоды
ДанныеТ13
НачалоМесяца
Месяц
НачалоМесяца
false
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `sourceDataSet` | да | Имя набора-источника |
| `destinationDataSet` | да | Имя целевого набора |
| `sourceExpression` | да | Выражение из источника (поле или формула) |
| `destinationExpression` | да | Выражение для сопоставления в целевом наборе |
| `parameter` | нет | Имя параметра для передачи значения |
| `parameterListAllowed` | нет | Допустим ли список значений (`true`/`false`) |
---
## 6. Вычисляемые поля (calculatedField)
Поля, вычисляемые выражением на языке 1С (не из запроса):
```xml
УИД
БухгалтерскиеОтчеты.ПолучитьУИДСсылкиСтрокой(Номенклатура)
ru
Уникальный идентификатор
true
true
true
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `dataPath` | да | Путь к полю в результате |
| `expression` | да | Выражение на языке 1С (может вызывать методы общих модулей) |
| `title` | нет | Локализованный заголовок |
| `useRestriction` | нет | Ограничения использования (аналогично полям) |
| `valueType` | нет | Тип значения |
| `appearance` | нет | Оформление |
---
## 7. Итоговые поля (totalField)
Агрегатные функции для подведения итогов:
```xml
Количество
Сумма(Количество)
Цена
Максимум(Цена)
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `dataPath` | да | Путь к полю |
| `expression` | да | Агрегатная функция: `Сумма(...)`, `Количество(...)`, `Максимум(...)`, `Минимум(...)`, `Среднее(...)` |
| `group` | нет | Имя группировки, для которой считать итоги. Без `group` — для всех группировок |
### Разные формулы для разных группировок
Одно поле может иметь несколько записей `totalField` с разными формулами для разных группировок:
```xml
ПравоИнтерактивное
Максимум(ПравоИнтерактивное)
ОбъектМетаданных
ПравоИнтерактивное
Максимум(ПравоОтчета)
Отчет
```
Это позволяет вычислять ресурс по-разному в зависимости от контекста группировки.
---
## 8. Параметры схемы (parameter)
Параметры, доступные для задания пользователем или программно:
```xml
Период
ru
Период
v8:StandardPeriod
LastMonth
false
&Период.ДатаНачала
false
```
| Элемент | Обязат. | Описание |
|---|---|---|
| `name` | да | Имя параметра (используется в запросах как `&ИмяПараметра`) |
| `title` | нет | Локализованный заголовок |
| `valueType` | нет | Тип значения (раздел 4.7) |
| `value` | нет | Значение по умолчанию |
| `useRestriction` | нет | `true` — параметр скрыт от пользователя, `false` — доступен |
| `expression` | нет | Выражение для автоматического вычисления (например, `&Период.ДатаНачала`) |
| `availableAsField` | нет | `false` — параметр недоступен как поле в отчёте |
| `valueListAllowed` | нет | `true` — разрешает передавать список значений в параметр |
| `use` | нет | Режим: `Always` (всегда), `Auto` (автоматически) |
### Типы значений параметров
| Тип | XML-тип | Пример value |
|---|---|---|
| Дата | `xs:dateTime` | `0001-01-01T00:00:00` |
| Строка | `xs:string` | `Т13` |
| Стандартный период | `v8:StandardPeriod` | `LastMonth` |
| Ссылка | `d5p1:CatalogRef.ИмяСправочника` (с `xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config"`) | `xsi:nil="true"` |
| null | — | `xsi:nil="true"` |
Стандартные варианты периодов (`v8:StandardPeriodVariant`): `Custom`, `Today`, `ThisWeek`, `ThisMonth`, `ThisQuarter`, `ThisYear`, `LastMonth`, `LastQuarter`, `LastYear` и др.
---
## 9. Макеты областей (template)
Пользовательские шаблоны вывода (макеты ячеек):
```xml
Макет1
ТипЦены
ТипЦены
Представление(ТипЦен)
```
Пространство имён `dcsat`: `http://v8.1c.ru/8.1/data-composition-system/area-template`.
| Элемент | Описание |
|---|---|
| `name` | Имя макета (ссылаются groupTemplate) |
| `template` (вложенный) | Описание строк/ячеек (`dcsat:AreaTemplate`) |
| `parameter` (Expression) | Параметры макета (`dcsat:ExpressionAreaTemplateParameter`) — выражения для подстановки |
| `parameter` (Details) | Параметры расшифровки (`dcsat:DetailsAreaTemplateParameter`) — для drilldown |
#### DetailsAreaTemplateParameter
Параметр расшифровки — активирует drilldown при клике на ячейку:
```xml
Расшифровка_ПоступлениеСырья
ИмяРесурса
"ПоступлениеСырья"
DrillDown
```
Привязка к ячейке — через appearance `Расшифровка`:
```xml
Расшифровка
Расшифровка_ПоступлениеСырья
```
---
## 10. Привязки макетов группировок (groupTemplate, groupHeaderTemplate)
Связывают группировку с пользовательским макетом. Два XML-элемента:
- `` — шаблон строки данных (`Header`) и итогов (`OverallHeader`)
- `` — шаблон заголовка группировки (шапка таблицы)
```xml
ДанныеОтчета
Header
Макет1
Счет
Header
Макет2
```
| Элемент | Описание |
|---|---|
| `groupField` | Привязка к полю группировки |
| `groupName` | Привязка к именованной группировке в структуре варианта |
| `templateType` | `Header` (строки данных), `OverallHeader` (итоги) |
| `template` | Ссылка на имя template из раздела 9 |
---
## 11. Варианты настроек (settingsVariant)
Каждый вариант — именованная конфигурация отчёта. Отчёт может иметь несколько вариантов.
```xml
Основной
ru
Основной вариант отчёта
```
### 11.1. Структура settings
```
dcsset:settings
├── dcsset:selection — выбранные поля (раздел 11.2)
├── dcsset:filter — отборы (раздел 11.3)
├── dcsset:order — сортировка (раздел 11.4)
├── dcsset:conditionalAppearance — условное оформление (раздел 11.5)
├── dcsset:outputParameters — параметры вывода (раздел 11.6)
├── dcsset:dataParameters — значения параметров данных (раздел 11.7)
├── dcsset:item* — элементы структуры (раздел 11.8)
```
### 11.2. Выборка полей (selection)
```xml
ТипОбъекта
ru
Наименование
```
Типы элементов выборки:
- `dcsset:SelectedItemField` — конкретное поле (элемент `dcsset:field`)
- `dcsset:SelectedItemAuto` — автоматический подбор полей
### 11.3. Отборы (filter)
```xml
false
Организация
Equal
false
ru
Описание фильтра
Normal
GUID
```
Типы элементов фильтра:
- `dcsset:FilterItemComparison` — сравнение поля с значением
- `dcsset:FilterItemGroup` — группа условий (И/ИЛИ)
Типы сравнения (`comparisonType`):
| Значение | Описание |
|---|---|
| `Equal` | Равно |
| `NotEqual` | Не равно |
| `Greater` | Больше |
| `GreaterOrEqual` | Больше или равно |
| `Less` | Меньше |
| `LessOrEqual` | Меньше или равно |
| `InList` | В списке |
| `NotInList` | Не в списке |
| `InHierarchy` | В иерархии |
| `InListByHierarchy` | В списке по иерархии |
| `Contains` | Содержит |
| `NotContains` | Не содержит |
| `BeginsWith` | Начинается с |
| `NotBeginsWith` | Не начинается с |
| `Filled` | Заполнено |
| `NotFilled` | Не заполнено |
Значение правой части (`right`) — может содержать списки:
```xml
-1
```
### 11.4. Сортировка (order)
```xml
РазмерДанных
Desc
```
Типы элементов сортировки:
- `dcsset:OrderItemField` — по полю (`dcsset:field` + `dcsset:orderType`: `Asc`/`Desc`)
- `dcsset:OrderItemAuto` — автоматическая сортировка
### 11.5. Условное оформление (conditionalAppearance)
```xml
ИмяПоля
ИмяПоля
Equal
0
Текст
```
### 11.6. Параметры вывода (outputParameters)
```xml
false
Заголовок
ru
Текст заголовка
```
Типичные параметры вывода:
| Параметр | Тип значения | Описание |
|---|---|---|
| `Заголовок` | `v8:LocalStringType` | Заголовок отчёта |
| `МакетОформления` | `xs:string` | Имя макета оформления: `ОформлениеОтчетовЧерноБелый`, `Зеленый` и др. |
| `РасположениеПолейГруппировки` | `dcsset:DataCompositionGroupFieldsPlacement` | `Together`, `Separately`, `SeparatelyAndInGroups` |
| `РасположениеРеквизитов` | `dcsset:DataCompositionAttributesPlacement` | `Together`, `Separately`, `SeparatelyAndInGroups` |
| `ГоризонтальноеРасположениеОбщихИтогов` | `dcscor:DataCompositionTotalPlacement` | `None`, `Begin`, `End`, `Auto` |
| `ВертикальноеРасположениеОбщихИтогов` | `dcscor:DataCompositionTotalPlacement` | `None`, `Begin`, `End`, `Auto` |
| `ВыводитьЗаголовок` | `dcsset:DataCompositionTextOutputType` | `Auto`, `DontOutput`, `Output` |
| `ВыводитьПараметрыДанных` | `dcsset:DataCompositionTextOutputType` | То же |
| `ВыводитьОтбор` | `dcsset:DataCompositionTextOutputType` | То же |
### 11.7. Параметры данных (dataParameters)
Значения параметров схемы в конкретном варианте:
```xml
false
Период
LastMonth
Normal
GUID
```
| Элемент | Описание |
|---|---|
| `dcscor:use` | `true`/`false` — использовать значение или нет |
| `dcscor:parameter` | Имя параметра из раздела 8 |
| `dcscor:value` | Значение параметра |
| `dcsset:viewMode` | Режим отображения: `Normal`, `QuickAccess`, `Inaccessible` |
| `dcsset:userSettingID` | GUID пользовательской настройки |
### 11.8. Элементы структуры (structure items)
Структура отчёта — иерархия группировок, таблиц, диаграмм.
#### StructureItemGroup — группировка
```xml
Группировка
Организация
Items
None
0001-01-01T00:00:00
0001-01-01T00:00:00
...
...
```
Типы группировки (`groupType`): `Items`, `Hierarchy`, `HierarchyOnly`.
Типы дополнения периодом (`periodAdditionType`): `None`, `Year`, `HalfYear`, `Quarter`, `Month`, `TenDays`, `Week`, `Day`.
Пустая группировка (без `groupItems`) = детальные записи.
#### StructureItemTable — таблица (кросс-таблица)
```xml
Таблица
...
...
...
Группировка
...
...
...
```
#### StructureItemChart — диаграмма
```xml
...
...
...
...
...
РазмерДанных
...
```
---
## 12. Типы данных — сводка
### v8:LocalStringType — локализованная строка
```xml
ru
Текст на русском
```
Также можно задать как простую строку: `xsi:type="xs:string"`.
### dcscor:SettingsParameterValue — параметр настройки
```xml
true
ИмяПараметра
Значение
```
### dcscor:Field — ссылка на поле
```xml
ИмяПоля
```
---
## 13. Полный минимальный пример
Простая DCS: один запрос, два поля, один итог, один вариант:
```xml
ИсточникДанных1
Local
НаборДанных1
Наименование
Наименование
ru
Наименование
Количество
Количество
ИсточникДанных1
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
КОЛИЧЕСТВО(1) КАК Количество
ИЗ
Справочник.Номенклатура КАК Номенклатура
СГРУППИРОВАТЬ ПО
Номенклатура.Наименование
Количество
Сумма(Количество)
Основной
ru
Основной
Наименование
Количество
```