1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-10-08 22:51:57 +02:00
Files
OpenIntegrations/src/ru/cli/data/Classes/LibraryComposition.os

248 lines
14 KiB
Plaintext
Raw Normal View History

2025-06-25 13:17:23 +03:00
#Использовать "./internal"
2025-05-04 21:43:56 +03:00
Перем СоответствиеКомандМодулей;
Перем Версия;
2025-07-02 12:51:20 +03:00
Перем КэшированиеИндексов;
2025-06-25 15:54:24 +03:00
Перем ШаблонДоступа;
2025-07-02 12:51:20 +03:00
Перем КаталогПакетов;
2025-06-25 13:17:23 +03:00
2025-05-04 21:43:56 +03:00
Процедура ПриСозданииОбъекта()
Версия = "1.28.0";
ИнициализироватьОсновныеСписки();
2025-06-25 15:54:24 +03:00
ТекущийКаталог = ТекущийСценарий().Каталог;
ШаблонДоступа = ОбъединитьПути(ТекущийКаталог, "internal", "Classes", "%1.os");
КаталогПакетов = СтрЗаменить(ПолучитьЗначениеСистемнойНастройки("lib.system"), "\", "/");
КонецПроцедуры
Процедура ИнициализироватьОсновныеСписки() Экспорт
2025-07-02 12:51:20 +03:00
КэшированиеИндексов = Новый Соответствие();
2025-05-04 21:43:56 +03:00
СоответствиеКомандМодулей = Новый Соответствие();
СоответствиеКомандМодулей.Вставить("tools", "Utils");
2025-05-04 21:43:56 +03:00
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
СоответствиеКомандМодулей.Вставить("cdek", "OPI_CDEK");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
2025-07-16 19:45:17 +03:00
СоответствиеКомандМодулей.Вставить("ftp", "OPI_FTP");
2025-05-04 21:43:56 +03:00
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("greenapi", "OPI_GreenAPI");
2025-06-19 21:20:07 +03:00
СоответствиеКомандМодулей.Вставить("mssql", "OPI_MSSQL");
2025-05-04 21:43:56 +03:00
СоответствиеКомандМодулей.Вставить("mysql", "OPI_MySQL");
СоответствиеКомандМодулей.Вставить("neocities", "OPI_Neocities");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("ollama", "OPI_Ollama");
2025-06-06 22:27:44 +03:00
СоответствиеКомандМодулей.Вставить("openai", "OPI_OpenAI");
2025-05-04 21:43:56 +03:00
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");
СоответствиеКомандМодулей.Вставить("postgres", "OPI_PostgreSQL");
СоответствиеКомандМодулей.Вставить("rcon", "OPI_RCON");
2025-09-01 20:11:52 +03:00
СоответствиеКомандМодулей.Вставить("rportal", "OPI_ReportPortal");
2025-05-04 21:43:56 +03:00
СоответствиеКомандМодулей.Вставить("s3", "OPI_S3");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("sqlite", "OPI_SQLite");
СоответствиеКомандМодулей.Вставить("tcp", "OPI_TCP");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("vkteams", "OPI_VKTeams");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
СоответствиеКомандМодулей.Вставить("yamarket", "OPI_YandexMarket");
СоответствиеКомандМодулей.Вставить("metrika", "OPI_YandexMetrika");
КонецПроцедуры
2025-05-04 23:02:19 +03:00
2025-02-06 20:58:53 +03:00
Функция ПолучитьВерсию() Экспорт
2025-05-04 21:43:56 +03:00
Возврат Версия;
2025-02-06 20:58:53 +03:00
КонецФункции
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
2025-05-04 21:43:56 +03:00
Возврат СоответствиеКомандМодулей;
2025-02-06 20:58:53 +03:00
КонецФункции
2025-07-02 12:51:20 +03:00
Функция ПолучитьИнформациюИндекса(Знач Команда) Экспорт
2025-05-04 21:43:56 +03:00
2025-07-02 12:51:20 +03:00
ИнформацияИндекса = КэшированиеИндексов.Получить(Команда);
2025-05-04 21:43:56 +03:00
2025-07-02 12:51:20 +03:00
Если ИнформацияИндекса = Неопределено Тогда
2025-06-25 15:54:24 +03:00
Попытка
ОбъектСостава = ЗагрузитьСценарий(СтрШаблон(ШаблонДоступа, Команда));
2025-07-02 12:51:20 +03:00
Состав = ОбъектСостава.ПолучитьСостав();
СтрокаПодключения = ОбъектСостава.ПолучитьСтрокуПодключения();
ИнформацияИндекса = Новый Структура;
ИнформацияИндекса.Вставить("Состав" , Состав);
ИнформацияИндекса.Вставить("СтрокаПодключения", СтрокаПодключения);
КэшированиеИндексов.Вставить(Команда, ИнформацияИндекса);
2025-06-25 15:54:24 +03:00
Исключение
ВызватьИсключение СтрШаблон("Некорректное имя команды: %1", Команда)
КонецПопытки;
2025-05-04 21:43:56 +03:00
КонецЕсли;
2025-07-02 12:51:20 +03:00
Возврат ИнформацияИндекса;
2025-05-04 21:43:56 +03:00
2025-02-06 20:58:53 +03:00
КонецФункции
Функция ПолучитьПолныйСостав() Экспорт
ОбщаяТаблица = Неопределено;
2025-05-04 21:43:56 +03:00
Для Каждого Команда Из СоответствиеКомандМодулей Цикл
2025-02-06 20:58:53 +03:00
2025-07-02 12:51:20 +03:00
ОбъектИндекса = ПолучитьИнформациюИндекса(Команда.Ключ);
ТекущаяТаблица = ОбъектИндекса["Состав"];
2025-02-06 20:58:53 +03:00
Если ОбщаяТаблица = Неопределено Тогда
ОбщаяТаблица = ТекущаяТаблица;
Иначе
Для Каждого СтрокаТаблицы Из ТекущаяТаблица Цикл
ЗаполнитьЗначенияСвойств(ОбщаяТаблица.Добавить(), СтрокаТаблицы);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат ОбщаяТаблица;
КонецФункции
2025-05-04 21:43:56 +03:00
2025-07-14 15:21:39 +03:00
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач Команда, Знач Метод, Знач Динамически = Истина) Экспорт
2025-05-04 21:43:56 +03:00
2025-07-03 13:42:52 +03:00
Модуль = ПолучитьСоответствиеКомандМодулей().Получить(Команда);
ОбъектИндекса = ПолучитьИнформациюИндекса(Команда);
2025-05-04 21:43:56 +03:00
Если Не ЗначениеЗаполнено(Модуль) Тогда
Возврат Новый Структура("Ошибка,Результат", Истина, "Команда");
КонецЕсли;
2025-07-02 12:51:20 +03:00
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
ПараметрыМетода = ОбъектИндекса["Состав"].НайтиСтроки(ОтборКоманды);
2025-07-14 15:21:39 +03:00
Если Динамически Тогда
ТекстВыполнения = СтрШаблон(ОбъектИндекса["СтрокаПодключения"], КаталогПакетов);
Иначе
ТекстВыполнения = "";
КонецЕсли;
2025-05-04 21:43:56 +03:00
Если Не ЗначениеЗаполнено(ПараметрыМетода) Тогда
Возврат Новый Структура("Ошибка,Результат", Истина, "Метод");
КонецЕсли;
СтрокаВызова = Модуль + "." + Метод + "(";
Счетчик = 0;
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
ИмяПараметра = НеобходимыйПараметр.Параметр;
ЗначениеПараметра = ПереданныеПараметры.Получить(ИмяПараметра);
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
ИмяПараметра = "Параметр" + СтрЗаменить(ИмяПараметра, "--", "_");
ТекстВыполнения = ТекстВыполнения
+ Символы.ПС
+ ИмяПараметра
+ " = """
+ СтрЗаменить(ЗначениеПараметра, """", """""")
+ """;";
Если ТребуетсяОбработкаУправляющихПоследовательностей(ИмяПараметра, ЗначениеПараметра) Тогда
ТекстВыполнения = ТекстВыполнения
+ Символы.ПС
2025-07-12 20:01:49 +03:00
+ "OPI_Инструменты.ЗаменитьУправляющиеПоследовательности(" + ИмяПараметра + ");";
КонецЕсли;
2025-05-04 21:43:56 +03:00
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
Счетчик = Счетчик + 1;
Иначе
СтрокаВызова = СтрокаВызова + " , ";
КонецЕсли;
КонецЦикла;
ЛишниеСимволы = 2;
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
СтрокаВызова = СтрокаВызова + ");";
СтрокаВызова = "Ответ = " + СтрокаВызова;
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
2025-05-04 23:43:36 +03:00
СтруктураВозврата = Новый Структура("Ошибка,Результат", Ложь, ТекстВыполнения);
Возврат СтруктураВозврата;
2025-05-04 21:43:56 +03:00
КонецФункции
2025-07-02 12:51:20 +03:00
Процедура ДополнитьКэшСостава(Знач Библиотека, Знач ТаблицаПараметров, Команда = "") Экспорт
Команда = ?(ЗначениеЗаполнено(Команда), Команда, Библиотека);
СтрокаПодключения = "";
ИнформацияИндекса = Новый Структура;
ИнформацияИндекса.Вставить("Состав" , ТаблицаПараметров);
ИнформацияИндекса.Вставить("СтрокаПодключения", СтрокаПодключения);
КэшированиеИндексов.Вставить(Команда, ИнформацияИндекса);
2025-05-26 09:51:50 +03:00
СоответствиеКомандМодулей.Вставить(Команда, Библиотека);
2025-07-02 12:51:20 +03:00
КонецПроцедуры
2025-05-26 09:51:50 +03:00
2025-05-04 21:43:56 +03:00
Функция ТребуетсяОбработкаУправляющихПоследовательностей(Знач ИмяПараметра, Знач ЗначениеПараметра)
ФайлПараметра = Новый Файл(ЗначениеПараметра);
ЗначениеПараметраСокр = СокрЛП(ЗначениеПараметра);
Возврат Не СтрНачинаетсяС(ЗначениеПараметраСокр, "{")
И Не СтрНачинаетсяС(ЗначениеПараметраСокр, "[")
И Не ФайлПараметра.Существует()
И Не ИмяПараметра = "Параметр_out";
КонецФункции
2025-05-26 13:46:52 +03:00
#Region Alternate
2025-06-14 19:57:25 +03:00
Procedure InitializeCommonLists() Export
ИнициализироватьОсновныеСписки();
EndProcedure
2025-05-26 13:46:52 +03:00
Function GetVersion() Export
Return ПолучитьВерсию();
EndFunction
Function GetCommandModuleMapping() Export
Return ПолучитьСоответствиеКомандМодулей();
EndFunction
2025-07-03 13:42:52 +03:00
Function GetIndexData(Val Command) Export
2025-07-02 12:51:20 +03:00
Return ПолучитьИнформациюИндекса(Command);
2025-05-26 13:46:52 +03:00
EndFunction
Function GetFullComposition() Export
Return ПолучитьПолныйСостав();
EndFunction
2025-07-15 14:23:08 +03:00
Function FormMethodCallString(Val PassedParameters, Val Command, Val Method, Val Dynamically = True) Export
Return СформироватьСтрокуВызоваМетода(PassedParameters, Command, Method, Dynamically);
2025-05-26 13:46:52 +03:00
EndFunction
2025-07-02 12:51:20 +03:00
Procedure CompleteCompositionCache(Val Library, Val ParametersTable, Command = "") Export
ДополнитьКэшСостава(Library, ParametersTable, Command);
EndProcedure
2025-05-26 13:46:52 +03:00
#EndRegion