
Nick ShirokovandClaude Opus 4.8
081d3a8a2f
feat(form-decompile,form-compile): динсписок DataSet/ListSettings — TypeId-verbatim + DataSetFieldNestedDataSet + ListSettings self-closing (механика кластера A)
Три механических фикса доминирующего кластера встроенных DCS-настроек динсписка
(152/690 дифф-форм rt-iter). Таргет-выборка 102 формы: TOTAL 657→280, match 0→82,
ноль регрессий.
1. TypeId-verbatim. Тип параметра/реквизита, заданный глобальным стабильным GUID
(<v8:TypeId>, не <v8:Type>) — платформа так сериализует типы, чьё имя в контексте
недоступно (определяемые/характеристики). Декомпилятор не ловил → параметр терял
valueType. Маркер 'typeid:<GUID>' в грамматике типа: Decompile-Type ловит <v8:TypeId>,
Emit-SingleType разворачивает обратно (как роль-по-GUID; GUID глобально стабилен →
безопасно). Форма ОстаткиПартийСАТУРН/ФормаОстатков → match.
2. DataSetFieldNestedDataSet. Компилятор хардкодил xsi:type="DataSetFieldField" для
всех полей набора → терял поле-вложенный набор (реквизит табличной части объекта).
Маркер fields[].nested: декомпилятор ловит ...NestedDataSet, компилятор зеркалит.
3. ListSettings self-closing. Пустой дескриптор listSettings:{} эмитился парой
<ListSettings></ListSettings>, оригинал — self-closing <ListSettings/> (70 форм
корпуса). Зеркалим self-closing при пустом эмите (отслеживание буфера).
Остаток кластера (вне A, отдельные задачи): структура группировок списка
(dcsset:item StructureItemGroup), KeyField/CalculatedField/Field-valueType DataSet.
spec: fields.nested, listSettings:{} → self-closing, тип-токен typeid:<GUID>
(раундтрип, не для авторинга). Регресс form-compile 43/43 (ps1+py).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 17:16:43 +03:00
..
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-04-25 13:35:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-04-25 13:29:20 +03:00
2026-04-25 15:26:54 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-06-12 17:16:43 +03:00
2026-06-12 17:16:43 +03:00
2026-06-08 13:16:12 +03:00
2026-05-07 15:30:06 +03:00
2026-05-03 20:10:10 +03:00
2026-05-08 12:16:44 +03:00
2026-06-08 13:16:12 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-11 13:47:50 +03:00
2026-05-07 15:30:06 +03:00
2026-06-01 15:40:17 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-06-04 12:26:57 +03:00
2026-06-01 16:12:50 +03:00
2026-06-04 12:26:57 +03:00
2026-06-03 22:11:48 +03:00
2026-05-23 21:30:26 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-06-02 20:07:09 +03:00
2026-05-07 15:30:06 +03:00
2026-03-09 14:58:49 +03:00