Skip to content
Back to skills

Cfe Borrow

ASecurity

Заимствовать объект верхнего уровня из конфигурации 1С в расширение или обновить ранее заимствованный объект, сохранив его идентификаторы и локальные перекрытия.

  • 213 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 11, 2026
toolsgit

Works with

  • mcp

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add IngvarConsulting/unica --skill cfe-borrow --agent claude-code

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.

Security grade badge for Cfe Borrow
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ingvarconsulting-cfe-borrow/badge)](https://www.skillsdirectory.com/skills/ingvarconsulting-cfe-borrow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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С перед поставкой.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…