Files
cc-1c-skills/tests/skills/cases/meta-compile/catalog-inputbystring-datalock.json
T
Nick Shirokov 65c4fba471 feat(meta-compile,meta-decompile): object-списки InputByString/DataLockFields/BasedOn (v1.28/v0.19)
Три object-блока каталога компилятор хардкодил (InputByString={Descr,Code},
DataLockFields/BasedOn пустые), декомпилятор не захватывал.

Class-2 фикс InputByString: хардкод → вывод из Code/DescriptionLength
([Descr при D>0]+[Code при C>0]) — покрывает 88.5% каталогов, убил каскад
Field ADDED=80 (у 1057/1640 InputByString = только Наименование).

Class-3 DSL:
  • inputByString — массив имён полей (авто-резолв через Expand-DataPath,
    как dataPath), [] = пусто; декомпилятор эмитит только при отличии от дефолта.
  • dataLockFields — поля блокировки, omit-on-empty.
  • basedOn — «ввод на основании», MDObjectRef verbatim, omit-on-empty.
Хелперы Emit-FieldBlock/Emit-BasedOn (+py-порт); декомпилятор Short-Field
(частичная форма StandardAttribute.X/Attribute.X для dogfood резолвера).

Class-2 ловушка PS: пустой @() в позиц.параметр схлопывается в $null, а
@($null) = массив из 1 null → пустой <xr:Field>. Фикс — Where-Object фильтр.

Роундтрип 120 объектов: match 20→94, TOTAL 305→183 (−122), DataLockFields
35→0, InputByString/BasedOn=0, новых diff не внесено. Override-кейсы (реверс,
+реквизит, пустой, codeonly, dlf, basedOn) роундтрипятся чисто. Регресс 46/46
ps1+py, ps1↔py identical. spec §7.1.5, кейс catalog-inputbystring-datalock.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 14:08:42 +03:00

21 lines
814 B
JSON

{
"name": "InputByString / DataLockFields / BasedOn каталога",
"input": {
"type": "Catalog",
"name": "ДоговорыКонтрагентов",
"codeLength": 11,
"descriptionLength": 100,
"inputByString": ["Код", "Наименование", "Контрагент"],
"dataLockFields": ["Организация", "Контрагент", "Владелец"],
"basedOn": ["Catalog.Контрагенты", "Document.ЗаказПоставщику"],
"attributes": [
"Организация: CatalogRef.Организации",
"Контрагент: CatalogRef.Контрагенты"
]
},
"validatePath": "Catalogs/ДоговорыКонтрагентов",
"expect": {
"files": ["Catalogs/ДоговорыКонтрагентов.xml"]
}
}