mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-01 16:00:51 +03:00
feat(cf-edit): виды с осмысленным порядком не сортируются автоматически
Правило «Subsystem не упорядочиваем» распространено на четыре вида и вынесено в семью is_order_sensitive_type / Test-OrderSensitiveType: раньше литерал "Subsystem" был размазан по четырём точкам — регистрация в Register-InChildObjects, add-childObject, заимствование в расширение и сортировка. CommonAttribute — исключение самого стандарта #std467: у общих реквизитов-разделителей порядок в дереве задаёт порядок установки параметров сеанса (https://github.com/1C-Company/v8-code-style/issues/78). Единственный из четырёх, где сортировка ломает поведение, а не только диф. CommandGroup и Language добавлены по замерам. В ACC 15 живых групп команд из 39 не перечислены ни в одном GroupsOrder — как и подсистемы, они падают на порядок дерева. Порядок языков задаёт порядок <v8:item> в мультиязычных строках по всей выгрузке. Прежний вывод «сортировать их безопасно» опирался на стендовый прогон, где не было ни подсистем (а значит и CommandInterface.xml), ни второго языка у объектов: ломаться там было нечему, и отсутствие изменений ничего не доказывало. PaletteColor сортируется — это переменные цветов. Второе послабление стандарта (объекты «Удалить*» можно держать в конце ветки) не реализуем: типовые им не пользуются — в ACC 360 таких объектов из 373 стоят по алфавиту, а сортировка стандарту не противоречит. Оговорено в гайде. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QoAJmoNbgWKobA7JGgN5S3
This commit is contained in:
co-authored by
Claude Opus 5
parent
ecde0d1c41
commit
1046e6018c
@@ -163,11 +163,15 @@
|
||||
|
||||
**Порядок имён** — как в дереве Конфигуратора: регистр не учитывается, подчёркивание раньше цифр, цифры раньше букв, латиница раньше кириллицы, `ё` на месте `е`. Сравнение реализовано ключом «ранг+символ», а не культурными таблицами ОС, поэтому PowerShell- и Python-порты дают одинаковый результат на любой платформе.
|
||||
|
||||
**Подсистемы поле не затрагивает** — они всегда дописываются в конец. Порядок подсистем в дереве задаёт порядок разделов в панели, пока они не перечислены в `<SubsystemsOrder>` файла `Ext/CommandInterface.xml`; сама платформа этот список не заводит, а `subsystem-compile` его не трогает (это работа `interface-edit`). Сортировка подсистем поэтому переставляла бы разделы интерфейса молча.
|
||||
**Четыре вида поле не затрагивает** — они всегда дописываются в конец, и массовая сортировка их тоже пропускает. Упорядочить их можно, только назвав вид явно.
|
||||
|
||||
- `CommonAttribute` — исключение самого стандарта: у общих реквизитов-разделителей порядок в дереве задаёт порядок установки параметров сеанса.
|
||||
- `Subsystem` и `CommandGroup` — пока они не перечислены в `<SubsystemsOrder>` / `<GroupsOrder>` файла `Ext/CommandInterface.xml`, порядок в дереве задаёт порядок в интерфейсе, а платформа эти списки сама не заводит: в выгрузке ACC вне `GroupsOrder` 15 живых групп из 39, а `SubsystemsOrder` не появляется, пока интерфейс не настроен руками.
|
||||
- `Language` — порядок языков задаёт порядок `<v8:item>` в мультиязычных строках по всей выгрузке.
|
||||
|
||||
**Что поле не делает.** Оно влияет только на новые записи и не приводит в порядок уже накопленное — для этого есть `/cf-edit -Operation sort-childObjects`. `byName` к тому же предполагает, что список уже упорядочен: объект встаёт перед первым объектом своего вида, чьё имя больше. Взаимный порядок групп видов навыки не меняют вовсе: платформа приводит его к своему при первой же выгрузке.
|
||||
|
||||
**Виды с осмысленным порядком.** В типовых конфигурациях `CommandGroup`, `PaletteColor` и `Language` перечислены не по алфавиту — порядок там выбран разработчиком. Стандарт распространяется и на них, так что `byName` и сортировка этот порядок перебьют; на работу конфигурации это не влияет (проверено загрузкой и обратной выгрузкой), но диф будет.
|
||||
**Объекты с префиксом `Удалить`** стандарт разрешает держать в конце ветки. Навыки их не выделяют и ставят по алфавиту — это стандарту не противоречит, и типовые конфигурации поступают так же (в ACC 360 таких объектов из 373 стоят по алфавиту, а не в хвосте).
|
||||
|
||||
### Хуки и `skillSuggester` (экспериментально)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user