mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-08 04:30:19 +03:00
Детект порядка, добавленный в раундтрип-харнес, показал 1242 расхождения на 4897 объектах (25%). Раньше они были невидимы: дифф строился через Compare-Object, то есть по мультимножеству строк, и позиция не проверялась. Ложных срабатываний там нет по построению — проверка включается только когда мультимножества уже совпали. Три категории, все — порядок эмиссии; DSL и декомпилятор не затронуты. 1. Виды детей регистров (1140 объектов). Компилятор печатал Resource, Dimension, Attribute. Канон, снятый с корпуса acc+erp (разброса внутри типа нет): Resource, Attribute, Dimension у информационного, накопления и расчёта; Dimension, Resource, Attribute — у бухгалтерского. Команды у платформы идут последними, как и было. 2. Квалификаторы в составном типе (61 объект). Платформа пишет сначала ВСЕ <v8:Type>/<v8:TypeSet>, потом блоки квалификаторов, а Emit-TypeContent рекурсивно печатал каждую часть целиком. На одиночном типе оба порядка совпадают — потому и не всплывало. Порядок самих блоков тоже канонический и НЕ зеркалит порядок типов: Number, String, Date (при типах boolean,string,dateTime,decimal квалификаторы идут Number,String,Date; контрпримеров в корпусе нет). 3. Стандартные реквизиты плана обмена (41 объект, весь список): блок начинается с ThisNode, а не с Ref. Проверка: - корпусный раундтрип 4897 объектов: порядок ≠ 1242 → 0, match не просел (150/1640/151/2600/314/42), TOTAL diff lines 0; - юнит-тесты 648/648 ps1, 645/648 py; - 1С-сертификация на платформе 8.3.24: регистры информационный, накопления, бухгалтерский, расчёта и план обмена — все приняты; - дрейф снэпшотов (10 файлов, 9 кейсов) сверен как чистая перестановка строк. NB: сверять нужно с нормализацией UUID-\d+ — раннер нумерует плейсхолдеры по порядку появления, и перестановка детей меняет, кому достанется UUID-015. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>