Добрый день!
Есть обработка, которая проверят актуальность копий ИБ. Есть механизм автоматического оповещения о прекращении работы копии. Оповещения отправляются по почте владельцу копии.
Необходимо при ошибке отправки сообщения, повторять отправку, пока сообщение не отправится.
Отправка помещена в попытку, конечно.
Как работает механизм повторной отправки? Что нужно добавить??
Есть обработка, которая проверят актуальность копий ИБ. Есть механизм автоматического оповещения о прекращении работы копии. Оповещения отправляются по почте владельцу копии.
Необходимо при ошибке отправки сообщения, повторять отправку, пока сообщение не отправится.
Отправка помещена в попытку, конечно.
Попытка
Результат = Почта.Послать(Сообщение);
Исключение
Текст = НСтр("ru = 'Не удалось отправить письмо через профиль! Пользователь: ""ПользовательПочты "", сервер исходящей почты: ""АдресСервераSMTP""! Причина:
|%ОписаниеОшибки%'");
Текст = СтрЗаменить(Текст, "%ПользовательПочты%", Строка(ПараметрыУчетнойЗаписи.Пользователь));
Текст = СтрЗаменить(Текст, "%АдресСервераSMTP%", ПараметрыУчетнойЗаписи.СерверИсходящейПочтыSMTP);
Текст = СтрЗаменить(Текст, "%ОписаниеОшибки%", ОписаниеОшибки());
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);
КонецПопытки;
ПоказатьКак работает механизм повторной отправки? Что нужно добавить??
По теме из базы знаний
- “Заставим сканер пищать!” или Получаем обратную связь из 1С при сканировании штрихкодов
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Маркировка лекарственных препаратов. Часть вторая "Регистраторы выбытия"
- Обзор полезных методов БСП 3.1.4
- Управление сборкой. Расширение для конфигурации СППР
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А если сделать так?
Пока Истина цикл
Попытка
Результат = Почта.Послать(Сообщение);
Исключение
Текст = НСтр("ru = 'Не удалось отправить письмо через профиль! Пользователь: ""ПользовательПочты "", сервер исходящей почты: ""АдресСервераSMTP""! Причина:
|%ОписаниеОшибки%'");
Текст = СтрЗаменить(Текст, "%ПользовательПочты%", Строка(ПараметрыУчетнойЗаписи.Пользователь));
Текст = СтрЗаменить(Текст, "%АдресСервераSMTP%", ПараметрыУчетнойЗаписи.СерверИсходящейПочтыSMTP);
Текст = СтрЗаменить(Текст, "%ОписаниеОшибки%", ОписаниеОшибки());
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);
Продолжить;
КонецПопытки;
Прервать;
КонецЦикла;
Показать
(5) Хм...
Если вас предложенный метод устраивает, но вы опасаетесь за вечный цикл, тогда сделайте с меткой, типа так:
Что-то типа такого...
Если вас предложенный метод устраивает, но вы опасаетесь за вечный цикл, тогда сделайте с меткой, типа так:
~ОтправкаСообщения:
Попытка
Результат = Почта.Послать(Сообщение);
Исключение
Текст = НСтр("ru = 'Не удалось отправить письмо через профиль! Пользователь: ""ПользовательПочты "", сервер исходящей почты: ""АдресСервераSMTP""! Причина:
|%ОписаниеОшибки%'");
Текст = СтрЗаменить(Текст, "%ПользовательПочты%", Строка(ПараметрыУчетнойЗаписи.Пользователь));
Текст = СтрЗаменить(Текст, "%АдресСервераSMTP%", ПараметрыУчетнойЗаписи.СерверИсходящейПочтыSMTP);
Текст = СтрЗаменить(Текст, "%ОписаниеОшибки%", ОписаниеОшибки());
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);
Перейти ~ОтправкаСообщения;
КонецПопытки;
ПоказатьЧто-то типа такого...
Я бы просто сделал это фоновым заданием, в нем тупо падал по исключению (т.е. просто пытался отправить без всяких Попытка/исключение), для фонового бы настроил штатные повторы при сбоях. Но лог отправок и ошибок при отправке все равно какой-то отдельный нужен. Можно просто в текстовый файлик писать. Потом его можно анализировать автоматически и выдавать нужным людям предупреждения в 1С, что почта или системные рассылки отвалились.
Хотя, если в лог писать, то "Попытка" таки нужна.
Тогда так:
Тогда так:
Попытка
Результат = Почта.Послать(Сообщение);
// запись в лог об успешной отправке
........
Исключение
// запись в лог об ошибке отправки
........
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
Показать
Суть в том, что метод Послать() не всегда даст исключение, если не удалось послать почту.
После какой-то версии платформы он стал возвращать соответствие с результатом отправки. Вот его и надо анализировать.
После какой-то версии платформы он стал возвращать соответствие с результатом отправки. Вот его и надо анализировать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот