diff --git a/config-convert-src.json b/config-convert-src.json new file mode 100644 index 00000000..99a9048f --- /dev/null +++ b/config-convert-src.json @@ -0,0 +1,156 @@ +{ + "platform_version": "8.3.23", + "extension": "ПроектнаяБиблиотекаПодсистем", + "prefix": "пбп_", + "input_path": "./src/cf", + "output_path": "./build", + "conversion_type": "srcConvert", + "xml_files": [ + { + "file_name": "Configuration.xml", + "element_operations": [ + { + "element_name": "ObjectBelonging", + "value": "Adopted", + "operation": "add" + }, + { + "element_name": "NamePrefix", + "value": "пбп_", + "operation": "add" + }, + { + "element_name": "DefaultRoles", + "operation": "delete" + }, + { + "element_name": "DefaultRunMode", + "operation": "delete" + }, + { + "element_name": "UsePurposes", + "operation": "delete" + }, + { + "element_name": "DefaultReportForm", + "operation": "delete" + }, + { + "element_name": "DefaultReportVariantForm", + "operation": "delete" + }, + { + "element_name": "DefaultReportSettingsForm", + "operation": "delete" + }, + { + "element_name": "DefaultReportAppearanceTemplate", + "operation": "delete" + }, + { + "element_name": "DefaultDynamicListSettingsForm", + "operation": "delete" + }, + { + "element_name": "DefaultSearchForm", + "operation": "delete" + }, + { + "element_name": "DefaultDataHistoryChangeHistoryForm", + "operation": "delete" + }, + { + "element_name": "DefaultDataHistoryVersionDataForm", + "operation": "delete" + }, + { + "element_name": "DefaultDataHistoryVersionDifferencesForm", + "operation": "delete" + }, + { + "element_name": "DefaultCollaborationSystemUsersChoiceForm", + "operation": "delete" + }, + { + "element_name": "DefaultStyle", + "operation": "delete" + }, + { + "element_name": "ModalityUseMode", + "operation": "delete" + }, + { + "element_name": "SynchronousPlatformExtensionAndAddInCallUseMode", + "operation": "delete" + }, + { + "element_name": "InterfaceCompatibilityMode", + "operation": "delete" + }, + { + "element_name": "DatabaseTablespacesUseMode", + "operation": "delete" + }, + { + "element_name": "CompatibilityMode", + "operation": "delete" + }, + { + "element_name": "ConfigurationExtensionCompatibilityMode", + "value": "Version8_3_21", + "operation": "modify" + } + ] + }, + { + "file_name": "Русский.xml", + "element_operations": [ + { + "element_name": "ObjectBelonging", + "value": "Adopted", + "operation": "add" + } + ] + }, + { + "file_name": "English.xml", + "element_operations": [ + { + "element_name": "ObjectBelonging", + "value": "Adopted", + "operation": "add" + } + ] + }, + { + "file_name": "АдминистраторСистемы.xml", + "element_operations": [ + { + "element_name": "ObjectBelonging", + "value": "Adopted", + "operation": "add" + } + ] + }, + { + "file_name": "ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок.xml", + "element_operations": [ + { + "element_name": "ObjectBelonging", + "value": "Adopted", + "operation": "add" + } + ] + }, + { + "file_name": "ПолныеПрава.xml", + "element_operations": [ + { + "element_name": "ObjectBelonging", + "value": "Adopted", + "operation": "add" + } + ] + } + ] +} \ No newline at end of file diff --git "a/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" "b/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" index 428bacb5..8d53d7fa 100644 --- "a/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" +++ "b/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" @@ -1,14 +1,18 @@ -# Подисистема аналог библиотеки стандартных подсистем, для переопределения методов БСП - +# Подисистема, аналог библиотеки стандартных подсистем, для переопределения методов БСП + +## Назначение + +Данная подсистема предназначена для упрощения работы с методами библиотеки стандартных подсистем (БСП) при их отсутствии. Она позволяет переопределять методы БСП с использованием аналогичных модулей и обеспечивает поддержку переадресации вызовов для корректной работы системы. + ## 1. Использование общих модулей для переадресации методов - Для переадресации методов используются общие модули-аналоги в названии которых содержится "Служебный", пример: "пбп_ОбщегоНазначенияСлужебный". В случае отсутствия библиотеки стандартных подсистем(БСП), используются аналоги модулей и методов БСП. + Для переадресации методов используются общие модули **``пбп_Переадресация``**, **``пбп_ПереадресацияКлиент``**, **``пбп_ПереадресацияКлиентПовтИсп``**, и т.д. В случае отсутствия библиотеки стандартных подсистем(БСП) используются аналоги методов БСП. Пример вызова серверной процедуры: ```BSL &НаСервере Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог) - пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить( + пбп_Переадресация.ХранилищеОбщихНастроекСохранить( КлючОбъекта(), "пбп_ПользовательскиеФункции_КаталогИсходногоКода", Каталог); @@ -23,49 +27,65 @@ ИмяСобытия = НСтр("ru = 'Очистка истории интеграции'"); ТекстОшибки = СтрШаблон("Не удалось удалить запись истории интеграции %1", ВыборкаДетальныеЗаписи.Ссылка); - пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); + пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); КонецПопытки; КонецПроцедуры ``` - ## 2. Добавление новых методов-аналогов БСП - ### 2.1 Поиск или создание внутренних модулей, аналогичных модулям БСП - Найти внутренний модуль, с аналогичным названием и свойствами в БСП, если модуль отсутствует необходимо добавить новый, в имени должно содержатся "Служебный" (согласно общей концепции переопределения методов БСП). - - Пример: "пбп_ОбщегоНазначенияСлужебный", "пбп_ЖурналРегистрацииСлужебный". - - Методы располагаются в области "ПереадресацияМетодов", в описание метода указать см. пбп_ИмяМодуля.ИмяМетода. - - ```BSL - #Область ПереадресацияМетодов - - // См. пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации. - Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - Модуль = ПолучитьМодуль(); - Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры); - КонецПроцедуры - - #КонецОбласти - ``` - - Если модуль-аналог новый добавить функцию в области "СлужебныеПроцедурыИФункции", где пбп_ИмяМодуля для серверных модулей "пбп_ОбщегоНазначенияПовтИсп.", для клиентских "пбп_ОбщегоНазначенияКлиент" - - ```BSL - Функция ПолучитьМодуль() - Возврат пбп_ИмяМодуля.ОбщийМодуль(ИмяМодуляБСП, ИмяМодуляАналогаБСП); - КонецФункции - ``` - ### 2.2 Создание методов в модуле-аналоге - Пример: "пбп_ОбщегоНазначения". Методы располагаются в области "МетодыАналогиБСП", описание метода начинать с "Аналог метода БСП." - - ```BSL - #Область МетодыАналогиБСП - - // Аналог метода БСП. Описание - // - Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - // ... - КонецПроцедуры +## 2. Структура общих модулей переадресации + +1. Область **``ПереадресацияМетодов``**: в ней располагаются методы аналоги. +2. Внутри этой области расположены именованные области по имени общих модулей, из которых взят аналог метода. +3. В области **``СлужебныеПроцедурыИФункции``** -> **``МодульПереадресацииПоПодсистемам``**, необходимо добавить функцию переадресации общего модуля, если она отсутствует. + +Пример функции: +```BSL + Функция ПереадресацияМодуля<ИмяОбщегоМодуляБСП>() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации(<ИмяОбщегоМодуляБСП>); + КонецФункции +``` + +4. В начале каждого метода необходимо добавить фрагмент кода для работы механизма переадресации. + +### Для процедур +```BSL + Результат = ПереадресацияМодуля<ИмяОбщегоМодуляБСП>(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.<ИмяМетода>(Параметры); + Возврат; + КонецЕсли; +``` + +### Для функция +```BSL + Результат = ПереадресацияМодуля<ИмяОбщегоМодуляБСП>(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.<ИмяМетода>(Параметры); + КонецЕсли; +``` + +5. Методы располагаются в области **``ПереадресацияМетодов``**, и в описании метода указывается ``// Аналог метода БСП.`` + +Пример: + +```BSL +#Область ПрограммныйИнтерфейс +#Область ПереадресацияМетодов +#Область ОбщегоНазначения - #КонецОбласти - ``` +// Аналог метода БСП. +// <Описание> +// +Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ОбщегоНазначения(ИмяМетода, Параметры); + Возврат; + КонецЕсли; + + <Продолжение> +КонецПроцедуры +#КонецОбласти +#КонецОбласти +#КонецОбласти +```