diff --git a/docs/skd-dsl-spec.md b/docs/skd-dsl-spec.md index 4cbbdcef..84d57c16 100644 --- a/docs/skd-dsl-spec.md +++ b/docs/skd-dsl-spec.md @@ -143,6 +143,8 @@ "appearance": { "Формат": "ЧДЦ=2" }, "presentationExpression": "Формат(Сумма, \"ЧДЦ=2\")", "orderExpression": { "expression": "ЕстьNULL(Поле.Порядок, 10000)", "orderType": "Asc", "autoOrder": false }, + // или массив (если на поле несколько для multi-sort fallback): + // "orderExpression": [{...}, {...}] "availableValues": [ { "value": 1, "presentation": { "ru": "Доход", "en": "Income" } }, { "value": 2, "presentation": { "ru": "Расход", "en": "Expense" } } @@ -486,11 +488,16 @@ XML-маппинг — по `` на каждый элемент: | Поле | XML | |------|-----| -| `source` | `` | -| `dest` | `` | -| `sourceExpr` | `` | -| `destExpr` | `` | +| `source` / `sourceDataSet` | `` | +| `dest` / `destinationDataSet` | `` | +| `sourceExpr` / `sourceExpression` | `` | +| `destExpr` / `destinationExpression` | `` | | `parameter` | `` (опц.) | +| `parameterListAllowed` | `true` (опц., bool) | +| `startExpression` | `` (опц.) | +| `linkConditionExpression` | `` (опц.) | + +decompile эмитит длинные имена (`sourceDataSet` и т.д.); compile принимает обе формы. --- @@ -886,6 +893,8 @@ XML-маппинг — по `` на каждый элемент: | `total.expression` | Выражение для итоговой строки | | `total.presentation` | Same для UI | +> **Пустые значения**: XML всегда содержит все четыре элемента (`detailExpression`, `detailExpressionPresentation`, `totalExpression`, `totalExpressionPresentation`) — даже если без значения (``). decompile сохраняет ключ с пустой строкой, compile эмитит self-closing тег для пустых строк. Это нужно для bit-perfect round-trip. + **Case-форма** — поле принимает разные значения в зависимости от условий: ```json