diff --git a/.claude/skills/cf-edit/reference.md b/.claude/skills/cf-edit/reference.md index 42ccf3544..02468eb5d 100644 --- a/.claude/skills/cf-edit/reference.md +++ b/.claude/skills/cf-edit/reference.md @@ -51,6 +51,8 @@ Batch: `"Catalog.Товары ;; Document.Заказ ;; Enum.ВидыОплат" Виды, где порядок несёт смысл, пропускаются, пока не названы явно: `CommonAttribute` (порядок разделителей задаёт порядок параметров сеанса), `Subsystem` и `CommandGroup` (порядок в панели), `Language` (порядок мультиязычных строк). +Вызов **без значения** дополнительно ставит сами группы видов в канонический порядок — тот, в котором их пишет платформа. Вызов с явным видом этого не делает: он трогает только имена внутри названного вида. + ## add-defaultRole / remove-defaultRole / set-defaultRoles Имя роли: `ПолныеПрава` или `Role.ПолныеПрава` (префикс `Role.` добавляется автоматически). diff --git a/.claude/skills/cf-edit/scripts/cf-edit.ps1 b/.claude/skills/cf-edit/scripts/cf-edit.ps1 index dd54f3505..1d8666576 100644 --- a/.claude/skills/cf-edit/scripts/cf-edit.ps1 +++ b/.claude/skills/cf-edit/scripts/cf-edit.ps1 @@ -1,4 +1,4 @@ -# cf-edit v1.25 — Edit 1C configuration root (Configuration.xml) +# cf-edit v1.26 — Edit 1C configuration root (Configuration.xml) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -595,6 +595,44 @@ function Do-SortChildObjects([string]$batchVal) { $script:modifyCount++ Info "Sorted: $typeName ($($els.Count))" } + + if ($requested.Count -gt 0) { return } + + # Без аргумента приводим в порядок и сами группы видов: собранная навыками конфигурация + # может держать их не в каноне, и первая же выгрузка платформы даст диф. Переставляем + # содержимое существующих узлов, а не узлы, поэтому отступы и структура файла не меняются — + # в дифе только перестановка строк. Имя тега у XmlElement неизменяемо, поэтому там, где вид + # меняется, узел заменяется через ReplaceChild: он сохраняет окружающие пробельные узлы. + $elems = @() + foreach ($child in $script:childObjsEl.ChildNodes) { + if ($child.NodeType -eq 'Element') { $elems += $child } + } + $tags = @(); $texts = @() + foreach ($e in $elems) { $tags += $e.get_LocalName(); $texts += $e.InnerText } + $rank = @() + for ($i = 0; $i -lt $tags.Count; $i++) { + $r = $script:typeOrder.IndexOf($tags[$i]) + if ($r -lt 0) { $r = $script:typeOrder.Count } + $rank += $r + } + # Порядок стабильный: вторым ключом идёт исходная позиция + $order = @(0..($tags.Count - 1) | Sort-Object @{e={$rank[$_]}}, @{e={$_}}) + $same = $true + for ($i = 0; $i -lt $order.Count; $i++) { if ($order[$i] -ne $i) { $same = $false; break } } + if ($same) { return } + + for ($i = 0; $i -lt $elems.Count; $i++) { + $srcIdx = $order[$i] + if ($tags[$i] -ceq $tags[$srcIdx]) { + $elems[$i].InnerText = $texts[$srcIdx] + continue + } + $newEl = $script:xmlDoc.CreateElement($tags[$srcIdx], $script:mdNs) + $newEl.InnerText = $texts[$srcIdx] + [void]$script:childObjsEl.ReplaceChild($newEl, $elems[$i]) + } + $script:modifyCount++ + Info "Reordered type groups: $($elems.Count) entries" } # Стиль существующего файла для round-trip-сохранения: BOM / EOL / регистр encoding / diff --git a/.claude/skills/cf-edit/scripts/cf-edit.py b/.claude/skills/cf-edit/scripts/cf-edit.py index a7f7ef2d7..a6bf8e7d6 100644 --- a/.claude/skills/cf-edit/scripts/cf-edit.py +++ b/.claude/skills/cf-edit/scripts/cf-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cf-edit v1.25 — Edit 1C configuration root (Configuration.xml) +# cf-edit v1.26 — Edit 1C configuration root (Configuration.xml) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -896,6 +896,27 @@ def main(): modify_count += 1 info(f"Sorted: {type_name} ({len(els)})") + if requested: + # Вид назван явно — точечная операция: взаимный порядок групп не трогаем. + return + + # Без аргумента приводим в порядок и сами группы видов: собранная навыками + # конфигурация может держать их не в каноне, и первая же выгрузка платформы даст + # диф. Переставляем содержимое существующих узлов, а не узлы, поэтому отступы и + # структура файла не меняются — в дифе только перестановка строк. + elems = [c for c in child_objs_el if isinstance(c.tag, str)] + pairs = [(localname(c), c.text or "") for c in elems] + ranked = sorted(range(len(pairs)), + key=lambda i: (TYPE_ORDER.index(pairs[i][0]) if pairs[i][0] in TYPE_ORDER else len(TYPE_ORDER), i)) + wanted = [pairs[i] for i in ranked] + if wanted == pairs: + return + for el, (tag, text) in zip(elems, wanted): + el.tag = f'{{{MD_NS}}}{tag}' + el.text = text + modify_count += 1 + info(f"Reordered type groups: {len(elems)} entries") + def do_remove_child_object(batch_val): nonlocal remove_count if child_objs_el is None: diff --git a/docs/v8-project-guide.md b/docs/v8-project-guide.md index c6a322fac..7a37489d6 100644 --- a/docs/v8-project-guide.md +++ b/docs/v8-project-guide.md @@ -169,7 +169,7 @@ - `Subsystem` и `CommandGroup` — пока они не перечислены в `` / `` файла `Ext/CommandInterface.xml`, порядок в дереве задаёт порядок в интерфейсе, а платформа эти списки сама не заводит: в выгрузке ACC вне `GroupsOrder` 15 живых групп из 39, а `SubsystemsOrder` не появляется, пока интерфейс не настроен руками. - `Language` — порядок языков задаёт порядок `` в мультиязычных строках по всей выгрузке. -**Что поле не делает.** Оно влияет только на новые записи и не приводит в порядок уже накопленное — для этого есть `/cf-edit -Operation sort-childObjects`. `byName` к тому же предполагает, что список уже упорядочен: объект встаёт перед первым объектом своего вида, чьё имя больше. Взаимный порядок групп видов навыки не меняют вовсе: платформа приводит его к своему при первой же выгрузке. +**Что поле не делает.** Оно влияет только на новые записи и не приводит в порядок уже накопленное — для этого есть `/cf-edit -Operation sort-childObjects` (без значения он заодно ставит группы видов в канонический порядок). `byName` к тому же предполагает, что список уже упорядочен: объект встаёт перед первым объектом своего вида, чьё имя больше. Взаимный порядок групп видов навыки не меняют вовсе: платформа приводит его к своему при первой же выгрузке. **Объекты с префиксом `Удалить`** стандарт разрешает держать в конце ветки. Навыки их не выделяют и ставят по алфавиту — это стандарту не противоречит, и типовые конфигурации поступают так же (в ACC 360 таких объектов из 373 стоят по алфавиту, а не в хвосте). diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-all/Configuration.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-all/Configuration.xml index ebc99022d..dc86ca8a3 100644 --- a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-all/Configuration.xml +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-all/Configuration.xml @@ -246,13 +246,13 @@ Русский + Яблоко + Банан + Каппа + Омега Альфа Бета Гамма - Каппа - Омега - Яблоко - Банан \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-idempotent/Configuration.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-idempotent/Configuration.xml index ebc99022d..dc86ca8a3 100644 --- a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-idempotent/Configuration.xml +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-idempotent/Configuration.xml @@ -246,13 +246,13 @@ Русский + Яблоко + Банан + Каппа + Омега Альфа Бета Гамма - Каппа - Омега - Яблоко - Банан \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-order-sensitive-skipped/Configuration.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-order-sensitive-skipped/Configuration.xml index 1399ccb1d..2e32e069c 100644 --- a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-order-sensitive-skipped/Configuration.xml +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-order-sensitive-skipped/Configuration.xml @@ -246,12 +246,12 @@ Русский - Альфа - Гамма - ГруппаЯблоко - ГруппаБанан РеквизитЯ РеквизитА + ГруппаЯблоко + ГруппаБанан + Альфа + Гамма \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Альфа.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Альфа.xml new file mode 100644 index 000000000..ba2d5fde3 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Альфа.xml @@ -0,0 +1,91 @@ + + + + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Альфа/Ext/ObjectModule.bsl b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Альфа/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Бета.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Бета.xml new file mode 100644 index 000000000..e1363c902 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Бета.xml @@ -0,0 +1,91 @@ + + + + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Бета/Ext/ObjectModule.bsl b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Бета/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Гамма.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Гамма.xml new file mode 100644 index 000000000..7279f86fd --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Гамма.xml @@ -0,0 +1,91 @@ + + + + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Гамма/Ext/ObjectModule.bsl b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Catalogs/Гамма/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Configuration.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Configuration.xml new file mode 100644 index 000000000..9625bf844 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Configuration.xml @@ -0,0 +1,258 @@ + + + + + + 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/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Languages/Русский.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Каппа.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Каппа.xml new file mode 100644 index 000000000..ebe12a305 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Каппа.xml @@ -0,0 +1,15 @@ + + + + + Каппа + + + ru + Каппа + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Каппа/Ext/Rights.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Каппа/Ext/Rights.xml new file mode 100644 index 000000000..9a1537d28 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Каппа/Ext/Rights.xml @@ -0,0 +1,6 @@ + + + false + true + false + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Омега.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Омега.xml new file mode 100644 index 000000000..cf51b12fa --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Омега.xml @@ -0,0 +1,15 @@ + + + + + Омега + + + ru + Омега + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Омега/Ext/Rights.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Омега/Ext/Rights.xml new file mode 100644 index 000000000..9a1537d28 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Roles/Омега/Ext/Rights.xml @@ -0,0 +1,6 @@ + + + false + true + false + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Subsystems/Банан.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Subsystems/Банан.xml new file mode 100644 index 000000000..702671249 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Subsystems/Банан.xml @@ -0,0 +1,22 @@ + + + + + Банан + + + ru + Банан + + + + true + true + false + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Subsystems/Яблоко.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Subsystems/Яблоко.xml new file mode 100644 index 000000000..e24806b55 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups-explicit-skips/Subsystems/Яблоко.xml @@ -0,0 +1,22 @@ + + + + + Яблоко + + + ru + Яблоко + + + + true + true + false + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Альфа.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Альфа.xml new file mode 100644 index 000000000..ba2d5fde3 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Альфа.xml @@ -0,0 +1,91 @@ + + + + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Альфа/Ext/ObjectModule.bsl b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Альфа/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Бета.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Бета.xml new file mode 100644 index 000000000..e1363c902 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Бета.xml @@ -0,0 +1,91 @@ + + + + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Бета/Ext/ObjectModule.bsl b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Бета/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Гамма.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Гамма.xml new file mode 100644 index 000000000..7279f86fd --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Гамма.xml @@ -0,0 +1,91 @@ + + + + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Гамма/Ext/ObjectModule.bsl b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Catalogs/Гамма/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Configuration.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Configuration.xml new file mode 100644 index 000000000..dc86ca8a3 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Configuration.xml @@ -0,0 +1,258 @@ + + + + + + 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/cf-edit/snapshots/sort-childobjects-type-groups/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Languages/Русский.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Каппа.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Каппа.xml new file mode 100644 index 000000000..ebe12a305 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Каппа.xml @@ -0,0 +1,15 @@ + + + + + Каппа + + + ru + Каппа + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Каппа/Ext/Rights.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Каппа/Ext/Rights.xml new file mode 100644 index 000000000..9a1537d28 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Каппа/Ext/Rights.xml @@ -0,0 +1,6 @@ + + + false + true + false + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Омега.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Омега.xml new file mode 100644 index 000000000..cf51b12fa --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Омега.xml @@ -0,0 +1,15 @@ + + + + + Омега + + + ru + Омега + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Омега/Ext/Rights.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Омега/Ext/Rights.xml new file mode 100644 index 000000000..9a1537d28 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Roles/Омега/Ext/Rights.xml @@ -0,0 +1,6 @@ + + + false + true + false + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Subsystems/Банан.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Subsystems/Банан.xml new file mode 100644 index 000000000..702671249 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Subsystems/Банан.xml @@ -0,0 +1,22 @@ + + + + + Банан + + + ru + Банан + + + + true + true + false + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Subsystems/Яблоко.xml b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Subsystems/Яблоко.xml new file mode 100644 index 000000000..e24806b55 --- /dev/null +++ b/tests/skills/cases/cf-edit/snapshots/sort-childobjects-type-groups/Subsystems/Яблоко.xml @@ -0,0 +1,22 @@ + + + + + Яблоко + + + ru + Яблоко + + + + true + true + false + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-edit/sort-childobjects-all.json b/tests/skills/cases/cf-edit/sort-childobjects-all.json index c0028728b..02c8c0c46 100644 --- a/tests/skills/cases/cf-edit/sort-childobjects-all.json +++ b/tests/skills/cases/cf-edit/sort-childobjects-all.json @@ -1,5 +1,5 @@ { - "name": "sort-childObjects без значения: справочники и роли упорядочены, подсистемы не тронуты", + "name": "sort-childObjects без значения: имена внутри видов упорядочены, группы видов приведены к канону, подсистемы по имени не тронуты", "setup": "fixture:unsorted-childobjects", "input": [ { @@ -9,11 +9,12 @@ "expect": { "stdoutContains": [ "Sorted: Catalog (3)", - "Sorted: Role (2)" + "Sorted: Role (2)", + "Reordered type groups" ], "fileContains": { "file": "Configuration.xml", - "text": "Альфа\r\n\t\t\tБета\r\n\t\t\tГамма\r\n\t\t\tКаппа\r\n\t\t\tОмега\r\n\t\t\tЯблоко\r\n\t\t\tБанан" + "text": "Русский\r\n\t\t\tЯблоко\r\n\t\t\tБанан\r\n\t\t\tКаппа\r\n\t\t\tОмега\r\n\t\t\tАльфа\r\n\t\t\tБета\r\n\t\t\tГамма" }, "preserves": { "file": "Configuration.xml", diff --git a/tests/skills/cases/cf-edit/sort-childobjects-idempotent.json b/tests/skills/cases/cf-edit/sort-childobjects-idempotent.json index 1b03f00e3..2980c1b7e 100644 --- a/tests/skills/cases/cf-edit/sort-childobjects-idempotent.json +++ b/tests/skills/cases/cf-edit/sort-childobjects-idempotent.json @@ -4,12 +4,21 @@ "preRun": [ { "script": "cf-edit/scripts/cf-edit", - "args": { "-ConfigPath": "{workDir}", "-Operation": "sort-childObjects" } + "args": { + "-ConfigPath": "{workDir}", + "-Operation": "sort-childObjects" + } + } + ], + "input": [ + { + "operation": "sort-childObjects" } ], - "input": [ { "operation": "sort-childObjects" } ], "expect": { - "stdoutContains": ["Modified: 0"], + "stdoutContains": [ + "Modified: 0" + ], "fileContains": { "file": "Configuration.xml", "text": "Альфа\r\n\t\t\tБета\r\n\t\t\tГамма" diff --git a/tests/skills/cases/cf-edit/sort-childobjects-order-sensitive-skipped.json b/tests/skills/cases/cf-edit/sort-childobjects-order-sensitive-skipped.json index bad3e0aaa..ba180fcd2 100644 --- a/tests/skills/cases/cf-edit/sort-childobjects-order-sensitive-skipped.json +++ b/tests/skills/cases/cf-edit/sort-childobjects-order-sensitive-skipped.json @@ -1,12 +1,18 @@ { "name": "sort-childObjects без значения не трогает виды с осмысленным порядком: CommonAttribute, CommandGroup, Language", "setup": "fixture:order-sensitive", - "input": [ { "operation": "sort-childObjects" } ], + "input": [ + { + "operation": "sort-childObjects" + } + ], "expect": { - "stdoutContains": ["Sorted: Catalog (2)"], + "stdoutContains": [ + "Sorted: Catalog (2)" + ], "fileContains": { "file": "Configuration.xml", - "text": "Альфа\r\n\t\t\tГамма\r\n\t\t\tГруппаЯблоко\r\n\t\t\tГруппаБанан\r\n\t\t\tРеквизитЯ\r\n\t\t\tРеквизитА" + "text": "РеквизитЯ\r\n\t\t\tРеквизитА\r\n\t\t\tГруппаЯблоко\r\n\t\t\tГруппаБанан\r\n\t\t\tАльфа\r\n\t\t\tГамма" } } } diff --git a/tests/skills/cases/cf-edit/sort-childobjects-type-groups-explicit-skips.json b/tests/skills/cases/cf-edit/sort-childobjects-type-groups-explicit-skips.json new file mode 100644 index 000000000..96334fa5c --- /dev/null +++ b/tests/skills/cases/cf-edit/sort-childobjects-type-groups-explicit-skips.json @@ -0,0 +1,12 @@ +{ + "name": "sort-childObjects с явным видом порядок групп не трогает — операция остаётся точечной", + "setup": "fixture:unsorted-childobjects", + "input": [ { "operation": "sort-childObjects", "value": "Catalog" } ], + "expect": { + "stdoutContains": ["Sorted: Catalog (3)"], + "fileContains": { + "file": "Configuration.xml", + "text": "Гамма\r\n\t\t\tОмега\r\n\t\t\tКаппа\r\n\t\t\tЯблоко" + } + } +} diff --git a/tests/skills/cases/cf-edit/sort-childobjects-type-groups.json b/tests/skills/cases/cf-edit/sort-childobjects-type-groups.json new file mode 100644 index 000000000..b4ad6045b --- /dev/null +++ b/tests/skills/cases/cf-edit/sort-childobjects-type-groups.json @@ -0,0 +1,13 @@ +{ + "name": "sort-childObjects без значения приводит в канон и сами группы видов", + "setup": "fixture:unsorted-childobjects", + "input": [ { "operation": "sort-childObjects" } ], + "expect": { + "stdoutContains": ["Reordered type groups: 8 entries"], + "fileContains": { + "file": "Configuration.xml", + "text": "Русский\r\n\t\t\tЯблоко\r\n\t\t\tБанан\r\n\t\t\tКаппа\r\n\t\t\tОмега\r\n\t\t\tАльфа" + }, + "preserves": { "file": "Configuration.xml", "bom": true, "eol": "crlf", "encoding": "UTF-8", "finalNewline": false, "noCR13": true, "selfClose": "tight", "noEmptyPairs": true } + } +}