You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-10-08 22:51:57 +02:00
248 lines
14 KiB
Plaintext
248 lines
14 KiB
Plaintext
#Использовать "./internal"
|
|
|
|
Перем СоответствиеКомандМодулей;
|
|
Перем Версия;
|
|
Перем КэшированиеИндексов;
|
|
Перем ШаблонДоступа;
|
|
Перем КаталогПакетов;
|
|
|
|
|
|
Процедура ПриСозданииОбъекта()
|
|
|
|
Версия = "1.28.0";
|
|
ИнициализироватьОсновныеСписки();
|
|
|
|
ТекущийКаталог = ТекущийСценарий().Каталог;
|
|
ШаблонДоступа = ОбъединитьПути(ТекущийКаталог, "internal", "Classes", "%1.os");
|
|
|
|
КаталогПакетов = СтрЗаменить(ПолучитьЗначениеСистемнойНастройки("lib.system"), "\", "/");
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ИнициализироватьОсновныеСписки() Экспорт
|
|
|
|
КэшированиеИндексов = Новый Соответствие();
|
|
СоответствиеКомандМодулей = Новый Соответствие();
|
|
СоответствиеКомандМодулей.Вставить("tools", "Utils");
|
|
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
|
|
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
|
|
СоответствиеКомандМодулей.Вставить("cdek", "OPI_CDEK");
|
|
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
|
|
СоответствиеКомандМодулей.Вставить("ftp", "OPI_FTP");
|
|
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
|
|
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
|
|
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
|
|
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
|
|
СоответствиеКомандМодулей.Вставить("greenapi", "OPI_GreenAPI");
|
|
СоответствиеКомандМодулей.Вставить("mssql", "OPI_MSSQL");
|
|
СоответствиеКомандМодулей.Вставить("mysql", "OPI_MySQL");
|
|
СоответствиеКомандМодулей.Вставить("neocities", "OPI_Neocities");
|
|
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
|
|
СоответствиеКомандМодулей.Вставить("ollama", "OPI_Ollama");
|
|
СоответствиеКомандМодулей.Вставить("openai", "OPI_OpenAI");
|
|
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");
|
|
СоответствиеКомандМодулей.Вставить("postgres", "OPI_PostgreSQL");
|
|
СоответствиеКомандМодулей.Вставить("rcon", "OPI_RCON");
|
|
СоответствиеКомандМодулей.Вставить("rportal", "OPI_ReportPortal");
|
|
СоответствиеКомандМодулей.Вставить("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");
|
|
|
|
КонецПроцедуры
|
|
|
|
Функция ПолучитьВерсию() Экспорт
|
|
Возврат Версия;
|
|
КонецФункции
|
|
|
|
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
|
|
Возврат СоответствиеКомандМодулей;
|
|
КонецФункции
|
|
|
|
|
|
Функция ПолучитьИнформациюИндекса(Знач Команда) Экспорт
|
|
|
|
ИнформацияИндекса = КэшированиеИндексов.Получить(Команда);
|
|
|
|
Если ИнформацияИндекса = Неопределено Тогда
|
|
|
|
Попытка
|
|
ОбъектСостава = ЗагрузитьСценарий(СтрШаблон(ШаблонДоступа, Команда));
|
|
|
|
Состав = ОбъектСостава.ПолучитьСостав();
|
|
СтрокаПодключения = ОбъектСостава.ПолучитьСтрокуПодключения();
|
|
|
|
ИнформацияИндекса = Новый Структура;
|
|
ИнформацияИндекса.Вставить("Состав" , Состав);
|
|
ИнформацияИндекса.Вставить("СтрокаПодключения", СтрокаПодключения);
|
|
|
|
КэшированиеИндексов.Вставить(Команда, ИнформацияИндекса);
|
|
|
|
Исключение
|
|
ВызватьИсключение СтрШаблон("Некорректное имя команды: %1", Команда)
|
|
КонецПопытки;
|
|
|
|
КонецЕсли;
|
|
|
|
Возврат ИнформацияИндекса;
|
|
|
|
КонецФункции
|
|
|
|
Функция ПолучитьПолныйСостав() Экспорт
|
|
|
|
ОбщаяТаблица = Неопределено;
|
|
|
|
Для Каждого Команда Из СоответствиеКомандМодулей Цикл
|
|
|
|
ОбъектИндекса = ПолучитьИнформациюИндекса(Команда.Ключ);
|
|
ТекущаяТаблица = ОбъектИндекса["Состав"];
|
|
|
|
Если ОбщаяТаблица = Неопределено Тогда
|
|
ОбщаяТаблица = ТекущаяТаблица;
|
|
Иначе
|
|
Для Каждого СтрокаТаблицы Из ТекущаяТаблица Цикл
|
|
ЗаполнитьЗначенияСвойств(ОбщаяТаблица.Добавить(), СтрокаТаблицы);
|
|
КонецЦикла;
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
Возврат ОбщаяТаблица;
|
|
|
|
КонецФункции
|
|
|
|
|
|
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач Команда, Знач Метод, Знач Динамически = Истина) Экспорт
|
|
|
|
Модуль = ПолучитьСоответствиеКомандМодулей().Получить(Команда);
|
|
ОбъектИндекса = ПолучитьИнформациюИндекса(Команда);
|
|
|
|
Если Не ЗначениеЗаполнено(Модуль) Тогда
|
|
Возврат Новый Структура("Ошибка,Результат", Истина, "Команда");
|
|
КонецЕсли;
|
|
|
|
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
|
|
ПараметрыМетода = ОбъектИндекса["Состав"].НайтиСтроки(ОтборКоманды);
|
|
|
|
Если Динамически Тогда
|
|
ТекстВыполнения = СтрШаблон(ОбъектИндекса["СтрокаПодключения"], КаталогПакетов);
|
|
Иначе
|
|
ТекстВыполнения = "";
|
|
КонецЕсли;
|
|
|
|
Если Не ЗначениеЗаполнено(ПараметрыМетода) Тогда
|
|
Возврат Новый Структура("Ошибка,Результат", Истина, "Метод");
|
|
КонецЕсли;
|
|
|
|
СтрокаВызова = Модуль + "." + Метод + "(";
|
|
Счетчик = 0;
|
|
|
|
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
|
|
|
|
ИмяПараметра = НеобходимыйПараметр.Параметр;
|
|
ЗначениеПараметра = ПереданныеПараметры.Получить(ИмяПараметра);
|
|
|
|
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
|
|
|
|
ИмяПараметра = "Параметр" + СтрЗаменить(ИмяПараметра, "--", "_");
|
|
|
|
ТекстВыполнения = ТекстВыполнения
|
|
+ Символы.ПС
|
|
+ ИмяПараметра
|
|
+ " = """
|
|
+ СтрЗаменить(ЗначениеПараметра, """", """""")
|
|
+ """;";
|
|
|
|
Если ТребуетсяОбработкаУправляющихПоследовательностей(ИмяПараметра, ЗначениеПараметра) Тогда
|
|
ТекстВыполнения = ТекстВыполнения
|
|
+ Символы.ПС
|
|
+ "OPI_Инструменты.ЗаменитьУправляющиеПоследовательности(" + ИмяПараметра + ");";
|
|
КонецЕсли;
|
|
|
|
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
|
|
Счетчик = Счетчик + 1;
|
|
|
|
Иначе
|
|
СтрокаВызова = СтрокаВызова + " , ";
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
ЛишниеСимволы = 2;
|
|
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
|
|
СтрокаВызова = СтрокаВызова + ");";
|
|
СтрокаВызова = "Ответ = " + СтрокаВызова;
|
|
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
|
|
|
|
СтруктураВозврата = Новый Структура("Ошибка,Результат", Ложь, ТекстВыполнения);
|
|
|
|
Возврат СтруктураВозврата;
|
|
|
|
КонецФункции
|
|
|
|
Процедура ДополнитьКэшСостава(Знач Библиотека, Знач ТаблицаПараметров, Команда = "") Экспорт
|
|
|
|
Команда = ?(ЗначениеЗаполнено(Команда), Команда, Библиотека);
|
|
СтрокаПодключения = "";
|
|
|
|
ИнформацияИндекса = Новый Структура;
|
|
ИнформацияИндекса.Вставить("Состав" , ТаблицаПараметров);
|
|
ИнформацияИндекса.Вставить("СтрокаПодключения", СтрокаПодключения);
|
|
|
|
КэшированиеИндексов.Вставить(Команда, ИнформацияИндекса);
|
|
СоответствиеКомандМодулей.Вставить(Команда, Библиотека);
|
|
|
|
КонецПроцедуры
|
|
|
|
Функция ТребуетсяОбработкаУправляющихПоследовательностей(Знач ИмяПараметра, Знач ЗначениеПараметра)
|
|
|
|
ФайлПараметра = Новый Файл(ЗначениеПараметра);
|
|
ЗначениеПараметраСокр = СокрЛП(ЗначениеПараметра);
|
|
|
|
Возврат Не СтрНачинаетсяС(ЗначениеПараметраСокр, "{")
|
|
И Не СтрНачинаетсяС(ЗначениеПараметраСокр, "[")
|
|
И Не ФайлПараметра.Существует()
|
|
И Не ИмяПараметра = "Параметр_out";
|
|
|
|
КонецФункции
|
|
|
|
#Region Alternate
|
|
|
|
Procedure InitializeCommonLists() Export
|
|
ИнициализироватьОсновныеСписки();
|
|
EndProcedure
|
|
|
|
Function GetVersion() Export
|
|
Return ПолучитьВерсию();
|
|
EndFunction
|
|
|
|
Function GetCommandModuleMapping() Export
|
|
Return ПолучитьСоответствиеКомандМодулей();
|
|
EndFunction
|
|
|
|
Function GetIndexData(Val Command) Export
|
|
Return ПолучитьИнформациюИндекса(Command);
|
|
EndFunction
|
|
|
|
Function GetFullComposition() Export
|
|
Return ПолучитьПолныйСостав();
|
|
EndFunction
|
|
|
|
Function FormMethodCallString(Val PassedParameters, Val Command, Val Method, Val Dynamically = True) Export
|
|
Return СформироватьСтрокуВызоваМетода(PassedParameters, Command, Method, Dynamically);
|
|
EndFunction
|
|
|
|
Procedure CompleteCompositionCache(Val Library, Val ParametersTable, Command = "") Export
|
|
ДополнитьКэшСостава(Library, ParametersTable, Command);
|
|
EndProcedure
|
|
|
|
#EndRegion |