Files
cc-1c-skills/docs/epf-guide.md
T
Nick Shirokov bdc38caffa refactor(form-add): объединить с epf-add-form, удалить специфичный навык
form-add теперь покрывает и объекты конфигурации, и standalone EPF/ERF
source tree (тип определяется из корневого XML, маппинг типов уже был).

Изменения form-add scaffold:
- Module.bsl: пустые регионы вместо скелета процедуры ПриСозданииНаСервере
- Form.xml: убран <Events> (раньше привязывал OnCreateAtServer к процедуре)
- Form.xml: <SavedData>true</SavedData> теперь условный — ставится для
  Catalog/Document/etc (стандарт ERP, 99% форм), не ставится для
  DataProcessor/Report/External* (где у объекта нет состояния)

Это согласуется с workflow: form-compile перегенерирует Form.xml целиком,
поэтому привязки в scaffold могут стать orphan; пустые регионы +
без Events — корректная стартовая точка, которую form-edit/form-compile
наполняют атомарно.

Удалён навык epf-add-form (директория + тесты), вызовы заменены на
form-add в integration-тестах, в кейсах epf-validate/help-add, в
description epf-init/epf-bsp-init, в docs и README.

Перегенерированы snapshot'ы 5 навыков (form-add, form-compile,
form-edit, form-info, form-validate). Платформенная верификация в 1С 8.3.24
прошла для всех 9 кейсов form-add.

Bump form-add v1.3 → v1.4.
2026-04-25 15:26:54 +03:00

11 KiB
Raw Blame History

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

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

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

Навык Параметры Описание
/epf-init <Name> [Synonym] Создать новую обработку (корневой XML + модуль объекта)
/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 и /form-add с правильными параметрами.

Внешняя печатная форма

Обработка с макетом табличного документа, подключаемая через механизм дополнительных обработок БСП к конкретному документу.

> Создай внешнюю печатную форму для документа Реализация. Макет — табличный документ.

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 МояОбработка "Моя обработка"
> /form-add МояОбработка.xml Форма
> /template-add МояОбработка Макет HTML
> /help-add МояОбработка
> /epf-build МояОбработка

> /erf-init МойОтчёт --WithSKD
> /template-add МойОтчёт ДопМакет SpreadsheetDocument
> /erf-build МойОтчёт

Структура каталогов

После /epf-init создаётся структура:

src/
├── МояОбработка.xml                          # Корневой файл метаданных
└── МояОбработка/
    └── Ext/
        └── ObjectModule.bsl                  # Модуль объекта

После /form-add и /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.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

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