Files
cc-1c-skills/.claude/skills/meta-edit/json-dsl.md
T
Nick ShirokovandClaude Opus 4.8 26888a07d5 chore(repo): нормализация EOL к LF + .gitattributes
Приводим авторский контент (.ps1/.psm1/.py/.mjs/.md/.json, пин .bsl)
к единому LF и закрепляем политикой в .gitattributes. Инструмент правки
всегда пишет LF, поэтому единый LF убирает EOL-шум в диффах, ложные
срабатывания blame и налог на ручную синхронизацию CRLF-файлов.

BOM на .ps1 сохранён (git с eol=lf меняет только CR<->LF, BOM не трогает).
Данные 1С (*.xml) и бинарники под нормализацию не берём.

Гейт: PS-порт 459/459, Python-порт 459/459, web-test E2E 22/22 (с пересборкой стенда).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 14:22:45 +03:00

4.6 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