mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-13 14:25:17 +03:00
feat(form-compile,form-decompile): typed-empty значение параметра дин-списка (xs:string vs nil) + SettingsStorage
(1) Пустое значение schema-параметра дин-списка: компилятор ВСЕГДА эмитил <dcssch:value xsi:nil="true"/>, но платформа часть пустых строковых параметров пишет типизированным пустым <dcssch:value xsi:type="xs:string"/> (корпус: 27 typed-empty, все xs:string; 255 nil). Решается ФОРМОЙ value, не valueType: декомпилятор различает (<value xsi:type="xs:string"/> → value:"", <value xsi:nil/> → ключ опущен/null — Convert-TypedValue пустого xs:string даёт ""). Компилятор: при value:"" (явная пустая строка, тип отсутствует или string) → typed-empty xs:string, НЕ nil. Ветка ПЕРЕД vla-nil (решение не зависит от valueListAllowed). Зеркало py. (2) SettingsStorage — форменное свойство (ссылка на хранилище настроек, корпус 11) → KNOWN_FORM_PROPS (декомпилятор; компилятор авто-PascalCase Emit-Properties уже эмитит). Выборка 17 форм: match 13→15 (типовая МашиночитаемыеДоверенности — 18 typed-empty, была вся в nil → match). ps1==py байт-в-байт. Регресс 43/43. Spec обновлён. Остаток 2 формы (другие value-подвиды): DesignTimeValue в dcscor-контексте дропнут; пустой LocalStringType self-closing vs пара — отдельные находки. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -984,7 +984,7 @@ Forgiving-синонимы типа: XML-имя (`SpreadSheetDocumentField`) и
|
||||
|-----------|-----------|
|
||||
| `title` | Авто из имени (camelCase → «Заполнена серия»); явный `title`/`[Заголовок]` — только для переопределения |
|
||||
| `useRestriction` | Эмитится всегда, **умолчание `true`**; для выключения — объект `{ "useRestriction": false }` |
|
||||
| `value` | Умолчание — пустое (`xsi:nil`), даже при заданном типе |
|
||||
| `value` | Нет ключа → `xsi:nil`. **Явная пустая строка `value: ""`** → типизированный пустой `<dcssch:value xsi:type="xs:string"/>` (НЕ nil; платформа так пишет часть пустых строковых параметров — корпус 27). Декомпилятор различает: пустой строковый тег → `""`, nil-тег → ключ опущен/`null` |
|
||||
|
||||
Объектные ключи (как в СКД): `name`, `title`, `type`/`valueType`, `value`, `valueListAllowed`, `useRestriction`, `availableAsField`, `expression`, `availableValues` (`[{ value, presentation }]`), `inputParameters`, `denyIncompleteValues`, `use`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user