1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-09-16 09:16:24 +02:00

Переработка дженвы

This commit is contained in:
Anton
2024-04-09 20:27:46 +03:00
parent 96ba7ed643
commit 16f4d1ff1f
3 changed files with 68 additions and 33 deletions

View File

@@ -1,18 +1,21 @@
#Использовать osparser
Перем КаталогБиблиотеки;
Перем ФайлСоставаОПИ;
Перем МодульСоставаОПИ;
Перем СоответствиеМодулейКоманд;
Перем ТекущийМодуль;
Перем ТаблицаОписанийПараметров;
Перем МассивРасположенийМодулей;
Процедура ПриСозданииОбъекта()
МодульСоставаОПИ = Новый ТекстовыйДокумент();
КаталогБиблиотеки = "./OInt/core/Modules";
ФайлСоставаОПИ = "./cli/data/Modules/СоставБиблиотеки.os";
МассивРасположенийМодулей = Новый Массив;
МассивРасположенийМодулей.Добавить("./cli/tools/Modules/");
МассивРасположенийМодулей.Добавить("./OInt/core/Modules");
СоответствиеМодулейКоманд = Новый Соответствие();
СоответствиеМодулейКоманд.Вставить("OPI_Telegram" , "telegram");
СоответствиеМодулейКоманд.Вставить("OPI_VK" , "vk");
@@ -24,6 +27,7 @@
СоответствиеМодулейКоманд.Вставить("OPI_GoogleWorkspace", "google");
СоответствиеМодулейКоманд.Вставить("OPI_GoogleCalendar" , "gcalendar");
СоответствиеМодулейКоманд.Вставить("OPI_GoogleDrive" , "gdrive");
СоответствиеМодулейКоманд.Вставить("Дженва" , "jenva");
МодульСоставаОПИ.ДобавитьСтроку("Функция ПолучитьСоответствиеКомандМодулей() Экспорт");
МодульСоставаОПИ.ДобавитьСтроку("СоответствиеКомандМодулей = Новый Соответствие();");
@@ -69,9 +73,18 @@
Процедура ЗаполнитьТаблицуСостава()
ФайлыМодулей = НайтиФайлы(КаталогБиблиотеки, "*.os");
ОбщийМассивМодулей = Новый Массив;
Для Каждого Модуль Из ФайлыМодулей Цикл
Для Каждого Расположение Из МассивРасположенийМодулей Цикл
ФайлыМодулей = НайтиФайлы(Расположение, "*.os");
Для Каждого Модуль Из ФайлыМодулей Цикл
ОбщийМассивМодулей.Добавить(Модуль);
КонецЦикла;
КонецЦикла;
Для Каждого Модуль Из ОбщийМассивМодулей Цикл
ТекущийМодуль = Модуль.ИмяБезРасширения;

View File

@@ -7,7 +7,6 @@
Перем Парсер;
Перем Отладка;
Перем Тестирование;
Перем РежимВывода;
#Область СлужебныеПроцедурыИФункции
@@ -79,8 +78,6 @@
УстановитьРежимОтладки(Параметры);
УстановитьРежимТеста(Параметры);
УстановитьРежимВывода(Параметры);
Если Отладка Или Тестирование Тогда
@@ -239,15 +236,6 @@
КонецПроцедуры
Процедура УстановитьРежимВывода(Знач Параметры)
Если нРег(Строка(Параметры["--out"])) = "jenva" Тогда
РежимВывода = "Jenva";
Иначе
РежимВывода = "Normal";
КонецЕсли;
КонецПроцедуры
Процедура СообщитьРезультат(Знач Текст, Знач Статус = "")
@@ -255,13 +243,10 @@
Статус = СтатусСообщения.БезСтатуса;
КонецЕсли;
Если РежимВывода = "Jenva" Тогда
Дженва.ЗаполнитьПараметрыОкружения(Текст);
Иначе
Сообщить(Текст, Статус);
КонецЕсли;
Сообщить(Текст, Статус);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -1,10 +1,21 @@
Перем МаксимальнаяВложенность;
Перем ИскомыйПараметр;
#Область СлужебныйПрограммныйИнтерфейс
Процедура ЗаполнитьПараметрыОкружения(Знач JSON, Знач МаксимальныйУровеньВложенности = 0, Знач Префикс = "jenva") Экспорт
// Разложить JSON на параметры
// Показывает значения, которые можно получить из переданного JSON и возвращает
// конкретное значение при указании имени поля
//
// Параметры:
// JSON - Строка - JSON данные - json
// МаксимальныйУровеньВложенности - Строка - Ограничение на уровень вложенности поля. Разбирает на всю глубину по умолчанию - nesting
// ИмяПараметра - Строка - Имя поля, значение которого необходимо получить. Выводит весь список доступных, если не указано - name
//
Процедура РазложитьJSONНаПараметры(Знач JSON, Знач МаксимальныйУровеньВложенности = 0, Знач ИмяПараметра = "") Экспорт
МаксимальнаяВложенность = МаксимальныйУровеньВложенности;
Префикс = Префикс + "_";
ИскомыйПараметр = ИмяПараметра;
Если ТипЗнч(JSON) = Тип("Строка") Тогда
НормализоватьТекстовыйВвод(JSON);
@@ -16,36 +27,60 @@
ВызватьИсключение "Ошибка преобразовани данных параметра JSON";
КонецЕсли;
ПрисвоитьЗначенияРекурсивно(JSON, Префикс);
Значение = ПолучитьЗначенияРекурсивно(JSON);
Если ЗначениеЗаполнено(Значение) Тогда
Сообщить(Значение, СтатусСообщения.Информация);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Процедура ПрисвоитьЗначенияРекурсивно(Знач JSON, Знач Префикс, Знач ТекущаяВложенность = 1)
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьЗначенияРекурсивно(Знач JSON, Знач Префикс = "", Знач ТекущаяВложенность = 1)
ВозвращаемоеЗначение = "";
Для Каждого Пара Из JSON Цикл
Значение = Пара.Значение;
Ключ = Строка(Пара.Ключ);
Ключ = Префикс + Строка(Пара.Ключ);
ЭтоКоллекция = ТипЗнч(Значение) = Тип("Соответствие") Или ТипЗнч(Значение) = Тип("Структура");
СледующаяВложенность = ТекущаяВложенность + 1;
СледующаяВложенностьДоступна = МаксимальнаяВложенность = 0 Или СледующаяВложенность <= МаксимальнаяВложенность;
Если Не ЭтоКоллекция Или Не СледующаяВложенностьДоступна Тогда
ПеременнаяСреды = Префикс + Ключ;
ПеременнаяСреды = Ключ;
ПолучитьСтроку(Значение);
УстановитьПеременнуюСреды(ПеременнаяСреды, Значение, РасположениеПеременнойСреды.Пользователь);
Сообщить("$" + ПеременнаяСреды + " = " + Значение, СтатусСообщения.Информация);
Если Не ЗначениеЗаполнено(ИскомыйПараметр) Тогда
Сообщить(ПеременнаяСреды + " = " + Значение, СтатусСообщения.Информация);
Иначе
Если ПеременнаяСреды = ИскомыйПараметр Тогда
ВозвращаемоеЗначение = Значение;
Прервать;
КонецЕсли;
КонецЕсли;
Иначе
НовыйПрефикс = Префикс + Ключ + "_";
ПрисвоитьЗначенияРекурсивно(Значение, НовыйПрефикс, СледующаяВложенность);
НовыйПрефикс = Ключ + "_";
ВозвращаемоеЗначение = ПолучитьЗначенияРекурсивно(Значение, НовыйПрефикс, СледующаяВложенность);
Если ЗначениеЗаполнено(ВозвращаемоеЗначение) Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Возврат ВозвращаемоеЗначение;
КонецФункции
Процедура ПолучитьСтроку(Значение)
@@ -140,4 +175,6 @@
Или ТипЗнч(Значение) = Тип("Структура")
Или ТипЗнч(Значение) = Тип("Соответствие");
КонецФункции
КонецФункции
#КонецОбласти