mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-13 01:14:56 +03:00
79 lines
3.9 KiB
Markdown
79 lines
3.9 KiB
Markdown
---
|
|
name: cfe-patch-method
|
|
description: Генерация перехватчика метода в расширении 1С (CFE). Используй когда нужно перехватить метод заимствованного объекта — вставить код до, после или вместо оригинального
|
|
argument-hint: -ExtensionPath <path> -ModulePath "Catalog.X.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before
|
|
allowed-tools:
|
|
- Bash
|
|
- Read
|
|
- Glob
|
|
---
|
|
|
|
# /cfe-patch-method — Генерация перехватчика метода
|
|
|
|
Генерирует `.bsl` файл с декоратором перехвата для заимствованного объекта расширения. Создаёт файл или дописывает в существующий.
|
|
|
|
## Предусловие
|
|
|
|
Объект должен быть заимствован в расширение (`/cfe-borrow`). Скрипт читает `NamePrefix` из `Configuration.xml` расширения для формирования имени процедуры.
|
|
|
|
## Параметры
|
|
|
|
| Параметр | Описание | По умолчанию |
|
|
|----------|----------|--------------|
|
|
| `ExtensionPath` | Путь к расширению (обязат.) | — |
|
|
| `ModulePath` | Путь к модулю (обязат.) | — |
|
|
| `MethodName` | Имя перехватываемого метода (обязат.) | — |
|
|
| `InterceptorType` | `Before` / `After` / `ModificationAndControl` (обязат.) | — |
|
|
| `Context` | Директива контекста | `НаСервере` |
|
|
| `IsFunction` | Метод — функция (добавит `Возврат`) | false |
|
|
|
|
## Формат ModulePath
|
|
|
|
| ModulePath | Файл |
|
|
|------------|------|
|
|
| `Catalog.X.ObjectModule` | `Catalogs/X/Ext/ObjectModule.bsl` |
|
|
| `Catalog.X.ManagerModule` | `Catalogs/X/Ext/ManagerModule.bsl` |
|
|
| `Catalog.X.Form.Y` | `Catalogs/X/Forms/Y/Ext/Form/Module.bsl` |
|
|
| `CommonModule.X` | `CommonModules/X/Ext/Module.bsl` |
|
|
| `Document.X.ObjectModule` | `Documents/X/Ext/ObjectModule.bsl` |
|
|
| `Document.X.Form.Y` | `Documents/X/Forms/Y/Ext/Form/Module.bsl` |
|
|
|
|
Аналогично для Report, DataProcessor, InformationRegister и других типов.
|
|
|
|
## Типы перехвата
|
|
|
|
| InterceptorType | Декоратор | Назначение |
|
|
|-----------------|-----------|------------|
|
|
| `Before` | `&Перед` | Код до вызова оригинального метода |
|
|
| `After` | `&После` | Код после вызова оригинального метода |
|
|
| `ModificationAndControl` | `&ИзменениеИКонтроль` | Копия тела метода с маркерами `#Вставка`/`#Удаление` |
|
|
|
|
## Команда
|
|
|
|
```powershell
|
|
python ".github/skills/cfe-patch-method/scripts/cfe-patch-method.py" -ExtensionPath src -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before
|
|
```
|
|
|
|
## Примеры
|
|
|
|
```powershell
|
|
# Перехват &Перед на сервере
|
|
... -ExtensionPath src -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before
|
|
|
|
# Перехват &После на клиенте
|
|
... -ExtensionPath src -ModulePath "Document.Заказ.Form.ФормаДокумента" -MethodName "ПослеЗаписиНаСервере" -InterceptorType After -Context "НаКлиенте"
|
|
|
|
# ИзменениеИКонтроль для функции
|
|
... -ExtensionPath src -ModulePath "CommonModule.ОбщийМодуль" -MethodName "ПолучитьДанные" -InterceptorType ModificationAndControl -IsFunction
|
|
```
|
|
|
|
## Генерируемый код (Before)
|
|
|
|
```bsl
|
|
&НаСервере
|
|
&Перед("ПриЗаписи")
|
|
Процедура Расш1_ПриЗаписи()
|
|
// TODO: код перед вызовом оригинального метода
|
|
КонецПроцедуры
|
|
```
|