mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-13 22:35:16 +03:00
b692a81ea5
Захват/эмиссия <Parameter> (DataCompositionSchemaParameter) внутри <Settings xsi:type="DynamicList"> — та же сущность, что параметры СКД, но обёртка <Parameter> + дети dcssch:. Ранее теряли при декомпиляции и не умели эмитить (компилятор обрывал на Field*→MainTable). Корпус acc+erp 8.3.24: 123 формы, 406 параметров. DSL: ключ settings.parameters переиспользует грамматику параметров СКД ОДИН-В-ОДИН (shorthand "Имя [Заголовок]: Тип = Значение @valueList @hidden" + объектная форма; ключи value/type/ availableValues/inputParameters/use/denyIncompleteValues/expression/availableAsField). Новых сущностей не вводим — модель переносит знание skd-параметров напрямую. Контекстные дефолты дин-списка (паттерн «умный дефолт у всегда-эмитируемого тега», для модели невидимы — просто опускает ключ): - useRestriction: эмитим ВСЕГДА, дефолт true (в СКД дефолт false); false → объект useRestriction:false; - title: авто из имени через Title-FromName (camelCase-split с сохранением аббревиатур); явный заголовок — только при отклонении от авто-вывода; - value: пустое всегда xsi:nil, даже при известном типе (в отличие от типизированного пустого в СКД). Канон. порядок детей по корпусу: name, title, valueType, value, useRestriction, expression, availableValue*, valueListAllowed, availableAsField, inputParameters, denyIncompleteValues, use. Декомпилятор PS-only (зеркало в py отложено, как и весь form-decompile); компилятор зеркалён в py. Валидация: round-trip бит-в-бит на ФормаОстатков (субсет) + ПроверкаПользовательскихНастроек (полная грамматика: availableValues/inputParameters/denyIncompleteValues/use). Регресс 35/35 ps+py. Тест-кейс dynamic-list-parameters (+снэпшот). spec обновлён. Версии: form-compile v1.64, form-decompile v0.46.
48 lines
2.3 KiB
JSON
48 lines
2.3 KiB
JSON
{
|
|
"name": "DynamicList — schema-параметры (DataCompositionSchemaParameter): shorthand + объект + полная грамматика",
|
|
"preRun": [
|
|
{
|
|
"script": "meta-compile/scripts/meta-compile",
|
|
"input": { "type": "Catalog", "name": "Товары", "attributes": [{ "name": "Артикул", "type": "String", "length": 25 }] },
|
|
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
|
},
|
|
{
|
|
"script": "form-add/scripts/form-add",
|
|
"args": { "-ObjectPath": "{workDir}/Catalogs/Товары.xml", "-FormName": "ФормаСписка", "-Purpose": "List" }
|
|
}
|
|
],
|
|
"params": { "outputPath": "Catalogs/Товары/Forms/ФормаСписка/Ext/Form.xml" },
|
|
"validatePath": "Catalogs/Товары/Forms/ФормаСписка/Ext/Form.xml",
|
|
"input": {
|
|
"title": "Товары",
|
|
"attributes": [
|
|
{ "name": "Список", "type": "DynamicList", "main": true, "settings": {
|
|
"mainTable": "Catalog.Товары",
|
|
"query": "ВЫБРАТЬ\n\tТовары.Ссылка КАК Ссылка,\n\tТовары.Код КАК Код,\n\tТовары.Наименование КАК Наименование,\n\tТовары.Артикул КАК Артикул\nИЗ\n\tСправочник.Товары КАК Товары\nГДЕ\n\tТовары.Артикул = &Артикул\n\tИ Товары.Наименование ПОДОБНО &Маска",
|
|
"parameters": [
|
|
"Артикул",
|
|
"Маска: string = %",
|
|
{ "name": "ВидЦен", "valueListAllowed": true },
|
|
{ "name": "Период", "type": "dateTime", "useRestriction": false },
|
|
{
|
|
"name": "Порог", "type": "decimal(10,2)", "value": 0,
|
|
"title": "Порог округления",
|
|
"availableValues": [
|
|
{ "value": null, "presentation": "Нет" },
|
|
{ "value": 1, "presentation": "Один" }
|
|
],
|
|
"denyIncompleteValues": true,
|
|
"use": "Always"
|
|
}
|
|
]
|
|
} }
|
|
],
|
|
"elements": [
|
|
{ "table": "Список", "path": "Список", "columns": [
|
|
{ "input": "Код", "path": "Список.Code" },
|
|
{ "input": "Наименование", "path": "Список.Description" }
|
|
]}
|
|
]
|
|
}
|
|
}
|