Skip to content

Commit

Permalink
#315 Переработка работы с событиями.
Browse files Browse the repository at this point in the history
Добавлена возможность подписки на события из других расширений
  • Loading branch information
alkoleft committed Apr 5, 2024
1 parent 6cd2bdf commit 60df3c9
Show file tree
Hide file tree
Showing 33 changed files with 406 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -123,13 +123,6 @@

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

Функция ЗависимостьРазрешена(КлючЗависимости)

Результат = РезультатРазрешенияЗависимости(КлючЗависимости);
Возврат Результат <> Неопределено И Результат.Успешно;

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

#Область Контексты

Процедура ИнициализацияКонтекста(ДанныеКонтекста) Экспорт
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

// Модули подсистемы.
// Возвращает список модулей подсистемы
// Подсистема должна находится в подсистеме "ЮТДинамическиПодключаемые"
// Подсистема должна находится в подсистеме "ЮТПодключаемыеМодули"
// Параметры:
// ИмяПодсистемы - Строка - Имя подсистемы
// Серверные - Булево - Возвращять модули доступные на сервере
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

// Модули подсистемы.
// Возвращает список модулей подсистемы
// Подсистема должна находится в подсистеме "ЮТДинамическиПодключаемые"
// Подсистема должна находится в подсистеме "ЮТПодключаемыеМодули"
// Параметры:
// ИмяПодсистемы - Строка - Имя подсистемы
// Серверные - Булево - Возвращять модули доступные на сервере
Expand All @@ -56,12 +56,10 @@
// Массив из Строка - Имена модулей входящих в подсистему
Функция МодулиПодсистемы(Знач ИмяПодсистемы, Знач Серверные, Знач Клиентские) Экспорт

Подсистема = Метаданные.Подсистемы.ЮТДинамическиПодключаемые.Подсистемы.Найти(ИмяПодсистемы);
Подсистема = Метаданные.Подсистемы.ЮТПодключаемыеМодули.Подсистемы.Найти(ИмяПодсистемы);

Если Подсистема = Неопределено Тогда

ВызватьИсключение СтрШаблон("Подсистема ""%1"" не найдена", ИмяПодсистемы);

КонецЕсли;

Модули = Новый Массив();
Expand Down Expand Up @@ -376,4 +374,24 @@

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

Функция ПодсистемыПодключаемыхМодулей() Экспорт

ИмяПодсистемы = "ПодключаемыеМодули";
Результат = Новый Массив();
Результат.Добавить("ЮТПодключаемыеМодули");
Для Каждого Подсистема Из Метаданные.Подсистемы Цикл

Если Подсистема.ВключатьВКомандныйИнтерфейс Тогда
Продолжить;
КонецЕсли;

Если СтрЗаканчиваетсяНа(Подсистема.Имя, "_" + ИмяПодсистемы) Тогда
Результат.Добавить(Подсистема.Имя);
КонецЕсли;
КонецЦикла;

Возврат Результат;

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,10 @@

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

Функция ПодсистемыПодключаемыхМодулей() Экспорт

Возврат ЮТМетаданныеСлужебныйВызовСервера.ПодсистемыПодключаемыхМодулей();

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

Функция ГенераторыОтчетов() Экспорт

Возврат МодулиПодсистемы("ЮТФормированиеОтчета");
Возврат МодулиПодсистемы("ФормированиеОтчета", Ложь, Истина);

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

Функция ОбработчикиСобытий() Экспорт
Функция ОбработчикиСобытий(Подсистема) Экспорт

Серверные = Ложь;
Клиентские = Ложь;
Expand All @@ -36,17 +36,23 @@
Клиентские = Истина;
#КонецЕсли

Возврат ЮТМетаданные.МодулиПодсистемы("ЮТОбработчикиСобытий", Серверные, Клиентские);
Возврат ЮТРасширенияСлужебныйВызовСервера.ОбработчикиСобытий(Подсистема, Серверные, Клиентские);

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

Функция ПодсистемыПодключаемыхМодулей() Экспорт

Возврат ЮТМетаданныеСлужебныйПовтИсп.ПодсистемыПодключаемыхМодулей();

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

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

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

Функция МодулиПодсистемы(ИмяПодсистемы)
Функция МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские)

ИменаМодулей = ЮТМетаданные.МодулиПодсистемы(ИмяПодсистемы);
ИменаМодулей = ЮТРасширенияСлужебныйВызовСервера.ПодключаемыеМодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские);

Модули = Новый Массив();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// 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,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d6ce6d0e-c302-447d-81e7-706f9a31464b">
<name>ЮТРасширенияСлужебныйВызовСервера</name>
<synonym>
<key>ru</key>
<value>Расширения служебный вызов сервера</value>
</synonym>
<server>true</server>
<serverCall>true</serverCall>
<returnValuesReuse>DuringSession</returnValuesReuse>
</mdclass:CommonModule>
Loading

0 comments on commit 60df3c9

Please # to comment.