mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-15 15:25:16 +03:00
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>
This commit is contained in:
@@ -347,6 +347,9 @@ JSON DSL для описания объектов метаданных конф
|
||||
| `extendedListPresentation` | пусто | ExtendedListPresentation (ML) |
|
||||
| `explanation` | пусто | Explanation (ML) |
|
||||
| `standardAttributes` | *(ключа нет → блок опущен)* | StandardAttributes |
|
||||
| `inputByString` | *(ключа нет → авто-вывод)* | InputByString (поля ввода по строке, §7.1.5) |
|
||||
| `dataLockFields` | `[]` | DataLockFields (поля блокировки данных, §7.1.5) |
|
||||
| `basedOn` | `[]` | BasedOn (ввод на основании, §7.1.5) |
|
||||
| `characteristics` | `[]` | Characteristics (привязка ПВХ, §7.1.4) |
|
||||
| `attributes` | `[]` | → Attribute в ChildObjects |
|
||||
| `tabularSections` | `{}` | → TabularSection в ChildObjects |
|
||||
@@ -485,6 +488,32 @@ JSON DSL для описания объектов метаданных конф
|
||||
|
||||
Декомпилятор пишет короткую форму (поля голые/частичные, `filterValue` без каталога, `from` полный).
|
||||
|
||||
#### 7.1.5 `inputByString` / `dataLockFields` / `basedOn` — object-списки полей
|
||||
|
||||
Три списка object-уровня. Имена полей — прощающий ввод как `dataPath`: голое стандартное (`Наименование`/`Код`/
|
||||
`Владелец`, RU→EN) → `<Тип>.<Объект>.StandardAttribute.<EN>`; голое обычное → `Attribute.<имя>`;
|
||||
частичное `StandardAttribute.X`/`Attribute.X` → + префикс; полный путь → как есть.
|
||||
|
||||
- **`inputByString`** — поля быстрого ввода по строке (`<InputByString>`). **Дефолт выводится** из наличия Кода/
|
||||
Наименования: `[Наименование при descriptionLength>0] + [Код при codeLength>0]` — покрывает ~88% каталогов, ключ не
|
||||
нужен. Задавать только при отличии: другой порядок, подмножество, добавленные реквизиты, или **пустой список `[]`**
|
||||
(быстрый ввод выключен).
|
||||
```json
|
||||
"inputByString": ["Код", "Наименование", "Контрагент"] // порядок + реквизит
|
||||
"inputByString": [] // явно пусто
|
||||
```
|
||||
- **`dataLockFields`** — поля управляемой блокировки данных (`<DataLockFields>`). По умолчанию пусто; массив имён полей.
|
||||
```json
|
||||
"dataLockFields": ["Организация", "Контрагент", "Владелец"]
|
||||
```
|
||||
- **`basedOn`** — «ввод на основании» (`<BasedOn>`), список ссылок на объекты метаданных (`MDObjectRef`) verbatim.
|
||||
```json
|
||||
"basedOn": ["Catalog.Контрагенты", "Document.ЗаказПоставщику"]
|
||||
```
|
||||
|
||||
Декомпилятор: `inputByString` — только при отличии от выведенного дефолта (иначе опущен); `dataLockFields`/`basedOn` —
|
||||
omit-on-empty. Поля пишутся частичной формой (`StandardAttribute.X`/`Attribute.X`).
|
||||
|
||||
### 7.2 Document
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|
||||
Reference in New Issue
Block a user