# Cfe Patch Method

> Генерация перехватчика процедуры в расширении 1С (CFE). Используй для Before/After-перехвата существующей процедуры без параметров у заимствованного объекта

- Skill: `ingvarconsulting/cfe-patch-method` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ingvarconsulting/cfe-patch-method`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ingvarconsulting/cfe-patch-method/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: IngvarConsulting (https://skillmd.com/u/ingvarconsulting)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/ingvarconsulting/cfe-patch-method

---


# /cfe-patch-method — Генерация перехватчика процедуры

## MCP routing

- **Канонической операции перехвата на поверхности нет.** `unica.apply` правит
  код существующего модуля (`code.insert`, `code.replace`), но модуль
  расширения для заимствованного объекта вместе с пометкой перекрытого
  свойства (`xr:PropertyState`) ни одна операция не создаёт.
- Не зови внутренние адаптеры напрямую: они спрятаны за MCP `unica`.
- Готовность проверяет `unica.check`, результат читает `unica.view` по адресу.

Что делать сейчас: заимствовать объект (см. `cfe-borrow`), затем записать
`.bsl` с декоратором `&Перед` или `&После` по формату ниже и пометить свойство
модуля в дескрипторе расширения. Проверить результат — `unica.check` на узле
модуля, прочитать — `unica.view`.

Форма пометки перекрытия платформенной уликой пока не подтверждена: её снимает
круговой путь из отдельной архитектурной записки Unica. Пока
улики нет, считай перехват незавершённым фактом и сообщай о пробеле контракта.

## Примеры

### Перехват Перед в модуле объекта

Поля, которые должен нести записанный файл:

```json
{
  "ExtensionPath": "src",
  "ModulePath": "Catalog.Контрагенты.ObjectModule",
  "MethodName": "ОбновитьДанные",
  "InterceptorType": "Before"
}
```

### Перехват обычной процедуры формы После на клиенте

Поля, которые должен нести записанный файл:

```json
{
  "ExtensionPath": "src",
  "ModulePath": "Document.Заказ.Form.ФормаДокумента",
  "MethodName": "ОбновитьОтображение",
  "InterceptorType": "After",
  "Context": "НаКлиенте"
}
```

### Перехват процедуры общего модуля

Поля, которые должен нести записанный файл:

```json
{
  "ExtensionPath": "src",
  "ModulePath": "CommonModule.ОбщийМодуль",
  "MethodName": "ОбновитьДанные",
  "InterceptorType": "Before"
}
```
## Генерируемый код (Before)

```bsl
&Перед("ОбновитьДанные")
Процедура Расш1_ОбновитьДанные()
	// TODO: код перед вызовом оригинального метода
КонецПроцедуры
```

