Заимствовать объект верхнего уровня из конфигурации 1С в расширение или обновить ранее заимствованный объект, сохранив его идентификаторы и локальные перекрытия.
Installs into .claude/skills of the current project.
Are you the author of Cfe Borrow?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ingvarconsulting-cfe-borrow)
---
name: cfe-borrow
description: Заимствовать объект верхнего уровня из конфигурации 1С в расширение или обновить ранее заимствованный объект, сохранив его идентификаторы и локальные перекрытия.
argument-hint: <extension:Configuration> <parent:Kind.Name>
allowed-tools:
- Read
- Glob
---
# Заимствование объекта в расширение
## MCP routing
Используй `unica.apply` с операцией `object.borrow`. В `at` укажи корень
расширения, в `from` — проверенный адрес объекта родительской конфигурации.
Имена наборов возьми из `unica.view {}` и прочитай родителя через `unica.view`.
Родитель должен быть зарегистрирован в своей конфигурации и доступен для
чтения. Одинаковое имя объекта само по себе не доказывает связь.
Сначала вызови `unica.apply` с `at` и `ops` для плана без записи. Проверь
`changed`, `effects` и `data.borrowing`: там указаны родитель, адрес результата, создание или
обновление, изменяемые свойства и защищённые перекрытия. Исполняй сохранённый
план вызовом только с `executionToken` из `data.executionToken`, когда
пользователь поручил внести эту правку. План сохраняет прочитанные входы
расширения и родителя, а также ожидаемые изменения. Если эти входы изменились
и получен `stale_revision`, нужен новый план; изменение файла вне входов плана
не мешает исполнению.
Первое заимствование создаёт собственные идентификаторы объекта расширения
и регистрирует его в корне. Явный повтор обновляет перенесённые свойства,
сохраняет идентификаторы, локальное содержимое вне переносимых свойств и
свойства с признаками перекрытия. Составное переносимое свойство, например
`DefinedType.Type`, обновляется целиком, если оно не защищено перекрытием. Если изменений нет, файлы не переписываются. Повтор не меняет
родителя и набор перекрытий; повреждённые идентификаторы требуют отдельного
восстановления.
`from` выбирает родителя для этого вызова. Постоянную привязку наборов и
автоматическую синхронизацию операция не создаёт. При нескольких копиях
родителя с теми же идентификаторами последующее чтение может сообщить
неоднозначность.
## Предпросмотр и чтение
Пример использует наборы `parent` и `ext`; подставь имена своего проекта.
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "ext:Configuration",
"ops": [
{"op": "object.borrow", "args": {"from": "parent:Catalog.Items"}}
]
}
}
}
```
После применения прочитай результат:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": {"at": "ext:Catalog.Items"}
}
}
```
`props.belonging` различает свой и заимствованный объект. У заимствованного
объекта `parentId` хранит идентификатор родителя; `extends` появляется только
после проверки полного адреса, по которому родитель читается.
`parentStatus` сообщает `resolved`, `not_found`, `ambiguous` или `unavailable`.
Недоступный родитель не скрывает сведения об исправном объекте расширения.
Корень расширения не является заимствованным объектом.
Список `overrides` показывает защищённые свойства. Если он не помещается
в компактный ответ, `overridesComplete: false` и `overridesCount` сообщают
неполноту и количество; отсутствие строки не означает отсутствие перекрытий.
## Перекрытия и границы
При первом заимствовании необязательный `args.overrides` задаёт имена свойств,
которые нужно защитить от последующего обновления. Подтверждены выгрузкой
платформы `Catalog.DescriptionLength` (`Extended`) и `CommonModule.Server`
(`Notify`); например, `"overrides": ["DescriptionLength"]` для справочника.
Начальное значение берётся у родителя, дальнейшая правка локального значения
выполняется отдельно. Не копируй один XML-маркер на все свойства: платформа
удаляет неподходящие сочетания, в частности `Synonym/Extended`.
Повтор сохраняет существующие состояния `Extended`, `Notify` и `MultiState`.
Локальные `Comment` и `Synonym` не запрашиваются как контролируемые свойства.
Неподдерживаемый профиль или повреждение приводят к отказу без записи;
обходить отказ прямым вызовом внутреннего адаптера нельзя.
Операция переносит дескриптор объекта верхнего уровня. Формы, их реквизиты
и элементы остаются в [задаче #937](https://github.com/IngvarConsulting/unica/issues/937).
Проверяй расширение через `unica.check` на `ext:Configuration` и через цикл
загрузки, проверки и выгрузки 1С перед поставкой.