1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

Рефакторинг SQLite и VK, тесты CLI для новых методов TG

This commit is contained in:
Anton Titovets
2025-01-17 15:24:24 +03:00
parent a27b6f2749
commit 1c8b56b779
11 changed files with 7250 additions and 7244 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -391,9 +391,11 @@
ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'");
ИначеЕсли Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
Иначе
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
КонецЕсли;
КонецЕсли;

View File

@@ -140,21 +140,21 @@
, Знач СсылкаПодЗаписью = ""
, Знач Параметры = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
OPI_ПреобразованиеТипов.ПолучитьСтроку(СсылкаПодЗаписью);
OPI_ПреобразованиеТипов.ПолучитьБулево(Реклама);
OPI_ПреобразованиеТипов.ПолучитьМассив(Объекты);
Параметры = ПолучитьСтандартныеПараметры(Параметры);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
СтрокаВложений = СтрСоединить(Объекты, ",");
СтрокаВложений = СтрокаВложений + СсылкаПодЗаписью;
РекламаЧисло = ?(Реклама, 1, 0);
Параметры.Вставить("message" , Текст);
Параметры.Вставить("attachments" , СтрокаВложений);
Параметры.Вставить("mark_as_ads" , ?(Реклама, 1, 0));
Параметры.Вставить("close_comments", ?(Реклама, 1, 0));
OPI_Инструменты.ДобавитьПоле("message" , Текст , "Строка", Параметры_);
OPI_Инструменты.ДобавитьПоле("attachments" , СтрокаВложений, "Строка", Параметры_);
OPI_Инструменты.ДобавитьПоле("mark_as_ads" , РекламаЧисло , "Число" , Параметры_);
OPI_Инструменты.ДобавитьПоле("close_comments", РекламаЧисло , "Число" , Параметры_);
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры);
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_);
Возврат Ответ;
@@ -171,10 +171,8 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
Функция УдалитьПост(Знач IDПоста, Знач Параметры = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("post_id", IDПоста);
OPI_Инструменты.ДобавитьПоле("post_id", IDПоста, "Строка", Параметры_);
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.delete", Параметры_);

File diff suppressed because it is too large Load Diff

View File

@@ -70,94 +70,20 @@
, Знач Транзакция = Истина
, Знач Соединение = "") Экспорт
Result_ = "result";
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивДанных);
OPI_ПреобразованиеТипов.ПолучитьБулево(Транзакция);
Соединение = ОткрытьСоединениеВМодуле(Модуль.ИмяКоннектора(), Соединение);
Если Не ЭтоКомпонента(Соединение) Тогда
Возврат Соединение;
Соединение = ОткрытьСоединениеВМодуле(Модуль.ИмяКоннектора(), Соединение);
ПроблемныйЭтап = ОбработатьНачалоЗаписи(Модуль, Транзакция, Соединение);
Если ЗначениеЗаполнено(ПроблемныйЭтап) Тогда
Возврат ПроблемныйЭтап;
КонецЕсли;
Если Транзакция Тогда
СтруктураОбработки = ОбработатьЗаписи(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
СтруктураРезультата = ОбработатьКонецЗаписи(СтруктураОбработки, Модуль, Транзакция, Соединение);
Начало = Модуль.ВыполнитьЗапросSQL("BEGIN TRANSACTION", , , Соединение);
Если Не Начало[Result_] Тогда
Возврат Начало;
КонецЕсли;
КонецЕсли;
Счетчик = 0;
СчетчикУспешных = 0;
Ошибка = Ложь;
МассивОшибок = Новый Массив;
ОшибкаКоллекции = "Invalid data";
СтруктураРезультата = Новый Структура;
Для Каждого Запись Из МассивДанных Цикл
Счетчик = Счетчик + 1;
Ошибка = Ложь;
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
Исключение
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
Ошибка = Истина;
Если Транзакция Тогда
Прервать;
Иначе
Продолжить;
КонецЕсли;
КонецПопытки;
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение);
Если Результат[Result_] Тогда
СчетчикУспешных = СчетчикУспешных + 1;
Иначе
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
Ошибка = Истина;
КонецЕсли;
КонецЦикла;
Если Транзакция Тогда
Если Ошибка Тогда
Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK", , , Соединение);
СчетчикУспешных = 0;
СтруктураРезультата.Вставить("rollback", Откат);
Иначе
Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT", , , Соединение);
СтруктураРезультата.Вставить("commit", Завершение);
КонецЕсли;
КонецЕсли;
СтруктураРезультата.Вставить(Result_ , МассивОшибок.Количество() = 0);
СтруктураРезультата.Вставить("rows" , СчетчикУспешных);
СтруктураРезультата.Вставить("errors", МассивОшибок);
Возврат СтруктураРезультата;
Возврат СтруктураРезультата;
КонецФункции
@@ -608,6 +534,99 @@
#Область Вспомогательные
Функция ОбработатьЗаписи(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
МассивОшибок = Новый Массив;
ОшибкаКоллекции = "Invalid data";
Счетчик = 0;
СчетчикУспешных = 0;
Для Каждого Запись Из МассивДанных Цикл
Счетчик = Счетчик + 1;
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
Исключение
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
Если Транзакция Тогда
Прервать;
Иначе
Продолжить;
КонецЕсли;
КонецПопытки;
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение);
Если Результат["result"] Тогда
СчетчикУспешных = СчетчикУспешных + 1;
Иначе
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
КонецЕсли;
КонецЦикла;
Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных);
Возврат Результат;
КонецФункции
Функция ОбработатьНачалоЗаписи(Знач Модуль, Знач Транзакция, Знач Соединение)
Если Не ЭтоКомпонента(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Если Транзакция Тогда
Начало = Модуль.ВыполнитьЗапросSQL("BEGIN TRANSACTION", , , Соединение);
Если Не Начало["result"] Тогда
Возврат Начало;
КонецЕсли;
КонецЕсли;
КонецФункции
Функция ОбработатьКонецЗаписи(Знач СтруктураОбработки, Знач Модуль, Знач Транзакция, Знач Соединение)
СтруктураРезультата = Новый Структура;
МассивОшибок = СтруктураОбработки["МассивОшибок"];
СчетчикУспешных = СтруктураОбработки["СчетчикУспешных"];
Если Транзакция Тогда
Если МассивОшибок.Количество() > 0 Тогда
Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK", , , Соединение);
СчетчикУспешных = 0;
СтруктураРезультата.Вставить("rollback", Откат);
Иначе
Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT", , , Соединение);
СтруктураРезультата.Вставить("commit", Завершение);
КонецЕсли;
КонецЕсли;
СтруктураРезультата.Вставить("result", МассивОшибок.Количество() = 0);
СтруктураРезультата.Вставить("rows" , СчетчикУспешных);
СтруктураРезультата.Вставить("errors", МассивОшибок);
КонецФункции
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
МассивПолей = Новый Массив;
@@ -888,7 +907,6 @@
КонецЕсли;
Схема["filter"].Добавить(ОсновнаяСтруктура);
КонецПроцедуры

View File

@@ -493,7 +493,8 @@
Процедура ЗаписатьЛогCLI(Знач Результат, Знач Метод, Знач Библиотека = "") Экспорт
ЗаписатьЛог(Результат, Метод + " (CLI)");
Шаблон = "%1 (CLI, %2)";
ЗаписатьЛог(Результат, СтрШаблон(Шаблон, Метод, Библиотека));
КонецПроцедуры
@@ -2130,9 +2131,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@@ -391,9 +391,11 @@
ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'");
ИначеЕсли Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
Иначе
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
КонецЕсли;
КонецЕсли;

View File

@@ -140,21 +140,21 @@
, Знач СсылкаПодЗаписью = ""
, Знач Параметры = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
OPI_ПреобразованиеТипов.ПолучитьСтроку(СсылкаПодЗаписью);
OPI_ПреобразованиеТипов.ПолучитьБулево(Реклама);
OPI_ПреобразованиеТипов.ПолучитьМассив(Объекты);
Параметры = ПолучитьСтандартныеПараметры(Параметры);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
СтрокаВложений = СтрСоединить(Объекты, ",");
СтрокаВложений = СтрокаВложений + СсылкаПодЗаписью;
РекламаЧисло = ?(Реклама, 1, 0);
Параметры.Вставить("message" , Текст);
Параметры.Вставить("attachments" , СтрокаВложений);
Параметры.Вставить("mark_as_ads" , ?(Реклама, 1, 0));
Параметры.Вставить("close_comments", ?(Реклама, 1, 0));
OPI_Инструменты.ДобавитьПоле("message" , Текст , "Строка", Параметры_);
OPI_Инструменты.ДобавитьПоле("attachments" , СтрокаВложений, "Строка", Параметры_);
OPI_Инструменты.ДобавитьПоле("mark_as_ads" , РекламаЧисло , "Число" , Параметры_);
OPI_Инструменты.ДобавитьПоле("close_comments", РекламаЧисло , "Число" , Параметры_);
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры);
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_);
Возврат Ответ;
@@ -171,10 +171,8 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
Функция УдалитьПост(Знач IDПоста, Знач Параметры = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПоста);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("post_id", IDПоста);
OPI_Инструменты.ДобавитьПоле("post_id", IDПоста, "Строка", Параметры_);
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.delete", Параметры_);

View File

@@ -70,94 +70,20 @@
, Знач Транзакция = Истина
, Знач Соединение = "") Экспорт
Result_ = "result";
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивДанных);
OPI_ПреобразованиеТипов.ПолучитьБулево(Транзакция);
Соединение = ОткрытьСоединениеВМодуле(Модуль.ИмяКоннектора(), Соединение);
Если Не ЭтоКомпонента(Соединение) Тогда
Возврат Соединение;
Соединение = ОткрытьСоединениеВМодуле(Модуль.ИмяКоннектора(), Соединение);
ПроблемныйЭтап = ОбработатьНачалоЗаписи(Модуль, Транзакция, Соединение);
Если ЗначениеЗаполнено(ПроблемныйЭтап) Тогда
Возврат ПроблемныйЭтап;
КонецЕсли;
Если Транзакция Тогда
СтруктураОбработки = ОбработатьЗаписи(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
СтруктураРезультата = ОбработатьКонецЗаписи(СтруктураОбработки, Модуль, Транзакция, Соединение);
Начало = Модуль.ВыполнитьЗапросSQL("BEGIN TRANSACTION", , , Соединение);
Если Не Начало[Result_] Тогда
Возврат Начало;
КонецЕсли;
КонецЕсли;
Счетчик = 0;
СчетчикУспешных = 0;
Ошибка = Ложь;
МассивОшибок = Новый Массив;
ОшибкаКоллекции = "Invalid data";
СтруктураРезультата = Новый Структура;
Для Каждого Запись Из МассивДанных Цикл
Счетчик = Счетчик + 1;
Ошибка = Ложь;
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
Исключение
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
Ошибка = Истина;
Если Транзакция Тогда
Прервать;
Иначе
Продолжить;
КонецЕсли;
КонецПопытки;
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение);
Если Результат[Result_] Тогда
СчетчикУспешных = СчетчикУспешных + 1;
Иначе
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
Ошибка = Истина;
КонецЕсли;
КонецЦикла;
Если Транзакция Тогда
Если Ошибка Тогда
Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK", , , Соединение);
СчетчикУспешных = 0;
СтруктураРезультата.Вставить("rollback", Откат);
Иначе
Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT", , , Соединение);
СтруктураРезультата.Вставить("commit", Завершение);
КонецЕсли;
КонецЕсли;
СтруктураРезультата.Вставить(Result_ , МассивОшибок.Количество() = 0);
СтруктураРезультата.Вставить("rows" , СчетчикУспешных);
СтруктураРезультата.Вставить("errors", МассивОшибок);
Возврат СтруктураРезультата;
Возврат СтруктураРезультата;
КонецФункции
@@ -608,6 +534,99 @@
#Область Вспомогательные
Функция ОбработатьЗаписи(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
МассивОшибок = Новый Массив;
ОшибкаКоллекции = "Invalid data";
Счетчик = 0;
СчетчикУспешных = 0;
Для Каждого Запись Из МассивДанных Цикл
Счетчик = Счетчик + 1;
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
Исключение
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
Если Транзакция Тогда
Прервать;
Иначе
Продолжить;
КонецЕсли;
КонецПопытки;
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение);
Если Результат["result"] Тогда
СчетчикУспешных = СчетчикУспешных + 1;
Иначе
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
КонецЕсли;
КонецЦикла;
Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных);
Возврат Результат;
КонецФункции
Функция ОбработатьНачалоЗаписи(Знач Модуль, Знач Транзакция, Знач Соединение)
Если Не ЭтоКомпонента(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Если Транзакция Тогда
Начало = Модуль.ВыполнитьЗапросSQL("BEGIN TRANSACTION", , , Соединение);
Если Не Начало["result"] Тогда
Возврат Начало;
КонецЕсли;
КонецЕсли;
КонецФункции
Функция ОбработатьКонецЗаписи(Знач СтруктураОбработки, Знач Модуль, Знач Транзакция, Знач Соединение)
СтруктураРезультата = Новый Структура;
МассивОшибок = СтруктураОбработки["МассивОшибок"];
СчетчикУспешных = СтруктураОбработки["СчетчикУспешных"];
Если Транзакция Тогда
Если МассивОшибок.Количество() > 0 Тогда
Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK", , , Соединение);
СчетчикУспешных = 0;
СтруктураРезультата.Вставить("rollback", Откат);
Иначе
Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT", , , Соединение);
СтруктураРезультата.Вставить("commit", Завершение);
КонецЕсли;
КонецЕсли;
СтруктураРезультата.Вставить("result", МассивОшибок.Количество() = 0);
СтруктураРезультата.Вставить("rows" , СчетчикУспешных);
СтруктураРезультата.Вставить("errors", МассивОшибок);
КонецФункции
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
МассивПолей = Новый Массив;
@@ -888,7 +907,6 @@
КонецЕсли;
Схема["filter"].Добавить(ОсновнаяСтруктура);
КонецПроцедуры

View File

@@ -493,7 +493,8 @@
Процедура ЗаписатьЛогCLI(Знач Результат, Знач Метод, Знач Библиотека = "") Экспорт
ЗаписатьЛог(Результат, Метод + " (CLI)");
Шаблон = "%1 (CLI, %2)";
ЗаписатьЛог(Результат, СтрШаблон(Шаблон, Метод, Библиотека));
КонецПроцедуры

File diff suppressed because it is too large Load Diff