Files
cc-1c-skills/.github/skills/meta-edit/json-dsl.md
T
2026-05-17 11:22:33 +00:00

4.6 KiB

JSON DSL — режим определений

Для сложных и комбинированных операций используйте JSON-файл вместо inline-режима.

python .claude/skills/meta-edit/scripts/meta-edit.py -DefinitionFile "<json>" -ObjectPath "<path>"

add — добавить элементы

{
  "add": {
    "attributes": [
      { "name": "Комментарий", "type": "Строка(200)" },
      { "name": "Сумма", "type": "Число(15,2)", "indexing": "Index" }
    ],
    "tabularSections": [{
      "name": "Товары",
      "attrs": [
        { "name": "Номенклатура", "type": "CatalogRef.Номенклатура" },
        { "name": "Количество", "type": "Число(15,3)" }
      ]
    }],
    "forms": ["ФормаЭлемента"],
    "templates": ["ПечатнаяФорма"]
  }
}

Реквизиты можно задавать shorthand-строками: "Сумма: Число(15,2) | req, index".

remove — удалить элементы

{
  "remove": {
    "attributes": ["СтарыйРеквизит"],
    "tabularSections": ["УстаревшаяТЧ"]
  }
}

modify — изменить существующие

{
  "modify": {
    "properties": {
      "CodeLength": 11,
      "Hierarchical": true,
      "Owners": ["Catalog.Контрагенты", "Catalog.Организации"],
      "RegisterRecords": ["AccumulationRegister.Продажи"],
      "InputByString": ["StandardAttribute.Description"]
    },
    "attributes": {
      "Комментарий": { "type": "Строка(500)" },
      "СтароеИмя": { "name": "НовоеИмя" }
    }
  }
}

modify — реквизиты внутри ТЧ

{
  "modify": {
    "tabularSections": {
      "Товары": {
        "add": ["СтавкаНДС: EnumRef.СтавкиНДС", "Скидка: Число(15,2)"],
        "remove": ["УстаревшийРекв"],
        "modify": {
          "СтароеИмя": { "name": "НовоеИмя", "type": "Строка(500)" }
        }
      }
    }
  }
}

Комбинирование

Все три операции (add, remove, modify) можно указать в одном JSON-файле:

{
  "add": { "tabularSections": [{ "name": "НоваяТЧ", "attrs": ["Имя: Строка(100)"] }] },
  "modify": {
    "tabularSections": {
      "СуществующаяТЧ": {
        "add": ["НовыйРекв: Число(15,2)"],
        "remove": ["СтарыйРекв"]
      }
    }
  }
}

Позиционная вставка

{ "name": "Склад", "type": "CatalogRef.Склады", "after": "Организация" }

Синонимы ключей (case-insensitive)

Операции: add/добавить, remove/удалить, modify/изменить

Каноническое Синонимы
attributes реквизиты, attrs
tabularSections табличныеЧасти, тч, ts
dimensions измерения, dims
resources ресурсы, res
enumValues значения, values
columns графы, колонки
forms формы
templates макеты
commands команды
properties свойства

Составные типы

Для полей с несколькими допустимыми типами — массив в type:

{ "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, forms, templates, commands
Enum enumValues, forms, templates, commands
*Register (4 типа) dimensions, resources, attributes, forms, templates, commands
DocumentJournal columns, forms, templates, commands
Constant forms