Files
cc-1c-skills/docs/epf-guide.md
T
Nick Shirokov dee85e19d5 docs: update build-spec and epf-guide for auto-stub and dump requirements
- build-spec: replace outdated notes about empty base with auto-stub info
- build-spec: add dump notes about irreversible type loss in empty base
- epf-guide: add build/dump section explaining auto-stub and base requirement

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:40:25 +03:00

11 KiB
Raw Blame History

Внешние обработки и отчёты (EPF / ERF)

Навыки для создания, модификации и сборки внешних обработок (.epf) и внешних отчётов (.erf) 1С:Предприятия 8.3 из XML-исходников.

Навыки обработок (EPF)

Навык Параметры Описание
/epf-init <Name> [Synonym] Создать новую обработку (корневой XML + модуль объекта)
/epf-add-form <ProcessorName> <FormName> [Synonym] Добавить управляемую форму к обработке
/epf-build <ProcessorName> Собрать EPF из XML (через 1cv8.exe)
/epf-dump <EpfFile> Разобрать EPF в XML (через 1cv8.exe)
/epf-bsp-init <ProcessorName> <Вид> Добавить регистрацию БСП (СведенияОВнешнейОбработке)
/epf-bsp-add-command <ProcessorName> <Идентификатор> Добавить команду в дополнительную обработку БСП
/epf-validate <ObjectPath> [-MaxErrors 30] Валидация структурной корректности обработки (10 проверок)

Внешние отчёты (ERF)

Навык Параметры Описание
/erf-init <ReportName> [Synonym] [--WithSKD] Создать новый отчёт (корневой XML + модуль объекта + опционально СКД)
/erf-build <ReportName> Собрать ERF из XML (через 1cv8.exe)
/erf-dump <ErfFile> Разобрать ERF в XML (через 1cv8.exe)
/erf-validate <ObjectPath> [-MaxErrors 30] Валидация структурной корректности отчёта (10 проверок)

Флаг --WithSKD создаёт макет ОсновнаяСхемаКомпоновкиДанных и привязывает его к MainDataCompositionSchema.

Универсальные навыки

Работают с любыми объектами — обработками, отчётами, справочниками, документами и др.

Навык Параметры Описание
/template-add <ObjectName> <TemplateName> <TemplateType> Добавить макет (HTML, Text, SpreadsheetDocument, BinaryData, DataCompositionSchema)
/template-remove <ObjectName> <TemplateName> Удалить макет
/help-add <ObjectName> Добавить встроенную справку (Help.xml + HTML)
/form-remove <ObjectName> <FormName> Удалить форму

Для отчётов: при добавлении макета типа 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)

Если база не указана — автоматически создаётся временная база с заглушками метаданных для ссылочных типов. Явная база не обязательна, но предпочтительна — обеспечивает точное соответствие типов.

Ограничение: категории колонок регистров (Dimension/Resource/Attribute) угадываются — при round-trip через реальную базу привязки полей формы могут не сохраниться.

Разборка (/epf-dump, /erf-dump)

База с конфигурацией обязательна. Dump в пустой базе безвозвратно теряет ссылочные типы (CatalogRef.XXXxs: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

Спецификации