cfe-patch-method · git:20261019.1ec8d82 · 2026-10-19 · sha256 d602899aa7880d25
cfe-patch-method git:20261019.1ec8d82A
Immutable. This exact content never changes and is served at /api/v1/blob/d602899aa7880d25.
---
name: cfe-patch-method
description: Генерация перехватчика процедуры в расширении 1С (CFE). Используй для Before/After-перехвата существующей процедуры без параметров у заимствованного объекта
argument-hint: -ExtensionPath <path> -ModulePath "Catalog.X.ObjectModule" -MethodName "ОбновитьДанные" -InterceptorType Before
allowed-tools:
- Bash
- Read
- Glob
---
# /cfe-patch-method — Генерация перехватчика процедуры
## MCP routing
- **Отдельной канонической операции генерации перехватчика нет.** Подготовленный
BSL записывается через `unica.apply` операциями `code.insert` и `code.replace`
по маршруту [code-patch](../code-patch/SKILL.md).
- У заимствованного объекта запись BSL также подключает модуль: недостающее
состояние `PropertyState=Extended` добавляется в дескриптор той же
транзакцией. Корректное состояние сохраняется без изменения, несовместимое
вызывает отказ до записи. Вручную помечать поддержанный модуль в XML не нужно.
- Не зови внутренние адаптеры напрямую: они спрятаны за MCP `unica`.
- Готовность проверяет `unica.check`, результат читает `unica.view` по адресу.
Шаблоны этого навыка относятся к `Before`/`After` — `&Перед`/`&После`
существующей процедуры без параметров. Они не выводят автоматически подпись
функции или процедуры с параметрами и не описывают `&Вместо` или
`&ИзменениеИКонтроль`. Это граница шаблонов, а не ограничение записи BSL
через `unica.apply`.
## Порядок работы
1. Прочитай исходную процедуру через `unica.view`: проверь её подпись и
контекст компиляции. Заимствуй объект в расширение по
[cfe-borrow](../cfe-borrow/SKILL.md), если он ещё не заимствован.
2. Найди логический адрес модуля расширения. Подготовь BSL с нужным
декоратором, префиксом имён этого расширения и контекстом исходной
процедуры. В примерах ниже имена и префикс условные.
3. Получи план `unica.apply` с `at` и `ops`: новый перехватчик добавляет
`code.insert`, существующий изменяет `code.replace` по его адресу в
расширении. Проверь план BSL и, если состояния модуля ещё нет, добавление
`PropertyState` в XML. Предпросмотр не записывает ни один файл.
4. Исполни сохранённый план вызовом только с `executionToken`. Прочитай
результат через `unica.view`, выполни `unica.check` на модуле и на корне
расширения (`ext:Configuration`, подставив имя своего набора).
`unica.check` проверяет исходники. Успешная структурная проверка не означает,
что перехватчик уже выполнен платформой в целевом сценарии.
## Примеры
### Перехват Перед в модуле объекта
Параметры иллюстрации; это не содержимое BSL-файла и не аргументы `unica.apply`:
```json
{
"ExtensionPath": "src",
"ModulePath": "Catalog.Контрагенты.ObjectModule",
"MethodName": "ОбновитьДанные",
"InterceptorType": "Before"
}
```
### Перехват обычной процедуры формы После на клиенте
Параметры иллюстрации; это не содержимое BSL-файла и не аргументы `unica.apply`:
```json
{
"ExtensionPath": "src",
"ModulePath": "Document.Заказ.Form.ФормаДокумента",
"MethodName": "ОбновитьОтображение",
"InterceptorType": "After",
"Context": "НаКлиенте"
}
```
### Перехват процедуры общего модуля
Параметры иллюстрации; это не содержимое BSL-файла и не аргументы `unica.apply`:
```json
{
"ExtensionPath": "src",
"ModulePath": "CommonModule.ОбщийМодуль",
"MethodName": "ОбновитьДанные",
"InterceptorType": "Before"
}
```
## Генерируемый код (Before)
```bsl
&Перед("ОбновитьДанные")
Процедура Расш1_ОбновитьДанные()
// TODO: код перед вызовом оригинального метода
КонецПроцедуры
```