diff --git a/.claude/skills/epf-add-form/SKILL.md b/.claude/skills/epf-add-form/SKILL.md deleted file mode 100644 index 06618f6d..00000000 --- a/.claude/skills/epf-add-form/SKILL.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -name: epf-add-form -description: Добавить пустую управляемую форму к внешней обработке или отчёту (EPF/ERF). Используй когда нужно создать форму у внешней обработки или отчёта -argument-hint: [Synonym] -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep ---- - -# /epf-add-form — Добавление формы - -Создаёт управляемую форму и регистрирует её в корневом XML обработки. - -## Usage - -``` -/epf-add-form [Synonym] [--main] -``` - -| Параметр | Обязательный | По умолчанию | Описание | -|---------------|:------------:|--------------|-------------------------------------------| -| ProcessorName | да | — | Имя обработки (должна существовать) | -| FormName | да | — | Имя формы | -| Synonym | нет | = FormName | Синоним формы | -| --main | нет | авто | Установить как форму по умолчанию (автоматически для первой формы) | -| SrcDir | нет | `src` | Каталог исходников | - -## Команда - -```powershell -powershell.exe -NoProfile -File .claude/skills/epf-add-form/scripts/add-form.ps1 -ProcessorName "" -FormName "" [-Synonym ""] [-Main] [-SrcDir ""] -``` - -## Что создаётся - -``` -//Forms/ -├── .xml # Метаданные формы (1 UUID) -└── / - └── Ext/ - ├── Form.xml # Описание формы (logform namespace) - └── Form/ - └── Module.bsl # BSL-модуль с 4 регионами -``` - -## Что модифицируется - -- `/.xml` — добавляется `
` в `ChildObjects`, обновляется `DefaultForm` (автоматически если это первая форма, или явно при `--main`) - -## Детали - -- FormType: Managed -- UsePurposes: PlatformApplication, MobilePlatformApplication -- AutoCommandBar с id=-1 -- Реквизит "Объект" с MainAttribute=true -- BSL-модуль содержит 5 регионов: ОбработчикиСобытийФормы, ОбработчикиСобытийЭлементовФормы, ОбработчикиКомандФормы, ОбработчикиОповещений, СлужебныеПроцедурыИФункции \ No newline at end of file diff --git a/.claude/skills/epf-add-form/scripts/add-form.ps1 b/.claude/skills/epf-add-form/scripts/add-form.ps1 deleted file mode 100644 index 3befdccc..00000000 --- a/.claude/skills/epf-add-form/scripts/add-form.ps1 +++ /dev/null @@ -1,226 +0,0 @@ -# epf-add-form v1.1 — Add managed form to 1C processor -# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills -param( - [Parameter(Mandatory)] - [string]$ProcessorName, - - [Parameter(Mandatory)] - [string]$FormName, - - [string]$Synonym = $FormName, - - [switch]$Main, - - [string]$SrcDir = "src" -) - -$ErrorActionPreference = "Stop" - -# --- Detect format version --- - -function Detect-FormatVersion([string]$dir) { - $d = $dir - while ($d) { - $cfgPath = Join-Path $d "Configuration.xml" - if (Test-Path $cfgPath) { - $head = [System.IO.File]::ReadAllText($cfgPath, [System.Text.Encoding]::UTF8).Substring(0, [Math]::Min(2000, (Get-Item $cfgPath).Length)) - if ($head -match ']+version="(\d+\.\d+)"') { return $Matches[1] } - } - $parent = Split-Path $d -Parent - if ($parent -eq $d) { break } - $d = $parent - } - return "2.17" -} - -$formatVersion = Detect-FormatVersion (Resolve-Path $SrcDir).Path - -# --- Проверки --- - -$rootXmlPath = Join-Path $SrcDir "$ProcessorName.xml" -if (-not (Test-Path $rootXmlPath)) { - Write-Error "Корневой файл обработки не найден: $rootXmlPath. Сначала выполните epf-init." - exit 1 -} - -$processorDir = Join-Path $SrcDir $ProcessorName -$formsDir = Join-Path $processorDir "Forms" -$formMetaPath = Join-Path $formsDir "$FormName.xml" - -if (Test-Path $formMetaPath) { - Write-Error "Форма уже существует: $formMetaPath" - exit 1 -} - -# --- Создание каталогов --- - -$formDir = Join-Path $formsDir $FormName -$formExtDir = Join-Path $formDir "Ext" -$formModuleDir = Join-Path $formExtDir "Form" - -New-Item -ItemType Directory -Path $formModuleDir -Force | Out-Null - -# --- Кодировка --- - -$encBom = New-Object System.Text.UTF8Encoding($true) -$encNoBom = New-Object System.Text.UTF8Encoding($false) - -# --- 1. Метаданные формы (Forms/.xml) --- - -$formUuid = [guid]::NewGuid().ToString() - -$formMetaXml = @" - - - - - $FormName - - - ru - $Synonym - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - - - -"@ - -[System.IO.File]::WriteAllText($formMetaPath, $formMetaXml, $encBom) - -# --- 2. Описание формы (Forms//Ext/Form.xml) --- - -$formXmlPath = Join-Path $formExtDir "Form.xml" - -$formXml = @" - -
- - true - - - - - - cfg:ExternalDataProcessorObject.$ProcessorName - - true - - - -"@ - -[System.IO.File]::WriteAllText($formXmlPath, $formXml, $encBom) - -# --- 3. BSL-модуль (Forms//Ext/Form/Module.bsl) --- - -$modulePath = Join-Path $formModuleDir "Module.bsl" - -$moduleBsl = @" -#Область ОбработчикиСобытийФормы - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовФормы - -#КонецОбласти - -#Область ОбработчикиКомандФормы - -#КонецОбласти - -#Область ОбработчикиОповещений - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#КонецОбласти -"@ - -[System.IO.File]::WriteAllText($modulePath, $moduleBsl, $encBom) - -# --- 4. Модификация корневого XML --- - -$rootXmlFull = Resolve-Path $rootXmlPath -$xmlDoc = New-Object System.Xml.XmlDocument -$xmlDoc.PreserveWhitespace = $true -$xmlDoc.Load($rootXmlFull.Path) - -$nsMgr = New-Object System.Xml.XmlNamespaceManager($xmlDoc.NameTable) -$nsMgr.AddNamespace("md", "http://v8.1c.ru/8.3/MDClasses") - -$childObjects = $xmlDoc.SelectSingleNode("//md:ChildObjects", $nsMgr) -if (-not $childObjects) { - Write-Error "Не найден элемент ChildObjects в $rootXmlPath" - exit 1 -} - -# Добавить
перед первым