mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-07 18:50:53 +03:00
154 lines
5.1 KiB
Markdown
154 lines
5.1 KiB
Markdown
# JSON DSL — режим определений
|
||
|
||
Для сложных и комбинированных операций используйте JSON-файл вместо inline-режима.
|
||
|
||
```powershell
|
||
powershell.exe -NoProfile -File .augment/skills/meta-edit/scripts/meta-edit.ps1 -DefinitionFile "<json>" -ObjectPath "<path>"
|
||
```
|
||
|
||
## add — добавить элементы
|
||
|
||
```json
|
||
{
|
||
"add": {
|
||
"attributes": [
|
||
{ "name": "Комментарий", "type": "Строка(200)" },
|
||
{ "name": "Сумма", "type": "Число(15,2)", "indexing": "Index" }
|
||
],
|
||
"tabularSections": [{
|
||
"name": "Товары",
|
||
"attrs": [
|
||
{ "name": "Номенклатура", "type": "CatalogRef.Номенклатура" },
|
||
{ "name": "Количество", "type": "Число(15,3)" }
|
||
]
|
||
}],
|
||
"commands": ["Пересчитать"]
|
||
}
|
||
}
|
||
```
|
||
|
||
Реквизиты можно задавать shorthand-строками: `"Сумма: Число(15,2) | req, index"`.
|
||
|
||
## remove — удалить элементы
|
||
|
||
```json
|
||
{
|
||
"remove": {
|
||
"attributes": ["СтарыйРеквизит"],
|
||
"tabularSections": ["УстаревшаяТЧ"]
|
||
}
|
||
}
|
||
```
|
||
|
||
## modify — изменить существующие
|
||
|
||
```json
|
||
{
|
||
"modify": {
|
||
"properties": {
|
||
"CodeLength": 11,
|
||
"Hierarchical": true,
|
||
"Owners": ["Catalog.Контрагенты", "Catalog.Организации"],
|
||
"RegisterRecords": ["AccumulationRegister.Продажи"],
|
||
"InputByString": ["StandardAttribute.Description"]
|
||
},
|
||
"attributes": {
|
||
"Комментарий": { "type": "Строка(500)" },
|
||
"СтароеИмя": { "name": "НовоеИмя" }
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## modify — реквизиты внутри ТЧ
|
||
|
||
```json
|
||
{
|
||
"modify": {
|
||
"tabularSections": {
|
||
"Товары": {
|
||
"add": ["СтавкаНДС: EnumRef.СтавкиНДС", "Скидка: Число(15,2)"],
|
||
"remove": ["УстаревшийРекв"],
|
||
"modify": {
|
||
"СтароеИмя": { "name": "НовоеИмя", "type": "Строка(500)" }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## Комбинирование
|
||
|
||
Все три операции (`add`, `remove`, `modify`) можно указать в одном JSON-файле:
|
||
|
||
```json
|
||
{
|
||
"add": { "tabularSections": [{ "name": "НоваяТЧ", "attrs": ["Имя: Строка(100)"] }] },
|
||
"modify": {
|
||
"tabularSections": {
|
||
"СуществующаяТЧ": {
|
||
"add": ["НовыйРекв: Число(15,2)"],
|
||
"remove": ["СтарыйРекв"]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## Позиционная вставка
|
||
|
||
```json
|
||
{ "name": "Склад", "type": "CatalogRef.Склады", "after": "Организация" }
|
||
```
|
||
|
||
## Синонимы ключей (case-insensitive)
|
||
|
||
**Операции:** `add`/`добавить`, `remove`/`удалить`, `modify`/`изменить`
|
||
|
||
| Каноническое | Синонимы |
|
||
|-------------|----------|
|
||
| attributes | реквизиты, attrs |
|
||
| tabularSections | табличныеЧасти, тч, ts |
|
||
| dimensions | измерения, dims |
|
||
| resources | ресурсы, res |
|
||
| enumValues | значения, values |
|
||
| columns | графы, колонки |
|
||
| forms | формы |
|
||
| templates | макеты |
|
||
| commands | команды |
|
||
| properties | свойства |
|
||
|
||
Формы и макеты `meta-edit` не добавляет и не удаляет: кроме записи в `ChildObjects` у них есть собственные файлы.
|
||
Форма — навыки `form-add` / `form-remove`, макет — `template-add` / `template-remove`. Команда файла не имеет — её `meta-edit` добавляет сам.
|
||
|
||
## Составные типы
|
||
|
||
Для полей с несколькими допустимыми типами — массив в `type`:
|
||
|
||
```json
|
||
{ "name": "Значение", "type": ["Строка", "Число(15,2)", "Дата", "CatalogRef.Контрагенты"] }
|
||
```
|
||
|
||
В inline-формате — через `+`:
|
||
```
|
||
"Значение: Строка + Число(15,2) + Дата + CatalogRef.Контрагенты"
|
||
```
|
||
|
||
## Синонимы типов
|
||
|
||
`Строка(200)`, `Число(15,2)`, `Булево`, `Дата`, `ДатаВремя`, `ХранилищеЗначения`, `СправочникСсылка.XXX`, `ДокументСсылка.XXX`, `ПеречислениеСсылка.XXX`, `ОпределяемыйТип.XXX`.
|
||
|
||
## Поддерживаемые типы объектов
|
||
|
||
| Тип объекта | Допустимые add-типы |
|
||
|-------------|-------------------|
|
||
| Catalog, Document, ExchangePlan, ChartOf*, BP, Task, Report, DP | attributes, tabularSections, commands |
|
||
| Enum | enumValues, commands |
|
||
| *Register (4 типа) | dimensions, resources, attributes, commands |
|
||
| DocumentJournal | columns, commands |
|
||
| ExternalDataSource | tables, functions |
|
||
| Table (таблица внешнего источника) | fields, commands |
|
||
|
||
У `Constant` добавлять нечего: единственный её ребёнок — форма, а форму добавляет навык `form-add`.
|