{"id":18931777,"url":"https://github.com/nixel2007/decorator","last_synced_at":"2026-02-11T20:30:58.912Z","repository":{"id":53563062,"uuid":"288413010","full_name":"nixel2007/decorator","owner":"nixel2007","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-05T05:57:17.000Z","size":162,"stargazers_count":11,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-05T17:25:56.522Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nixel2007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://t.me/tribute/app?startapp=sdzj","https://t.me/tribute/app?startapp=d7Rs"],"github":"nixel2007","ko_fi":"nixel2007","patreon":"nixel2007"}},"created_at":"2020-08-18T09:32:11.000Z","updated_at":"2026-02-05T05:56:34.000Z","dependencies_parsed_at":"2025-02-20T23:26:51.842Z","dependency_job_id":null,"html_url":"https://github.com/nixel2007/decorator","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/nixel2007/decorator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fdecorator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fdecorator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fdecorator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fdecorator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nixel2007","download_url":"https://codeload.github.com/nixel2007/decorator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fdecorator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29343981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest"],"created_at":"2024-11-08T11:46:39.743Z","updated_at":"2026-02-11T20:30:58.887Z","avatar_url":"https://github.com/nixel2007.png","language":"1C Enterprise","funding_links":["https://t.me/tribute/app?startapp=sdzj","https://t.me/tribute/app?startapp=d7Rs","https://github.com/sponsors/nixel2007","https://ko-fi.com/nixel2007","https://patreon.com/nixel2007"],"categories":[],"sub_categories":[],"readme":"# decorator\n\n[![Тестирование](https://github.com/nixel2007/decorator/actions/workflows/testing.yml/badge.svg?branch=master)](https://github.com/nixel2007/decorator/actions/workflows/testing.yml)\n[![Статус порога качества](https://sonar.openbsl.ru/api/project_badges/measure?project=decorator\u0026metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=decorator)\n\n\nБиблиотека для создания оберток (декораторов) над классами.\n\nДекоратор повторяет публичный интерфейс класса (экспортные методы и поля),\nделегируя вызов вложенному реальному объекту.\n\nВозможности:\n\n* создание декоратора с идентичным интерфейсом;\n* синхронизация значений полей декоратора и реального объекта;\n* добавление методов, импортов, полей, шагов инициализации в runtime;\n* добавление перехватчиков (\"перед\", \"после\") вызова метода;\n* поддержка вложенных декораторов.\n\ndocs - todo;\n\n## Пример использования:\n\n```bsl\n#Использовать decorator\n\nКакойТоКласс = Новый КакойТоКласс();\nКакойТоКласс.Поле = 123;\n\nПоле = Новый Поле(\"НовоеПоле\")\n\t.Публичное()\n\t.ЗначениеПоУмолчанию(\"ЗначениеПоУмолчанию\");\n\nМетод = Новый Метод(\"ДобавленнаяФункция\")\n\t.Публичный()\n\t.ТелоМетода(\"Возврат Поле + 1;\");\n\nПерехватчик = Новый Перехватчик(\"ДобавленнаяФункция\")\n\t.ТипПерехватчика(ТипыПерехватчиковМетода.Перед)\n\t.Тело(\"Сообщить(\"\"Привет, мир!\"\")\");\n\nДекоратор = Новый ПостроительДекоратора(КакойТоКласс)\n    .Импорт(Новый Импорт(\"fs\"))\n    .Поле(Поле)\n    .Метод(Метод)\n    .Перехватчик(Перехватчик)\n    .Построить();\n\nОжидаем.Что(Декоратор.Поле).Равно(123);\nОжидаем.Что(Декоратор.РоднаяФункцияВозвращающаяИстина()).ЭтоИстина();\nОжидаем.Что(Декоратор.ДобавленнаяФункция()).Равно(124);\n```\n\n### Отладка добавляемых методов\n\nДля того, что бы работал отладчик и заходил в добавленные методы нужно: Либо установить любое значение переменной окружения с именем ```OSCRIPT_DECORATOR_DEBUG```. Либо вызвать у построителя метод ```Отладка()```\n\n```bsl\nДекоратор = Новый ПостроительДекоратора(КакойТоКласс)\n    .Импорт(Новый Импорт(\"fs\"))\n    .Поле(Поле)\n    .Метод(Метод)\n    .Перехватчик(Перехватчик)\n    .Отладка()\n    .Построить();\n```\n\n## Документация по методам\n\n### ПостроительДекоратора\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   Объект - Произвольный - Инстанс объекта, над которым нужно создать декоратор\n//          - Тип          - Тип объекта, инстанс которого нужно создать и задекорировать\n//          - Неопределено - Декоратор создаётся с нуля\n//\nПроцедура ПриСозданииОбъекта(Объект = Неопределено)\n```\n\n#### Поле\n\n```bsl\n// Добавляет в декоратор новое поле\n//\n// Параметры:\n//   Поле - Поле - Добавляемое поле\n//\n//  Возвращаемое значение:\n//   ПостроительДекоратора - Ссылка на текущий инстанс ПостроительДекоратора\n//\nФункция Поле(Поле) Экспорт\n```\n\n#### Метод\n\n```bsl\n// Добавляет в декоратор новый метод.\n//\n// Параметры:\n//   Метод - Метод - Добавляемый метод.\n//\n//  Возвращаемое значение:\n//   ПостроительДекоратора - Ссылка на текущий инстанс ПостроительДекоратора\n//\nФункция Метод(Метод) Экспорт\n```\n\n#### Перехватчик\n\n```bsl\n// Добавляет в декоратор перехватчик\n//\n// Параметры:\n//   Перехватчик - Перехватчик - Добавляемый перехватчик\n//\n//  Возвращаемое значение:\n//   ПостроительДекоратора - Ссылка на текущий инстанс ПостроительДекоратора\n//\nФункция Перехватчик(Перехватчик) Экспорт\n```\n\n#### Импорт\n\n```bsl\n// Добавляет в декоратор импорт библиотеки (#Использовать).\n//\n// Параметры:\n//   Импорт - Импорт - Импорт библиотеки\n//\n//  Возвращаемое значение:\n//   ПостроительДекоратора - Ссылка на текущий инстанс ПостроительДекоратора\n//\nФункция Импорт(Импорт) Экспорт\n```\n\n#### ШагИнициализации\n\n```bsl\n// Добавляет в декоратор шаг инициализации в тело модуля.\n//\n// Параметры:\n//   ШагИнициализации - ШагИнициализации - Выполняемый шаг инициализации\n//\n//  Возвращаемое значение:\n//   ПостроительДекоратора - Ссылка на текущий инстанс ПостроительДекоратора\n//\nФункция ШагИнициализации(ШагИнициализации) Экспорт\n```\n\n#### ЗначениеПараметраКонструктораПоТипу\n\n```bsl\n// Добавляет значение параметра для инициализации объекта, в случае создания декоратора из типа\n//\n// Параметры:\n//   ЗначениеПараметра - Произвольный - Значение параметра конструктора по типу\n//\n//  Возвращаемое значение:\n//   ПостроительДекоратора - Ссылка на текущий инстанс ПостроительДекоратора\n//\nФункция ЗначениеПараметраКонструктораПоТипу(ЗначениеПараметра) Экспорт\n```\n\n#### ТекстСценария\n```bsl\n// Получить сконструированный текст сценария будущего декоратора\n//\n//  Возвращаемое значение:\n//   Строка - Текст сценария декоратора\n//\nФункция ТекстСценария() Экспорт\n```\n\n#### Построить\n\n```bsl\n// Сконструировать готовый декоратор по настройкам конструктора Декоратор.\n//\n// Параметры:\n//   ТекстСценария - Строка - Текст сценария декоратора. Если не задан, формируется автоматически.\n//\n//  Возвращаемое значение:\n//   Произвольный - Декоратор над объектом, переданным в конструктор Декоратор\n//\nФункция Построить(ТекстСценария = Неопределено) Экспорт\n```\n\n#### ЗарегистрироватьВСистемеТипов\n\n```bsl\n// Сконструировать готовый декоратор по настройкам конструктора Декоратор,\n//  и зарегистрировать его как новый тип в системе типов\n//\n// Параметры:\n//   ИмяТипа - Строка - Имя, под которым тип будет зарегистрирован в системе\n//\nПроцедура ЗарегистрироватьВСистемеТипов(ИмяТипа) Экспорт\n```\n\n### Аннотация\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ИмяАннотации - Строка - Имя добавляемой аннотации\n//\nПроцедура ПриСозданииОбъекта(ИмяАннотации)\n```\n\n#### Параметр\n\n```bsl\n// Добавляет параметр аннотации, допускается указание одного безымянного параметра\n//\n// Параметры:\n//   Значение - Строка, Число, Булево, Дата - Значение параметра\n//   Имя      - Строка - Необязательный, имя параметра \n//\n//  Возвращаемое значение:\n//   Аннотация - Ссылка на текущий инстанс Аннотация\n//\nФункция Параметр(Значение, Имя = \"\") Экспорт\n```\n\n### Импорт\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ПодключаемаяБиблиотека - Строка - Имя или путь подключаемой библиотеки\n//\nПроцедура ПриСозданииОбъекта(ПодключаемаяБиблиотека)\n```\n\n#### ТипПодключения\n\n```bsl\n// Устанавливает тип подключения библиотеки\n//\n// Параметры:\n//   УстанавливаемыйТипПодключения - ТипыПодключенияБиблиотек - Устанавливаемый тип подключения библиотеки\n//\n//  Возвращаемое значение:\n//   Импорт - Ссылка на текущий инстанс Импорт\n//\nФункция ТипПодключения(УстанавливаемыйТипПодключения) Экспорт\n```\n\n#### Метод\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ИмяМетода - Строка - Имя создаваемого метода\n//\nПроцедура ПриСозданииОбъекта(ИмяМетода)\n```\n\n#### Аннотация\n\n```bsl\n// Добавляет аннотацию метода\n//\n// Параметры:\n//   Аннотация - Аннотация - Добавляемая аннотация\n//\n//  Возвращаемое значение:\n//   Метод - Ссылка на текущий инстанс Метод\n//\nФункция Аннотация(Аннотация) Экспорт\n```\n#### ТелоМетода\n\n```bsl\n// Устанавливает тело метода\n//\n// Параметры:\n//   ТелоМетода - Строка - Устанавливаемое тело метода\n//\n//  Возвращаемое значение:\n//   Метод - Ссылка на текущий инстанс Метод\n//\nФункция ТелоМетода(ТелоМетода) Экспорт\n```\n\n#### Параметр\n\n```bsl\n// Добавляет параметр метода\n//\n// Параметры:\n//   Параметр - ПараметрМетода - Добавляемый параметр метода\n//\n//  Возвращаемое значение:\n//   Метод - Ссылка на текущий инстанс Метод\n//\nФункция Параметр(Параметр) Экспорт\n```\n\n#### Публичный\n\n```bsl\n// Устанавливает экспорт метода\n//\n//  Возвращаемое значение:\n//   Метод - Ссылка на текущий инстанс Метод\n//\nФункция Публичный() Экспорт\n```\n\n#### ЭтоПроцедура\n\n```bsl\n// Устанавливает признак того что этот метод Процедура\n//\n//  Возвращаемое значение:\n//   Метод - Ссылка на текущий инстанс Метод\n//\nФункция ЭтоПроцедура() Экспорт\n```\n\n### ПараметрМетода\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ИмяПараметра - Строка - Имя параметра метода\n//\nПроцедура ПриСозданииОбъекта(ИмяПараметра)\n```\n\n#### ПоЗначению\n\n```bsl\n// Устанавливает Знач параметра\n//\n//  Возвращаемое значение:\n//   ПараметрМетода - Ссылка на текущий инстанс ПараметрМетода\n//\nФункция ПоЗначению() Экспорт\n```\n\n#### ЗначениеПоУмолчанию\n\n```bsl\n// Устанавливает значение по умолчанию для параметра\n//\n// Параметры:\n//   ЗначениеПоУмолчаниюПараметра - Строка, Число, Дата, Булево, Неопределено - Значение параметра по умолчанию\n//\n//  Возвращаемое значение:\n//   ПараметрМетода - Ссылка на текущий инстанс ПараметрМетода\n//\nФункция ЗначениеПоУмолчанию(ЗначениеПоУмолчаниюПараметра) Экспорт\n```\n#### Аннотация\n\n```bsl\n// Добавляет аннотацию параметра\n//\n// Параметры:\n//   Аннотация - Аннотация - Добавляемая аннотация\n//\n//  Возвращаемое значение:\n//   ПараметрМетода - Ссылка на текущий инстанс ПараметрМетода\n//\nФункция Аннотация(Аннотация) Экспорт\n```\n\n### Перехватчик\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ИмяПерехватываемогоМетода - Строка - Имя метода для которого предназначен перехватчик\n//\nПроцедура ПриСозданииОбъекта(ИмяПерехватываемогоМетода)\n```\n\n#### Тело\n\n```bsl\n// Устанавливает тело перехватчика\n//\n// Параметры:\n//   ТелоПерехватчика - Строка - Устанавливаемое тело перехватчика\n//\n//  Возвращаемое значение:\n//   Перехватчик - Ссылка на текущий инстанс Перехватчик\n//\nФункция Тело(ТелоПерехватчика) Экспорт\n```\n\n#### ТипПерехватчика\n\n```bsl\n// Устанавливает тип перехватчика\n//\n// Параметры:\n//   ТипПерехватчика - ТипыПерехватчиковМетода - Устанавливаемое тип перехватчика\n//\n//  Возвращаемое значение:\n//   Перехватчик - Ссылка на текущий инстанс Перехватчик\n//\nФункция ТипПерехватчика(ТипПерехватчика) Экспорт\n```\n\n### Поле\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ИмяПоля - Строка - Имя поля\n//\nПроцедура ПриСозданииОбъекта(ИмяПоля)\n```\n\n#### Публичное\n\n```bsl\n// Устанавливает Экспорт поля\n//\n//  Возвращаемое значение:\n//   Поле - Ссылка на текущий инстанс Поле\n//\nФункция Публичное() Экспорт\n```\n\n#### ЗначениеПоУмолчанию\n\n```bsl\n// Устанавливает значение по умолчанию для поля\n//\n// Параметры:\n//   УстанавливаемоеЗначениеПоУмолчанию - Произвольный - Значение поля по умолчанию\n//\n//  Возвращаемое значение:\n//   Поле - Ссылка на текущий инстанс Поле\n//\nФункция ЗначениеПоУмолчанию(УстанавливаемоеЗначениеПоУмолчанию) Экспорт\n```\n\n#### Аннотация\n\n```bsl\n// Добавляет аннотацию поля\n//\n// Параметры:\n//   Аннотация - Аннотация - Добавляемая аннотация\n//\n//  Возвращаемое значение:\n//   Поле - Ссылка на текущий инстанс Поле\n//\nФункция Аннотация(Аннотация) Экспорт\n```\n\n### ШагИнициализации\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   ТелоШага - Строка - тело шага инициализации\n//\nПроцедура ПриСозданииОбъекта(ТелоШага)\n```\n\n### Перечисление ТипыПерехватчиковМетода\n\n#### Перед\nПерехватчик вызывается перед выполнением перехватываемого метода\n\n#### После\nПерехватчик вызывается после выполнения перехватываемого метода\n\n#### ПослеВызоваИсключения\nПерехватчик вызывается если перехватываемый метод упал в исключение, в момент перед пробросом исключения\n\n#### ПередСинхронизациейПолей\nПерехватчик вызывается в самом начале, перед синхронизацией полей декоратора и оригинального метода\n\n### Перечисление ТипыПодключенияБиблиотек\n\n#### ПоИмени\nБиблиотека подключается по имени:\n```bsl\n#Использовать fs\n```\n\n#### ПоПути\nБиблиотека подключается по пути к библиотеке:\n```bsl\n#Использовать \"./libs/myLib\"\n```\n---\n\nВНИМАНИЕ: Ниже приведён API устаревшей версий конструктора декоратора, он будет удалён в последующих релизах, воспользуйтесь новой версией\n\n---\n\n## Устаревший API\n\n## Пример использования\n\n```bsl\n#Использовать decorator\n\nКакойТоКласс = Новый КакойТоКласс();\nКакойТоКласс.Поле = 123;\n\nИмяМетода = \"ДобавленнаяФункция\";\nТекстМетода = \"Возврат Поле + 1;\";\n\nДекоратор = Новый КонструкторДекоратора(КакойТоКласс)\n    .ДобавитьИмпортПоИмени(\"fs\")\n    .ДобавитьПубличноеПоле(\"НовоеПоле\", \"ЗначениеПоУмолчанию\")\n    .ДобавитьМетод(ИмяМетода, ТекстМетода)\n    .ДобавитьПередВызовомМетода(\"ДобавленнаяФункция\", \"Сообщить(\"\"Привет, мир!\"\");\")\n    .Построить();\n\nОжидаем.Что(Декоратор.Поле).Равно(123);\nОжидаем.Что(Декоратор.РоднаяФункцияВозвращающаяИстина()).ЭтоИстина();\nОжидаем.Что(Декоратор.ДобавленнаяФункция()).Равно(124);\n```\n\n## Документация по методам\n\n### КонструкторДекоратора\n\n#### ПриСозданииОбъекта\n\n```bsl\n// Конструктор\n//\n// Параметры:\n//   Объект - Произвольный - Инстанс объекта, над которым нужно создать декоратор.\n//\nПроцедура ПриСозданииОбъекта(Объект) \n```\n\n#### ДобавитьПриватноеПоле\n\n```bsl\n// Добавляет в декоратор новое приватное поле.\n//\n// Параметры:\n//   ИмяПоля - Строка - Имя добавляемого поля\n//   ЗначениеПоля - Произвольный - Значение, которым необходимо проинициализировать добавляемое поле.\n//                                 Если не задано, поле не инициализируется и содержит Неопределено.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьПриватноеПоле(ИмяПоля, ЗначениеПоля = Неопределено) \n```\n\n#### ДобавитьПубличноеПоле\n\n```bsl\n// Добавляет в декоратор новое публичное (экспортное) поле.\n//\n// Параметры:\n//   ИмяПоля - Строка - Имя добавляемого поля\n//   ЗначениеПоля - Произвольный - Значение, которым необходимо проинициализировать добавляемое поле.\n//                                 Если не задано, поле не инициализируется и содержит Неопределено.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьПубличноеПоле(ИмяПоля, ЗначениеПоля = Неопределено) \n```\n\n#### ДобавитьМетод\n\n```bsl\n// Добавляет в декоратор новый публичный (экспортный) метод.\n//\n// Параметры:\n//   ИмяМетода - Строка - Имя добавляемого метода.\n//   ТекстМетода - Строка - Текст добавляемого метода. Допустимо использование многострочной строки.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьМетод(ИмяМетода, ТекстМетода) \n```\n\n#### ДобавитьПередВызовомМетода\n\n```bsl\n// Добавляет в декоратор перехватчик, срабатывающий перед вызовом указанного метода.\n//\n// Параметры:\n//   ИмяМетода - Строка - Имя перехватываемого метода.\n//   ТекстПерехватчика - Текст - Текст добавляемого перехватчика. Допустимо использование многострочной строки.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьПередВызовомМетода(ИмяМетода, ТекстПерехватчика) \n```\n\n#### ДобавитьПослеВызоваМетода\n\n```bsl\n// Добавляет в декоратор перехватчик, срабатывающий после вызова указанного метода.\n//\n// Параметры:\n//   ИмяМетода - Строка - Имя перехватываемого метода.\n//   ТекстПерехватчика - Текст - Текст добавляемого перехватчика. Допустимо использование многострочной строки.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьПослеВызоваМетода(ИмяМетода, ТекстПерехватчика) \n```\n\n#### ДобавитьИмпортПоИмени\n\n```bsl\n// Добавляет в декоратор импорт библиотеки (#Использовать) по имени библиотеки.\n//\n// Параметры:\n//   ИмяБиблиотеки - Строка - Имя библиотеки.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьИмпортПоИмени(ИмяБиблиотеки) \n```\n\n#### ДобавитьИмпортПоПути\n\n```bsl\n// Добавляет в декоратор импорт библиотеки (#Использовать) по пути к библиотеке.\n//\n// Параметры:\n//   ПутьКБиблиотеке - Строка - Путь к библиотеке. Можно использовать как абсолютный, так и относительный путь.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьИмпортПоПути(ПутьКБиблиотеке) \n```\n\n#### ДобавитьШагИнициализации\n\n```bsl\n// Добавляет в декоратор шаг инициализации в тело модуля.\n//\n// Параметры:\n//   ТекстШага - Строка - Выполняемый код.\n//\n//  Возвращаемое значение:\n//   КонструкторДекоратора - Ссылка на текущий инстанс КонструкторДекоратора\n//\nФункция ДобавитьШагИнициализации(ТекстШага) \n```\n\n#### ТекстСценария\n\n```bsl\n// Получить сконструированный текст сценария будущего декоратора\n//\n//  Возвращаемое значение:\n//   Строка - Текст сценария декоратора\n//\nФункция ТекстСценария() \n```\n\n#### Построить\n\n```bsl\n// Сконструировать готовый декоратор по настройкам конструктора декоратора.\n//\n// Параметры:\n//   ТекстСценария - Строка - Текст сценария декоратора. Если не задан, формируется автоматически.\n//\n//  Возвращаемое значение:\n//   Произвольный - Декоратор над объектом, переданным в конструктор декоратора\n//\nФункция Построить(ТекстСценария = Неопределено) \n```\n\n### Модуль ОбработкаДекоратора\n\n#### ИсходныйТип\n\n```bsl\n// Получает тип объекта, вокруг которого построен декоратор (рекурсивно).\n//\n// Параметры:\n//   Декоратор - Произвольный - Объект, у которого нужно найти исходный тип объекта\n//\n//  Возвращаемое значение:\n//   Тип - Исходный тип объекта\n//\nФункция ИсходныйТип(Декоратор) \n```\n\n#### СинхронизироватьПоля\n\n```bsl\n// Синхронизировать значения экспортных полей двух объектов.\n//\n// Параметры:\n//   ИсходныйОбъект - Произвольный - Источник значений свойств\n//   Потребитель - Произвольный - Получатель значений свойств\n//\nПроцедура СинхронизироватьПоля(ИсходныйОбъект, Потребитель) \n```\n\n### Модуль Константы_Декоратор\n\n```bsl\n// Имя поля, в котором хранится ссылка на исходный объект.\nПерем Поле_ИнстансОбъекта Экспорт;\n```\n\n### Отладка добавляемых методов\n\nДля того, что бы работал отладчик и заходил в добавленные методы нужно: Либо установить любое значение переменной окружения с именем ```OSCRIPT_DECORATOR_DEBUG```. Либо вызвать у конструктора метод ```Отладка()```\n\n```bsl\nДекоратор = Новый КонструкторДекоратора(МойКласс)\n    .ДобавитьМетод(ИмяМетода, ТекстМетода)\n    .Отладка()\n    .Построить();\n\nРезультат = Декоратор.ДобавленнаяФункция();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Fdecorator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnixel2007%2Fdecorator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Fdecorator/lists"}