Skip to content

Commit

Permalink
feat: оптимизация обращений к серверу
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed Aug 26, 2024
1 parent 61a6067 commit a48d1a9
Show file tree
Hide file tree
Showing 11 changed files with 120 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
ВызватьИсключение "Передано невалидное имя метода в `ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере`";
КонецЕсли;

Возврат ЮТОбщийСлужебныйВызовСервера.ВызватьФункциюКонфигурацииНаСервере(ИмяМодуля, ИмяМетода, Параметры);
Возврат ЮТМетодыСлужебныйВызовСервера.ВызватьФункциюКонфигурацииНаСервере(ИмяМодуля, ИмяМетода, Параметры);

КонецФункции

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//

#Область СлужебныйПрограммныйИнтерфейс

Функция ВызватьФункциюКонфигурацииНаСервере(Знач ИмяМодуля, Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт

Возврат ЮТМетодыСлужебный.ВызватьФункциюКонфигурации(ИмяМодуля, ИмяМетода, Параметры, Ложь);

КонецФункции

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a889a5a0-109c-4703-b754-fcdea2de322a">
<name>ЮТМетодыСлужебныйВызовСервера</name>
<synonym>
<key>ru</key>
<value>Методы служебный вызов сервера</value>
</synonym>
<server>true</server>
<serverCall>true</serverCall>
</mdclass:CommonModule>
10 changes: 9 additions & 1 deletion exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,15 @@
Функция Менеджер(Знач Менеджер) Экспорт

#Если Сервер Тогда
Возврат ЮТОбщийСлужебныйВызовСервера.Менеджер(Менеджер);
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);

Если Описание = Неопределено Тогда
ВызватьИсключение "Несуществующий объект метаданных, либо " +
ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТОбщийВызовСервера.Менеджер", Менеджер);
КонецЕсли;

Тип = ЮТТипыДанныхСлужебный.НовыйТипМенеджера(Описание);
Возврат Новый(Тип);
#Иначе
ВызватьИсключение ЮТИсключения.МетодНеДоступен("ЮТОбщий.Менеджер", "клиенте");
#КонецЕсли
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,38 +18,12 @@

#Область СлужебныйПрограммныйИнтерфейс

Функция ОписаниеТиповЛюбаяСсылка() Экспорт

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(
"<TypeDescription xmlns=""http://v8.1c.ru/8.1/data/core"">
| <TypeSet xmlns:cc=""http://v8.1c.ru/8.1/data/enterprise/current-config"">cc:AnyRef</TypeSet>
|</TypeDescription>");

Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

КонецФункции

Функция УстановленБезопасныйРежим() Экспорт

Возврат БезопасныйРежим();

КонецФункции

Функция Менеджер(Знач Менеджер) Экспорт

Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);

Если Описание = Неопределено Тогда
ВызватьИсключение "Несуществующий объект метаданных, либо " +
ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТОбщийВызовСервера.Менеджер", Менеджер);
КонецЕсли;

Тип = ЮТТипыДанныхСлужебный.НовыйТипМенеджера(Описание);
Возврат Новый(Тип);

КонецФункции

Функция Макет(ИмяМакета) Экспорт

ЧастиИмени = СтрРазделить(ИмяМакета, ".");
Expand All @@ -67,7 +41,7 @@
Макет = ПолучитьОбщийМакет(ЧастиИмени[1]);
ИндексОбласти = КоличествоБлоковДляОбщегоМакета;
ИначеЕсли ЧастиИмени.Количество() >= КоличествоБлоковМакетаМенеджера Тогда
Менеджер = Менеджер(СтрШаблон("%1.%2", ЧастиИмени[0], ЧастиИмени[1]));
Менеджер = ЮТОбщий.Менеджер(СтрШаблон("%1.%2", ЧастиИмени[0], ЧастиИмени[1]));
Макет = Менеджер.ПолучитьМакет(ЧастиИмени[КоличествоБлоковМакетаМенеджера - 1]);
ИндексОбласти = КоличествоБлоковМакетаМенеджера;
Иначе
Expand Down Expand Up @@ -95,7 +69,9 @@
КонецФункции

Функция ИзХранилищаЗначений(Знач ХранилищеЗначений) Экспорт

Возврат ХранилищеЗначений.Получить();

КонецФункции

Функция ХешMD5(Строка) Экспорт
Expand All @@ -106,12 +82,6 @@

КонецФункции

Функция ВызватьФункциюКонфигурацииНаСервере(Знач ИмяМодуля, Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт

Возврат ЮТМетодыСлужебный.ВызватьФункциюКонфигурации(ИмяМодуля, ИмяМетода, Параметры, Ложь);

КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

Функция ОписаниеТиповЛюбаяСсылка() Экспорт

Возврат ЮТОбщийСлужебныйВызовСервера.ОписаниеТиповЛюбаяСсылка();
Возврат ЮТТипыДанныхСлужебный.ОписаниеТиповЛюбаяСсылка(Ложь);

КонецФункции

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,24 @@

КонецФункции

Функция ОписаниеТиповЛюбаяСсылка() Экспорт
Функция ОписаниеТиповЛюбаяСсылка(Кешировать = Истина) Экспорт

Возврат ЮТСлужебныйПовторногоИспользования.ОписаниеТиповЛюбаяСсылка();
Если Кешировать Тогда
Возврат ЮТСлужебныйПовторногоИспользования.ОписаниеТиповЛюбаяСсылка();
Иначе
#Если ВебКлиент Или ТонкийКлиент Тогда
Параметры = Новый Массив(1);
Параметры[0] = Ложь;
Возврат ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере("ЮТТипыДанныхСлужебный", "ОписаниеТиповЛюбаяСсылка", Параметры);
#Иначе
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(
"<TypeDescription xmlns=""http://v8.1c.ru/8.1/data/core"">
| <TypeSet xmlns:cc=""http://v8.1c.ru/8.1/data/enterprise/current-config"">cc:AnyRef</TypeSet>
|</TypeDescription>");
Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
#КонецЕсли
КонецЕсли;

КонецФункции

Expand Down
1 change: 1 addition & 0 deletions exts/yaxunit/src/Configuration/Configuration.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
<commonModules>CommonModule.ЮТМетаданныеСлужебныйПовтИсп</commonModules>
<commonModules>CommonModule.ЮТМетоды</commonModules>
<commonModules>CommonModule.ЮТМетодыСлужебный</commonModules>
<commonModules>CommonModule.ЮТМетодыСлужебныйВызовСервера</commonModules>
<commonModules>CommonModule.ЮТНастройкиВыполнения</commonModules>
<commonModules>CommonModule.ЮТОбщий</commonModules>
<commonModules>CommonModule.ЮТОбщийСлужебный</commonModules>
Expand Down
43 changes: 43 additions & 0 deletions tests/src/CommonModules/ОМ_ЮТОбщий/Module.bsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//

#Область СлужебныйПрограммныйИнтерфейс

Процедура ИсполняемыеСценарии() Экспорт

ЮТТесты
.ДобавитьТест("ОписаниеТиповЛюбаяСсылка")
;

КонецПроцедуры

Процедура ОписаниеТиповЛюбаяСсылка() Экспорт

ЛюбаяСсылка = ЮТОбщий.ОписаниеТиповЛюбаяСсылка();

ЮТест.ОжидаетЧто(ЛюбаяСсылка)
.ИмеетТип("ОписаниеТипов")
.Что(ЛюбаяСсылка.СодержитТип(Тип("СправочникСсылка.Банки")));

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2657c610-c9f8-4647-bd40-af832f49b676">
<name>ОМ_ЮТОбщий</name>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
1 change: 1 addition & 0 deletions tests/src/Configuration/Configuration.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<commonModules>CommonModule.ОМ_ЮТКоллекции</commonModules>
<commonModules>CommonModule.ОМ_ЮТКонструкторТестовыхДанных</commonModules>
<commonModules>CommonModule.ОМ_ЮТМетаданные</commonModules>
<commonModules>CommonModule.ОМ_ЮТОбщий</commonModules>
<commonModules>CommonModule.ОМ_ЮТОтчетAllureСлужебный</commonModules>
<commonModules>CommonModule.ОМ_ЮТОтчетСлужебный</commonModules>
<commonModules>CommonModule.ОМ_ЮТПодключаемыеМодулиСлужебныйВызовСервера</commonModules>
Expand Down

0 comments on commit a48d1a9

Please sign in to comment.