mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
47174ee236
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
629 lines
32 KiB
Markdown
629 lines
32 KiB
Markdown
# Спецификация XML-формата выгрузки внешнего отчёта 1С
|
||
|
||
Формат: XML-выгрузка внешнего отчёта (ExternalReport) из конфигуратора 1С:Предприятие 8.3.
|
||
Версия формата: `2.17`.
|
||
|
||
> **Связь с другими спецификациями**:
|
||
> - Структура каталогов, пространства имён, формат форм и макетов — идентичны [спецификации внешней обработки (EPF)](1c-epf-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
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<MetaDataObject xmlns="..." version="2.17">
|
||
<ExternalReport uuid="<UUID>">
|
||
<InternalInfo>
|
||
<xr:ContainedObject>
|
||
<xr:ClassId>e41aff26-25cf-4bb6-b6c1-3f478a75f374</xr:ClassId>
|
||
<xr:ObjectId><UUID></xr:ObjectId>
|
||
</xr:ContainedObject>
|
||
<xr:GeneratedType name="ExternalReportObject.<Имя>" category="Object">
|
||
<xr:TypeId><UUID></xr:TypeId>
|
||
<xr:ValueId><UUID></xr:ValueId>
|
||
</xr:GeneratedType>
|
||
</InternalInfo>
|
||
<Properties>
|
||
<Name><Имя></Name>
|
||
<Synonym>...</Synonym>
|
||
<Comment/>
|
||
<DefaultForm/>
|
||
<AuxiliaryForm/>
|
||
<MainDataCompositionSchema/>
|
||
<DefaultSettingsForm/>
|
||
<AuxiliarySettingsForm/>
|
||
<DefaultVariantForm/>
|
||
<VariantsStorage/>
|
||
<SettingsStorage/>
|
||
</Properties>
|
||
<ChildObjects>
|
||
<!-- Реквизиты объекта (опционально) -->
|
||
<Attribute uuid="<UUID>">...</Attribute>
|
||
<!-- Табличные части (опционально) -->
|
||
<TabularSection uuid="<UUID>">...</TabularSection>
|
||
<!-- Формы -->
|
||
<Form><ИмяФормы></Form>
|
||
<!-- Макеты -->
|
||
<Template><ИмяМакета></Template>
|
||
</ChildObjects>
|
||
</ExternalReport>
|
||
</MetaDataObject>
|
||
```
|
||
|
||
### 2.2. Отличия от EPF
|
||
|
||
| Элемент | EPF | ERF |
|
||
|---------|-----|-----|
|
||
| Корневой элемент | `<ExternalDataProcessor>` | `<ExternalReport>` |
|
||
| 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
|
||
<DefaultForm/>
|
||
<MainDataCompositionSchema>ExternalReport.МойОтчёт.Template.ОсновнаяСхемаКомпоновкиДанных</MainDataCompositionSchema>
|
||
<VariantsStorage/>
|
||
```
|
||
|
||
## 3. Реквизиты объекта (Attribute)
|
||
|
||
В отличие от EPF (где реквизиты не документированы), внешний отчёт часто имеет реквизиты объекта. Они размещаются в `<ChildObjects>` корневого файла **перед** `<TabularSection>`, `<Form>` и `<Template>`:
|
||
|
||
```xml
|
||
<Attribute uuid="<UUID>">
|
||
<Properties>
|
||
<Name>Реквизит1</Name>
|
||
<Synonym/>
|
||
<Comment/>
|
||
<Type>
|
||
<v8:Type>xs:string</v8:Type>
|
||
<v8:StringQualifiers>
|
||
<v8:Length>10</v8:Length>
|
||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||
</v8:StringQualifiers>
|
||
</Type>
|
||
<PasswordMode>false</PasswordMode>
|
||
<Format/>
|
||
<EditFormat/>
|
||
<ToolTip/>
|
||
<MarkNegatives>false</MarkNegatives>
|
||
<Mask/>
|
||
<MultiLine>false</MultiLine>
|
||
<ExtendedEdit>false</ExtendedEdit>
|
||
<MinValue xsi:nil="true"/>
|
||
<MaxValue xsi:nil="true"/>
|
||
<FillChecking>DontCheck</FillChecking>
|
||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||
<ChoiceParameterLinks/>
|
||
<ChoiceParameters/>
|
||
<QuickChoice>Auto</QuickChoice>
|
||
<CreateOnInput>Auto</CreateOnInput>
|
||
<ChoiceForm/>
|
||
<LinkByType/>
|
||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||
</Properties>
|
||
</Attribute>
|
||
```
|
||
|
||
### Типы реквизитов
|
||
|
||
Типы реквизитов объекта аналогичны типам реквизитов форм:
|
||
|
||
| v8:Type | Описание | Квалификаторы |
|
||
|---------|----------|---------------|
|
||
| `xs:string` | Строка | `v8:StringQualifiers`: `Length`, `AllowedLength` |
|
||
| `xs:boolean` | Булево | — |
|
||
| `xs:decimal` | Число | `v8:NumberQualifiers`: `Digits`, `FractionDigits`, `AllowedSign` |
|
||
| `xs:dateTime` | Дата | `v8:DateQualifiers`: `DateFractions` |
|
||
| `cfg:CatalogRef.<Имя>` | Ссылка на справочник | — |
|
||
| `cfg:DocumentRef.<Имя>` | Ссылка на документ | — |
|
||
| `cfg:EnumRef.<Имя>` | Ссылка на перечисление | — |
|
||
|
||
> **Примечание**: Ссылочные типы (`cfg:CatalogRef.*` и т.д.) в контексте внешнего отчёта работают **только** при наличии в информационной базе конфигурации с соответствующими объектами.
|
||
|
||
### Свойства реквизита объекта (полный перечень)
|
||
|
||
Порядок фиксирован:
|
||
|
||
| Свойство | Тип | Описание |
|
||
|----------|-----|----------|
|
||
| `Name` | string | Имя реквизита |
|
||
| `Synonym` | LocalString | Синоним (отображаемое имя) |
|
||
| `Comment` | string | Комментарий |
|
||
| `Type` | TypeDescription | Тип данных (см. таблицу типов выше) |
|
||
| `PasswordMode` | boolean | Режим пароля (`false`) |
|
||
| `Format` | string | Формат вывода |
|
||
| `EditFormat` | string | Формат редактирования |
|
||
| `ToolTip` | LocalString | Подсказка |
|
||
| `MarkNegatives` | boolean | Выделять отрицательные (`false`) |
|
||
| `Mask` | string | Маска ввода |
|
||
| `MultiLine` | boolean | Многострочный (`false`) |
|
||
| `ExtendedEdit` | boolean | Расширенное редактирование (`false`) |
|
||
| `MinValue` | any | Минимальное значение (`xsi:nil="true"`) |
|
||
| `MaxValue` | any | Максимальное значение (`xsi:nil="true"`) |
|
||
| `FillChecking` | enum | Проверка заполнения (`DontCheck`) |
|
||
| `ChoiceFoldersAndItems` | enum | Выбор групп и элементов (`Items`) |
|
||
| `ChoiceParameterLinks` | list | Связи параметров выбора |
|
||
| `ChoiceParameters` | list | Параметры выбора |
|
||
| `QuickChoice` | enum | Быстрый выбор (`Auto`) |
|
||
| `CreateOnInput` | enum | Создание при вводе (`Auto`) |
|
||
| `ChoiceForm` | string | Форма выбора |
|
||
| `LinkByType` | ref | Связь по типу |
|
||
| `ChoiceHistoryOnInput` | enum | История выбора при вводе (`Auto`) |
|
||
|
||
## 4. Табличные части (TabularSection)
|
||
|
||
Структура полностью аналогична EPF, отличаются только имена GeneratedType:
|
||
|
||
```xml
|
||
<TabularSection uuid="<UUID>">
|
||
<InternalInfo>
|
||
<xr:GeneratedType name="ReportTabularSection.<ИмяОтчёта>.<ИмяТЧ>" category="TabularSection">
|
||
<xr:TypeId><UUID></xr:TypeId>
|
||
<xr:ValueId><UUID></xr:ValueId>
|
||
</xr:GeneratedType>
|
||
<xr:GeneratedType name="ReportTabularSectionRow.<ИмяОтчёта>.<ИмяТЧ>" category="TabularSectionRow">
|
||
<xr:TypeId><UUID></xr:TypeId>
|
||
<xr:ValueId><UUID></xr:ValueId>
|
||
</xr:GeneratedType>
|
||
</InternalInfo>
|
||
<Properties>
|
||
<Name><ИмяТЧ></Name>
|
||
<Synonym/>
|
||
<Comment/>
|
||
<ToolTip/>
|
||
<FillChecking>DontCheck</FillChecking>
|
||
</Properties>
|
||
<ChildObjects>
|
||
<Attribute uuid="<UUID>">
|
||
<Properties>
|
||
<!-- Те же свойства, что у реквизитов объекта, -->
|
||
<!-- плюс два дополнительных: -->
|
||
<FillFromFillingValue>false</FillFromFillingValue>
|
||
<FillValue xsi:nil="true"/>
|
||
<!-- ... остальные совпадают -->
|
||
</Properties>
|
||
</Attribute>
|
||
</ChildObjects>
|
||
</TabularSection>
|
||
```
|
||
|
||
**Важно**: Реквизиты табличной части имеют 2 дополнительных свойства по сравнению с реквизитами объекта:
|
||
- `FillFromFillingValue` — заполнять из значения заполнения (`false`)
|
||
- `FillValue` — значение заполнения (`xsi:nil="true"` или `xsi:type="xs:string"` и т.д.)
|
||
|
||
Эти свойства вставляются между `MaxValue` и `FillChecking`.
|
||
|
||
## 5. Порядок элементов в ChildObjects
|
||
|
||
Порядок дочерних объектов **фиксирован**:
|
||
|
||
1. `<Attribute>` — реквизиты объекта (0..N)
|
||
2. `<TabularSection>` — табличные части (0..N)
|
||
3. `<Form>` — формы (0..N)
|
||
4. `<Template>` — макеты (0..N)
|
||
|
||
## 6. Формы отчёта
|
||
|
||
### 6.1. Метаданные формы (`Forms/<Имя>.xml`)
|
||
|
||
Формат метаданных формы полностью совпадает с EPF — см. [спецификацию EPF, раздел 4](1c-epf-spec.md).
|
||
|
||
### 6.2. Специфика Form.xml для отчётов
|
||
|
||
Формы отчёта имеют дополнительные свойства в `<Form>`, которых нет у форм обработки:
|
||
|
||
| Свойство | Описание | Допустимые значения |
|
||
|----------|----------|---------------------|
|
||
| `ReportFormType` | Тип формы отчёта | `Main`, `Settings`, `Variant` |
|
||
| `ReportResult` | Имя реквизита-результата | Имя реквизита типа SpreadsheetDocument |
|
||
| `DetailsData` | Имя реквизита данных расшифровки | Имя строкового реквизита |
|
||
| `CustomSettingsFolder` | Группа пользовательских настроек | Имя элемента UsualGroup на форме |
|
||
|
||
Эти свойства размещаются в начале `<Form>`, после `<CommandBarLocation>` и до `<AutoCommandBar>`.
|
||
|
||
### 6.3. Основная форма отчёта (ReportFormType = Main)
|
||
|
||
Форма для отображения результата отчёта.
|
||
|
||
```xml
|
||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" ... version="2.17">
|
||
<CommandBarLocation>None</CommandBarLocation>
|
||
<ReportResult>Результат</ReportResult>
|
||
<DetailsData>ДанныеРасшифровки</DetailsData>
|
||
<ReportFormType>Main</ReportFormType>
|
||
<CustomSettingsFolder>КомпоновщикНастроекПользовательскиеНастройки</CustomSettingsFolder>
|
||
<AutoCommandBar name="" id="-1">
|
||
<Autofill>false</Autofill>
|
||
</AutoCommandBar>
|
||
<ChildItems>
|
||
<CommandBar name="ОсновнаяКоманднаяПанель" id="1">
|
||
<Title>...</Title>
|
||
<CommandSource>Form</CommandSource>
|
||
<ExtendedTooltip name="ОсновнаяКоманднаяПанельРасширеннаяПодсказка" id="2"/>
|
||
</CommandBar>
|
||
<UsualGroup name="КомпоновщикНастроекПользовательскиеНастройки" id="3">
|
||
<Title>...</Title>
|
||
<VerticalStretch>false</VerticalStretch>
|
||
<Group>Vertical</Group>
|
||
<ShowTitle>false</ShowTitle>
|
||
<ExtendedTooltip name="КомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка" id="4"/>
|
||
</UsualGroup>
|
||
<SpreadSheetDocumentField name="Результат" id="5">
|
||
<DataPath>Результат</DataPath>
|
||
<DefaultItem>true</DefaultItem>
|
||
<TitleLocation>None</TitleLocation>
|
||
<Width>100</Width>
|
||
<ContextMenu name="РезультатКонтекстноеМеню" id="6"/>
|
||
<ExtendedTooltip name="РезультатРасширеннаяПодсказка" id="7"/>
|
||
</SpreadSheetDocumentField>
|
||
</ChildItems>
|
||
<Attributes>
|
||
<Attribute name="Отчет" id="1">
|
||
<Type>
|
||
<v8:Type>cfg:ExternalReportObject.<ИмяОтчёта></v8:Type>
|
||
</Type>
|
||
<MainAttribute>true</MainAttribute>
|
||
</Attribute>
|
||
<Attribute name="Результат" id="2">
|
||
<Title>...</Title>
|
||
<Type>
|
||
<v8:Type xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet">mxl:SpreadsheetDocument</v8:Type>
|
||
</Type>
|
||
</Attribute>
|
||
<Attribute name="ДанныеРасшифровки" id="3">
|
||
<Type>
|
||
<v8:Type>xs:string</v8:Type>
|
||
<v8:StringQualifiers>
|
||
<v8:Length>0</v8:Length>
|
||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||
</v8:StringQualifiers>
|
||
</Type>
|
||
</Attribute>
|
||
</Attributes>
|
||
</Form>
|
||
```
|
||
|
||
**Ключевые элементы основной формы отчёта:**
|
||
|
||
| Элемент | Описание |
|
||
|---------|----------|
|
||
| `SpreadSheetDocumentField` | Поле табличного документа для вывода результата. Привязано к реквизиту типа `mxl:SpreadsheetDocument` |
|
||
| Реквизит `Отчет` | Основной реквизит (`MainAttribute=true`), тип `cfg:ExternalReportObject.<Имя>` |
|
||
| Реквизит `Результат` | Табличный документ. Тип `mxl:SpreadsheetDocument` (требует дополнительный namespace `xmlns:mxl`) |
|
||
| Реквизит `ДанныеРасшифровки` | Строка неограниченной длины для данных расшифровки |
|
||
| Группа `КомпоновщикНастроекПользовательскиеНастройки` | Контейнер для пользовательских настроек СКД |
|
||
|
||
### 6.4. Форма настроек (ReportFormType = Settings)
|
||
|
||
Форма настроек отчёта для пользователя.
|
||
|
||
```xml
|
||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" ... version="2.17">
|
||
<CommandBarLocation>Bottom</CommandBarLocation>
|
||
<VerticalScroll>useIfNecessary</VerticalScroll>
|
||
<ReportFormType>Settings</ReportFormType>
|
||
<CustomSettingsFolder>КомпоновщикНастроекПользовательскиеНастройки</CustomSettingsFolder>
|
||
<AutoCommandBar name="" id="-1">
|
||
<HorizontalAlign>Right</HorizontalAlign>
|
||
</AutoCommandBar>
|
||
<ChildItems>
|
||
<UsualGroup name="КомпоновщикНастроекПользовательскиеНастройки" id="1">
|
||
<Title>...</Title>
|
||
<Group>Vertical</Group>
|
||
<Representation>None</Representation>
|
||
<ShowTitle>false</ShowTitle>
|
||
<ExtendedTooltip name="КомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка" id="2"/>
|
||
</UsualGroup>
|
||
</ChildItems>
|
||
<Attributes>
|
||
<Attribute name="Отчет" id="1">
|
||
<Type>
|
||
<v8:Type>cfg:ExternalReportObject.<ИмяОтчёта></v8:Type>
|
||
</Type>
|
||
<MainAttribute>true</MainAttribute>
|
||
</Attribute>
|
||
</Attributes>
|
||
</Form>
|
||
```
|
||
|
||
### 6.5. Форма варианта (ReportFormType = Variant)
|
||
|
||
Форма для настройки варианта отчёта (структуры, группировок, фильтров).
|
||
|
||
```xml
|
||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" ... version="2.17">
|
||
<CommandBarLocation>Bottom</CommandBarLocation>
|
||
<CollapseItemsByImportanceVariant>DontUse</CollapseItemsByImportanceVariant>
|
||
<ReportFormType>Variant</ReportFormType>
|
||
<AutoCommandBar name="" id="-1">
|
||
<HorizontalAlign>Right</HorizontalAlign>
|
||
</AutoCommandBar>
|
||
<ChildItems>
|
||
<Table name="КомпоновщикНастроекНастройки" id="1">
|
||
<Representation>Tree</Representation>
|
||
<DataPath>Отчет.SettingsComposer.Settings</DataPath>
|
||
<!-- ... элементы управления деревом настроек -->
|
||
</Table>
|
||
<!-- Страницы настроек (параметры, поля, фильтры и т.д.) -->
|
||
</ChildItems>
|
||
<!-- ... -->
|
||
</Form>
|
||
```
|
||
|
||
Форма варианта обычно содержит сложную структуру с деревом настроек (`Table` с `Representation=Tree` и `DataPath=Отчет.SettingsComposer.Settings`) и множеством страниц для редактирования параметров, полей, фильтров, сортировки и условного оформления.
|
||
|
||
### 6.6. Элемент SpreadSheetDocumentField
|
||
|
||
Специфичный для отчётов элемент формы — поле табличного документа. Используется для отображения результата отчёта.
|
||
|
||
```xml
|
||
<SpreadSheetDocumentField name="Результат" id="5">
|
||
<DataPath>Результат</DataPath>
|
||
<DefaultItem>true</DefaultItem>
|
||
<TitleLocation>None</TitleLocation>
|
||
<Width>100</Width>
|
||
<ContextMenu name="РезультатКонтекстноеМеню" id="6"/>
|
||
<ExtendedTooltip name="РезультатРасширеннаяПодсказка" id="7"/>
|
||
</SpreadSheetDocumentField>
|
||
```
|
||
|
||
| Свойство | Описание |
|
||
|----------|----------|
|
||
| `DataPath` | Путь к реквизиту типа SpreadsheetDocument |
|
||
| `DefaultItem` | Элемент по умолчанию (`true`) |
|
||
| `TitleLocation` | Расположение заголовка (`None`) |
|
||
| `Width` | Ширина в символах |
|
||
|
||
## 7. Модуль объекта
|
||
|
||
### 7.1. Событие ПриКомпоновкеРезультата
|
||
|
||
Основное событие модуля объекта отчёта. Вызывается платформой при формировании результата. Позволяет перехватить стандартную обработку СКД.
|
||
|
||
```bsl
|
||
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||
// СтандартнаяОбработка = Ложь; // отключить стандартное формирование по СКД
|
||
// Собственная логика формирования отчёта
|
||
КонецПроцедуры
|
||
```
|
||
|
||
Параметры:
|
||
- `ДокументРезультат` — табличный документ для вывода результата
|
||
- `ДанныеРасшифровки` — данные расшифровки
|
||
- `СтандартнаяОбработка` — если установить `Ложь`, платформа не будет сама формировать отчёт по СКД
|
||
|
||
### 7.2. Директива условной компиляции
|
||
|
||
В ERP-отчётах модуль объекта часто обёрнут в директиву условной компиляции:
|
||
|
||
```bsl
|
||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||
|
||
// ... весь код модуля ...
|
||
|
||
#КонецЕсли
|
||
```
|
||
|
||
### 7.3. Типичные процедуры модуля объекта отчёта
|
||
|
||
| Процедура | Описание |
|
||
|-----------|----------|
|
||
| `ПриКомпоновкеРезультата` | Событие формирования результата |
|
||
| `ИнициализироватьОтчет` | Инициализация отчёта (экспорт, для БСП) |
|
||
| `ОпределитьНастройкиФормы` | Определение настроек формы (экспорт, для БСП) |
|
||
| `ПередЗагрузкойНастроекВКомпоновщик` | Предобработка настроек (экспорт, для БСП) |
|
||
|
||
## 8. Макеты (Templates)
|
||
|
||
### 8.1. СКД-макет (DataCompositionSchema)
|
||
|
||
Основной макет отчёта. Обязателен, если указан `MainDataCompositionSchema`.
|
||
|
||
```xml
|
||
<!-- Метаданные: Templates/ОсновнаяСхемаКомпоновкиДанных.xml -->
|
||
<Template uuid="<UUID>">
|
||
<Properties>
|
||
<Name>ОсновнаяСхемаКомпоновкиДанных</Name>
|
||
<Synonym>...</Synonym>
|
||
<Comment/>
|
||
<TemplateType>DataCompositionSchema</TemplateType>
|
||
</Properties>
|
||
</Template>
|
||
```
|
||
|
||
Тело СКД: `Templates/ОсновнаяСхемаКомпоновкиДанных/Ext/Template.xml` — формат описан в [спецификации СКД](1c-dcs-spec.md).
|
||
|
||
### 8.2. MXL-макеты печатных форм (SpreadsheetDocument)
|
||
|
||
Отчёты часто содержат MXL-макеты для вывода печатных форм.
|
||
|
||
```xml
|
||
<!-- Метаданные: Templates/ПФ_MXL_КарточкаУчета.xml -->
|
||
<Template uuid="<UUID>">
|
||
<Properties>
|
||
<Name>ПФ_MXL_КарточкаУчета</Name>
|
||
<Synonym>...</Synonym>
|
||
<Comment/>
|
||
<TemplateType>SpreadsheetDocument</TemplateType>
|
||
</Properties>
|
||
</Template>
|
||
```
|
||
|
||
Тело макета: `Templates/ПФ_MXL_КарточкаУчета/Ext/Template.xml` — формат MXL.
|
||
|
||
Конвенция именования MXL-макетов: `ПФ_MXL_<НазваниеПечатнойФормы>`.
|
||
|
||
## 9. Сравнение с отчётом конфигурации (Report)
|
||
|
||
| Аспект | ExternalReport (ERF) | Report (в конфигурации) |
|
||
|--------|---------------------|------------------------|
|
||
| Корневой элемент | `<ExternalReport>` | `<Report>` |
|
||
| ClassId | `e41aff26-25cf-4bb6-b6c1-3f478a75f374` | (нет ContainedObject) |
|
||
| GeneratedType (Object) | `ExternalReportObject.<Имя>` | `ReportObject.<Имя>` |
|
||
| GeneratedType (Manager) | — | `ReportManager.<Имя>` |
|
||
| Тип реквизита формы | `cfg:ExternalReportObject.<Имя>` | `cfg:ReportObject.<Имя>` |
|
||
| Дополнительные свойства | — | `UseStandardCommands`, `IncludeHelpInContents`, `ExtendedPresentation`, `Explanation` |
|
||
| Формы по умолчанию | Могут ссылаться на свои формы | Могут ссылаться на `CommonForm.*` |
|
||
| Хранение | Файл `.erf` | В составе конфигурации |
|
||
|
||
## 10. Минимальный пример
|
||
|
||
### Пустой отчёт (без СКД, форм, модулей)
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses"
|
||
xmlns:app="http://v8.1c.ru/8.2/managed-application/core"
|
||
xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config"
|
||
xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi"
|
||
xmlns:ent="http://v8.1c.ru/8.1/data/enterprise"
|
||
xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform"
|
||
xmlns:style="http://v8.1c.ru/8.1/data/ui/style"
|
||
xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system"
|
||
xmlns:v8="http://v8.1c.ru/8.1/data/core"
|
||
xmlns:v8ui="http://v8.1c.ru/8.1/data/ui"
|
||
xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web"
|
||
xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"
|
||
xmlns:xen="http://v8.1c.ru/8.3/xcf/enums"
|
||
xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef"
|
||
xmlns:xr="http://v8.1c.ru/8.3/xcf/readable"
|
||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
version="2.17">
|
||
<ExternalReport uuid="b38bc179-9b8a-4eb3-9422-96c6eded1ac3">
|
||
<InternalInfo>
|
||
<xr:ContainedObject>
|
||
<xr:ClassId>e41aff26-25cf-4bb6-b6c1-3f478a75f374</xr:ClassId>
|
||
<xr:ObjectId>38f084a4-47ce-4e67-ab4b-ac6323b9da08</xr:ObjectId>
|
||
</xr:ContainedObject>
|
||
<xr:GeneratedType name="ExternalReportObject.МойОтчёт" category="Object">
|
||
<xr:TypeId>1fd37c7e-ade2-47ac-8dae-3fafeec96943</xr:TypeId>
|
||
<xr:ValueId>b85e1756-f044-4907-b4bd-75a57649c486</xr:ValueId>
|
||
</xr:GeneratedType>
|
||
</InternalInfo>
|
||
<Properties>
|
||
<Name>МойОтчёт</Name>
|
||
<Synonym>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Мой отчёт</v8:content>
|
||
</v8:item>
|
||
</Synonym>
|
||
<Comment/>
|
||
<DefaultForm/>
|
||
<AuxiliaryForm/>
|
||
<MainDataCompositionSchema/>
|
||
<DefaultSettingsForm/>
|
||
<AuxiliarySettingsForm/>
|
||
<DefaultVariantForm/>
|
||
<VariantsStorage/>
|
||
<SettingsStorage/>
|
||
</Properties>
|
||
<ChildObjects/>
|
||
</ExternalReport>
|
||
</MetaDataObject>
|
||
```
|
||
|
||
### Отчёт с СКД
|
||
|
||
Добавляется ссылка на СКД в `MainDataCompositionSchema` и макет-СКД в `ChildObjects`:
|
||
|
||
```xml
|
||
<Properties>
|
||
...
|
||
<MainDataCompositionSchema>ExternalReport.МойОтчёт.Template.ОсновнаяСхемаКомпоновкиДанных</MainDataCompositionSchema>
|
||
...
|
||
</Properties>
|
||
<ChildObjects>
|
||
<Template>ОсновнаяСхемаКомпоновкиДанных</Template>
|
||
</ChildObjects>
|
||
```
|
||
|
||
Плюс файлы:
|
||
- `Templates/ОсновнаяСхемаКомпоновкиДанных.xml` (метаданные, `TemplateType=DataCompositionSchema`)
|
||
- `Templates/ОсновнаяСхемаКомпоновкиДанных/Ext/Template.xml` (тело СКД)
|
||
|
||
## 11. Чеклист для создания внешнего отчёта
|
||
|
||
1. Сгенерировать UUID для каждого объекта (отчёт, реквизиты, ТЧ, формы, макеты)
|
||
2. Создать структуру каталогов (раздел 1)
|
||
3. Создать корневой XML (раздел 2) с:
|
||
- `ClassId = e41aff26-25cf-4bb6-b6c1-3f478a75f374`
|
||
- `GeneratedType name="ExternalReportObject.<Имя>"`
|
||
- Корректными путями в `MainDataCompositionSchema`, `DefaultForm` и др.
|
||
- Правильным порядком элементов в `ChildObjects`
|
||
4. Создать СКД-макет (раздел 8.1):
|
||
- Метаданные с `TemplateType=DataCompositionSchema`
|
||
- Тело СКД по [спецификации СКД](1c-dcs-spec.md)
|
||
5. При необходимости создать формы (раздел 6):
|
||
- Указать `ReportFormType` (`Main` / `Settings` / `Variant`)
|
||
- Основная форма: `ReportResult`, `DetailsData`, `SpreadSheetDocumentField`
|
||
- Основной реквизит: `cfg:ExternalReportObject.<Имя>`
|
||
6. При необходимости создать `ObjectModule.bsl` (раздел 7)
|
||
7. При необходимости создать MXL-макеты печатных форм (раздел 8.2)
|
||
8. Проверить:
|
||
- Все пути используют префикс `ExternalReport.<Имя>` (не `ExternalDataProcessor`)
|
||
- Тип основного реквизита формы: `cfg:ExternalReportObject.<Имя>`
|
||
- `MainDataCompositionSchema` соответствует реальному макету в `ChildObjects`
|
||
- Порядок в `ChildObjects`: Attribute → TabularSection → Form → Template
|
||
- Все UUID уникальны
|