Skip to content

Commit

Permalink
added description for redirect subsystem
Browse files Browse the repository at this point in the history
  • Loading branch information
denisushakov committed Nov 28, 2024
1 parent 2dc5578 commit 8ca594d
Show file tree
Hide file tree
Showing 2 changed files with 221 additions and 45 deletions.
156 changes: 156 additions & 0 deletions config-convert-src.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
]
}
110 changes: 65 additions & 45 deletions docs/ПереопределениеМетодовБСП.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
# Подисистема аналог библиотеки стандартных подсистем, для переопределения методов БСП

# Подисистема, аналог библиотеки стандартных подсистем, для переопределения методов БСП

## Назначение

Данная подсистема предназначена для упрощения работы с методами библиотеки стандартных подсистем (БСП) при их отсутствии. Она позволяет переопределять методы БСП с использованием аналогичных модулей и обеспечивает поддержку переадресации вызовов для корректной работы системы.

## 1. Использование общих модулей для переадресации методов
Для переадресации методов используются общие модули-аналоги в названии которых содержится "Служебный", пример: "пбп_ОбщегоНазначенияСлужебный". В случае отсутствия библиотеки стандартных подсистем(БСП), используются аналоги модулей и методов БСП.
Для переадресации методов используются общие модули **``пбп_Переадресация``**, **``пбп_ПереадресацияКлиент``**, **``пбп_ПереадресацияКлиентПовтИсп``**, и т.д. В случае отсутствия библиотеки стандартных подсистем(БСП) используются аналоги методов БСП.

Пример вызова серверной процедуры:

```BSL
&НаСервере
Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог)
пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить(
пбп_Переадресация.ХранилищеОбщихНастроекСохранить(
КлючОбъекта(),
"пбп_ПользовательскиеФункции_КаталогИсходногоКода",
Каталог);
Expand All @@ -23,49 +27,65 @@
ИмяСобытия = НСтр("ru = 'Очистка истории интеграции'");
ТекстОшибки = СтрШаблон("Не удалось удалить запись истории интеграции %1", ВыборкаДетальныеЗаписи.Ссылка);
пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
КонецПопытки;
КонецПроцедуры
```

## 2. Добавление новых методов-аналогов БСП
### 2.1 Поиск или создание внутренних модулей, аналогичных модулям БСП
Найти внутренний модуль, с аналогичным названием и свойствами в БСП, если модуль отсутствует необходимо добавить новый, в имени должно содержатся "Служебный" (согласно общей концепции переопределения методов БСП).

Пример: "пбп_ОбщегоНазначенияСлужебный", "пбп_ЖурналРегистрацииСлужебный".

Методы располагаются в области "ПереадресацияМетодов", в описание метода указать см. пбп_ИмяМодуля.ИмяМетода.

```BSL
#Область ПереадресацияМетодов
// См. пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации.
Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт
Модуль = ПолучитьМодуль();
Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры);
КонецПроцедуры
#КонецОбласти
```

Если модуль-аналог новый добавить функцию в области "СлужебныеПроцедурыИФункции", где пбп_ИмяМодуля для серверных модулей "пбп_ОбщегоНазначенияПовтИсп.", для клиентских "пбп_ОбщегоНазначенияКлиент"

```BSL
Функция ПолучитьМодуль()
Возврат пбп_ИмяМодуля.ОбщийМодуль(ИмяМодуляБСП, ИмяМодуляАналогаБСП);
КонецФункции
```
### 2.2 Создание методов в модуле-аналоге
Пример: "пбп_ОбщегоНазначения". Методы располагаются в области "МетодыАналогиБСП", описание метода начинать с "Аналог метода БСП."

```BSL
#Область МетодыАналогиБСП
// Аналог метода БСП. Описание
//
Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт
// ...
КонецПроцедуры
## 2. Структура общих модулей переадресации

1. Область **``ПереадресацияМетодов``**: в ней располагаются методы аналоги.
2. Внутри этой области расположены именованные области по имени общих модулей, из которых взят аналог метода.
3. В области **``СлужебныеПроцедурыИФункции``** -> **``МодульПереадресацииПоПодсистемам``**, необходимо добавить функцию переадресации общего модуля, если она отсутствует.

Пример функции:
```BSL
Функция ПереадресацияМодуля<ИмяОбщегоМодуляБСП>()
Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации(<ИмяОбщегоМодуляБСП>);
КонецФункции
```

4. В начале каждого метода необходимо добавить фрагмент кода для работы механизма переадресации.

### Для процедур
```BSL
Результат = ПереадресацияМодуля<ИмяОбщегоМодуляБСП>();
Если Результат.МодульСуществует Тогда
Результат.Модуль.<ИмяМетода>(Параметры);
Возврат;
КонецЕсли;
```

### Для функция
```BSL
Результат = ПереадресацияМодуля<ИмяОбщегоМодуляБСП>();
Если Результат.МодульСуществует Тогда
Возврат Результат.Модуль.<ИмяМетода>(Параметры);
КонецЕсли;
```

5. Методы располагаются в области **``ПереадресацияМетодов``**, и в описании метода указывается ``// Аналог метода БСП.``

Пример:

```BSL
#Область ПрограммныйИнтерфейс
#Область ПереадресацияМетодов
#Область ОбщегоНазначения
#КонецОбласти
```
// Аналог метода БСП.
// <Описание>
//
Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт
Результат = ПереадресацияМодуляОбщегоНазначения();
Если Результат.МодульСуществует Тогда
Результат.Модуль.ОбщегоНазначения(ИмяМетода, Параметры);
Возврат;
КонецЕсли;
<Продолжение>
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
```

0 comments on commit 8ca594d

Please sign in to comment.