|
Как сделать задержку при отправке писем программно | ☑ | ||
---|---|---|---|---|
0
Vade_kirza
04.12.17
✎
17:21
|
Добрый день всем! Подскажите пожалуйста, есть внешняя обработка для бух 3.0.54.20 (8.3.10) которая в цикле отправляет письма. На почтовом клиенте есть ограничение на отправку писем 50 штук/15 минут. Как добавить в коде, чтоб после отправки письма она 30 секунд подождала? Заранее спасибо!
|
|||
1
Вафель
04.12.17
✎
17:23
|
отправлять рег заданием по расписанию по 15 штук
|
|||
2
Vade_kirza
04.12.17
✎
17:29
|
(1) Попытка
РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма); Исключение Счет.Результат = ОписаниеОшибки(); КонецПопытки; сюда нельзя что-нибудь добавить, чтоб после отправки он на 30 секунд остановился? |
|||
3
YFedor
04.12.17
✎
17:30
|
(0) Что за почтовый клиент такой?
|
|||
4
Вафель
04.12.17
✎
17:32
|
(3) скорее не клиент, а провайдер
|
|||
5
lubitelxml
04.12.17
✎
17:39
|
Процедура глПауза(Сек)
scr = Новый COMОбъект("WScript.Shell"); scr.Run("sleep "+СокрЛП(Число(Сек)),0,1); КонецПроцедуры; |
|||
6
YFedor
04.12.17
✎
17:40
|
(5) 1С при этом "пойдет дальше", а скрипт пусть себе сидит на паузе или нет?
|
|||
7
nordbox
04.12.17
✎
17:40
|
Подойдет?
ФоновоеЗадание (BackgroundJob) ОжидатьЗавершения (WaitForCompletion) Синтаксис: ОжидатьЗавершения(<Таймаут>) Параметры: <Таймаут> (необязательный) Тип: Число. Таймаут в секундах ожидания завершения задания. Если таймаут не определен, ожидание будет длиться до момента завершения задания. Описание: Ожидать успешного завершения задания. Если задание завершено аварийно, ожидание прерывается и выдается ошибка выполнения задания. Если наступил таймаут, выдается ошибка ожидания задания. Ожидать завершения задания может только администратор или пользователь, запустивший задание. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
8
Вафель
04.12.17
✎
17:41
|
(7) это не то совсем. А паузы в 1с типовой нет. и не будет (с) 1С
|
|||
9
Волшебник
модератор
04.12.17
✎
17:42
|
||||
10
nordbox
04.12.17
✎
17:42
|
Тогда время отслеживать
и сравнивать |
|||
11
Волшебник
модератор
04.12.17
✎
17:44
|
(10) Всё уже придумано до вас! См. (9)
|
|||
12
Vade_kirza
04.12.17
✎
17:45
|
(11) Спасибо
|
|||
13
nordbox
04.12.17
✎
17:45
|
(11) )))
|
|||
14
breezee
04.12.17
✎
18:34
|
Почему так сложно?
ДатаНачала = ТекущаяДата(); Пока ТекущаяДата() > ДатаНачала + 30 Цикл //Ждем КонецЦикла; |
|||
15
Волшебник
модератор
04.12.17
✎
18:59
|
(14) Потому что это подвешивает систему и грузит процессор. Пауза должна быть бездеятельной, чтобы дать возможность всем остальным процессам сделать свои тёмные делишки.
|
|||
16
Владимир1С
05.12.17
✎
09:26
|
Разве в 8ке нет возможности вызывать процедуру с заданным в модуле инициализации системы интервалом?
|
|||
17
Serg_1960
05.12.17
✎
10:20
|
Всё просто когда "в теме" :)
В обработке пишешь процедуру, которую при запуске обработки будешь вызывать в фоновом режиме. Процедура в цикле отправляет писма, после каждого письма - пауза. Организовать паузу в фоновом задании - проще паренной репы - смотри (7) Примитивный пример для фонового задания с наименованием "Почта50штЗа15минут": ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Наименование", "Почта50штЗа15минут"))[0].ОжидатьЗавершения(18); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |