Files
cc-1c-skills/docs/epf-guide.md
T
Nick Shirokov 3819a5f7af Reorganize docs: README as hub + per-group guides
Split monolithic README into:
- README.md — concise hub with quick start and group links
- docs/epf-guide.md — EPF skills guide (content from old README)
- docs/mxl-guide.md — MXL skills guide (new scenarios and examples)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 21:36:44 +03:00

129 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Внешние обработки (EPF)
Навыки группы `/epf-*` позволяют создавать, модифицировать и собирать внешние обработки 1С:Предприятия 8.3 (`.epf`) из XML-исходников, не запоминая детали формата.
## Навыки
| Навык | Параметры | Описание |
|-------|-----------|----------|
| `/epf-init` | `<Name> [Synonym]` | Создать новую обработку (корневой XML + модуль объекта) |
| `/epf-add-form` | `<ProcessorName> <FormName> [Synonym]` | Добавить управляемую форму |
| `/epf-add-template` | `<ProcessorName> <TemplateName> <TemplateType>` | Добавить макет (HTML, Text, SpreadsheetDocument, BinaryData) |
| `/epf-add-help` | `<ProcessorName>` | Добавить встроенную справку (Help.xml + HTML) |
| `/epf-remove-form` | `<ProcessorName> <FormName>` | Удалить форму |
| `/epf-remove-template` | `<ProcessorName> <TemplateName>` | Удалить макет |
| `/epf-build` | `<ProcessorName>` | Собрать EPF из XML (через 1cv8.exe) |
| `/epf-dump` | `<EpfFile>` | Разобрать EPF в XML (через 1cv8.exe) |
| `/epf-bsp-init` | `<ProcessorName> <Вид>` | Добавить регистрацию БСП (СведенияОВнешнейОбработке) |
| `/epf-bsp-add-command` | `<ProcessorName> <Идентификатор>` | Добавить команду в дополнительную обработку БСП |
Навыки удаления (`epf-remove-*`) не вызываются Claude автоматически — только по явной команде пользователя.
## Сценарии использования
Не обязательно запоминать команды и параметры. Просто опишите задачу своими словами — Claude сам подберёт нужные навыки.
### Обработка с формой
Типичная обработка для манипуляций с данными — форма для пользователя, модуль объекта для логики.
```
> Создай обработку ЗагрузкаПрайса с формой
```
Claude выполнит `/epf-init` и `/epf-add-form` с правильными параметрами.
### Внешняя печатная форма
Обработка с макетом табличного документа, подключаемая через механизм дополнительных обработок БСП к конкретному документу.
```
> Создай внешнюю печатную форму для документа Реализация. Макет — табличный документ.
```
Claude создаст обработку, добавит макет SpreadsheetDocument, вызовет `/epf-bsp-init` с видом ПечатнаяФорма и назначением, сгенерирует `СведенияОВнешнейОбработке()` и процедуру `Печать()`.
### Доработка существующей обработки
```
> Добавь справку с описанием как пользоваться обработкой
```
Claude вызовет `/epf-add-help` и предложит отредактировать HTML.
```
> Добавь ещё одну команду печати — накладная
```
Claude вызовет `/epf-bsp-add-command`, добавит команду в `СведенияОВнешнейОбработке()` и блок обработки в процедуру `Печать()`.
```
> Собери
```
Claude вызовет `/epf-build`.
### Примеры слеш-команд
Слеш-команды работают для случаев, когда хочется точного контроля:
```
> /epf-init МояОбработка "Моя обработка"
> /epf-add-form МояОбработка Форма
> /epf-add-template МояОбработка Макет HTML
> /epf-add-help МояОбработка
> /epf-build МояОбработка
```
## Структура каталогов
После `/epf-init` создаётся структура:
```
src/
├── МояОбработка.xml # Корневой файл метаданных
└── МояОбработка/
└── Ext/
└── ObjectModule.bsl # Модуль объекта
```
После `/epf-add-form` и `/epf-add-template`:
```
src/
├── МояОбработка.xml
└── МояОбработка/
├── Ext/
│ └── ObjectModule.bsl
├── Forms/
│ ├── Форма.xml # Метаданные формы
│ └── Форма/
│ └── Ext/
│ ├── Form.xml # Описание формы
│ └── Form/
│ └── Module.bsl # Модуль формы
└── Templates/
├── Макет.xml # Метаданные макета
└── Макет/
└── Ext/
└── Template.html # Содержимое макета
```
Первая добавленная форма автоматически становится основной (DefaultForm). Флаг `--main` нужен только для переназначения основной формы на другую.
## Технические детали
- Все XML-файлы создаются в **UTF-8 с BOM** (как в реальных выгрузках 1С)
- PowerShell-скрипты используют `System.Xml.XmlDocument` для модификации корневого XML
- UUID генерируются через `[guid]::NewGuid()`
- ClassId обработки фиксирован: `c3831ec8-d8d5-4f93-8a22-f9bfae07327f`
- Порядок элементов в `ChildObjects`: TabularSections → Forms → Templates
- Первая форма автоматически назначается основной (DefaultForm)
- Навыки БСП (`epf-bsp-*`) не используют скрипты — Claude модифицирует код напрямую через Read/Edit
## Спецификации
- [XML-формат выгрузки обработок](1c-xml-format-spec.md) — структура XML-файлов, namespace, элементы форм
- [Встроенная справка](1c-help-spec.md) — Help.xml, HTML-страницы, кнопка справки на форме
- [Сборка и разборка EPF](build-spec.md) — команды `1cv8.exe`, параметры, коды возврата