feat(meta-compile,meta-decompile): команды объекта (Command + CommandModule.bsl) (v1.26/v0.11)

Новая возможность (не только раундтрип): meta-compile теперь умеет добавлять команды объекту
(раньше не умел вовсе). Корпус: 243 команды в 133 справочниках.

DSL `commands` (map имя→объект ИЛИ array): synonym/tooltip (ML, авто-синоним), comment, group,
commandParameterType (тип), parameterUseMode (Single), modifiesData (false), representation (Auto),
picture/shortcut, onMainServerUnavalableBehavior (Auto). Все omit-on-default.

- meta-compile (дуал-порт): Emit-Command → <Command>-блок в ChildObjects (после ТЧ) + генерация
  Commands/<Имя>/Ext/CommandModule.bsl с заготовкой обработчика ОбработкаКоманды.
- meta-decompile: захват команд из ChildObjects (тела модулей — вне скоупа, как ObjectModule).
- spec §7.1.3; тест-кейс catalog-command.

Валидация: PS==PY (XML+модуль); Command-категория 0; −6244 (53436→47192); регресс 38/38; 1С-cert
зелёный (справочник с командой+параметр-типом+модулем грузится в платформу).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-03 16:58:03 +03:00
parent 1701bdac96
commit d8146e1f1b
11 changed files with 609 additions and 3 deletions
+28
View File
@@ -355,6 +355,34 @@ JSON DSL для описания объектов метаданных конф
> Пока поддержано для **Catalog** (`CatalogPredefinedItems`). ChartOf*/ПВХ — при их проработке.
#### 7.1.3 `commands` — команды объекта
Команды объекта → `<Command>`-блоки в ChildObjects + заготовка `Commands/<Имя>/Ext/CommandModule.bsl` (обработчик `ОбработкаКоманды`). Ключ — имя команды, значение — объект свойств (map `имя→объект`, либо массив `[{name, …}]`).
| Ключ | XML | Умолчание |
|------|-----|-----------|
| `synonym` | Synonym | авто из имени (ML) |
| `tooltip` | ToolTip | пусто (ML) |
| `comment` | Comment | пусто |
| `group` | Group | пусто (`FormCommandBarImportant`, `FormNavigationPanelGoTo`, …) |
| `commandParameterType` | CommandParameterType | пусто (тип, напр. `CatalogRef.Номенклатура`) |
| `parameterUseMode` | ParameterUseMode | `Single` (`Single`/`Multiple`) |
| `modifiesData` | ModifiesData | `false` (bool) |
| `representation` | Representation | `Auto` |
| `picture` / `shortcut` | Picture / Shortcut | пусто |
| `onMainServerUnavalableBehavior` | OnMainServerUnavalableBehavior | `Auto` |
```json
"commands": {
"ПечатьЭтикеток": {
"synonym": "Печать этикеток", "group": "FormCommandBarImportant",
"commandParameterType": "CatalogRef.Номенклатура", "modifiesData": true
}
}
```
> Тело модуля команды генерируется заготовкой (обработчик пустой). Раундтрип тела модуля не проверяет (как ObjectModule).
### 7.2 Document
| Поле JSON | Умолчание | XML элемент |