diff --git a/.claude/skills/epf-bsp-init/SKILL.md b/.claude/skills/epf-bsp-init/SKILL.md index 230c9870..adeab0c2 100644 --- a/.claude/skills/epf-bsp-init/SKILL.md +++ b/.claude/skills/epf-bsp-init/SKILL.md @@ -204,5 +204,5 @@ allowed-tools: - Добавить ещё команду: `/epf-bsp-add-command` - Добавить форму: `/epf-add-form` -- Добавить макет: `/epf-add-template` +- Добавить макет: `/template-add` - Собрать EPF: `/epf-build` diff --git a/.claude/skills/epf-build/SKILL.md b/.claude/skills/epf-build/SKILL.md index 7f21d638..4c25b4b1 100644 --- a/.claude/skills/epf-build/SKILL.md +++ b/.claude/skills/epf-build/SKILL.md @@ -1,6 +1,6 @@ --- name: epf-build -description: Собрать внешнюю обработку 1С (EPF) из XML-исходников +description: Собрать внешнюю обработку 1С (EPF/ERF) из XML-исходников argument-hint: allowed-tools: - Bash @@ -11,7 +11,7 @@ allowed-tools: # /epf-build — Сборка обработки -Собирает EPF-файл из XML-исходников с помощью платформы 1С. +Собирает EPF-файл из XML-исходников с помощью платформы 1С. Та же команда CLI работает и для внешних отчётов (ERF) — см. `/erf-build`. ## Usage diff --git a/.claude/skills/epf-dump/SKILL.md b/.claude/skills/epf-dump/SKILL.md index 0c799a77..f5304581 100644 --- a/.claude/skills/epf-dump/SKILL.md +++ b/.claude/skills/epf-dump/SKILL.md @@ -1,6 +1,6 @@ --- name: epf-dump -description: Разобрать EPF-файл обработки 1С в XML-исходники +description: Разобрать EPF-файл обработки 1С (EPF/ERF) в XML-исходники argument-hint: allowed-tools: - Bash @@ -11,7 +11,7 @@ allowed-tools: # /epf-dump — Разборка обработки -Разбирает EPF-файл во XML-исходники с помощью платформы 1С (иерархический формат). +Разбирает EPF-файл во XML-исходники с помощью платформы 1С (иерархический формат). Та же команда CLI работает и для внешних отчётов (ERF) — см. `/erf-dump`. ## Usage diff --git a/.claude/skills/epf-init/SKILL.md b/.claude/skills/epf-init/SKILL.md index 0985d4ec..da87304b 100644 --- a/.claude/skills/epf-init/SKILL.md +++ b/.claude/skills/epf-init/SKILL.md @@ -50,5 +50,6 @@ pwsh -NoProfile -File .claude/skills/epf-init/scripts/init.ps1 -Name "" [- ## Дальнейшие шаги - Добавить форму: `/epf-add-form` -- Добавить макет: `/epf-add-template` +- Добавить макет: `/template-add` +- Добавить справку: `/help-add` - Собрать EPF: `/epf-build` diff --git a/.claude/skills/erf-build/SKILL.md b/.claude/skills/erf-build/SKILL.md new file mode 100644 index 00000000..c3838da8 --- /dev/null +++ b/.claude/skills/erf-build/SKILL.md @@ -0,0 +1,83 @@ +--- +name: erf-build +description: Собрать внешний отчёт 1С (ERF) из XML-исходников +argument-hint: +allowed-tools: + - Bash + - Read + - Glob + - Grep +--- + +# /erf-build — Сборка отчёта + +Собирает ERF-файл из XML-исходников с помощью платформы 1С. Использует ту же команду CLI, что и `/epf-build`. + +## Usage + +``` +/erf-build [SrcDir] [OutDir] +``` + +| Параметр | Обязательный | По умолчанию | Описание | +|------------|:------------:|--------------|--------------------------------------| +| ReportName | да | — | Имя отчёта (имя корневого XML) | +| SrcDir | нет | `src` | Каталог исходников | +| OutDir | нет | `build` | Каталог для результата | + +## Переменные окружения + +| Переменная | Описание | Пример | +|------------|---------------------------------------|-----------------------------------------------| +| V8_PATH | Каталог bin платформы 1С | `C:\Program Files\1cv8\8.3.25.1257\bin` | +| V8_BASE | Путь к пустой файловой ИБ | `.\base` | + +## Команды + +### 1. Создать пустую ИБ (если нет) + +```cmd +"%V8_PATH%\1cv8.exe" CREATEINFOBASE File="%V8_BASE%" +``` + +### 2. Сборка ERF из XML + +```cmd +"%V8_PATH%\1cv8.exe" DESIGNER /F "%V8_BASE%" /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "\.xml" "\.erf" /Out "\build.log" +``` + +## Коды возврата + +| Код | Описание | +|-----|-----------------------------| +| 0 | Успешная сборка | +| 1 | Ошибка (см. лог) | + +## Автоопределение платформы (Windows) + +Если `V8_PATH` не задан, можно найти автоматически: + +```powershell +$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1 +``` + +## Ссылочные типы и выбор базы + +Пустая ИБ (`V8_BASE`) подходит для сборки, если формы используют только базовые типы (`xs:string`, `xs:boolean` и т.д.) или тип самого отчёта (`ExternalReportObject.Имя`). + +Если отчёт использует ссылочные типы конфигурации (`CatalogRef.XXX`, `DocumentRef.XXX` и т.д.) — в реквизитах объекта, табличных частях или реквизитах форм — **сборка в пустой базе упадёт** с ошибкой XDTO. Платформа не может резолвить типы, отсутствующие в конфигурации базы. + +**Решение**: собирать в базе с целевой конфигурацией. Если конфигурация неизвестна — спросить пользователя путь к базе. + +## Пример полного цикла + +```powershell +$env:V8_PATH = "C:\Program Files\1cv8\8.3.25.1257\bin" +$env:V8_BASE = ".\base" + +# Создать ИБ +& "$env:V8_PATH\1cv8.exe" CREATEINFOBASE "File=$env:V8_BASE" + +# Собрать +& "$env:V8_PATH\1cv8.exe" DESIGNER /F $env:V8_BASE /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "src\МойОтчёт.xml" "build\МойОтчёт.erf" /Out "build\build.log" +``` diff --git a/.claude/skills/erf-dump/SKILL.md b/.claude/skills/erf-dump/SKILL.md new file mode 100644 index 00000000..8df8eca7 --- /dev/null +++ b/.claude/skills/erf-dump/SKILL.md @@ -0,0 +1,90 @@ +--- +name: erf-dump +description: Разобрать ERF-файл отчёта 1С в XML-исходники +argument-hint: +allowed-tools: + - Bash + - Read + - Glob + - Grep +--- + +# /erf-dump — Разборка отчёта + +Разбирает ERF-файл во XML-исходники с помощью платформы 1С (иерархический формат). Использует ту же команду CLI, что и `/epf-dump`. + +## Usage + +``` +/erf-dump [OutDir] +``` + +| Параметр | Обязательный | По умолчанию | Описание | +|----------|:------------:|--------------|-------------------------------------| +| ErfFile | да | — | Путь к ERF-файлу | +| OutDir | нет | `src` | Каталог для выгрузки исходников | + +## Переменные окружения + +| Переменная | Описание | Пример | +|------------|---------------------------------------|-----------------------------------------------| +| V8_PATH | Каталог bin платформы 1С | `C:\Program Files\1cv8\8.3.25.1257\bin` | +| V8_BASE | Путь к пустой файловой ИБ | `.\base` | + +## Команды + +### 1. Создать пустую ИБ (если нет) + +```cmd +"%V8_PATH%\1cv8.exe" CREATEINFOBASE File="%V8_BASE%" +``` + +### 2. Разборка ERF в XML + +```cmd +"%V8_PATH%\1cv8.exe" DESIGNER /F "%V8_BASE%" /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "" "" -Format Hierarchical /Out "\dump.log" +``` + +## Коды возврата + +| Код | Описание | +|-----|-----------------------------| +| 0 | Успешная разборка | +| 1 | Ошибка (см. лог) | + +## Формат `-Format Hierarchical` + +Ключ `-Format Hierarchical` создаёт структуру каталогов: + +``` +/ +├── .xml # Корневой файл +└── / + ├── Ext/ + │ └── ObjectModule.bsl # Модуль объекта (если есть) + ├── Forms/ + │ ├── .xml + │ └── / + │ └── Ext/ + │ ├── Form.xml + │ └── Form/ + │ └── Module.bsl + └── Templates/ + ├── .xml + └── / + └── Ext/ + └── Template. +``` + +## Пример полного цикла + +```powershell +$env:V8_PATH = "C:\Program Files\1cv8\8.3.25.1257\bin" +$env:V8_BASE = ".\base" + +# Создать ИБ +& "$env:V8_PATH\1cv8.exe" CREATEINFOBASE "File=$env:V8_BASE" + +# Разобрать +& "$env:V8_PATH\1cv8.exe" DESIGNER /F $env:V8_BASE /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "src" "build\МойОтчёт.erf" -Format Hierarchical /Out "build\dump.log" +``` diff --git a/.claude/skills/erf-init/SKILL.md b/.claude/skills/erf-init/SKILL.md new file mode 100644 index 00000000..bf22028e --- /dev/null +++ b/.claude/skills/erf-init/SKILL.md @@ -0,0 +1,68 @@ +--- +name: erf-init +description: Создать пустой внешний отчёт 1С (scaffold XML-исходников) +argument-hint: [Synonym] [--with-skd] +allowed-tools: + - Bash + - Read + - Write + - Edit + - Glob + - Grep +--- + +# /erf-init — Создание нового отчёта + +Генерирует минимальный набор XML-исходников для внешнего отчёта 1С: корневой файл метаданных и каталог отчёта. + +## Usage + +``` +/erf-init [Synonym] [SrcDir] [--with-skd] +``` + +| Параметр | Обязательный | По умолчанию | Описание | +|-----------|:------------:|--------------|---------------------------------------| +| Name | да | — | Имя отчёта (латиница/кириллица) | +| Synonym | нет | = Name | Синоним (отображаемое имя) | +| SrcDir | нет | `src` | Каталог исходников относительно CWD | +| --WithSKD | нет | — | Создать пустую СКД и привязать к MainDataCompositionSchema | + +## Команда + +```powershell +powershell.exe -NoProfile -File .claude\skills\erf-init\scripts\init.ps1 -Name "" [-Synonym ""] [-SrcDir ""] [-WithSKD] +``` + +## Что создаётся + +``` +/ +├── .xml # Корневой файл метаданных (4 UUID) +└── / + └── Ext/ + └── ObjectModule.bsl # Модуль объекта с 3 регионами +``` + +При `--WithSKD` дополнительно: + +``` +// + Templates/ + ├── ОсновнаяСхемаКомпоновкиДанных.xml # Метаданные макета + └── ОсновнаяСхемаКомпоновкиДанных/ + └── Ext/ + └── Template.xml # Пустая СКД +``` + +- Корневой XML содержит `MetaDataObject/ExternalReport` с пустыми `DefaultForm`, `MainDataCompositionSchema` и `ChildObjects` +- При `--WithSKD` — `MainDataCompositionSchema` заполняется ссылкой на макет, `ChildObjects` содержит `