&НаСервере
Функция СозданиеИнтернетПрофиля(Знач ТекЯщик)
ПочтовыйПрофиль
= Новый ИнтернетПочтовыйПрофиль;
ПочтовыйПрофиль.ВремяОжидания
= 300;
//
Исходящая почта
ПочтовыйПрофиль.АдресСервераIMAP
= ТекЯщик.АдресСервераIMAP;
ПочтовыйПрофиль.ПользовательIMAP
= ТекЯщик.ПользовательIMAP;
ПочтовыйПрофиль.ПарольIMAP
= ТекЯщик.ПарольIMAP;
ПочтовыйПрофиль.ПортIMAP
= ТекЯщик.ПортIMAP;//993;//143, 993
Попытка
ПочтовыйПрофиль.ИспользоватьSSLIMAP
= Истина;
Исключение
//Сообщить("Не
работает служба SSL IMAP! Для корректной работы необходима платформа 1С
версии не менее 8.3!");
КонецПопытки;
ПочтовыйПрофиль.АдресСервераSMTP = ТекЯщик.АдресСервераSMTP;
ПочтовыйПрофиль.ПортSMTP = ТекЯщик.ПортSMTP;//587;//465,
587, 25, 2525 (шифрование: ssl/tls/startls)
ПочтовыйПрофиль.ПользовательSMTP = ТекЯщик.ПользовательSMTP;
ПочтовыйПрофиль.ПарольSMTP = ТекЯщик.ПарольSMTP;
ПочтовыйПрофиль.АутентификацияSMTP
= СпособSMTPАутентификации.Login;
Попытка
//ПочтовыйПрофиль.ИспользоватьSSLSMTP
= Истина;
Исключение
//Сообщить("Не
работает служба SSL SMTP! Для корректной работы необходима платформа 1С
версии не менее 8.3!");
КонецПопытки;
//
Входящая почта
//Если ФормироватьPOP3Профиль
Тогда
//ПочтовыйПрофиль.АдресСервераPOP3
= "mail.gktower.ru";
//ПочтовыйПрофиль.Пользователь = "rsk\golovin.vv";
//ПочтовыйПрофиль.Пароль = ЭтаФорма.Пароль;
//ПочтовыйПрофиль.ПортPOP3
= 995;//110, 995
//ПочтовыйПрофиль.АутентификацияPOP3
= СпособPOP3Аутентификации.Обычная;
Попытка
//ПочтовыйПрофиль.ИспользоватьSSLPOP3
= Истина;
Исключение
//Сообщить("Не
работает служба SSL POP3! Для корректной работы необходима платформа 1С версии
не менее 8.3!");
КонецПопытки;
Возврат ПочтовыйПрофиль;
КонецФункции
&НаСервере
Функция ПолучитьПисьмаСПочтовогоСервера(Знач ТекЯщик)
Профиль = СозданиеИнтернетПрофиля(ТекЯщик);
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль,
ПротоколИнтернетПочты.IMAP);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
мПисьма
= Новый Массив;
мПисьма
= Почта.Выбрать(Ложь);
Если мПисьма.Количество()
> 0 Тогда
стПисьма
= Новый Структура;
стПисьма.Вставить("Почта",
Почта);
стПисьма.Вставить("мПисьма", мПисьма);
Возврат стПисьма;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ПарсингСообщения(Знач Текст)
//Диспетчеризация
ОКК: пр.Юбилейный 74 ( Веснушки )/Отклонение от задания отопления
//Время
срабатывания: 2025-04-20 23:15:59 +3H
мСообщение
= СтрРазделить(СокрЛП(Текст),
Символы.ПС,);
стСообщение
= Новый Структура;
Если мСообщение.Количество()
= 2 Тогда
//Первая строка
//Диспетчеризация
ОКК: пр.Юбилейный 74 ( Веснушки )/Отклонение от задания отопления
Строка1 = мСообщение[0];
Строка1 = СокрЛП(СтрЗаменить(Строка1,
"Диспетчеризация ОКК:" , ""));
мСтрока1 = СтрРазделить(Строка1, "/",);
стСообщение.Вставить("Адрес",
мСтрока1[0]);
стСообщение.Вставить("Сообщение",
мСтрока1[1]);
//Вторая
строка
//Время
срабатывания: 2025-04-20 23:15:59 +3H
Строка2 = мСообщение[1];
Строка2 = СокрЛП(СтрЗаменить(Строка2,
"Время срабатывания:", ""));
мСтрока2 = СтрРазделить(Строка2, "+",);
Строка22 = мСтрока2[0];
Строка22 = СтрЗаменить(Строка22, "-", "");
Строка22 = СтрЗаменить(Строка22, ":", "");
Строка22 = СтрЗаменить(Строка22, " ", "");
стСообщение.Вставить("ВремяСрабатывания", Дата(Строка22));
Иначе
Возврат Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(стСообщение) Тогда
Возврат стСообщение;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Процедура
ЗаписатьВЖурнал(Знач ТекстСообщения)
стСообщение
= ПарсингСообщения(ТекстСообщения);
//===================
//Записываем
в р/с
//===================
МЗ =
РегистрыСведений.БАШНЯ_ЖурналСообщенийДуПпаИтп.СоздатьМенеджерЗаписи();
МЗ.Период
= ТекущаяДата();
МЗ.Адрес
= стСообщение.Адрес;
МЗ.Сообщение
= стСообщение.Сообщение;
МЗ.ВремяСрабатывания
= стСообщение.ВремяСрабатывания;
Попытка
МЗ.Записать();
Исключение
КонецПопытки
КонецПроцедуры
Функция ОтправкаТекстовыхСообщенийВТелеграм(Знач Токен, Знач ChatId, Знач ТекстСообщения) Экспорт
Попытка
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,15,Новый
ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("bot" +
Токен + "/sendMessage?chat_id=" + ChatId + "&parse_mode=HTML&text="
+ ТекстСообщения);
Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
РезСтруктура = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Иначе
КонецЕсли;
Исключение
//Сообщить(ОписаниеОшибки());
//Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки
КонецФункции
Процедура
Пауза(Секунды)
ВремяОкончания
= ТекущаяДата() + Секунды;
Пока ТекущаяДата()
<= ВремяОкончания Цикл
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура
ОтправитьТекстовоеСообщениеВТелеграм(Знач Текст)
Выборка = Справочники.ПараметрыРассылки.Выбрать();
Пока Выборка.Следующий()
Цикл
Если Выборка.ПометкаУдаления = Ложь Тогда
Если ЗначениеЗаполнено(Текст) Тогда
ОтправкаТекстовыхСообщенийВТелеграм("12345:abcdef", Выборка.ChatId,
СокрЛП(Текст));
КонецЕсли;
Пауза(2);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура
ПрочитатьПочтуНаСервере(Знач ТекЯщик)
стПисьма
= ПолучитьПисьмаСПочтовогоСервера(ТекЯщик);
Если ЗначениеЗаполнено(стПисьма) Тогда
мПисьма
= стПисьма.мПисьма;
Почта = стПисьма.Почта;
Иначе
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(мПисьма) Тогда
Для Каждого Эл Из мПисьма Цикл
Тема = Эл.Тема;
Тексты = Эл.Тексты;
Если ЗначениеЗаполнено(Тексты) Тогда
Для
Каждого Эл2 Из Тексты Цикл
Текст
= Эл2.Текст;
//=====================
//Отправляем в Телеграм
//=====================
ТекстСообщения = "<b>‼️‼️‼️‼️‼️‼️‼️‼️‼️‼️‼️‼️</b>" + Символы.ПС
+ Текст + Символы.ПС + "‼️‼️‼️‼️‼️‼️‼️‼️‼️‼️‼️‼️";
ОтправитьТекстовоеСообщениеВТелеграм(ТекстСообщения);
//===========================
//Записываем
сообщение в Журнал
//===========================
ЗаписатьВЖурнал(Текст);
КонецЦикла;//Тексты
КонецЕсли;
КонецЦикла;//Письма
КонецЕсли;
//Массивы
для удаления сообщений
мСообщений
= Новый Массив;
мИД =
Новый Массив;
Для Каждого Эл Из мПисьма Цикл
мСообщений.Добавить(Эл);
мИД.Добавить(Эл.Идентификатор[0]);
КонецЦикла;
Почта.УдалитьСообщения(мПисьма);//Достаточно так
//Почта.УдалитьСообщения(мСообщений);
//Почта.УдалитьСообщения(мИД);
Почта.ОчиститьУдаленныеСообщения();//Для IMAP
Почта.Отключиться();
КонецПроцедуры
&НаСервере
Процедура
ПереборЯщиков()
Выборка = Справочники.НастройкиПочты.Выбрать();
Пока Выборка.Следующий()
Цикл
Если НЕ Выборка.ПометкаУдаления Тогда
ПрочитатьПочтуНаСервере(Выборка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
////////////////////////////////////////////////////////
&НаКлиенте
Процедура
Отладка(Команда)
ПереборЯщиков();
КонецПроцедуры
|