# Внешние обработки и отчёты (EPF / ERF) Навыки для создания, модификации и сборки внешних обработок (`.epf`) и внешних отчётов (`.erf`) 1С:Предприятия 8.3 из XML-исходников. ## Навыки обработок (EPF) | Навык | Параметры | Описание | |-------|-----------|----------| | `/epf-init` | ` [Synonym]` | Создать новую обработку (корневой XML + модуль объекта) | | `/epf-add-form` | ` [Synonym]` | Добавить управляемую форму к обработке | | `/epf-build` | `` | Собрать EPF из XML (через 1cv8.exe) | | `/epf-dump` | `` | Разобрать EPF в XML (через 1cv8.exe) | | `/epf-bsp-init` | ` <Вид>` | Добавить регистрацию БСП (СведенияОВнешнейОбработке) | | `/epf-bsp-add-command` | ` <Идентификатор>` | Добавить команду в дополнительную обработку БСП | | `/epf-validate` | ` [-MaxErrors 30]` | Валидация структурной корректности обработки (10 проверок) | ## Внешние отчёты (ERF) | Навык | Параметры | Описание | |-------|-----------|----------| | `/erf-init` | ` [Synonym] [--WithSKD]` | Создать новый отчёт (корневой XML + модуль объекта + опционально СКД) | | `/erf-build` | `` | Собрать ERF из XML (через 1cv8.exe) | | `/erf-dump` | `` | Разобрать ERF в XML (через 1cv8.exe) | | `/erf-validate` | ` [-MaxErrors 30]` | Валидация структурной корректности отчёта (10 проверок) | Флаг `--WithSKD` создаёт макет `ОсновнаяСхемаКомпоновкиДанных` и привязывает его к `MainDataCompositionSchema`. ## Универсальные навыки Работают с любыми объектами — обработками, отчётами, справочниками, документами и др. | Навык | Параметры | Описание | |-------|-----------|----------| | `/template-add` | ` ` | Добавить макет (HTML, Text, SpreadsheetDocument, BinaryData, DataCompositionSchema) | | `/template-remove` | ` ` | Удалить макет | | `/help-add` | `` | Добавить встроенную справку (Help.xml + HTML) | | `/form-remove` | ` ` | Удалить форму | Для отчётов: при добавлении макета типа DataCompositionSchema автоматически заполняется `MainDataCompositionSchema` (если пуст). Навыки удаления (`template-remove`, `form-remove`) не вызываются Claude автоматически — только по явной команде пользователя. ## Сценарии использования Не обязательно запоминать команды и параметры. Просто опишите задачу своими словами — Claude сам подберёт нужные навыки. ### Обработка с формой Типичная обработка для манипуляций с данными — форма для пользователя, модуль объекта для логики. ``` > Создай обработку ЗагрузкаПрайса с формой ``` Claude выполнит `/epf-init` и `/epf-add-form` с правильными параметрами. ### Внешняя печатная форма Обработка с макетом табличного документа, подключаемая через механизм дополнительных обработок БСП к конкретному документу. ``` > Создай внешнюю печатную форму для документа Реализация. Макет — табличный документ. ``` Claude создаст обработку, добавит макет SpreadsheetDocument, вызовет `/epf-bsp-init` с видом ПечатнаяФорма и назначением, сгенерирует `СведенияОВнешнейОбработке()` и процедуру `Печать()`. ### Внешний отчёт с СКД ``` > Создай внешний отчёт ОстаткиНаСкладе с СКД ``` Claude выполнит `/erf-init ОстаткиНаСкладе --WithSKD`, затем предложит заполнить схему компоновки через `/skd-compile`. ### Доработка существующей обработки ``` > Добавь справку с описанием как пользоваться обработкой ``` Claude вызовет `/help-add` и предложит отредактировать HTML. ``` > Добавь ещё одну команду печати — накладная ``` Claude вызовет `/epf-bsp-add-command`, добавит команду в `СведенияОВнешнейОбработке()` и блок обработки в процедуру `Печать()`. ``` > Собери ``` Claude вызовет `/epf-build` или `/erf-build` в зависимости от типа объекта. ### Примеры слеш-команд Слеш-команды работают для случаев, когда хочется точного контроля: ``` > /epf-init МояОбработка "Моя обработка" > /epf-add-form МояОбработка Форма > /template-add МояОбработка Макет HTML > /help-add МояОбработка > /epf-build МояОбработка > /erf-init МойОтчёт --WithSKD > /template-add МойОтчёт ДопМакет SpreadsheetDocument > /erf-build МойОтчёт ``` ## Структура каталогов После `/epf-init` создаётся структура: ``` src/ ├── МояОбработка.xml # Корневой файл метаданных └── МояОбработка/ └── Ext/ └── ObjectModule.bsl # Модуль объекта ``` После `/epf-add-form` и `/template-add`: ``` src/ ├── МояОбработка.xml └── МояОбработка/ ├── Ext/ │ └── ObjectModule.bsl ├── Forms/ │ ├── Форма.xml # Метаданные формы │ └── Форма/ │ └── Ext/ │ ├── Form.xml # Описание формы │ └── Form/ │ └── Module.bsl # Модуль формы └── Templates/ ├── Макет.xml # Метаданные макета └── Макет/ └── Ext/ └── Template.html # Содержимое макета ``` После `/erf-init МойОтчёт --WithSKD`: ``` src/ ├── МойОтчёт.xml # Корневой файл (ExternalReport) └── МойОтчёт/ ├── Ext/ │ └── ObjectModule.bsl # Модуль объекта └── Templates/ ├── ОсновнаяСхемаКомпоновкиДанных.xml └── ОсновнаяСхемаКомпоновкиДанных/ └── Ext/ └── Template.xml # Пустая СКД ``` Первая добавленная форма автоматически становится основной (DefaultForm). Флаг `--main` нужен только для переназначения основной формы на другую. ## Сборка и разборка ### Сборка (`/epf-build`, `/erf-build`) Если база не указана — автоматически создаётся временная база с заглушками метаданных для ссылочных типов. Явная база не обязательна, но предпочтительна — обеспечивает точное соответствие типов. **Ограничение**: если на форме обработки выведены наборы записей регистров, в XML-исходниках нет информации о том, чем является поле регистра — измерением, ресурсом или реквизитом. Скрипт пытается угадать категорию по имени, но при ошибке 1С молча сбрасывает привязки колонок (DataPath). В таких случаях лучше использовать реальную базу с нужной конфигурацией. ### Разборка (`/epf-dump`, `/erf-dump`) База с конфигурацией **обязательна**. Dump в пустой базе безвозвратно теряет ссылочные типы (`CatalogRef.XXX` → `xs:string`). ## Технические детали - Все XML-файлы создаются в **UTF-8 с BOM** (как в реальных выгрузках 1С) - PowerShell-скрипты используют `System.Xml.XmlDocument` для модификации корневого XML - UUID генерируются через `[guid]::NewGuid()` - ClassId обработки: `c3831ec8-d8d5-4f93-8a22-f9bfae07327f` - ClassId отчёта: `e41aff26-25cf-4bb6-b6c1-3f478a75f374` - Порядок элементов в `ChildObjects`: TabularSections → Forms → Templates - Первая форма автоматически назначается основной (DefaultForm) - Навыки БСП (`epf-bsp-*`) не используют скрипты — Claude модифицирует код напрямую через Read/Edit - Для отчётов: `/template-add` с типом DataCompositionSchema автоматически заполняет `MainDataCompositionSchema` ## Спецификации - [XML-формат выгрузки обработок](1c-epf-spec.md) — структура XML-файлов, namespace, элементы форм - [XML-формат внешних отчётов](1c-erf-spec.md) — отличия ERF от EPF, Properties, MainDataCompositionSchema - [Встроенная справка](1c-help-spec.md) — Help.xml, HTML-страницы, кнопка справки на форме - [Сборка и разборка EPF/ERF](build-spec.md) — команды `1cv8.exe`, параметры, коды возврата