Skip to content
Development
Skill

/xdto

Просмотреть или точечно изменить схему XDTO-пакета 1С по логическому адресу. Используй для EnterpriseData `valueType`, `objectType` и свойств типов.

BOOST
From plugin
unica
22749 skills1 MCP
Install
$ npx -y skills add IngvarConsulting/unica --skill xdto --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/xdto

Context preview

The summary Claude sees to decide when to auto-load this skill.

Просмотреть или точечно изменить схему XDTO-пакета 1С по логическому адресу. Используй для EnterpriseData `valueType`, `objectType` и свойств типов.

SKILL.md

xdto.SKILL.md
name: xdto
description: Просмотреть или точечно изменить схему XDTO-пакета 1С по логическому адресу. Используй для EnterpriseData `valueType`, `objectType` и свойств типов.
argument-hint: <sourceSet> <XDTOPackage.Name> <ops>
allowed-tools:
  - Read
  - Glob

/unica:xdto — XDTO-пакеты 1С

Перед чтением или мутацией сверяй поддерживаемую грамматику и байтовые гарантии с `../../references/specs/1c-xdto-spec.md`.

MCP routing

  • Используй только MCP `unica`: `unica.view` читает пакет по адресу, а

`unica.apply` с операциями семейства XDTO строит и применяет точечную мутацию.

  • Всегда начинай с `unica.view`, затем перед каждой мутацией вызывай

`unica.apply` с `at` и `ops`. Исполняй план вызовом только с `executionToken` из `data.executionToken` после поручения пользователя; любое изменение аргументов требует нового preview.

  • Планирующий `unica.apply` принимает непустой упорядоченный массив `ops`.

Связное изменение — тип и его свойства — веди одним планом: операции видят результаты предыдущих, публикация одна, отказ любой операции не оставляет частичной записи. Ошибка элемента называет `ops[<индекс>]`.

  • И читателю, и писателю передавай один адрес `at` вида

`<набор>:XDTOPackage.<Имя>` (для операций над типом — `<набор>:XDTOPackage.<Имя>.Type.<Тип>`, над свойством любой вложенности — `…Type.<Тип>.Property.<А>[.Property.<Б>…]`). Точка внутри имени пишется `\.`: свойство `A.B` — `…Property.A\.B` (в JSON — `A\\.B`). Никогда не передавай путь к `XDTOPackages/.../Ext/Package.bin`: он остаётся внутренней раскладкой платформенной выгрузки.

  • Не вызывай donor-команды compile, decompile или validate и не запускай их

скриптовые обёртки: публичная граница этого скилла состоит ровно из двух нативных инструментов выше.

Операции семейства XDTO в `ops` — закрытое объединение с тегом `op`, а их аргументы едут внутри `args.values`: `valueType.add` (`name`, `base`), `objectType.add` (`name`), `property.add` (`property`), `type.remove`, `property.remove` (без аргументов). Узел, над которым идёт операция, называет `at`, а не отдельный аргумент: `property.add` — на типе или на свойстве, во вложенный анонимный тип которого добавляется новое (`…Type.ЛюбаяСсылка.Property.СсылкаНаОбъект`); `property.remove` — на самом удаляемом свойстве. Прежние `propertyPath` и `name` у `property.remove` отклоняются с `bad_value`, `next` ведёт к адресу свойства. Writer сохраняет BOM и наблюдённые переводы строк, а повтор того же добавления возвращает no-op. QName в `base` и `property.type` передавай с существующим префиксом. Если префикс не виден в области вставки, writer повторит его объявление локально только при единственном доказанном соответствии префикса URI во всём пакете; отсутствующее или противоречивое соответствие отклоняется без угадывания URI.

1. Прочитать логическую цель

Корень пакета отвечает целевым пространством имён и счётчиками, а состав лежит в ветвях `Namespace`, `Type` и `Property`; спускайся в нужную адресом из `branches`.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "unica.view",
    "arguments": {
      "cwd": "<workspace>",
      "at": "main:XDTOPackage.EnterpriseData_1_17_3"
    }
  }
}

Отдельный тип и его свойства читаются тем же вызовом глубже по адресу; свойство со вложенным анонимным типом объявляет ветвь `Property` своих свойств:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "unica.view",
    "arguments": {
      "cwd": "<workspace>",
      "at": "main:XDTOPackage.EnterpriseData_1_17_3.Type.ЛюбаяСсылка"
    }
  }
}

У свойства `props.type` содержит компактную JSON-строку с исходным QName, локальным именем и пространством имён; у ссылки на глобальное свойство эти сведения находятся в `props.reference`. `props.bounds` — компактная JSON-строка с эффективными `lower` и `upper`, признаками явного задания `lowerExplicit` и `upperExplicit`, а также `unbounded`. Отсутствующая граница имеет эффективное значение `1`; `upper=-1` означает неограниченную верхнюю границу.

2. Построить preview

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "at": "main:XDTOPackage.EnterpriseData_1_17_3.Type.ЛюбаяСсылка.Property.СсылкаНаОбъект",
      "ops": [
        {
          "op": "property.add",
          "args": {
            "values": {
              "property": {
                "name": "Документ_НовыйДокумент",
                "type": "tns:Документ_ЗаказКлиента",
                "minOccurs": 0
              }
            }
          }
        }
      ]
    }
  }
}

Связная последовательность — например `objectType.add` и следом `property.add` к созданному типу — передаётся тем же массивом `ops` и проверяется одним preview.

3. Применить только после подтверждения

Когда пользователь поручил внести правку, передай только `executionToken` из `data.executionToken` успешного плана:

Для исполнения передай `data.executionToken` из этого успешного плана:

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "executionToken": "<data.executionToken из успешного плана>"
    }
  }
}
Read more
Ships withunica

Unica (Ю&#x301;ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.

Get the whole plugin

Other skills on unica.

api-design
Skill

api-design

Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…

autonomous-server
Skill

autonomous-server

Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…

background-jobs
Skill

background-jobs

Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…

bsp-patterns
Skill

bsp-patterns

Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…

cf-edit
Skill

cf-edit

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…

cf-init
Skill

cf-init

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля