Files
cc-1c-skills/tests/skills/cases/meta-compile/catalog-attr-choice-params.json
T
Nick ShirokovandClaude Opus 5 75e861da6e fix(meta-decompile,meta-compile): пустая ссылка в ChoiceParameters теряла тип
Раундтрип по справочникам УТ 11.5.27 вскрыл: <app:value xsi:type="xr:DesignTimeRef"/>
с пустым содержимым декомпилировался в "value": "", и компилятор законно
эмитил свой дефолт xs:string — тип ссылки терялся.

Конвенция для этого случая уже была (маркер {emptyRef: true} у fillValue),
пробел был только в ChoiceParameters. Декомпилятор теперь ставит маркер,
компилятор его понимает — и в скалярном значении, и внутри FixedArray.

Форма редкая, поэтому прежние кампании её не поймали: в acc она встречается
1 раз, в erp — ни разу, в УТ — 7 раз.

Is-EmptyRef в PS явно отсекает коллекции: у массива $v.emptyRef разворачивается
в свойства элементов (member enumeration), и массив с одним таким элементом
схлопывал FixedArray в скаляр. В py-порте isinstance(v, dict) такого не допускает —
расхождение поймано снэпшотом.

Проверка: справочники УТ 519/519 без расхождений (было 519 diff),
сюита meta-compile 76/76 на обоих портах, 1С-сертификация кейса пройдена.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 19:25:24 +03:00

26 lines
1.4 KiB
JSON

{
"name": "Реквизит: ChoiceParameterLinks + ChoiceParameters (ограничение выбора)",
"input": {
"type": "Catalog",
"name": "ТестВыбора",
"attributes": [
{ "name": "Счет", "type": "CatalogRef.БанковскиеСчета",
"choiceParameterLinks": [ { "name": "Отбор.Владелец", "dataPath": "Ссылка", "valueChange": "Clear" } ] },
{ "name": "Партнер", "type": "CatalogRef.Партнеры",
"choiceParameters": "Отбор.ЭтоГруппа=false" },
{ "name": "ТипТТН", "type": "CatalogRef.ВидыТранспорта",
"choiceParameters": [ { "name": "Отбор.Тип", "type": "EnumRef.ТипыВЕТИС", "value": ["EmptyRef", "ТТН"] } ] },
{ "name": "Валюта", "type": "CatalogRef.Валюты",
"choiceParameterLinks": "Отбор.Владелец=Ссылка" },
{ "name": "ПустаяСсылка", "type": "String(10)",
"choiceParameters": [ { "name": "Отбор.ТипПоказателя", "value": { "emptyRef": true } } ] },
{ "name": "ПустаяСсылкаВМассиве", "type": "String(10)",
"choiceParameters": [ { "name": "Отбор.Набор", "value": [ { "emptyRef": true }, "ТТН" ] } ] }
]
},
"validatePath": "Catalogs/ТестВыбора",
"expect": {
"files": ["Catalogs/ТестВыбора.xml"]
}
}