From 49108f72dc05765867e971a01e1405c1687acb2d Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 8 Mar 2026 11:18:52 +0300 Subject: [PATCH] =?UTF-8?q?docs(meta-dsl-spec):=20update=20to=20v2.1=20?= =?UTF-8?q?=E2=80=94=20reflect=20e2e-verified=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - §4.2: document separate type+length/precision fields in object form - §7.4 Constant: add length/precision fields - §7.7 DefinedType: document valueType (singular) alias - §7.9 ScheduledJob: document CommonModule. auto-prefix for methodName - §7.10 EventSubscription: document CommonModule. auto-prefix for handler - §7.13 ExchangePlan: remove codeType/autonumbering/checkUnique (not valid) - §7.14 ChartOfCharacteristicTypes: default String length 0→100 - §7.20 BusinessProcess: add task to example Co-Authored-By: Claude Opus 4.6 --- docs/meta-dsl-spec.md | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md index bbd2a35e..3f986e8d 100644 --- a/docs/meta-dsl-spec.md +++ b/docs/meta-dsl-spec.md @@ -1,6 +1,6 @@ # Meta DSL — спецификация JSON-формата для объектов метаданных 1С -Версия: 2.0 +Версия: 2.1 ## Обзор @@ -130,6 +130,17 @@ JSON DSL для описания объектов метаданных конф } ``` +Тип можно задать единой строкой (`"type": "String(100)"`) или раздельными полями: + +```json +{ "name": "Имя", "type": "String", "length": 100 } +{ "name": "Сумма", "type": "Number", "length": 15, "precision": 2 } +{ "name": "Остаток", "type": "Number", "length": 15, "precision": 2, "nonneg": true } +``` + +Раздельная форма эквивалентна `String(100)`, `Number(15,2)`, `Number(15,2,nonneg)`. +Если `type` уже содержит скобки — `length`/`precision` игнорируются. + ### 4.3 Флаги | Флаг | Действие | Применимость | @@ -243,8 +254,13 @@ JSON DSL для описания объектов метаданных конф | Поле JSON | Умолчание | XML элемент | |-----------|----------|-------------| | `valueType` | `String` | Type | +| `length` | — | Длина строки (если valueType=String) | +| `precision` | — | Точность числа (если valueType=Number) | | `dataLockControlMode` | `Automatic` | DataLockControlMode | +`valueType` + `length`/`precision` работают аналогично раздельной форме типа (§4.2): +`"valueType": "String", "length": 100` → `String(100)`. + ### 7.5 InformationRegister | Поле JSON | Умолчание | XML элемент | @@ -277,11 +293,13 @@ JSON DSL для описания объектов метаданных конф | Поле JSON | Умолчание | XML элемент | |-----------|----------|-------------| | `valueTypes` | `[]` | Type (составной — массив `v8:Type`) | +| `valueType` | — | Алиас для `valueTypes` (принимает строку или массив) | -Без ChildObjects и модулей. +Без ChildObjects и модулей. Принимается как `valueTypes` (мн.ч.), так и `valueType` (ед.ч.). ```json { "type": "DefinedType", "name": "ДенежныеСредства", "valueTypes": ["CatalogRef.БанковскиеСчета", "CatalogRef.Кассы"] } +{ "type": "DefinedType", "name": "ФлагАктивности", "valueType": "Boolean" } ``` ### 7.8 CommonModule @@ -313,7 +331,7 @@ JSON DSL для описания объектов метаданных конф | Поле JSON | Умолчание | XML элемент | |-----------|----------|-------------| -| `methodName` | `""` | MethodName | +| `methodName` | `""` | MethodName (авто-префикс `CommonModule.`) | | `description` | = synonym | Description | | `key` | `""` | Key | | `use` | `false` | Use | @@ -323,6 +341,8 @@ JSON DSL для описания объектов метаданных конф Без ChildObjects и модулей. +Формат `methodName`: `"МодульСервер.Процедура"` — при компиляции авто-дополняется до `CommonModule.МодульСервер.Процедура`. Если уже содержит `CommonModule.` — оставляется как есть. + ```json { "type": "ScheduledJob", "name": "ОбменДанными", "methodName": "ОбменДаннымиСервер.Выполнить", "use": true } ``` @@ -333,12 +353,14 @@ JSON DSL для описания объектов метаданных конф |-----------|----------|-------------| | `source` | `[]` | Source (массив `v8:Type`, формат `cfg:XxxObject.Name`) | | `event` | `BeforeWrite` | Event | -| `handler` | `""` | Handler | +| `handler` | `""` | Handler (авто-префикс `CommonModule.`) | Без ChildObjects и модулей. Значения `event`: `BeforeWrite`, `OnWrite`, `BeforeDelete`, `OnReadAtServer`, `FillCheckProcessing` и др. +Формат `handler`: `"МодульСервер.Процедура"` — при компиляции авто-дополняется до `CommonModule.МодульСервер.Процедура`. Если уже содержит `CommonModule.` — оставляется как есть. + ```json { "type": "EventSubscription", "name": "ПередЗаписьюКонтрагента", "source": ["CatalogObject.Контрагенты"], "event": "BeforeWrite", "handler": "ОбщегоНазначенияСервер.ПередЗаписьюКонтрагента" } ``` @@ -382,11 +404,8 @@ JSON DSL для описания объектов метаданных конф | Поле JSON | Умолчание | XML элемент | |-----------|----------|-------------| | `codeLength` | `9` | CodeLength | -| `codeType` | `String` | CodeType | | `codeAllowedLength` | `Variable` | CodeAllowedLength | | `descriptionLength` | `100` | DescriptionLength | -| `autonumbering` | `true` | Autonumbering | -| `checkUnique` | `false` | CheckUnique | | `distributedInfoBase` | `false` | DistributedInfoBase | | `includeConfigurationExtensions` | `false` | IncludeConfigurationExtensions | | `dataLockControlMode` | `Automatic` | DataLockControlMode | @@ -419,7 +438,7 @@ JSON DSL для описания объектов метаданных конф | `attributes` | `[]` | → Attribute в ChildObjects | | `tabularSections` | `{}` | → TabularSection в ChildObjects | -\* Если `valueTypes` не указан, по умолчанию: Boolean, String, Number(15,2), DateTime. +\* Если `valueTypes` не указан, по умолчанию: Boolean, String(100), Number(15,2), DateTime. Модули: `Ext/ObjectModule.bsl` (пустой). @@ -905,7 +924,7 @@ DSL для `columns` (§12). ### Бизнес-процесс ```json -{ "type": "BusinessProcess", "name": "Задание", "attributes": ["Описание: String(200)"] } +{ "type": "BusinessProcess", "name": "Задание", "task": "Task.ЗадачаИсполнителя", "attributes": ["Описание: String(200)"] } ``` ### Задача