
Nick ShirokovandClaude Opus 4.8
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
..
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 17:23:59 +03:00
2026-06-24 14:22:45 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 18:33:10 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 11:42:07 +03:00
2026-06-30 17:23:59 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-30 17:23:59 +03:00
2026-06-30 17:23:59 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-30 17:34:20 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-30 18:33:10 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-07-04 14:08:42 +03:00
2026-07-04 14:08:42 +03:00
2026-07-03 19:30:34 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-07-03 19:30:34 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-01 16:12:50 +03:00
2026-06-30 12:55:09 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-30 11:42:07 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-20 16:45:43 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:22:45 +03:00
2026-06-29 12:55:34 +03:00
2026-06-24 14:22:45 +03:00
2026-06-24 14:45:02 +03:00