api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Создать объект метаданных 1С и при необходимости настроить его в том же вызове одной транзакцией.
$ npx -y skills add IngvarConsulting/unica --skill meta-add --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/meta-addContext preview
The summary Claude sees to decide when to auto-load this skill.
Создать объект метаданных 1С и при необходимости настроить его в том же вызове одной транзакцией.
name: meta-add description: Создать объект метаданных 1С и при необходимости настроить его в том же вызове одной транзакцией. argument-hint: <at> <operations> allowed-tools: - Read - Glob
`object.create`.
а вид и имя нового объекта передаются в `values`. Следующие операции того же плана адресуются уже самим объектом. Физическое расположение XML внутри выгрузки — внутренняя деталь; наружу путь отдаёт только аварийный `unica.resolve`.
Когда пользователь поручил внести эту правку, вызови `unica.apply` только с `executionToken` из `data.executionToken` успешного плана.
результат предыдущих и публикуются одной транзакцией, либо все, либо ни одной.
Ответ описывает правку семантическими `effects`, а не возвращает полный XML созданного объекта.
| Операция | Что делает | |---|---| | `object.create` | Создаёт объект метаданных по адресу | | `props.set` | Задаёт свойства объекта именами платформы | | `attribute.add`, `tabularSection.add`, `dimension.add`, `resource.add`, `enumValue.add`, `column.add` | Добавляют элементы коллекции; `at` — сам объект, элементы идут в `items`. Реквизит табличной части добавляется по адресу части: `at: "<набор>:<Вид>.<Имя>.TabularSection.<Часть>"`, в том числе части, созданной предыдущей операцией того же плана | | `template.add`, `command.add` | Регистрируют макет и команду | | `predefinedItem.add` | Добавляет предопределённый элемент | | `relation.add`, `relation.replace`, `relation.remove` | Задают ссылки объекта наружу | | `help.create` | Заводит встроенную справку владельца |
Виды, свойства, коллекции и варианты типов берутся из контракта операции: `unica.view` по адресу `<владелец>.Can.<операция>` отдаёт его `argsSchema` и пример, поэтому перечень здесь не дублируется. Общие прикладные правила — в [соглашениях по метаданным](../../references/platform/metadata-conventions.md).
Источник подписки на событие задаётся `relation.replace` со связью `source`; отдельной операции под источник нет. `Event` и `Handler` передавай через `props.set` в том же вызове, если выбранный шаблоном обработчик итоговой связке не подходит.
Тип уникального идентификатора задаётся закрытым вариантом `{"kind": "uuid"}`. Свойство наблюдения `mutationCapability` из ответа читателя во вход писателя не передаётся, и неизвестный QName нельзя копировать из XML в аргументы.
Тип значения константы задаётся через `props.set` по адресу константы: `values: {"Type": {"variants": [{"kind": "boolean"}]}}`. При создании помести эту операцию сразу после `object.create` в том же вызове. Для ссылки используй вариант `{"kind": "reference", "metadataPath": "Catalog.Номенклатура"}`; строка QName не принимается. Состав типов и квалификаторы те же, что у реквизитов. `view` возвращает тип в `props.type` как компактную JSON-строку.
Если схема не представляет сценарий, остановись и скажи прямо, что оставшийся шаг выполняется в Конфигураторе. Не подставляй составное значение строкой и не заводи временный файл определения.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Configuration",
"ops": [
{
"op": "object.create",
"args": {
"at": "main:Configuration",
"values": {"kind": "Catalog", "name": "НовыйСправочник"}
}
},
{
"op": "props.set",
"args": {
"at": "main:Catalog.НовыйСправочник",
"values": {"Comment": "Создан и настроен одним планом"}
}
},
{
"op": "attribute.add",
"args": {
"at": "main:Catalog.НовыйСправочник",
"items": [
{
"name": "ВнешнийИдентификатор",
"type": {"variants": [{"kind": "uuid"}]},
"required": true
}
]
}
}
]
}
}
}{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Configuration",
"ops": [
{
"op": "object.create",
"args": {
"at": "main:Configuration",
"values": {
"kind": "EventSubscription",
"name": "ПередЗаписьюНоменклатуры"
}
}
},
{
"op": "relation.replace",
"args": {
"at": "main:EventSubscription.ПередЗаписьюНоменклатуры",
"values": {
"relation": "source",
"targets": [
{"kind": "object", "metadataPath": "Catalog.Номенклатура"}
]
}
}
},
{
"op": "props.set",
"args": {
"at": "main:EventSubscription.ПередЗаписьюНоменклатуры",
"values": {
"Event": "BeforeWrite",
"Handler": "CommonModule.ОбработчикиПодписок.ПередЗаписьюНоменклатуры"
}
}
}
]
}
}
}Объект каталога передаёт событию `BeforeWrite` параметр `Cancel`; обработчик должен быть экспортной процедурой `(Source, Cancel)` в общем модуле с явными `Global=false`, `Server=true`. Пустой итоговый `Source`, примитивы, ссылки, неизвестное событие или несовместимая сигнатур
Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля