mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-20 01:20:59 +03:00
chore(repo): нормализация EOL к LF + .gitattributes
Приводим авторский контент (.ps1/.psm1/.py/.mjs/.md/.json, пин .bsl) к единому LF и закрепляем политикой в .gitattributes. Инструмент правки всегда пишет LF, поэтому единый LF убирает EOL-шум в диффах, ложные срабатывания blame и налог на ручную синхронизацию CRLF-файлов. BOM на .ps1 сохранён (git с eol=lf меняет только CR<->LF, BOM не трогает). Данные 1С (*.xml) и бинарники под нормализацию не берём. Гейт: PS-порт 459/459, Python-порт 459/459, web-test E2E 22/22 (с пересборкой стенда). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9eb9571e95
commit
26888a07d5
+190
-190
@@ -1,190 +1,190 @@
|
||||
# Внешние обработки и отчёты (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-формат выгрузки обработок](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`, параметры, коды возврата
|
||||
# Внешние обработки и отчёты (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-формат выгрузки обработок](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`, параметры, коды возврата
|
||||
|
||||
Reference in New Issue
Block a user