Files
cc-1c-skills/.claude/skills/meta-edit/json-dsl.md
T
Nick ShirokovandClaude Opus 4.6 4490aeb533 feat(meta-edit): support composite types via + separator
Build-TypeContentXml / build_type_content_xml now detect " + " in type
string, split into parts and recursively generate separate <v8:Type>
entries with qualifiers for each type. JSON DSL supports type as array.

Also fix reference types to use local xmlns:d5p1 declaration instead of
root-level cfg: prefix — prevents "Неизвестное имя типа" build errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 11:32:59 +03:00

4.7 KiB

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

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

powershell.exe -NoProfile -File .claude/skills/meta-edit/scripts/meta-edit.ps1 -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