diff --git a/OPI/DT-INF/PROJECT.PMF b/OPI/DT-INF/PROJECT.PMF
index 93a7f18afe..690880282e 100644
--- a/OPI/DT-INF/PROJECT.PMF
+++ b/OPI/DT-INF/PROJECT.PMF
@@ -1,3 +1,3 @@
Manifest-Version: 1.0
-Runtime-Version: 8.3.18
-Base-Project: OPI_Conf
+Runtime-Version: 8.3.15
+Base-Project: OpenIntegrations
diff --git a/OPI/src/CommonModules/OPI_Telegram/Module.bsl b/OPI/src/CommonModules/OPI_Telegram/Module.bsl
index 02bc2a15c3..c5ba25f6ee 100644
--- a/OPI/src/CommonModules/OPI_Telegram/Module.bsl
+++ b/OPI/src/CommonModules/OPI_Telegram/Module.bsl
@@ -72,6 +72,20 @@
КонецФункции
+// Удалить Webhook.
+//
+// Параметры:
+// Токен - Строка - Токен
+//
+// Возвращаемое значение:
+// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
+Функция УдалитьWebhook(Знач Токен) Экспорт
+
+ Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/deleteWebHook");
+ Возврат Ответ;
+
+КонецФункции
+
// Обработать данные, полученные на Webhook.
//
// Параметры:
diff --git a/OPI/src/CommonModules/YAX_Тесты/Module.bsl b/OPI/src/CommonModules/YAX_Тесты/Module.bsl
new file mode 100644
index 0000000000..592f2f006b
--- /dev/null
+++ b/OPI/src/CommonModules/YAX_Тесты/Module.bsl
@@ -0,0 +1,318 @@
+//Набор тестов для YAxUnit
+//@skip-check undefined-variable
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура ИсполняемыеСценарии() Экспорт
+
+ ЮТТесты
+ .ДобавитьТестовыйНабор("Телеграм")
+ .ДобавитьСерверныйТест("Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота")
+ .ДобавитьСерверныйТест("Телеграм_ПолучитьОбновления" , "Получить обновления")
+ .ДобавитьСерверныйТест("Телеграм_УстановитьWebhook" , "Установить Webhook")
+ .ДобавитьСерверныйТест("Телеграм_УдалитьWebhook" , "Удалить Webhook")
+ .ДобавитьСерверныйТест("Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение")
+ .ДобавитьСерверныйТест("Телеграм_ОтправитьКартинку" , "Отправить картинку")
+ .ДобавитьСерверныйТест("Телеграм_ОтправитьВидео" , "Отправить видео")
+ .ДобавитьСерверныйТест("Телеграм_ОтправитьАудио" , "Отправить аудио")
+ .ДобавитьСерверныйТест("Телеграм_ОтправитьДокумент" , "Отправить документ")
+ .ДобавитьСерверныйТест("Телеграм_ОтправитьГифку" , "Отправить гифку");
+
+КонецПроцедуры
+
+#Область Тесты
+
+#Область Telegram
+
+Процедура Телеграм_ПолучитьИнформациюБота() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ Результат = OPI_Telegram.ПолучитьИнформациюБота(Токен);
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.username").Заполнено();
+
+КонецПроцедуры
+
+Процедура Телеграм_ПолучитьОбновления() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ Результат = OPI_Telegram.ПолучитьОбновления(Токен);
+
+ OPI_Telegram.УдалитьWebhook(Токен);
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result").ИмеетТип(Тип("Массив"));
+
+КонецПроцедуры
+
+Процедура Телеграм_УстановитьWebhook() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ URL = ПолучитьПараметр("Телеграм_URL");
+
+ Результат = OPI_Telegram.УстановитьWebhook(Токен, URL);
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result").Равно(Истина)
+ .Свойство("description").Равно("Webhook was set");
+
+КонецПроцедуры
+
+Процедура Телеграм_УдалитьWebhook() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+
+ Результат = OPI_Telegram.УдалитьWebhook(Токен);
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result").Равно(Истина)
+ .Свойство("description").Равно("Webhook was deleted");
+
+КонецПроцедуры
+
+Процедура Телеграм_ОтправитьТекстовоеСообщение() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ IDЧата = ПолучитьПараметр("Телеграм_Чат");
+ IDКанала = ПолучитьПараметр("Телеграм_Канал");
+ Текст = "Сообщение из автоматического теста";
+
+ МассивРезультатов = Новый Массив;
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст));
+
+ Для Каждого Результат Из МассивРезультатов Цикл
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.text").Равно(Текст);
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура Телеграм_ОтправитьКартинку() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ IDЧата = ПолучитьПараметр("Телеграм_Чат");
+ IDКанала = ПолучитьПараметр("Телеграм_Канал");
+ Текст = "Сообщение из автоматического теста";
+ Картинка = ПолучитьДвоичные("Картинка");
+ ИВФ = ПолучитьИмяВременногоФайла("png");
+ Картинка.Записать(ИВФ);
+
+ МассивРезультатов = Новый Массив;
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDЧата , Текст, Картинка));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDКанала, Текст, Картинка));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDЧата , Текст, ИВФ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDКанала, Текст, ИВФ));
+
+ Для Каждого Результат Из МассивРезультатов Цикл
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.caption").Равно(Текст)
+ .Свойство("result.photo").ИмеетТип(Тип("Массив"));
+
+ КонецЦикла;
+
+ УдалитьФайлы(ИВФ);
+
+КонецПроцедуры
+
+Процедура Телеграм_ОтправитьВидео() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ IDЧата = ПолучитьПараметр("Телеграм_Чат");
+ IDКанала = ПолучитьПараметр("Телеграм_Канал");
+ Текст = "Сообщение из автоматического теста";
+ Картинка = ПолучитьДвоичные("Видео");
+ ИВФ = ПолучитьИмяВременногоФайла("mp4");
+ Картинка.Записать(ИВФ);
+
+ МассивРезультатов = Новый Массив;
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, Картинка));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, Картинка));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, ИВФ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, ИВФ));
+
+ Для Каждого Результат Из МассивРезультатов Цикл
+
+ //@skip-warning
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.caption").Равно(Текст)
+ .Свойство("result.video.mime_type").Равно("video/mp4");
+
+ КонецЦикла;
+
+ УдалитьФайлы(ИВФ);
+
+КонецПроцедуры
+
+Процедура Телеграм_ОтправитьАудио() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ IDЧата = ПолучитьПараметр("Телеграм_Чат");
+ IDКанала = ПолучитьПараметр("Телеграм_Канал");
+ Текст = "Сообщение из автоматического теста";
+ Аудио = ПолучитьДвоичные("Аудио");
+ ИВФ = ПолучитьИмяВременногоФайла("mp3");
+ Аудио.Записать(ИВФ);
+
+ МассивРезультатов = Новый Массив;
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDЧата , Текст, Аудио));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDКанала, Текст, Аудио));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDЧата , Текст, ИВФ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDКанала, Текст, ИВФ));
+
+ Для Каждого Результат Из МассивРезультатов Цикл
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.caption").Равно(Текст)
+ .Свойство("result.audio.mime_type").Равно("audio/mpeg");
+
+ КонецЦикла;
+
+ УдалитьФайлы(ИВФ);
+
+КонецПроцедуры
+
+Процедура Телеграм_ОтправитьДокумент() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ IDЧата = ПолучитьПараметр("Телеграм_Чат");
+ IDКанала = ПолучитьПараметр("Телеграм_Канал");
+ Текст = "Сообщение из автоматического теста";
+ Документ = ПолучитьДвоичные("Документ");
+ ИВФ = ПолучитьИмяВременногоФайла("docx");
+ Документ.Записать(ИВФ);
+
+ МассивРезультатов = Новый Массив;
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDЧата , Текст, Документ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDКанала, Текст, Документ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDЧата , Текст, ИВФ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDКанала, Текст, ИВФ));
+
+ Для Каждого Результат Из МассивРезультатов Цикл
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.caption").Равно(Текст)
+ .Свойство("result.document").ИмеетТип("Соответствие").Заполнено();
+
+ КонецЦикла;
+
+ УдалитьФайлы(ИВФ);
+
+КонецПроцедуры
+
+Процедура Телеграм_ОтправитьГифку() Экспорт
+
+ Токен = ПолучитьПараметр("Телеграм_Токен");
+ IDЧата = ПолучитьПараметр("Телеграм_Чат");
+ IDКанала = ПолучитьПараметр("Телеграм_Канал");
+ Текст = "Сообщение из автоматического теста";
+ Гифка = ПолучитьДвоичные("Гифка");
+ ИВФ = ПолучитьИмяВременногоФайла("gif");
+ Гифка.Записать(ИВФ);
+
+ МассивРезультатов = Новый Массив;
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDЧата , Текст, Гифка));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDКанала, Текст, Гифка));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDЧата , Текст, ИВФ));
+ МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDКанала, Текст, ИВФ));
+
+ Для Каждого Результат Из МассивРезультатов Цикл
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип("Соответствие")
+ .Заполнено()
+ .Свойство("ok").Равно(Истина)
+ .Свойство("result.caption").Равно(Текст)
+ .Свойство("result.document").ИмеетТип("Соответствие").Заполнено()
+ .Свойство("result.animation.mime_type").Равно("video/mp4");
+
+ КонецЦикла;
+
+ УдалитьФайлы(ИВФ);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецОбласти
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция ПолучитьПараметр(Параметр)
+
+ ИмяСправочника = "ЮТПараметры";
+ ИмяРеквизита = "Значение";
+
+ Возврат ПолучитьЗначение(Параметр, ИмяСправочника, ИмяРеквизита);
+
+КонецФункции
+
+Функция ПолучитьДвоичные(Имя)
+
+ ИмяСправочника = "ЮТФайлы";
+ ИмяРеквизита = "Значение";
+
+ Возврат ПолучитьЗначение(Имя, ИмяСправочника, ИмяРеквизита);
+
+КонецФункции
+
+Функция ПолучитьЗначение(Параметр, ИмяСправочника, ИмяРеквизита)
+
+ ЭлементСпр = Справочники[ИмяСправочника].НайтиПоНаименованию(Параметр);
+ Значение = ЭлементСпр[ИмяРеквизита];
+
+ Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
+ Значение = Значение.Получить();
+ КонецЕсли;
+
+ Возврат Значение;
+
+КонецФункции
+
+Процедура ЗаписатьПараметр(Параметр, Значение)
+
+ ИмяСправочника = "ЮТПараметры";
+ ИмяРеквизита = "Значение";
+
+ ЭлементСпр = Справочники[ИмяСправочника].НайтиПоНаименованию(Параметр);
+ ОбъектСпр = ЭлементСпр.ПолучитьОбъект();
+
+ ОбъектСпр[ИмяРеквизита] = Значение;
+ ОбъектСпр.Записать();
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/OPI/src/CommonModules/YAX_Тесты/YAX_Тесты.mdo b/OPI/src/CommonModules/YAX_Тесты/YAX_Тесты.mdo
new file mode 100644
index 0000000000..ec49e9a8ee
--- /dev/null
+++ b/OPI/src/CommonModules/YAX_Тесты/YAX_Тесты.mdo
@@ -0,0 +1,11 @@
+
+
+ YAX_Тесты
+
+ ru
+ Тесты для YaxUnit (ОПИ)
+
+ true
+ true
+ true
+
diff --git a/OPI/src/Configuration/Configuration.mdo b/OPI/src/Configuration/Configuration.mdo
index a175472702..691501960a 100644
--- a/OPI/src/Configuration/Configuration.mdo
+++ b/OPI/src/Configuration/Configuration.mdo
@@ -9,7 +9,6 @@
Checked
Checked
- Checked
Checked
@@ -28,7 +27,6 @@
Russian
Bayselonarrend
1.1.0
- Language.Русский
ru
Открытый пакет интеграций - набор библиотек для интеграции с некоторыми популярными API для 1C:Enterprise. Он состоит из общих модулей, каждый из которых отвечает за свой API, а также нескольких модулей-инструментов, общих для всех.
@@ -41,11 +39,11 @@
ru
https://github.com/Bayselonarrend/OpenIntegrations
-
+ 8.3.15
+
Русский
Adopted
- Checked
Checked
ru
@@ -59,4 +57,5 @@
CommonModule.OPI_Криптография
CommonModule.OPI_YandexID
CommonModule.OPI_YandexDisk
+ CommonModule.YAX_Тесты