Files
cc-1c-skills/.claude/skills/meta-edit/reference/json-dsl.md
T
Nick ShirokovandClaude Opus 5 b4bc02bc98 docs(meta-edit): каскад инструкций по задачам вместо одной кучи
child-operations.md был на 191 строку и держал в одном файле реквизиты, поля внешнего
источника, таблицы, функции, ТЧ, предопределённые и значения перечисления: модель, добавляющая
реквизит, читала заодно про функции внешнего источника. Ось резки была механизмом (add/remove/
modify), а нужна сущность — как в meta-compile.

SKILL.md: частое (команда, сводная таблица операций, быстрые примеры) плюс индекс
«что правишь → файл». Остальное — reference/: attributes, tabular-sections, predefined,
external-data-source, other-children, properties (бывший properties-reference), json-dsl.

Попутно: везде «навык form-add», а не голое имя — иначе читается как команда оболочки или
значение -Operation. Тексты предупреждений в обоих портах тоже.

scripts/switch.py собирал .md только из корня навыка, подкаталоги не видел: команды запуска
в reference/*.md молча остались бы на старом рантайме. Обход стал рекурсивным.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
2026-09-06 19:41:57 +03:00

5.1 KiB
Raw Blame History

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

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

powershell.exe -NoProfile -File ${CLAUDE_SKILL_DIR}/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)" }
      ]
    }],
    "commands": ["Пересчитать"]
  }
}

Реквизиты можно задавать 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 свойства

Формы и макеты meta-edit не добавляет и не удаляет: кроме записи в ChildObjects у них есть собственные файлы. Форма — навыки form-add / form-remove, макет — template-add / template-remove. Команда файла не имеет — её meta-edit добавляет сам.

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

Для полей с несколькими допустимыми типами — массив в 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, commands
Enum enumValues, commands
*Register (4 типа) dimensions, resources, attributes, commands
DocumentJournal columns, commands
ExternalDataSource tables, functions
Table (таблица внешнего источника) fields, commands

У Constant добавлять нечего: единственный её ребёнок — форма, а форму добавляет навык form-add.