From c0c37532a7f6548f689b4ecec6061e9480a4aba4 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Wed, 12 Aug 2026 16:24:57 +0300 Subject: [PATCH] =?UTF-8?q?docs(cfe-*):=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D0=BD=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D1=83=D1=82=D0=B5=D0=B9=20=D0=B2=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D0=B0=D1=85=20=D0=B8=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=D1=87=D0=B0=20ConfigPath=20=D0=B2=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B4=D0=B0=D1=82=D0=BE=D1=80=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В группе cfe-* примеры расходились: cfe-patch-method уже использовал src\cfe\<расширение> и src\cf, остальные три навыка — голый src и абсолютный C:\cfsrc\erp. Голый src особенно вреден: в репозитории с конфигурацией и расширением он неоднозначен, и модель подставляет в -ExtensionPath конфигурацию. Везде одна пара: src\cfe\extname и src\cf. Заодно по итогам появления -ConfigPath у cfe-validate: блоки «Верификация» теперь показывают его передачу, а описание параметра в самом валидаторе переписано с устройства проверки на повод её включить — с последствием (расширение пройдёт валидацию и будет отвергнуто платформой) и с алгоритмом поиска пути прямо на месте, без отсылки к соседнему навыку. У cfe-init отмечено, что CompatibilityMode не нужен при заданном ConfigPath, и что расширение стоит класть в отдельный подкаталог. --- .claude/skills/cfe-borrow/SKILL.md | 16 +++++++++------- .claude/skills/cfe-diff/SKILL.md | 6 +++--- .claude/skills/cfe-init/SKILL.md | 14 +++++++------- .claude/skills/cfe-patch-method/SKILL.md | 18 +++++++++--------- .claude/skills/cfe-validate/SKILL.md | 19 +++++++++++++------ 5 files changed, 41 insertions(+), 32 deletions(-) diff --git a/.claude/skills/cfe-borrow/SKILL.md b/.claude/skills/cfe-borrow/SKILL.md index 074d377c..369e30a9 100644 --- a/.claude/skills/cfe-borrow/SKILL.md +++ b/.claude/skills/cfe-borrow/SKILL.md @@ -70,31 +70,33 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-borrow.ps1" -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-borrow.ps1" -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты" ``` ## Примеры ```powershell # Заимствовать один объект -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты" +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты" # Заимствовать форму (автоматически заимствует родительский объект) -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты.Form.ФормаЭлемента" +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты.Form.ФормаЭлемента" # Несколько объектов за раз -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты ;; CommonModule.ОбщийМодуль ;; Enum.ВидыОплат" +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты ;; CommonModule.ОбщийМодуль ;; Enum.ВидыОплат" # Заимствовать форму с основным реквизитом (реквизиты по DataPath формы) -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute # Заимствовать форму с ВСЕМИ реквизитами объекта -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute All +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute All ``` ## Верификация ``` -/cfe-validate +/cfe-validate -ConfigPath ``` +Конфигурацию-источник передавай и валидатору: заимствованные формы он проверяет по ней. + diff --git a/.claude/skills/cfe-diff/SKILL.md b/.claude/skills/cfe-diff/SKILL.md index 94405510..f02f9daa 100644 --- a/.claude/skills/cfe-diff/SKILL.md +++ b/.claude/skills/cfe-diff/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-diff.ps1" -ExtensionPath src -ConfigPath C:\cfsrc\erp -Mode A +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-diff.ps1" -ExtensionPath src\cfe\extname -ConfigPath src\cf -Mode A ``` ## Mode A — обзор расширения @@ -50,8 +50,8 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-diff.ps1" -Exte ```powershell # Обзор — что изменено в расширении -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Mode A +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Mode A # Проверка переноса — все ли #Вставка перенесены -... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Mode B +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Mode B ``` diff --git a/.claude/skills/cfe-init/SKILL.md b/.claude/skills/cfe-init/SKILL.md index 0fb7147d..da0ef410 100644 --- a/.claude/skills/cfe-init/SKILL.md +++ b/.claude/skills/cfe-init/SKILL.md @@ -33,11 +33,11 @@ allowed-tools: | `Name` | Имя расширения (обязат.) | — | | `Synonym` | Синоним | = Name | | `NamePrefix` | Префикс собственных объектов | = Name + "_" | -| `OutputDir` | Каталог для создания | `src` | +| `OutputDir` | Каталог для создания | `src` (клади расширение в отдельный подкаталог: `src\cfe\extname`) | | `Purpose` | `Patch` (исправление) / `Customization` (доработка) / `AddOn` (дополнение) | `Customization` | | `Version` | Версия расширения | — | | `Vendor` | Поставщик | — | -| `CompatibilityMode` | Режим совместимости | `Version8_3_24` | +| `CompatibilityMode` | Режим совместимости; при заданном `ConfigPath` определяется по базовой конфигурации и этот параметр не нужен | `Version8_3_24` | | `ConfigPath` | Путь к выгрузке базовой конфигурации (авто-определяет CompatibilityMode и Language UUID) | — | | `NoRole` | Без основной роли | false | @@ -51,21 +51,21 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-init.ps1" -Name ```powershell # Расширение для ERP с авто-определением совместимости из базовой конфигурации -... -Name Расш1 -ConfigPath C:\WS\tasks\cfsrc\erp_8.3.24 -OutputDir src +... -Name Расш1 -ConfigPath src\cf -OutputDir src\cfe\extname # Расширение-исправление с явным режимом совместимости -... -Name Расш1 -Purpose Patch -CompatibilityMode Version8_3_17 -OutputDir src +... -Name Расш1 -Purpose Patch -CompatibilityMode Version8_3_17 -OutputDir src\cfe\extname # Расширение-доработка с версией -... -Name МоёРасширение -Version "1.0.0.1" -Vendor "Компания" -OutputDir src +... -Name МоёРасширение -Version "1.0.0.1" -Vendor "Компания" -OutputDir src\cfe\extname # Без роли, с явным префиксом -... -Name ИсправлениеБага -NamePrefix "ИБ_" -Purpose Patch -NoRole -OutputDir src +... -Name ИсправлениеБага -NamePrefix "ИБ_" -Purpose Patch -NoRole -OutputDir src\cfe\extname ``` ## Верификация ``` -/cfe-validate +/cfe-validate -ConfigPath ``` diff --git a/.claude/skills/cfe-patch-method/SKILL.md b/.claude/skills/cfe-patch-method/SKILL.md index 15c4a633..2d355c2b 100644 --- a/.claude/skills/cfe-patch-method/SKILL.md +++ b/.claude/skills/cfe-patch-method/SKILL.md @@ -110,36 +110,36 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-patch-method.ps1" -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-patch-method.ps1" -ExtensionPath src\cfe\extname -ConfigPath src\cf -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before ``` ## Примеры ```powershell # Код перед записью -... -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before # Перехват После на форме -... -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -ModulePath "Document.Заказ.Form.ФормаДокумента" -MethodName "ПослеЗаписиНаСервере" -InterceptorType After +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -ModulePath "Document.Заказ.Form.ФормаДокумента" -MethodName "ПослеЗаписиНаСервере" -InterceptorType After # Замена функции (ПродолжитьВызов) -... -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -ModulePath "CommonModule.ОбщийМодуль" -MethodName "ПолучитьДанные" -InterceptorType Instead +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -ModulePath "CommonModule.ОбщийМодуль" -MethodName "ПолучитьДанные" -InterceptorType Instead # ИзменениеИКонтроль — копия тела для правки маркерами -... -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -ModulePath "Document.РеализацияТоваров.ObjectModule" -MethodName "ОбработкаПроведения" -InterceptorType ModificationAndControl +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -ModulePath "Document.РеализацияТоваров.ObjectModule" -MethodName "ОбработкаПроведения" -InterceptorType ModificationAndControl # ModulePath как путь к файлу модуля-источника (без -ConfigPath) -... -ExtensionPath src\cfe\ИмяРасширения -ModulePath "src\cf\CommonModules\ОбщийМодуль\Ext\Module.bsl" -MethodName "ПолучитьДанные" -InterceptorType Instead +... -ExtensionPath src\cfe\extname -ModulePath "src\cf\CommonModules\ОбщийМодуль\Ext\Module.bsl" -MethodName "ПолучитьДанные" -InterceptorType Instead # Проверить все контролируемые методы расширения на дрейф -... -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -Check +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Check # Актуализировать дрейфнувшие контролируемые методы пачкой -... -ExtensionPath src\cfe\ИмяРасширения -ConfigPath src\cf -Actualize +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Actualize ``` ## Верификация ``` -/cfe-validate +/cfe-validate -ConfigPath ``` diff --git a/.claude/skills/cfe-validate/SKILL.md b/.claude/skills/cfe-validate/SKILL.md index d1c610e9..85c47481 100644 --- a/.claude/skills/cfe-validate/SKILL.md +++ b/.claude/skills/cfe-validate/SKILL.md @@ -1,7 +1,7 @@ --- name: cfe-validate description: Валидация расширения конфигурации 1С (CFE). Используй после создания или модификации расширения для проверки корректности -argument-hint: [-ConfigPath ] [-Detailed] [-MaxErrors 30] +argument-hint: [-ConfigPath ] [-Detailed] [-MaxErrors 30] allowed-tools: - Bash - Read @@ -17,17 +17,24 @@ allowed-tools: | Параметр | Обяз. | Умолч. | Описание | |---------------|:-----:|---------|-------------------------------------------------| | ExtensionPath | да | — | Путь к каталогу или Configuration.xml расширения | -| ConfigPath | нет | — | Конфигурация-источник: включает сверку путей заимствованных форм с реквизитами и табличными частями объектов основной конфигурации | +| ConfigPath | нет | — | Каталог конфигурации, из которой заимствованы объекты | | Detailed | нет | — | Подробный вывод (все проверки, включая успешные) | | MaxErrors | нет | 30 | Остановиться после N ошибок | | OutFile | нет | — | Записать результат в файл | -Без `-ConfigPath` проверка путей пропускается — об этом сказано в отчёте отдельной строкой. Путь к конфигурации ищи так же, как в `/cfe-borrow`: `.v8-project.json` → поле `configSrc` целевой базы. +### ConfigPath + +Указывай всегда, когда конфигурация-источник доступна: без неё часть ошибок заимствованных форм не ловится, и расширение может пройти валидацию, а потом быть отвергнутым платформой при загрузке. + +Если пользователь не указал путь — определи сам: +1. Прочитай `.v8-project.json` из корня проекта +2. Разреши целевую базу (по имени, ветке или `default`) +3. Возьми её поле `configSrc` ## Команда ```powershell -powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src" -powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src/Configuration.xml" -powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src" -ConfigPath "C:\cfsrc\erp" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src\cfe\extname" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src\cfe\extname\Configuration.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src\cfe\extname" -ConfigPath "src\cf" ```