$npx -y skills add Desko77/cursor-1c-skills --skill 1c-cfe-patch-methodГенерация перехватчика метода в расширении 1С (CFE). Используй когда нужно перехватить метод заимствованного объекта — вставить код до, после или вместо оригинального
| 1 | # /cfe-patch-method — Генерация перехватчика метода |
| 2 | |
| 3 | Генерирует `.bsl` файл с декоратором перехвата для заимствованного объекта расширения. Создаёт файл или дописывает в существующий. |
| 4 | |
| 5 | ## Предусловие |
| 6 | |
| 7 | Объект должен быть заимствован в расширение (`/cfe-borrow`). Скрипт читает `NamePrefix` из `Configuration.xml` расширения для формирования имени процедуры. |
| 8 | |
| 9 | ## Параметры |
| 10 | |
| 11 | | Параметр | Описание | По умолчанию | |
| 12 | |----------|----------|--------------| |
| 13 | | `ExtensionPath` | Путь к расширению (обязат.) | — | |
| 14 | | `ModulePath` | Путь к модулю (обязат.) | — | |
| 15 | | `MethodName` | Имя перехватываемого метода (обязат.) | — | |
| 16 | | `InterceptorType` | `Before` / `After` / `ModificationAndControl` (обязат.) | — | |
| 17 | | `Context` | Директива контекста | `НаСервере` | |
| 18 | | `IsFunction` | Метод — функция (добавит `Возврат`) | false | |
| 19 | |
| 20 | ## Формат ModulePath |
| 21 | |
| 22 | | ModulePath | Файл | |
| 23 | |------------|------| |
| 24 | | `Catalog.X.ObjectModule` | `Catalogs/X/Ext/ObjectModule.bsl` | |
| 25 | | `Catalog.X.ManagerModule` | `Catalogs/X/Ext/ManagerModule.bsl` | |
| 26 | | `Catalog.X.Form.Y` | `Catalogs/X/Forms/Y/Ext/Form/Module.bsl` | |
| 27 | | `CommonModule.X` | `CommonModules/X/Ext/Module.bsl` | |
| 28 | | `Document.X.ObjectModule` | `Documents/X/Ext/ObjectModule.bsl` | |
| 29 | | `Document.X.Form.Y` | `Documents/X/Forms/Y/Ext/Form/Module.bsl` | |
| 30 | |
| 31 | Аналогично для Report, DataProcessor, InformationRegister и других типов. |
| 32 | |
| 33 | ## Типы перехвата |
| 34 | |
| 35 | | InterceptorType | Декоратор | Назначение | |
| 36 | |-----------------|-----------|------------| |
| 37 | | `Before` | `&Перед` | Код до вызова оригинального метода | |
| 38 | | `After` | `&После` | Код после вызова оригинального метода | |
| 39 | | `ModificationAndControl` | `&ИзменениеИКонтроль` | Копия тела метода с маркерами `#Вставка`/`#Удаление` | |
| 40 | |
| 41 | ## Команда |
| 42 | |
| 43 | ```powershell |
| 44 | powershell.exe -NoProfile -File skills/1c-cfe-patch-method/scripts/cfe-patch-method.ps1 -ExtensionPath src -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before |
| 45 | ``` |
| 46 | |
| 47 | ## Примеры |
| 48 | |
| 49 | ```powershell |
| 50 | # Перехват &Перед на сервере |
| 51 | ... -ExtensionPath src -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before |
| 52 | |
| 53 | # Перехват &После на клиенте |
| 54 | ... -ExtensionPath src -ModulePath "Document.Заказ.Form.ФормаДокумента" -MethodName "ПослеЗаписиНаСервере" -InterceptorType After -Context "НаКлиенте" |
| 55 | |
| 56 | # ИзменениеИКонтроль для функции |
| 57 | ... -ExtensionPath src -ModulePath "CommonModule.ОбщийМодуль" -MethodName "ПолучитьДанные" -InterceptorType ModificationAndControl -IsFunction |
| 58 | ``` |
| 59 | |
| 60 | ## Генерируемый код (Before) |
| 61 | |
| 62 | ```bsl |
| 63 | &НаСервере |
| 64 | &Перед("ПриЗаписи") |
| 65 | Процедура Расш1_ПриЗаписи |
| 66 | // TODO: код перед вызовом оригинального метода |
| 67 | КонецПроцедуры |
| 68 | ``` |