diff --git a/docs/1c-erf-spec.md b/docs/1c-erf-spec.md new file mode 100644 index 00000000..e55291b2 --- /dev/null +++ b/docs/1c-erf-spec.md @@ -0,0 +1,628 @@ +# Спецификация XML-формата выгрузки внешнего отчёта 1С + +Формат: XML-выгрузка внешнего отчёта (ExternalReport) из конфигуратора 1С:Предприятие 8.3. +Версия формата: `2.17`. + +> **Связь с другими спецификациями**: +> - Структура каталогов, пространства имён, формат форм и макетов — идентичны [спецификации внешней обработки (EPF)](1c-xml-format-spec.md). +> - Формат СКД-макетов — см. [спецификацию СКД](1c-dcs-spec.md). +> - Формат форм — см. [спецификацию форм](1c-form-spec.md). +> - Формат MXL-макетов — см. [спецификацию табличного документа](mxl-dsl-spec.md). +> +> Данный документ описывает **только** отличия внешнего отчёта от внешней обработки. + +## 1. Структура каталогов + +``` +<ИмяОтчёта>.xml # Корневой файл метаданных +<ИмяОтчёта>/ + Ext/ + ObjectModule.bsl # Модуль объекта (опционально) + Help.xml # Метаданные справки (опционально) + Help/ + ru.html # HTML-страница справки + Forms/ + <ИмяФормы>.xml # Метаданные формы + <ИмяФормы>/ + Ext/ + Form.xml # Описание формы + Form/ + Module.bsl # Модуль формы + Templates/ + <ИмяМакета>.xml # Метаданные макета + <ИмяМакета>/ + Ext/ + Template.<расш> # Тело макета +``` + +Структура полностью совпадает с EPF. Отчёт может содержать: +- 0..N реквизитов объекта (описаны в корневом XML) +- 0..N табличных частей (описаны в корневом XML) +- 0..N форм (каталог `Forms/`) +- 0..N макетов (каталог `Templates/`) — включая СКД и MXL-макеты печатных форм +- 0..1 модуль объекта (`Ext/ObjectModule.bsl`) +- 0..1 встроенная справка (`Ext/Help.xml` + `Ext/Help/<язык>.html`) + +## 2. Корневой файл отчёта (`<Имя>.xml`) + +### 2.1. Общая структура + +```xml + + + + + + e41aff26-25cf-4bb6-b6c1-3f478a75f374 + + + + + + + + + <Имя> + ... + + + + + + + + + + + + + ... + + ... + +
<ИмяФормы>
+ + +
+
+
+``` + +### 2.2. Отличия от EPF + +| Элемент | EPF | ERF | +|---------|-----|-----| +| Корневой элемент | `` | `` | +| ClassId | `c3831ec8-d8d5-4f93-8a22-f9bfae07327f` | `e41aff26-25cf-4bb6-b6c1-3f478a75f374` | +| GeneratedType (Object) | `ExternalDataProcessorObject.<Имя>` | `ExternalReportObject.<Имя>` | +| GeneratedType (ТЧ) | `DataProcessorTabularSection.<Имя>.<ТЧ>` | `ReportTabularSection.<Имя>.<ТЧ>` | +| GeneratedType (строка ТЧ) | `DataProcessorTabularSectionRow.<Имя>.<ТЧ>` | `ReportTabularSectionRow.<Имя>.<ТЧ>` | +| Путь к форме | `ExternalDataProcessor.<Имя>.Form.<Форма>` | `ExternalReport.<Имя>.Form.<Форма>` | +| Путь к макету | `ExternalDataProcessor.<Имя>.Template.<Макет>` | `ExternalReport.<Имя>.Template.<Макет>` | +| Тип реквизита формы | `cfg:ExternalDataProcessorObject.<Имя>` | `cfg:ExternalReportObject.<Имя>` | + +### 2.3. Свойства (Properties) + +Свойства EPF (`Name`, `Synonym`, `Comment`, `DefaultForm`, `AuxiliaryForm`) сохраняются. Добавляются **6 свойств**, специфичных для отчёта: + +| Свойство | Описание | Пример значения | +|----------|----------|-----------------| +| `MainDataCompositionSchema` | Основная СКД отчёта. Полный путь к макету-СКД | `ExternalReport.<Имя>.Template.ОсновнаяСхемаКомпоновкиДанных` | +| `DefaultSettingsForm` | Форма настроек отчёта | `ExternalReport.<Имя>.Form.ФормаНастроек` | +| `AuxiliarySettingsForm` | Дополнительная форма настроек | (обычно пустой) | +| `DefaultVariantForm` | Форма вариантов отчёта | `ExternalReport.<Имя>.Form.ФормаВарианта` | +| `VariantsStorage` | Хранилище вариантов отчёта | `SettingsStorage.ХранилищеВариантовОтчетов` | +| `SettingsStorage` | Хранилище настроек | (обычно пустой) | + +**Порядок свойств фиксирован**: Name → Synonym → Comment → DefaultForm → AuxiliaryForm → MainDataCompositionSchema → DefaultSettingsForm → AuxiliarySettingsForm → DefaultVariantForm → VariantsStorage → SettingsStorage. + +Если значение отсутствует, элемент остаётся пустым (самозакрывающимся): +```xml + +ExternalReport.МойОтчёт.Template.ОсновнаяСхемаКомпоновкиДанных + +``` + +## 3. Реквизиты объекта (Attribute) + +В отличие от EPF (где реквизиты не документированы), внешний отчёт часто имеет реквизиты объекта. Они размещаются в `` корневого файла **перед** ``, `
` и `