mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-16 15:55:16 +03:00
Compare commits
4 Commits
70e684d189
...
1d89b3ec69
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d89b3ec69 | |||
| 43d1d09ee8 | |||
| 404e6c6851 | |||
| 009022d04b |
@@ -38,7 +38,7 @@ powershell.exe -NoProfile -File .claude/skills/cf-edit/scripts/cf-edit.ps1 -Conf
|
||||
| `remove-defaultRole` | `Role.Name` или `Name` | Удалить роль по умолчанию |
|
||||
| `set-defaultRoles` | Имена через `;;` | Заменить список ролей по умолчанию |
|
||||
|
||||
Подробнее: `reference.md` в каталоге навыка.
|
||||
Допустимые значения свойств, формат DefinitionFile (JSON), каноничный порядок: [reference.md](reference.md)
|
||||
|
||||
## Примеры
|
||||
|
||||
|
||||
@@ -27,15 +27,6 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/cf-init/scripts/cf-init.ps1 -Name "МояКонфигурация"
|
||||
```
|
||||
|
||||
## Что создаётся
|
||||
|
||||
```
|
||||
<OutputDir>/
|
||||
├── Configuration.xml # Корневой файл — все свойства
|
||||
└── Languages/
|
||||
└── Русский.xml # Язык по умолчанию
|
||||
```
|
||||
|
||||
## Примеры
|
||||
|
||||
```powershell
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|------------|:-----:|---------|-------------------------------------------------|
|
||||
| ConfigPath | да | — | Путь к Configuration.xml или каталогу выгрузки |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл (UTF-8 BOM) |
|
||||
|
||||
@@ -27,18 +27,3 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/cf-validate/scripts/cf-validate.ps1 -ConfigPath "upload/cfempty"
|
||||
powershell.exe -NoProfile -File .claude/skills/cf-validate/scripts/cf-validate.ps1 -ConfigPath "upload/cfempty/Configuration.xml"
|
||||
```
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|---|----------|-------------|
|
||||
| 1 | XML well-formedness, MetaDataObject/Configuration, version 2.17/2.20 | ERROR |
|
||||
| 2 | InternalInfo: 7 ContainedObject, валидные ClassId, уникальность | ERROR |
|
||||
| 3 | Properties: Name непустой, Synonym, DefaultLanguage, DefaultRunMode | ERROR/WARN |
|
||||
| 4 | Properties: enum-значения (11 свойств) | ERROR |
|
||||
| 5 | ChildObjects: валидные имена типов (44 типа), нет дубликатов, порядок типов | ERROR/WARN |
|
||||
| 6 | DefaultLanguage ссылается на существующий Language в ChildObjects | ERROR |
|
||||
| 7 | Файлы языков Languages/<name>.xml существуют | WARN |
|
||||
| 8 | Каталоги объектов из ChildObjects существуют (spot-check) | WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -31,7 +31,7 @@ allowed-tools:
|
||||
| `ExtensionPath` | Путь к каталогу расширения (обязат.) |
|
||||
| `ConfigPath` | Путь к конфигурации-источнику (обязат.) |
|
||||
| `Object` | Что заимствовать (обязат.), batch через `;;` |
|
||||
| `BorrowMainAttribute` | Используй при добавлении нового реквизита на заимствованную форму. `Form` (по умолч.) — реквизиты с формы, `All` — все реквизиты объекта |
|
||||
| `BorrowMainAttribute` | Заимствовать основной реквизит формы. Без параметра — не заимствует. `Form` — реквизиты, используемые на форме. `All` — все реквизиты объекта. Требует форму в -Object |
|
||||
|
||||
## Формат -Object
|
||||
|
||||
|
||||
@@ -32,19 +32,6 @@ powershell.exe -NoProfile -File .claude/skills/cfe-diff/scripts/cfe-diff.ps1 -Ex
|
||||
- `[BORROWED]` — заимствованный: перехватчики (`&Перед`, `&После`, `&ИзменениеИКонтроль`, `&Вместо`), собственные реквизиты/ТЧ/формы
|
||||
- `[OWN]` — собственный: количество реквизитов, ТЧ, форм
|
||||
|
||||
Пример вывода:
|
||||
```
|
||||
[BORROWED] Catalog.Валюты
|
||||
&ИзменениеИКонтроль("РеквизитыРедактируемыеВГрупповойОбработке") — line 4 in ...
|
||||
&Перед("ЗагрузитьКурсыВалют") — line 13 in ...
|
||||
ChildObjects: 1 own attrs, 1 own TS, 3 own forms
|
||||
Form.ФормаЭлемента (borrowed):
|
||||
Event:OnCreateAtServer [After] -> Расш1_ПриСозданииПосле
|
||||
Command:Подбор [Before] -> Расш1_ПодборПеред
|
||||
Form.Расш1_МояФорма (own)
|
||||
[OWN] Catalog.Расш5_Справочник1
|
||||
```
|
||||
|
||||
Для каждой формы заимствованного объекта показывается:
|
||||
- `(borrowed)` / `(own)` — заимствованная или собственная форма
|
||||
- callType-события формы и элементов
|
||||
|
||||
@@ -47,17 +47,6 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/cfe-init/scripts/cfe-init.ps1 -Name "МоёРасширение"
|
||||
```
|
||||
|
||||
## Что создаётся
|
||||
|
||||
```
|
||||
<OutputDir>/
|
||||
├── Configuration.xml # Свойства расширения
|
||||
├── Languages/
|
||||
│ └── Русский.xml # Язык (заимствованный)
|
||||
└── Roles/ # Если не -NoRole
|
||||
└── <Prefix>ОсновнаяРоль.xml
|
||||
```
|
||||
|
||||
## Примеры
|
||||
|
||||
```powershell
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|---------------|:-----:|---------|-------------------------------------------------|
|
||||
| ExtensionPath | да | — | Путь к каталогу или Configuration.xml расширения |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл |
|
||||
|
||||
@@ -27,23 +27,3 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/cfe-validate/scripts/cfe-validate.ps1 -ExtensionPath "src"
|
||||
powershell.exe -NoProfile -File .claude/skills/cfe-validate/scripts/cfe-validate.ps1 -ExtensionPath "src/Configuration.xml"
|
||||
```
|
||||
|
||||
## Проверки (13 шагов)
|
||||
|
||||
| # | Проверка | Уровень |
|
||||
|---|----------|---------|
|
||||
| 1 | XML well-formedness, MetaDataObject/Configuration, version | ERROR |
|
||||
| 2 | InternalInfo: 7 ContainedObject, валидные ClassId | ERROR |
|
||||
| 3 | Extension properties: ObjectBelonging=Adopted, Name, Purpose, NamePrefix, KeepMapping | ERROR |
|
||||
| 4 | Enum-значения: ConfigurationExtensionCompatibilityMode, DefaultRunMode, ScriptVariant, InterfaceCompatibilityMode | ERROR |
|
||||
| 5 | ChildObjects: валидные типы (44), нет дубликатов, каноничный порядок | ERROR/WARN |
|
||||
| 6 | DefaultLanguage ссылается на Language в ChildObjects | ERROR |
|
||||
| 7 | Файлы языков существуют | WARN |
|
||||
| 8 | Каталоги объектов существуют | WARN |
|
||||
| 9 | Заимствованные объекты: ObjectBelonging=Adopted, ExtendedConfigurationObject UUID | ERROR/WARN |
|
||||
| 10 | Sub-items: Attribute, TabularSection (InternalInfo + вложенные), EnumValue, Form-ссылки | ERROR |
|
||||
| 11 | Заимствованные формы: метаданные, Form.xml, Module.bsl, BaseForm version | ERROR/WARN |
|
||||
| 12 | Зависимости форм: CommonPicture, StyleItem (с whitelist платформенных), Enum DesignTimeRef | WARN |
|
||||
| 13 | TypeLink: human-readable Items.* DataPath (должны быть удалены) | WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -191,7 +191,6 @@ allowed-tools:
|
||||
НоваяКоманда.Идентификатор = "ЗаказПокупателя";
|
||||
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
|
||||
НоваяКоманда.ПоказыватьОповещение = Ложь;
|
||||
НоваяКоманда.Модификатор = "ПечатьMXL";
|
||||
```
|
||||
|
||||
И в существующую процедуру `Печать` добавится блок обработки.
|
||||
И в существующую процедуру `ВыполнитьКоманду` добавится блок обработки.
|
||||
|
||||
@@ -33,20 +33,6 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/epf-init/scripts/init.ps1 -Name "<Name>" [-Synonym "<Synonym>"] [-SrcDir "<SrcDir>"]
|
||||
```
|
||||
|
||||
## Что создаётся
|
||||
|
||||
```
|
||||
<SrcDir>/
|
||||
├── <Name>.xml # Корневой файл метаданных (4 UUID)
|
||||
└── <Name>/
|
||||
└── Ext/
|
||||
└── ObjectModule.bsl # Модуль объекта с 3 регионами
|
||||
```
|
||||
|
||||
- Корневой XML содержит `MetaDataObject/ExternalDataProcessor` с пустыми `DefaultForm` и `ChildObjects`
|
||||
- ClassId фиксирован: `c3831ec8-d8d5-4f93-8a22-f9bfae07327f`
|
||||
- Файл создаётся в UTF-8 с BOM
|
||||
|
||||
## Дальнейшие шаги
|
||||
|
||||
- Добавить форму: `/epf-add-form`
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|------------|:-----:|---------|-------------------------------------------------|
|
||||
| ObjectPath | да | — | Путь к корневому XML или каталогу обработки |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл (UTF-8 BOM) |
|
||||
|
||||
@@ -28,19 +28,3 @@ powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate
|
||||
powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate.ps1 -ObjectPath "src/МояОбработка/МояОбработка.xml"
|
||||
```
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|----|-------------------------------------------------------|--------------|
|
||||
| 1 | Root structure: MetaDataObject/ExternalDataProcessor | ERROR |
|
||||
| 2 | InternalInfo: ClassId, ContainedObject, GeneratedType | ERROR / WARN |
|
||||
| 3 | Properties: Name (identifier), Synonym | ERROR / WARN |
|
||||
| 4 | ChildObjects: допустимые типы, порядок | ERROR / WARN |
|
||||
| 5 | Cross-references: DefaultForm → Form, AuxiliaryForm | ERROR / WARN |
|
||||
| 6 | Attributes: UUID, Name, Type | ERROR |
|
||||
| 7 | TabularSections: UUID, Name, GeneratedType, Attributes | ERROR / WARN |
|
||||
| 8 | Уникальность имён (Attribute, TS, Form, Template, Command) | ERROR |
|
||||
| 9 | Файлы: формы (.xml + Ext/Form.xml), макеты | ERROR |
|
||||
| 10 | Дескрипторы форм: корневая структура, uuid, Name, FormType | ERROR / WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -34,32 +34,6 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/erf-init/scripts/init.ps1 -Name "<Name>" [-Synonym "<Synonym>"] [-SrcDir "<SrcDir>"] [-WithSKD]
|
||||
```
|
||||
|
||||
## Что создаётся
|
||||
|
||||
```
|
||||
<SrcDir>/
|
||||
├── <Name>.xml # Корневой файл метаданных (4 UUID)
|
||||
└── <Name>/
|
||||
└── Ext/
|
||||
└── ObjectModule.bsl # Модуль объекта с 3 регионами
|
||||
```
|
||||
|
||||
При `--WithSKD` дополнительно:
|
||||
|
||||
```
|
||||
<SrcDir>/<Name>/
|
||||
Templates/
|
||||
├── ОсновнаяСхемаКомпоновкиДанных.xml # Метаданные макета
|
||||
└── ОсновнаяСхемаКомпоновкиДанных/
|
||||
└── Ext/
|
||||
└── Template.xml # Пустая СКД
|
||||
```
|
||||
|
||||
- Корневой XML содержит `MetaDataObject/ExternalReport` с пустыми `DefaultForm`, `MainDataCompositionSchema` и `ChildObjects`
|
||||
- При `--WithSKD` — `MainDataCompositionSchema` заполняется ссылкой на макет, `ChildObjects` содержит `<Template>`
|
||||
- ClassId фиксирован: `e41aff26-25cf-4bb6-b6c1-3f478a75f374`
|
||||
- Файл создаётся в UTF-8 с BOM
|
||||
|
||||
## Дальнейшие шаги
|
||||
|
||||
- Добавить форму: `/form-add`
|
||||
|
||||
@@ -19,7 +19,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|------------|:-----:|---------|-------------------------------------------------|
|
||||
| ObjectPath | да | — | Путь к корневому XML или каталогу отчёта |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл (UTF-8 BOM) |
|
||||
|
||||
@@ -30,19 +30,3 @@ powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate
|
||||
powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate.ps1 -ObjectPath "src/МойОтчёт/МойОтчёт.xml"
|
||||
```
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|----|-------------------------------------------------------|--------------|
|
||||
| 1 | Root structure: MetaDataObject/ExternalReport | ERROR |
|
||||
| 2 | InternalInfo: ClassId, ContainedObject, GeneratedType | ERROR / WARN |
|
||||
| 3 | Properties: Name, Synonym, MainDataCompositionSchema | ERROR / WARN |
|
||||
| 4 | ChildObjects: допустимые типы, порядок | ERROR / WARN |
|
||||
| 5 | Cross-references: DefaultForm, MainDCS → Template | ERROR / WARN |
|
||||
| 6 | Attributes: UUID, Name, Type | ERROR |
|
||||
| 7 | TabularSections: UUID, Name, GeneratedType, Attributes | ERROR / WARN |
|
||||
| 8 | Уникальность имён (Attribute, TS, Form, Template, Command) | ERROR |
|
||||
| 9 | Файлы: формы (.xml + Ext/Form.xml), макеты | ERROR |
|
||||
| 10 | Дескрипторы форм: корневая структура, uuid, Name, FormType | ERROR / WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -44,26 +44,6 @@ powershell.exe -NoProfile -File .claude/skills/form-add/scripts/form-add.ps1 -Ob
|
||||
| Choice | Document, Catalog, ChartOf*, ExchangePlan, BusinessProcess, Task | Список (DynamicList) | DefaultChoiceForm |
|
||||
| Record | InformationRegister | Запись (InformationRegisterRecordManager) | DefaultRecordForm |
|
||||
|
||||
## Что создаётся
|
||||
|
||||
```
|
||||
<ObjectDir>/Forms/
|
||||
├── <FormName>.xml # Метаданные формы (UUID)
|
||||
└── <FormName>/
|
||||
└── Ext/
|
||||
├── Form.xml # Описание формы (logform namespace)
|
||||
└── Form/
|
||||
└── Module.bsl # BSL-модуль с 5 регионами + ПриСозданииНаСервере
|
||||
```
|
||||
|
||||
## Что модифицируется
|
||||
|
||||
- `<ObjectPath>` — добавляется `<Form>` в `ChildObjects` (перед `<Template>` или `<TabularSection>`), обновляется Default*Form (автоматически если пустое, или явно при `--set-default`)
|
||||
|
||||
## Поддерживаемые типы объектов
|
||||
|
||||
Document, Catalog, DataProcessor, Report, ExternalDataProcessor, ExternalReport, InformationRegister, ChartOfAccounts, ChartOfCharacteristicTypes, ExchangePlan, BusinessProcess, Task
|
||||
|
||||
## Примеры
|
||||
|
||||
```
|
||||
|
||||
@@ -133,33 +133,6 @@ powershell.exe -NoProfile -File .claude/skills/form-edit/scripts/form-edit.ps1 -
|
||||
|
||||
Все extension-секции опциональны — без них навык работает как с обычными формами.
|
||||
|
||||
## Вывод
|
||||
|
||||
```
|
||||
=== form-edit: Форма ===
|
||||
|
||||
[EXTENSION] BaseForm detected — IDs start at 1000000+
|
||||
|
||||
Added form events:
|
||||
+ OnCreateAtServer[After] -> Расш1_ПриСозданииПосле
|
||||
|
||||
Added elements (into ГруппаШапка, after Контрагент):
|
||||
+ [Input] Склад -> Объект.Склад {OnChange}
|
||||
|
||||
Added attributes:
|
||||
+ СуммаИтого: decimal(15,2) (id=1000000)
|
||||
|
||||
---
|
||||
Total: 1 form event(s), 1 element(s) (+2 companions), 1 attribute(s)
|
||||
Run /form-validate to verify.
|
||||
```
|
||||
|
||||
## Когда использовать
|
||||
|
||||
- **После `/form-compile`**: добавить элементы, которые не были в исходном JSON
|
||||
- **Модификация существующих форм**: добавить поле, реквизит или команду в форму из конфигурации
|
||||
- **Пакетное добавление**: один JSON может содержать элементы + реквизиты + команды
|
||||
|
||||
## Workflow
|
||||
|
||||
1. `/form-info` — посмотреть текущую структуру формы
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|-----------|:-----:|---------|-----------------------------------------|
|
||||
| FormPath | да | — | Путь к файлу Form.xml |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
|
||||
## Команда
|
||||
@@ -27,24 +27,3 @@ powershell.exe -NoProfile -File .claude/skills/form-validate/scripts/form-valida
|
||||
powershell.exe -NoProfile -File .claude/skills/form-validate/scripts/form-validate.ps1 -FormPath "src/МояОбработка/Forms/Форма/Ext/Form.xml"
|
||||
```
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|---|---|---|
|
||||
| 1 | Корневой элемент `<Form>`, version="2.17" | ERROR / WARN |
|
||||
| 2 | `<AutoCommandBar>` присутствует, id="-1" | ERROR |
|
||||
| 3 | Уникальность ID элементов (отдельный пул) | ERROR |
|
||||
| 4 | Уникальность ID реквизитов (отдельный пул) | ERROR |
|
||||
| 5 | Уникальность ID команд (отдельный пул) | ERROR |
|
||||
| 6 | Companion-элементы (ContextMenu, ExtendedTooltip, и др.) | ERROR |
|
||||
| 7 | DataPath → ссылается на существующий реквизит | ERROR |
|
||||
| 8 | CommandName кнопок → ссылается на существующую команду | ERROR |
|
||||
| 9 | События имеют непустые имена обработчиков | ERROR |
|
||||
| 10 | Команды имеют Action (обработчик) | ERROR |
|
||||
| 11 | Не более одного MainAttribute | ERROR |
|
||||
| 12 | BaseForm: наличие и version (при расширении) | OK / WARN |
|
||||
| 13 | callType значения: Before, After, Override | ERROR |
|
||||
| 14 | ID расширения >= 1000000 для добавленных attrs/commands | WARN |
|
||||
| 15 | callType без BaseForm — некорректная структура | WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -11,8 +11,65 @@ allowed-tools:
|
||||
|
||||
# /interface-edit — редактирование CommandInterface.xml
|
||||
|
||||
Операции: hide, show, place, order, subsystem-order, group-order. Подробнее: `.claude/skills/interface-edit/reference.md`
|
||||
Точечное редактирование файла командного интерфейса подсистемы 1С.
|
||||
|
||||
## Параметры
|
||||
|
||||
| Параметр | Обяз. | Описание |
|
||||
|----------|:-----:|----------|
|
||||
| CIPath | да | Путь к CommandInterface.xml |
|
||||
| Operation | нет | Операция: hide, show, place, order, subsystem-order, group-order |
|
||||
| Value | нет | Значение для операции |
|
||||
| DefinitionFile | нет | JSON-файл с массивом операций (альтернатива Operation) |
|
||||
| CreateIfMissing | нет | Создать файл если не существует |
|
||||
| NoValidate | нет | Пропустить авто-валидацию |
|
||||
|
||||
## Команда
|
||||
|
||||
### Inline mode
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -File '.claude/skills/interface-edit/scripts/interface-edit.ps1' -CIPath '<path>' -Operation hide -Value '<cmd>'
|
||||
```
|
||||
|
||||
### JSON mode
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -File '.claude/skills/interface-edit/scripts/interface-edit.ps1' -CIPath '<path>' -DefinitionFile '<json>'
|
||||
```
|
||||
|
||||
## Операции
|
||||
|
||||
| Операция | Значение | Описание |
|
||||
|----------|----------|----------|
|
||||
| hide | Cmd.Name или массив | Скрыть команду (CommandsVisibility, false) |
|
||||
| show | Cmd.Name или массив | Показать команду (visibility, true) |
|
||||
| place | {"command":"...","group":"CommandGroup.X"} | Разместить команду в группе |
|
||||
| order | {"group":"...","commands":[...]} | Задать порядок команд в группе |
|
||||
| subsystem-order | ["Subsystem.X.Subsystem.A",...] | Порядок дочерних подсистем |
|
||||
| group-order | ["NavigationPanelOrdinary",...] | Порядок групп |
|
||||
|
||||
## Примеры
|
||||
|
||||
```powershell
|
||||
# Скрыть команду
|
||||
... -CIPath Subsystems/Продажи/Ext/CommandInterface.xml -Operation hide -Value "Catalog.Товары.StandardCommand.OpenList"
|
||||
|
||||
# Показать команду
|
||||
... -Operation show -Value "Report.Продажи.Command.Отчёт"
|
||||
|
||||
# Разместить в группе
|
||||
... -Operation place -Value '{"command":"Report.X.Command.Y","group":"CommandGroup.Отчеты"}'
|
||||
|
||||
# Задать порядок подсистем
|
||||
... -Operation subsystem-order -Value '["Subsystem.X.Subsystem.A","Subsystem.X.Subsystem.B"]'
|
||||
|
||||
# Создать новый CI
|
||||
... -CIPath <new-path> -Operation subsystem-order -Value '[...]' -CreateIfMissing
|
||||
```
|
||||
|
||||
## Верификация
|
||||
|
||||
```
|
||||
/interface-validate <CIPath>
|
||||
```
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
# /interface-edit — редактирование CommandInterface.xml
|
||||
|
||||
Точечное редактирование файла командного интерфейса подсистемы 1С.
|
||||
|
||||
## Параметры
|
||||
|
||||
| Параметр | Описание |
|
||||
|----------|----------|
|
||||
| CIPath | Путь к CommandInterface.xml |
|
||||
| DefinitionFile | JSON-файл с массивом операций |
|
||||
| Operation | Одна операция: hide, show, place, order, subsystem-order, group-order |
|
||||
| Value | Значение для операции |
|
||||
| CreateIfMissing | Создать файл если не существует |
|
||||
| NoValidate | Пропустить авто-валидацию |
|
||||
|
||||
## Операции
|
||||
|
||||
| Операция | Значение | Описание |
|
||||
|----------|----------|----------|
|
||||
| hide | Cmd.Name или массив | Скрыть команду (CommandsVisibility, false) |
|
||||
| show | Cmd.Name или массив | Показать команду (visibility, true) |
|
||||
| place | {"command":"...","group":"CommandGroup.X"} | Разместить команду в группе |
|
||||
| order | {"group":"...","commands":[...]} | Задать порядок команд в группе |
|
||||
| subsystem-order | ["Subsystem.X.Subsystem.A",...] | Порядок дочерних подсистем |
|
||||
| group-order | ["NavigationPanelOrdinary",...] | Порядок групп |
|
||||
|
||||
## Примеры
|
||||
|
||||
```powershell
|
||||
# Скрыть команду
|
||||
... -CIPath Subsystems/Продажи/Ext/CommandInterface.xml -Operation hide -Value "Catalog.Товары.StandardCommand.OpenList"
|
||||
|
||||
# Показать команду
|
||||
... -Operation show -Value "Report.Продажи.Command.Отчёт"
|
||||
|
||||
# Разместить в группе
|
||||
... -Operation place -Value '{"command":"Report.X.Command.Y","group":"CommandGroup.Отчеты"}'
|
||||
|
||||
# Задать порядок подсистем
|
||||
... -Operation subsystem-order -Value '["Subsystem.X.Subsystem.A","Subsystem.X.Subsystem.B"]'
|
||||
|
||||
# Создать новый CI
|
||||
... -CIPath <new-path> -Operation subsystem-order -Value '[...]' -CreateIfMissing
|
||||
```
|
||||
|
||||
## Авто-валидация
|
||||
|
||||
После каждой операции автоматически запускается `/interface-validate`. Подавить: `-NoValidate`.
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|-----------|:-----:|---------|-----------------------------------------|
|
||||
| CIPath | да | — | Путь к CommandInterface.xml |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл (UTF-8 BOM) |
|
||||
|
||||
@@ -27,23 +27,3 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File ".claude/skills/interface-validate/scripts/interface-validate.ps1" -CIPath "Subsystems/Продажи"
|
||||
powershell.exe -NoProfile -File ".claude/skills/interface-validate/scripts/interface-validate.ps1" -CIPath "Subsystems/Продажи/Ext/CommandInterface.xml"
|
||||
```
|
||||
|
||||
## Проверки (13)
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|----|--------------------------------------------------------------|-------------|
|
||||
| 1 | XML well-formedness + root element (CommandInterface, version, namespace) | ERROR |
|
||||
| 2 | Допустимые дочерние элементы (только 5 секций) | ERROR |
|
||||
| 3 | Порядок секций корректен | ERROR |
|
||||
| 4 | Нет дублирующихся секций | ERROR |
|
||||
| 5 | CommandsVisibility — Command.name + Visibility/xr:Common | ERROR |
|
||||
| 6 | CommandsVisibility — нет дубликатов по name | WARN |
|
||||
| 7 | CommandsPlacement — Command.name + CommandGroup + Placement | ERROR |
|
||||
| 8 | CommandsOrder — Command.name + CommandGroup | ERROR |
|
||||
| 9 | SubsystemsOrder — Subsystem непустой, формат Subsystem.X | ERROR |
|
||||
| 10 | SubsystemsOrder — нет дубликатов | WARN |
|
||||
| 11 | GroupsOrder — Group непустой | ERROR |
|
||||
| 12 | GroupsOrder — нет дубликатов | WARN |
|
||||
| 13 | Формат ссылок на команды | WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -117,9 +117,3 @@ powershell.exe -NoProfile -File .claude/skills/meta-compile/scripts/meta-compile
|
||||
]
|
||||
```
|
||||
|
||||
## Что генерируется
|
||||
|
||||
- `{TypePlural}/{Name}.xml` — метаданные объекта
|
||||
- `{TypePlural}/{Name}/Ext/*.bsl` — модули (ObjectModule, RecordSetModule, Module — зависит от типа)
|
||||
- `Configuration.xml` — автоматическая регистрация в `<ChildObjects>`
|
||||
|
||||
|
||||
@@ -35,81 +35,10 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/meta-remove/scripts/meta-remove.ps1 -ConfigDir "<путь>" -Object "Catalog.Товары"
|
||||
```
|
||||
|
||||
## Что делает
|
||||
|
||||
1. **Находит файлы объекта**: `{TypePlural}/{Name}.xml` и `{TypePlural}/{Name}/`
|
||||
2. **Проверяет ссылки** (блокирует при наличии, если нет `-Force`):
|
||||
- XML-типы в реквизитах других объектов: `CatalogRef.Имя`, `DocumentRef.Имя` и т.д.
|
||||
- BSL-код: `Справочники.Имя`, `Catalogs.Имя`, вызовы общих модулей
|
||||
- Журналы документов, подписки на события, определяемые типы
|
||||
3. **Удаляет из Configuration.xml**: убирает из `<ChildObjects>`
|
||||
4. **Очищает подсистемы**: рекурсивно удаляет из `<Content>`
|
||||
5. **Удаляет файлы**: XML-файл и каталог объекта
|
||||
|
||||
## Поддерживаемые типы
|
||||
|
||||
Catalog, Document, Enum, Constant, InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, BusinessProcess, Task, ExchangePlan, DocumentJournal, Report, DataProcessor, CommonModule, ScheduledJob, EventSubscription, HTTPService, WebService, DefinedType, Role, Subsystem, CommonForm, CommonTemplate, CommonPicture, CommonAttribute, SessionParameter, FunctionalOption, FunctionalOptionsParameter, Sequence, FilterCriterion, SettingsStorage, XDTOPackage, WSReference, StyleItem, Language
|
||||
|
||||
## Вывод (объект без ссылок)
|
||||
|
||||
```
|
||||
=== meta-remove: Catalog.Устаревший ===
|
||||
|
||||
[FOUND] Catalogs/Устаревший.xml
|
||||
[FOUND] Catalogs/Устаревший/ (8 files)
|
||||
|
||||
--- Reference check ---
|
||||
[OK] No references found
|
||||
|
||||
--- Configuration.xml ---
|
||||
[OK] Removed <Catalog>Устаревший</Catalog> from ChildObjects
|
||||
[OK] Configuration.xml saved
|
||||
|
||||
--- Subsystems ---
|
||||
[OK] Removed from subsystem 'Справочники'
|
||||
|
||||
--- Files ---
|
||||
[OK] Deleted directory: Catalogs/Устаревший/
|
||||
[OK] Deleted file: Catalogs/Устаревший.xml
|
||||
|
||||
=== Done: 4 actions performed (1 subsystem references removed) ===
|
||||
```
|
||||
|
||||
## Вывод (объект со ссылками — блокировка)
|
||||
|
||||
```
|
||||
=== meta-remove: Catalog.Валюты ===
|
||||
|
||||
[FOUND] Catalogs/Валюты.xml
|
||||
[FOUND] Catalogs/Валюты/ (4 files)
|
||||
|
||||
--- Reference check ---
|
||||
[WARN] Found 3 reference(s) to Catalog.Валюты:
|
||||
|
||||
Documents/СчетНаОплату.xml
|
||||
pattern: CatalogRef.Валюты
|
||||
InformationRegisters/КурсыВалют.xml
|
||||
pattern: CatalogRef.Валюты
|
||||
CommonModules/РаботаСВалютами/Ext/Module.bsl
|
||||
pattern: Справочники.Валюты
|
||||
|
||||
[ERROR] Cannot remove: object has 3 reference(s).
|
||||
Use -Force to remove anyway, or fix references first.
|
||||
```
|
||||
|
||||
Код возврата: 0 = успешно, 1 = ошибки или найдены ссылки.
|
||||
|
||||
## Проверяемые ссылки
|
||||
|
||||
| Категория | Паттерны поиска |
|
||||
|-----------|----------------|
|
||||
| XML-типы реквизитов | `CatalogRef.Name`, `DocumentRef.Name`, `EnumRef.Name` и др. |
|
||||
| BSL-код (рус.) | `Справочники.Name`, `Документы.Name`, `Перечисления.Name` и др. |
|
||||
| BSL-код (англ.) | `Catalogs.Name`, `Documents.Name`, `Enums.Name` и др. |
|
||||
| Общие модули | `Name.` (вызовы методов), `<Handler>Name.`, `<MethodName>Name.` |
|
||||
|
||||
Ссылки из Configuration.xml, ConfigDumpInfo.xml и подсистем НЕ считаются блокирующими — они очищаются автоматически.
|
||||
|
||||
## Примеры
|
||||
|
||||
```powershell
|
||||
@@ -129,8 +58,3 @@ Catalog, Document, Enum, Constant, InformationRegister, AccumulationRegister, Ac
|
||||
... -ConfigDir src -Object "CommonModule.МойМодуль"
|
||||
```
|
||||
|
||||
## Когда использовать
|
||||
|
||||
- **Рефакторинг**: удаление неиспользуемых объектов
|
||||
- **Очистка**: удаление временных/тестовых объектов
|
||||
- **Перенос**: удаление объекта перед пересозданием с другой структурой
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|------------|:-----:|---------|-------------------------------------------------|
|
||||
| ObjectPath | да | — | Путь к XML-файлу или каталогу. Через `\|` для batch |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок (per object) |
|
||||
| OutFile | нет | — | Записать результат в файл (UTF-8 BOM) |
|
||||
|
||||
@@ -27,33 +27,3 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/meta-validate/scripts/meta-validate.ps1 -ObjectPath "Catalogs/Номенклатура/Номенклатура.xml"
|
||||
powershell.exe -NoProfile -File .claude/skills/meta-validate/scripts/meta-validate.ps1 -ObjectPath "Catalogs/Банки|Documents/Заказ"
|
||||
```
|
||||
|
||||
## Поддерживаемые типы (23)
|
||||
|
||||
**Ссылочные:** Catalog, Document, Enum, ExchangePlan, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, BusinessProcess, Task
|
||||
**Регистры:** InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister
|
||||
**Отчёты/Обработки:** Report, DataProcessor
|
||||
**Сервисные:** CommonModule, ScheduledJob, EventSubscription, HTTPService, WebService
|
||||
**Прочие:** Constant, DocumentJournal, DefinedType
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|----|------------------------------------------|--------------|
|
||||
| 1 | XML well-formedness + root structure | ERROR |
|
||||
| 2 | InternalInfo / GeneratedType | ERROR / WARN |
|
||||
| 3 | Properties — Name, Synonym | ERROR / WARN |
|
||||
| 4 | Properties — enum-значения свойств | ERROR |
|
||||
| 5 | StandardAttributes | ERROR / WARN |
|
||||
| 6 | ChildObjects — допустимые элементы | ERROR |
|
||||
| 7 | Attributes/Dimensions/Resources — UUID, Name, Type | ERROR |
|
||||
| 7b | Reserved attribute names | WARN |
|
||||
| 8 | Уникальность имён | ERROR |
|
||||
| 9 | TabularSections — внутренняя структура | ERROR / WARN |
|
||||
| 10 | Кросс-свойства | ERROR / WARN |
|
||||
| 11 | HTTPService/WebService — вложенная структура | ERROR |
|
||||
| 12 | Forbidden properties per type | ERROR |
|
||||
| 13 | Method reference (Handler/MethodName) | ERROR / WARN |
|
||||
| 14 | DocumentJournal Columns | ERROR |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -74,19 +74,6 @@ powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -Pr
|
||||
- **Rectangle** — фиксированная область (строки + колонки). Обычно использует отдельный набор колонок.
|
||||
- **Drawing** — именованный рисунок/штрихкод.
|
||||
|
||||
### Наборы колонок
|
||||
|
||||
Когда в макете несколько наборов колонок, их размеры показаны в заголовке и для каждой области:
|
||||
|
||||
```
|
||||
Column sets: 7 (default=19 cols + 6 additional)
|
||||
f01e015f...: 17 cols
|
||||
0adf41ed...: 4 cols
|
||||
...
|
||||
Подвал Rows rows 30-34 (5 params) [colset 14cols]
|
||||
НумерацияЛистов Rows rows 59-59 (0 params) [colset 4cols]
|
||||
```
|
||||
|
||||
### Пересечения
|
||||
|
||||
Когда есть области и Rows, и Columns (этикетки, ценники), скрипт выводит пары пересечений:
|
||||
@@ -112,12 +99,6 @@ powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -Pr
|
||||
|
||||
Это означает: параметр `Товар` отображает значение, а при клике открывает `Номенклатура` (объект расшифровки).
|
||||
|
||||
В BSL:
|
||||
```bsl
|
||||
Область.Параметры.Товар = СтрокаТЧ.Номенклатура;
|
||||
Область.Параметры.РасшифровкаТовар = СтрокаТЧ.Номенклатура; // detailParameter
|
||||
```
|
||||
|
||||
### Параметры из шаблонов (суффикс `[tpl]`)
|
||||
|
||||
Некоторые параметры встроены в шаблонный текст: `"Инв № [ИнвентарныйНомер]"`. Они заполняются через fillType=Template, а не fillType=Parameter. Скрипт всегда извлекает их и помечает суффиксом `[tpl]`:
|
||||
@@ -149,18 +130,3 @@ powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -Pr
|
||||
- **Text** — статические надписи (fillType=Text). Полезно для понимания назначения колонок.
|
||||
- **Templates** — текст с подстановками `[ИмяПараметра]` (fillType=Template). Параметр внутри `[]` заполняется программно.
|
||||
|
||||
## Когда использовать
|
||||
|
||||
- **Перед написанием кода заполнения**: запустить `/mxl-info` чтобы понять имена областей и списки параметров, затем писать BSL-код вывода, следуя порядку областей сверху вниз
|
||||
- **С `-WithText`**: когда нужен контекст — заголовки колонок, надписи рядом с параметрами, шаблонные строки
|
||||
- **С `-Format json`**: когда нужны структурированные данные для программной обработки
|
||||
- **Для существующих макетов**: анализ загруженных или конфигурационных макетов без чтения сырого XML
|
||||
|
||||
## Защита от переполнения
|
||||
|
||||
Вывод ограничен 150 строками по умолчанию. При превышении:
|
||||
```
|
||||
[TRUNCATED] Shown 150 of 220 lines. Use -Offset 150 to continue.
|
||||
```
|
||||
|
||||
Используйте `-Offset N` и `-Limit N` для постраничного просмотра.
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|---------------|:-----:|---------|--------------------------------------------|
|
||||
| TemplatePath | да | — | Путь к макету (директория или Template.xml) |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 20 | Остановиться после N ошибок |
|
||||
|
||||
## Команда
|
||||
@@ -27,21 +27,3 @@ powershell.exe -NoProfile -File .claude/skills/mxl-validate/scripts/mxl-validate
|
||||
powershell.exe -NoProfile -File .claude/skills/mxl-validate/scripts/mxl-validate.ps1 -TemplatePath "src/МояОбработка/Templates/ПечатнаяФорма"
|
||||
```
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|---|---|---|
|
||||
| 1 | `<height>` >= максимальный индекс строки + 1 | ERROR |
|
||||
| 2 | `<vgRows>` <= `<height>` | WARN |
|
||||
| 3 | Индексы форматов ячеек (`<f>`) в пределах палитры форматов | ERROR |
|
||||
| 4 | `<formatIndex>` строк и колонок в пределах палитры | ERROR |
|
||||
| 5 | Индексы колонок в ячейках (`<i>`) в пределах количества колонок (с учётом набора) | ERROR |
|
||||
| 6 | `<columnsID>` строк ссылается на существующий набор колонок | ERROR |
|
||||
| 7 | `<columnsID>` в merge/namedItem ссылается на существующий набор | ERROR |
|
||||
| 8 | Диапазоны именованных областей в пределах границ документа | ERROR |
|
||||
| 9 | Диапазоны объединений в пределах границ документа | ERROR |
|
||||
| 10 | Индексы шрифтов в форматах в пределах палитры шрифтов | ERROR |
|
||||
| 11 | Индексы линий границ в форматах в пределах палитры линий | ERROR |
|
||||
| 12 | `pictureIndex` рисунков ссылается на существующую картинку | ERROR |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -42,43 +42,3 @@ powershell.exe -NoProfile -File .claude/skills/role-info/scripts/role-info.ps1 -
|
||||
... -Offset 150 # пагинация: пропустить первые 150 строк
|
||||
```
|
||||
|
||||
## Формат вывода
|
||||
|
||||
```
|
||||
=== Role: БазовыеПраваБП --- "Базовые права: Бухгалтерия предприятия" ===
|
||||
|
||||
Properties: setForNewObjects=false, setForAttributesByDefault=true, independentRightsOfChildObjects=false
|
||||
|
||||
Allowed rights:
|
||||
|
||||
Catalog (8):
|
||||
Контрагенты: Read, View, InputByString
|
||||
Банки: Read, View, InputByString
|
||||
...
|
||||
|
||||
Document (12):
|
||||
РеализацияТоваровУслуг: Read, View, Posting, InteractivePosting
|
||||
...
|
||||
|
||||
InformationRegister (6):
|
||||
ЦеныНоменклатуры: Read [RLS], Update
|
||||
...
|
||||
|
||||
Denied: 18 rights (use -ShowDenied to list)
|
||||
|
||||
RLS: 4 restrictions
|
||||
Templates: ДляРегистра, ПоЗначениям
|
||||
|
||||
---
|
||||
Total: 138 allowed, 18 denied
|
||||
|
||||
[TRUNCATED] Shown 150 of 220 lines. Use -Offset 150 to continue.
|
||||
```
|
||||
|
||||
Используйте `-Offset N` и `-Limit N` для постраничного просмотра.
|
||||
|
||||
### Обозначения
|
||||
|
||||
- `[RLS]` — право с ограничением на уровне записей (restrictionByCondition)
|
||||
- `-View`, `-Edit` — запрещённые права (в секции Denied, при `-ShowDenied`)
|
||||
- Вложенные объекты показываются с суффиксом: `Контрагенты.StandardAttribute.PredefinedDataName`
|
||||
|
||||
@@ -16,7 +16,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|--------------|:-----:|---------|-------------------------------------------------|
|
||||
| RightsPath | да | — | Путь к роли (директория или `Rights.xml`) |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Макс. ошибок до остановки (по умолчанию 30) |
|
||||
| OutFile | нет | — | Записать результат в файл (UTF-8 BOM) |
|
||||
|
||||
@@ -25,18 +25,3 @@ allowed-tools:
|
||||
```powershell
|
||||
powershell.exe -NoProfile -File .claude/skills/role-validate/scripts/role-validate.ps1 -RightsPath "Roles/МояРоль"
|
||||
```
|
||||
|
||||
## Проверки
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|---|----------|-------------|
|
||||
| 1 | XML well-formed — парсинг без ошибок | ERROR |
|
||||
| 2 | Корневой элемент `<Rights>` с namespace `http://v8.1c.ru/8.2/roles` | ERROR |
|
||||
| 3 | Три глобальных флага: setForNewObjects, setForAttributesByDefault, independentRightsOfChildObjects | ERROR |
|
||||
| 4 | Объекты: name не пуст, тип распознан, права валидны для типа (с подсказкой при опечатке) | ERROR/WARN |
|
||||
| 5 | Вложенные объекты (3+ сегмента): допустимы только View, Edit (или Use для IntegrationServiceChannel) | ERROR |
|
||||
| 6 | RLS `<restrictionByCondition>`: condition не пуст | ERROR |
|
||||
| 7 | Шаблоны `<restrictionTemplate>`: name и condition не пусты | ERROR |
|
||||
| 8 | Метаданные (если MetadataPath): UUID, Name, Synonym | ERROR/WARN |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|--------------|:-----:|---------|---------------------------------------------------------|
|
||||
| TemplatePath | да | — | Путь к Template.xml или каталогу макета |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 20 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл |
|
||||
|
||||
@@ -27,22 +27,3 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File .claude/skills/skd-validate/scripts/skd-validate.ps1 -TemplatePath "src/МойОтчёт/Templates/ОсновнаяСхема"
|
||||
powershell.exe -NoProfile -File .claude/skills/skd-validate/scripts/skd-validate.ps1 -TemplatePath "Catalogs/Номенклатура/Templates/СКД/Ext/Template.xml"
|
||||
```
|
||||
|
||||
## Проверки (~30)
|
||||
|
||||
| Группа | Что проверяется |
|
||||
|--------|-----------------|
|
||||
| **Root** | XML parse, корневой элемент `DataCompositionSchema`, default namespace, ns-префиксы |
|
||||
| **DataSource** | Наличие, name не пуст, type валиден (Local/External), уникальность имён |
|
||||
| **DataSet** | Наличие, xsi:type валиден, name не пуст, уникальность, ссылка на dataSource, query не пуст |
|
||||
| **Fields** | dataPath не пуст, field не пуст, уникальность dataPath в наборе |
|
||||
| **Links** | source/dest ссылаются на существующие наборы, expressions не пусты |
|
||||
| **CalcFields** | dataPath не пуст, expression не пуст, уникальность, коллизии с полями наборов |
|
||||
| **TotalFields** | dataPath не пуст, expression не пуст |
|
||||
| **Parameters** | name не пуст, уникальность |
|
||||
| **Templates** | name не пуст, уникальность |
|
||||
| **GroupTemplates** | template ссылается на существующий template, templateType валиден |
|
||||
| **Variants** | Наличие, name не пуст, settings element присутствует |
|
||||
| **Settings** | selection/filter/order ссылаются на известные поля, comparisonType валиден, structure items типизированы |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -17,7 +17,7 @@ allowed-tools:
|
||||
| Параметр | Обяз. | Умолч. | Описание |
|
||||
|---------------|:-----:|---------|--------------------------------------------|
|
||||
| SubsystemPath | да | — | Путь к XML-файлу подсистемы |
|
||||
| Detailed | нет | — | Показывать [OK] для каждой проверки |
|
||||
| Detailed | нет | — | Подробный вывод (все проверки, включая успешные) |
|
||||
| MaxErrors | нет | 30 | Остановиться после N ошибок |
|
||||
| OutFile | нет | — | Записать результат в файл |
|
||||
|
||||
@@ -27,23 +27,3 @@ allowed-tools:
|
||||
powershell.exe -NoProfile -File ".claude/skills/subsystem-validate/scripts/subsystem-validate.ps1" -SubsystemPath "Subsystems/Продажи"
|
||||
powershell.exe -NoProfile -File ".claude/skills/subsystem-validate/scripts/subsystem-validate.ps1" -SubsystemPath "Subsystems/Продажи.xml"
|
||||
```
|
||||
|
||||
## Проверки (13)
|
||||
|
||||
| # | Проверка | Серьёзность |
|
||||
|---|----------|-------------|
|
||||
| 1 | XML well-formedness + root structure (MetaDataObject/Subsystem) | ERROR |
|
||||
| 2 | Properties — 9 обязательных свойств | ERROR |
|
||||
| 3 | Name — непустой, валидный идентификатор | ERROR |
|
||||
| 4 | Synonym — непустой (хотя бы один v8:item) | WARN |
|
||||
| 5 | Булевы свойства — содержат true/false | ERROR |
|
||||
| 6 | Content — формат xr:Item, xsi:type | ERROR |
|
||||
| 7 | Content — нет дубликатов | WARN |
|
||||
| 8 | ChildObjects — элементы непустые | ERROR |
|
||||
| 9 | ChildObjects — нет дубликатов | WARN |
|
||||
| 10 | ChildObjects → файлы существуют | WARN |
|
||||
| 11 | CommandInterface.xml — well-formedness | ERROR |
|
||||
| 12 | Picture — формат ссылки | ERROR |
|
||||
| 13 | UseOneCommand=true → ровно 1 элемент в Content | ERROR |
|
||||
|
||||
Exit code: 0 = OK, 1 = есть ошибки. По умолчанию краткий вывод. `-Detailed` для поштучной детализации.
|
||||
|
||||
@@ -1627,6 +1627,10 @@ async function fillReferenceField(selector, fieldName, value, formNum) {
|
||||
// No match in DLB dropdown — close and fall through to paste approach
|
||||
await page.keyboard.press('Escape');
|
||||
await page.waitForTimeout(300);
|
||||
} else if (eddState.visible) {
|
||||
// DLB opened a hint popup (no .eddText items) — close it before proceeding
|
||||
await page.keyboard.press('Escape');
|
||||
await page.waitForTimeout(300);
|
||||
}
|
||||
}
|
||||
} catch { /* DLB approach failed — fall through to paste */ }
|
||||
|
||||
Reference in New Issue
Block a user