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.
11 KiB
Внешние обработки и отчёты (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.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-формат выгрузки обработок — структура XML-файлов, namespace, элементы форм
- XML-формат внешних отчётов — отличия ERF от EPF, Properties, MainDataCompositionSchema
- Встроенная справка — Help.xml, HTML-страницы, кнопка справки на форме
- Сборка и разборка EPF/ERF — команды
1cv8.exe, параметры, коды возврата