api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Просмотреть или точечно изменить схему XDTO-пакета 1С по логическому адресу. Используй для EnterpriseData `valueType`, `objectType` и свойств типов.
$ npx -y skills add IngvarConsulting/unica --skill xdto --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/xdtoContext preview
The summary Claude sees to decide when to auto-load this skill.
Просмотреть или точечно изменить схему XDTO-пакета 1С по логическому адресу. Используй для EnterpriseData `valueType`, `objectType` и свойств типов.
name: xdto description: Просмотреть или точечно изменить схему XDTO-пакета 1С по логическому адресу. Используй для EnterpriseData `valueType`, `objectType` и свойств типов. argument-hint: <sourceSet> <XDTOPackage.Name> <ops> allowed-tools: - Read - Glob
Перед чтением или мутацией сверяй поддерживаемую грамматику и байтовые гарантии с `../../references/specs/1c-xdto-spec.md`.
`unica.apply` с операциями семейства XDTO строит и применяет точечную мутацию.
`unica.apply` с `at` и `ops`. Исполняй план вызовом только с `executionToken` из `data.executionToken` после поручения пользователя; любое изменение аргументов требует нового preview.
Связное изменение — тип и его свойства — веди одним планом: операции видят результаты предыдущих, публикация одна, отказ любой операции не оставляет частичной записи. Ошибка элемента называет `ops[<индекс>]`.
`<набор>:XDTOPackage.<Имя>` (для операций над типом — `<набор>:XDTOPackage.<Имя>.Type.<Тип>`, над свойством любой вложенности — `…Type.<Тип>.Property.<А>[.Property.<Б>…]`). Точка внутри имени пишется `\.`: свойство `A.B` — `…Property.A\.B` (в JSON — `A\\.B`). Никогда не передавай путь к `XDTOPackages/.../Ext/Package.bin`: он остаётся внутренней раскладкой платформенной выгрузки.
скриптовые обёртки: публичная граница этого скилла состоит ровно из двух нативных инструментов выше.
Операции семейства 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.
Корень пакета отвечает целевым пространством имён и счётчиками, а состав лежит в ветвях `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` означает неограниченную верхнюю границу.
{
"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.
Когда пользователь поручил внести правку, передай только `executionToken` из `data.executionToken` успешного плана:
Для исполнения передай `data.executionToken` из этого успешного плана:
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"executionToken": "<data.executionToken из успешного плана>"
}
}
}Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля