mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-05 01:30:54 +03:00
feat(form-decompile,form-compile): KeyType/KeyField набора динамического списка (запросный список)
Запросный динамический список (без MainTable) задаёт ключ набора: <KeyType> (FieldValue/RowKey/RowNumber) + <KeyField>* (0+ полей) — после Parameter*, до MainTable. Декомпилятор не ловил → терялось (21 форма, напр. ВыборПрисоединенногоФайла). DSL: settings.keyType (строка-enum) + settings.keyFields (массив). Взаимоисключающи с mainTable (запросный список vs таблично-ориентированный — 1С: KeyField+MainTable ломает пути данных списка). Декомпилятор: захват KeyType + всех KeyField; компилятор (ps1+py): эмит после Emit-DLParameters, до MainTable (позиция из корпус-сигнатур). Выборка 22 формы: match 17/22, KeyType/KeyField-потерь 0 (остаток — др. кластеры: CheckBox ItemWidth, order-use, SearchControlAddition, empty-right), регрессий 0. Регресс 43/43, ps1==py. Cert: corpus round-trip (запросные списки — 22 shipped-формы грузятся; синтетический кейс = полный query-based список с Table, непропорционально для verbatim 2-тег; MainTable+KeyField несовместимы → к dynamic-list-form не добавить). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c0487c51b7
commit
227423ee1f
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.119 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.120 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -2665,6 +2665,10 @@ if ($attrsNode) {
|
||||
# AutoFillAvailableFields — дефолт true, платформа эмитит только отклонение (false). Захват «как есть».
|
||||
$afaf = Get-Child $setNode 'AutoFillAvailableFields'; if ($null -ne $afaf) { $so['autoFillAvailableFields'] = ($afaf -eq 'true') }
|
||||
$mt = Get-Child $setNode 'MainTable'; if ($mt) { $so['mainTable'] = $mt }
|
||||
# Ключ набора (query-based список): KeyType (RowNumber/FieldValue/RowKey) + KeyField* (0+).
|
||||
$kt = Get-Child $setNode 'KeyType'; if ($kt) { $so['keyType'] = $kt }
|
||||
$kfNodes = @($setNode.SelectNodes("lf:KeyField", $ns) | ForEach-Object { $_.InnerText })
|
||||
if ($kfNodes.Count -gt 0) { $so['keyFields'] = @($kfNodes) }
|
||||
# AutoSaveUserSettings — авто-сохранение польз. настроек дин-списка (в корпусе только false;
|
||||
# дефолт true → платформа эмитит отклонение). Захват факт. значения.
|
||||
$asus = Get-Child $setNode 'AutoSaveUserSettings'; if ($null -ne $asus) { $so['autoSaveUserSettings'] = ($asus -eq 'true') }
|
||||
|
||||
Reference in New Issue
Block a user