From 9ad9c12c9b4ed82d1f146885432dabfb53721b5a Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 11 Jul 2026 19:11:53 +0300 Subject: [PATCH] =?UTF-8?q?feat(meta-compile):=20=D0=B3=D1=80=D1=83=D0=BF?= =?UTF-8?q?=D0=BF=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=20=E2=80=94?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D1=89=D0=B0=D1=8E=D1=89=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B2=D0=BE=D0=B4,=20allowlist,=20=D0=B2=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D1=8F=20(v1.64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Emit-Command: резолв группы (Resolve-CommandGroup) — русские подписи групп («Панель навигации.Важное» → NavigationPanelImportant и т.д.), `ГруппаКоманд.X` → `CommandGroup.X`. Закрыты два пробела валидации (найдены при 1С-cert): - пустая/опущенная group → ошибка с подсказкой (список валидных групп), а не молчаливый незагружаемый ; - секционная группа (NavigationPanel*/ActionsPanel*) + commandParameterType → ошибка (тип параметра доступен только для групп формы/CommandGroup — подтверждено выгрузкой ЕРП: команды с параметром только в Form*/CommandGroup). Списки групп из реального erp_8.3.24. Зеркало ps1+py (идентично). reference/blocks.md: каноничный список групп + правило параметра (без прощающего ввода — usage-голос). Тесты: catalog-command-groups (рус-синонимы/секц/форма/кастом через preRun CommandGroup, 1С-cert ✓) + 2 expectError (пустая group; секц+параметр). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../skills/meta-compile/reference/blocks.md | 14 +- .../meta-compile/scripts/meta-compile.ps1 | 50 +++- .../meta-compile/scripts/meta-compile.py | 50 +++- .../meta-compile/catalog-command-groups.json | 22 ++ .../meta-compile/error-command-nav-param.json | 8 + .../meta-compile/error-command-no-group.json | 8 + .../Catalogs/ТестГруппКоманд.xml | 178 ++++++++++++ .../Commands/ДействияСервис/Ext/CommandModule.bsl | 6 + .../Commands/Кастом/Ext/CommandModule.bsl | 6 + .../Commands/НавВажное/Ext/CommandModule.bsl | 6 + .../Commands/ФормаВажное/Ext/CommandModule.bsl | 6 + .../ТестГруппКоманд/Ext/ObjectModule.bsl | 0 .../CommandGroups/МояГруппа.xml | 19 ++ .../catalog-command-groups/Configuration.xml | 253 ++++++++++++++++++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../Languages/Русский.xml | 16 ++ 16 files changed, 653 insertions(+), 7 deletions(-) create mode 100644 tests/skills/cases/meta-compile/catalog-command-groups.json create mode 100644 tests/skills/cases/meta-compile/error-command-nav-param.json create mode 100644 tests/skills/cases/meta-compile/error-command-no-group.json create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд.xml create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ДействияСервис/Ext/CommandModule.bsl create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/Кастом/Ext/CommandModule.bsl create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/НавВажное/Ext/CommandModule.bsl create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ФормаВажное/Ext/CommandModule.bsl create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/CommandGroups/МояГруппа.xml create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Configuration.xml create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Languages/Русский.xml diff --git a/.claude/skills/meta-compile/reference/blocks.md b/.claude/skills/meta-compile/reference/blocks.md index 86bd7078..5b4d9e14 100644 --- a/.claude/skills/meta-compile/reference/blocks.md +++ b/.claude/skills/meta-compile/reference/blocks.md @@ -31,8 +31,8 @@ BusinessProcess, Task и др.). | `synonym` | из имени | ML | | `tooltip` | пусто | ML | | `comment` | пусто | строка | -| `group` | пусто | группа команд (`FormCommandBarImportant`, `FormNavigationPanelGoTo`, …) | -| `commandParameterType` | пусто | тип параметра (напр. `CatalogRef.Номенклатура`) | +| `group` | **обязательно** | группа размещения (см. ниже) | +| `commandParameterType` | пусто | тип параметра (напр. `CatalogRef.Номенклатура`) — **только для групп формы** | | `parameterUseMode` | `Single` | `Single` / `Multiple` | | `modifiesData` | `false` | bool | | `representation` | `Auto` | вид отображения | @@ -46,6 +46,16 @@ BusinessProcess, Task и др.). } ``` +**Группа (`group`) обязательна** — каждая команда размещается в группе командного интерфейса: + +- **Секционные** (панель раздела; `commandParameterType` **недоступен**): `NavigationPanelImportant` / + `NavigationPanelOrdinary` / `NavigationPanelSeeAlso`, `ActionsPanelCreate` / `ActionsPanelReports` / `ActionsPanelTools`. +- **Формы** (`commandParameterType` допустим): `FormCommandBarImportant` / `FormCommandBarCreateBasedOn`, + `FormNavigationPanelImportant` / `FormNavigationPanelGoTo` / `FormNavigationPanelSeeAlso`. +- **Кастомная группа:** `CommandGroup.<Имя>` (параметр допустим). + +Секционная группа вместе с `commandParameterType` → ошибка. + ## `inputByString` / `dataLockFields` / `basedOn` Списки полей/объектов уровня объекта. Поля — по имени реквизита объекта (обычного или стандартного). diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 6e8a3b52..3c9237a7 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -1,4 +1,4 @@ -# meta-compile v1.63 — Compile 1C metadata object from JSON +# meta-compile v1.64 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -267,6 +267,46 @@ $script:validEnumValues = @{ "FullTextSearchOnInputByString" = @("Use","DontUse") } +# --- Группы команд объекта (командный интерфейс) --- +# Секционные группы (панель раздела): команда БЕЗ параметра. Групповые формы: параметр доступен. +$script:sectionCommandGroups = @( + "NavigationPanelImportant","NavigationPanelOrdinary","NavigationPanelSeeAlso", + "ActionsPanelCreate","ActionsPanelReports","ActionsPanelTools" +) +$script:formCommandGroups = @( + "FormCommandBarImportant","FormCommandBarCreateBasedOn", + "FormNavigationPanelImportant","FormNavigationPanelGoTo","FormNavigationPanelSeeAlso" +) +$script:validCommandGroups = $script:sectionCommandGroups + $script:formCommandGroups +# Прощающий ввод: русские подписи групп → канон +$script:commandGroupAliases = @{ + "Панель навигации.Важное" = "NavigationPanelImportant" + "Панель навигации.Обычное" = "NavigationPanelOrdinary" + "Панель навигации.См. также" = "NavigationPanelSeeAlso" + "Панель действий.Создать" = "ActionsPanelCreate" + "Панель действий.Отчеты" = "ActionsPanelReports" + "Панель действий.Отчёты" = "ActionsPanelReports" + "Панель действий.Сервис" = "ActionsPanelTools" + "Командная панель формы.Важное" = "FormCommandBarImportant" + "Командная панель формы.Создать на основании" = "FormCommandBarCreateBasedOn" + "Панель навигации формы.Важное" = "FormNavigationPanelImportant" + "Панель навигации формы.Перейти" = "FormNavigationPanelGoTo" + "Панель навигации формы.См. также" = "FormNavigationPanelSeeAlso" +} + +# Резолв группы команды: рус-синоним → канон; ГруппаКоманд.X → CommandGroup.X; пусто → ошибка с подсказкой. +function Resolve-CommandGroup { + param([string]$raw, [string]$cmdName) + $g = "$raw".Trim() + if (-not $g) { + Write-Error "Команде '$cmdName' не задана группа (group). 1С требует группу. Валидные: $($script:validCommandGroups -join ', '); либо CommandGroup.<Имя> — кастомная группа." + exit 1 + } + if ($script:commandGroupAliases.ContainsKey($g)) { return $script:commandGroupAliases[$g] } + if ($g -match '^(?:CommandGroup|ГруппаКоманд)\.(.+)$') { return "CommandGroup.$($Matches[1])" } + return $g +} + function Normalize-EnumValue { param([string]$propName, [string]$value) # 1. Check alias dictionary — silent auto-correct @@ -1918,8 +1958,12 @@ function Emit-Command { $syn = if ($null -ne $cmd.synonym) { $cmd.synonym } else { Split-CamelCase $cmdName } Emit-MLText "$indent`t`t" "Synonym" $syn if ($cmd.comment) { X "$indent`t`t$(Esc-XmlText "$($cmd.comment)")" } else { X "$indent`t`t" } - $group = if ($cmd.group) { "$($cmd.group)" } else { "" } - X "$indent`t`t$group" + $group = Resolve-CommandGroup $cmd.group $cmdName + if ($cmd.commandParameterType -and ($script:sectionCommandGroups -contains $group)) { + Write-Error "Команда '$cmdName': тип параметра (commandParameterType) недоступен для команд секционной панели ('$group'). Тип параметра — только для групп формы (FormCommandBar*/FormNavigationPanel*) или CommandGroup.<Имя>." + exit 1 + } + X "$indent`t`t$(Esc-Xml $group)" if ($cmd.commandParameterType) { X "$indent`t`t" Emit-TypeContent "$indent`t`t`t" "$($cmd.commandParameterType)" diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index e7c9c0bd..3c1ab8bd 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-compile v1.63 — Compile 1C metadata object from JSON +# meta-compile v1.64 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -412,6 +412,46 @@ valid_enum_values = { 'FullTextSearchOnInputByString': ['Use', 'DontUse'], } +# --- Группы команд объекта (командный интерфейс) --- +# Секционные группы (панель раздела): команда БЕЗ параметра. Групповые формы: параметр доступен. +SECTION_COMMAND_GROUPS = [ + 'NavigationPanelImportant', 'NavigationPanelOrdinary', 'NavigationPanelSeeAlso', + 'ActionsPanelCreate', 'ActionsPanelReports', 'ActionsPanelTools', +] +FORM_COMMAND_GROUPS = [ + 'FormCommandBarImportant', 'FormCommandBarCreateBasedOn', + 'FormNavigationPanelImportant', 'FormNavigationPanelGoTo', 'FormNavigationPanelSeeAlso', +] +VALID_COMMAND_GROUPS = SECTION_COMMAND_GROUPS + FORM_COMMAND_GROUPS +COMMAND_GROUP_ALIASES = { + 'Панель навигации.Важное': 'NavigationPanelImportant', + 'Панель навигации.Обычное': 'NavigationPanelOrdinary', + 'Панель навигации.См. также': 'NavigationPanelSeeAlso', + 'Панель действий.Создать': 'ActionsPanelCreate', + 'Панель действий.Отчеты': 'ActionsPanelReports', + 'Панель действий.Отчёты': 'ActionsPanelReports', + 'Панель действий.Сервис': 'ActionsPanelTools', + 'Командная панель формы.Важное': 'FormCommandBarImportant', + 'Командная панель формы.Создать на основании': 'FormCommandBarCreateBasedOn', + 'Панель навигации формы.Важное': 'FormNavigationPanelImportant', + 'Панель навигации формы.Перейти': 'FormNavigationPanelGoTo', + 'Панель навигации формы.См. также': 'FormNavigationPanelSeeAlso', +} + + +def resolve_command_group(raw, cmd_name): + g = (str(raw) if raw is not None else '').strip() + if not g: + sys.stderr.write(f"Команде '{cmd_name}' не задана группа (group). 1С требует группу. " + f"Валидные: {', '.join(VALID_COMMAND_GROUPS)}; либо CommandGroup.<Имя> — кастомная группа.\n") + sys.exit(1) + if g in COMMAND_GROUP_ALIASES: + return COMMAND_GROUP_ALIASES[g] + m = re.match(r'^(?:CommandGroup|ГруппаКоманд)\.(.+)$', g) + if m: + return f'CommandGroup.{m.group(1)}' + return g + def normalize_enum_value(prop_name, value): # 1. Check alias dictionary — silent auto-correct if value in enum_value_aliases: @@ -1989,7 +2029,13 @@ def emit_command(indent, cmd_name, cmd): X(f'{indent}\t\t{esc_xml_text(str(cmd["comment"]))}') else: X(f'{indent}\t\t') - X(f'{indent}\t\t{cmd.get("group") or ""}') + group = resolve_command_group(cmd.get('group'), cmd_name) + if cmd.get('commandParameterType') and group in SECTION_COMMAND_GROUPS: + sys.stderr.write(f"Команда '{cmd_name}': тип параметра (commandParameterType) недоступен для команд " + f"секционной панели ('{group}'). Тип параметра — только для групп формы " + f"(FormCommandBar*/FormNavigationPanel*) или CommandGroup.<Имя>.\n") + sys.exit(1) + X(f'{indent}\t\t{esc_xml(group)}') if cmd.get('commandParameterType'): X(f'{indent}\t\t') emit_type_content(f'{indent}\t\t\t', str(cmd['commandParameterType'])) diff --git a/tests/skills/cases/meta-compile/catalog-command-groups.json b/tests/skills/cases/meta-compile/catalog-command-groups.json new file mode 100644 index 00000000..968669e4 --- /dev/null +++ b/tests/skills/cases/meta-compile/catalog-command-groups.json @@ -0,0 +1,22 @@ +{ + "name": "Команды: группы (рус-синонимы, секционные, форма, кастомная)", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommandGroup", "name": "МояГруппа" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "input": { + "type": "Catalog", "name": "ТестГруппКоманд", "useStandardCommands": true, + "commands": { + "НавВажное": { "synonym": "Навигация важное", "group": "Панель навигации.Важное" }, + "ДействияСервис": { "synonym": "Сервис", "group": "ActionsPanelTools" }, + "ФормаВажное": { "synonym": "Форма важное", "group": "Командная панель формы.Важное", + "commandParameterType": "CatalogRef.ТестГруппКоманд" }, + "Кастом": { "synonym": "Кастомная", "group": "ГруппаКоманд.МояГруппа" } + } + }, + "validatePath": "Catalogs/ТестГруппКоманд", + "expect": { "files": ["Catalogs/ТестГруппКоманд.xml"] } +} diff --git a/tests/skills/cases/meta-compile/error-command-nav-param.json b/tests/skills/cases/meta-compile/error-command-nav-param.json new file mode 100644 index 00000000..c89c423a --- /dev/null +++ b/tests/skills/cases/meta-compile/error-command-nav-param.json @@ -0,0 +1,8 @@ +{ + "name": "Ошибка: секционная группа + commandParameterType (несовместимо)", + "input": { + "type": "Catalog", "name": "ТестНавПараметр", + "commands": { "Команда": { "group": "NavigationPanelOrdinary", "commandParameterType": "CatalogRef.ТестНавПараметр" } } + }, + "expectError": "недоступен" +} diff --git a/tests/skills/cases/meta-compile/error-command-no-group.json b/tests/skills/cases/meta-compile/error-command-no-group.json new file mode 100644 index 00000000..d53b3cf0 --- /dev/null +++ b/tests/skills/cases/meta-compile/error-command-no-group.json @@ -0,0 +1,8 @@ +{ + "name": "Ошибка: команда без группы", + "input": { + "type": "Catalog", "name": "ТестБезГруппы", + "commands": { "Команда": { "synonym": "Команда" } } + }, + "expectError": "не задана группа" +} diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд.xml b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд.xml new file mode 100644 index 00000000..b3de0eb5 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд.xml @@ -0,0 +1,178 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + ТестГруппКоманд + + + ru + Тест групп команд + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.ТестГруппКоманд.StandardAttribute.Description + Catalog.ТестГруппКоманд.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + + НавВажное + + + ru + Навигация важное + + + + NavigationPanelImportant + + Single + false + Auto + + + + Auto + + + + + ДействияСервис + + + ru + Сервис + + + + ActionsPanelTools + + Single + false + Auto + + + + Auto + + + + + ФормаВажное + + + ru + Форма важное + + + + FormCommandBarImportant + + d5p1:CatalogRef.ТестГруппКоманд + + Single + false + Auto + + + + Auto + + + + + Кастом + + + ru + Кастомная + + + + CommandGroup.МояГруппа + + Single + false + Auto + + + + Auto + + + + + diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ДействияСервис/Ext/CommandModule.bsl b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ДействияСервис/Ext/CommandModule.bsl new file mode 100644 index 00000000..d7ec0aeb --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ДействияСервис/Ext/CommandModule.bsl @@ -0,0 +1,6 @@ +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + // Вставьте обработчик команды. + +КонецПроцедуры diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/Кастом/Ext/CommandModule.bsl b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/Кастом/Ext/CommandModule.bsl new file mode 100644 index 00000000..d7ec0aeb --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/Кастом/Ext/CommandModule.bsl @@ -0,0 +1,6 @@ +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + // Вставьте обработчик команды. + +КонецПроцедуры diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/НавВажное/Ext/CommandModule.bsl b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/НавВажное/Ext/CommandModule.bsl new file mode 100644 index 00000000..d7ec0aeb --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/НавВажное/Ext/CommandModule.bsl @@ -0,0 +1,6 @@ +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + // Вставьте обработчик команды. + +КонецПроцедуры diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ФормаВажное/Ext/CommandModule.bsl b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ФормаВажное/Ext/CommandModule.bsl new file mode 100644 index 00000000..d7ec0aeb --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Commands/ФормаВажное/Ext/CommandModule.bsl @@ -0,0 +1,6 @@ +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + // Вставьте обработчик команды. + +КонецПроцедуры diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Catalogs/ТестГруппКоманд/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/CommandGroups/МояГруппа.xml b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/CommandGroups/МояГруппа.xml new file mode 100644 index 00000000..1d91ab4e --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/CommandGroups/МояГруппа.xml @@ -0,0 +1,19 @@ + + + + + МояГруппа + + + ru + Моя группа + + + + Auto + + + NavigationPanel + + + diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Configuration.xml new file mode 100644 index 00000000..40987220 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + МояГруппа + ТестГруппКоманд + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/catalog-command-groups/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file