docs(skd): update dsl-spec and guide for new features, fix py compat

- skd-dsl-spec: availableValues/denyIncompleteValues, Folder in selection, DesignTimeValue/OrGroup in filters, Format as LocalStringType
- skd-guide: mention new CA types, Folder, availableValues
- Fix Python 3.13: inline regex flags, element truth-testing, OrGroup desc, dict structure wrap

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-04-06 19:53:04 +03:00
parent 54c04cfe76
commit 321e426f98
2 changed files with 37 additions and 3 deletions
+34 -2
View File
@@ -378,6 +378,27 @@ XML-маппинг — по `<group>` на каждый элемент:
| `hidden` | `true` — скрытый параметр (авто `availableAsField=false`, исключение из `dataParameters: auto`) | | `hidden` | `true` — скрытый параметр (авто `availableAsField=false`, исключение из `dataParameters: auto`) |
| `useRestriction` | `true` — скрыть от пользователя | | `useRestriction` | `true` — скрыть от пользователя |
| `use` | `"Always"`, `"Auto"` | | `use` | `"Always"`, `"Auto"` |
| `denyIncompleteValues` | `true` — запретить произвольные значения (только из availableValues) |
| `availableValues` | Массив `[{value, presentation}]` — допустимые значения с представлениями |
### availableValues
Список допустимых значений параметра. Тип значения определяется автоматически (`Перечисление.*`, `Справочник.*` и др. → `dcscor:DesignTimeValue`):
```json
{
"name": "ПорядокОкругления",
"type": "EnumRef.Округления",
"value": "Перечисление.Округления.Окр1_00",
"use": "Always",
"denyIncompleteValues": true,
"availableValues": [
{"value": "Перечисление.Округления.Окр1_00", "presentation": "руб. коп"},
{"value": "Перечисление.Округления.Окр1", "presentation": "руб."},
{"value": "Перечисление.Округления.Окр1000", "presentation": "тыс. руб"}
]
}
```
### Значения параметров по типу ### Значения параметров по типу
@@ -481,6 +502,16 @@ XML-маппинг — по `<group>` на каждый элемент:
- Строка → `SelectedItemField` - Строка → `SelectedItemField`
- `"Auto"``SelectedItemAuto` (только на уровне группировок; на верхнем уровне settings игнорируется) - `"Auto"``SelectedItemAuto` (только на уровне группировок; на верхнем уровне settings игнорируется)
- Объект с `field`/`title``SelectedItemField` с `lwsTitle` - Объект с `field`/`title``SelectedItemField` с `lwsTitle`
- Объект с `folder`/`items``SelectedItemFolder` — группа полей с заголовком и `placement=Auto`:
```json
"selection": [
"Auto",
"Счет",
{"folder": "Поступление", "items": ["ПолеА", "ПолеБ", "ПолеВ"]},
{"folder": "Выбытие", "items": ["ВыбытиеРеализовано", "ВыбытиеПрочее"]}
]
```
### filter ### filter
@@ -503,7 +534,8 @@ XML-маппинг — по `<group>` на каждый элемент:
- `@quickAccess``viewMode=QuickAccess` - `@quickAccess``viewMode=QuickAccess`
- `@normal``viewMode=Normal` - `@normal``viewMode=Normal`
- `@inaccessible``viewMode=Inaccessible` - `@inaccessible``viewMode=Inaccessible`
- Типы значений автоопределяются: `true`/`false` → boolean, `2024-01-01T00:00:00` → dateTime, числа → decimal, прочее → string - Типы значений автоопределяются: `true`/`false` → boolean, `2024-01-01T00:00:00` → dateTime, числа → decimal, `Перечисление.*`/`Справочник.*`/`ПланСчетов.*`/`Документ.*` → DesignTimeValue, прочее → string
- OrGroup: `{"group": "Or", "items": ["условие1", "условие2"]}` — объединяет условия через ИЛИ
#### Объектная форма #### Объектная форма
@@ -597,7 +629,7 @@ XML-маппинг — по `<group>` на каждый элемент:
**Типы значений appearance** определяются автоматически: **Типы значений appearance** определяются автоматически:
- `style:XXX`, `web:XXX`, `win:XXX``v8ui:Color` - `style:XXX`, `web:XXX`, `win:XXX``v8ui:Color`
- `true`/`false``xs:boolean` - `true`/`false``xs:boolean`
- Параметр `Текст` или `Заголовок``v8:LocalStringType` - Параметр `Формат`, `Текст` или `Заголовок``v8:LocalStringType`
- Прочее → `xs:string` - Прочее → `xs:string`
Поддержка `use=false` на уровне параметра: Поддержка `use=false` на уровне параметра:
+3 -1
View File
@@ -98,7 +98,9 @@
- **filter shorthand**: `"Поле оператор значение @флаги"` — флаги `@off`, `@user`, `@quickAccess`, `@normal`, `@inaccessible` - **filter shorthand**: `"Поле оператор значение @флаги"` — флаги `@off`, `@user`, `@quickAccess`, `@normal`, `@inaccessible`
- **dataParameters shorthand**: `"Имя = значение @флаги"`, или `"auto"` — автогенерация для всех не-hidden параметров - **dataParameters shorthand**: `"Имя = значение @флаги"`, или `"auto"` — автогенерация для всех не-hidden параметров
- **structure shorthand**: `"Поле1 > Поле2 > details"``>` разделяет уровни группировки - **structure shorthand**: `"Поле1 > Поле2 > details"``>` разделяет уровни группировки
- **conditionalAppearance**: условное оформление с автоопределением типов значений (Color, Boolean, LocalStringType) - **conditionalAppearance**: условное оформление с автоопределением типов (Color, Boolean, LocalStringType для Формат/Текст/Заголовок, DesignTimeValue для ссылок), OrGroup через `{"group": "Or", "items": [...]}`
- **selection**: поддержка `{"folder": "Название", "items": [...]}` для группировки полей (SelectedItemFolder)
- **parameters**: `availableValues`, `denyIncompleteValues`, `use: "Always"` в объектной форме
### Шаблоны вывода — компактный DSL ### Шаблоны вывода — компактный DSL