Вход | Регистрация

1С:Предприятие ::

Метки: 

Как сделать задержку при отправке писем программно

Я
   Vade_kirza
 
04.12.17 - 17:21
Добрый день всем! Подскажите пожалуйста, есть внешняя обработка для бух 3.0.54.20 (8.3.10) которая в цикле отправляет письма. На почтовом клиенте есть ограничение на отправку писем 50 штук/15 минут. Как добавить в коде, чтоб после отправки письма она 30 секунд подождала? Заранее спасибо!
 
  Рекламное место пустует
   Вафель
 
1 - 04.12.17 - 17:23
отправлять рег заданием по расписанию по 15 штук
   Vade_kirza
 
2 - 04.12.17 - 17:29
(1) Попытка
                РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма);
Исключение
Счет.Результат = ОписаниеОшибки();
КонецПопытки;

сюда нельзя что-нибудь добавить, чтоб после отправки он на 30 секунд остановился?
   YFedor
 
3 - 04.12.17 - 17:30
(0) Что за почтовый клиент такой?
   Вафель
 
4 - 04.12.17 - 17:32
(3) скорее не клиент, а провайдер
   lubitelxml
 
5 - 04.12.17 - 17:39
Процедура глПауза(Сек)
scr = Новый COMОбъект("WScript.Shell");
scr.Run("sleep "+СокрЛП(Число(Сек)),0,1);
КонецПроцедуры;
   YFedor
 
6 - 04.12.17 - 17:40
(5) 1С при этом "пойдет дальше", а скрипт пусть себе сидит на паузе или нет?
   nordbox
 
7 - 04.12.17 - 17:40
Подойдет?
ФоновоеЗадание (BackgroundJob)
ОжидатьЗавершения (WaitForCompletion)
Синтаксис:

ОжидатьЗавершения(<Таймаут>)
Параметры:

<Таймаут> (необязательный)

Тип: Число.
Таймаут в секундах ожидания завершения задания. Если таймаут не определен, ожидание будет длиться до момента завершения задания.
Описание:

Ожидать успешного завершения задания. Если задание завершено аварийно, ожидание прерывается и выдается ошибка выполнения задания. Если наступил таймаут, выдается ошибка ожидания задания. Ожидать завершения задания может только администратор или пользователь, запустивший задание.

Доступность:

Сервер, толстый клиент, внешнее соединение.
   Вафель
 
8 - 04.12.17 - 17:41
(7) это не то совсем. А паузы в 1с типовой нет. и не будет (с) 1С
   Волшебник
 
Модератор
9 - 04.12.17 - 17:42
   nordbox
 
10 - 04.12.17 - 17:42
Тогда время отслеживать
и сравнивать
 
 
   Волшебник
 
Модератор
11 - 04.12.17 - 17:44
(10) Всё уже придумано до вас! См. (9)
   Vade_kirza
 
12 - 04.12.17 - 17:45
(11) Спасибо
   nordbox
 
13 - 04.12.17 - 17:45
(11) )))
   breezee
 
14 - 04.12.17 - 18:34
Почему так сложно?
ДатаНачала = ТекущаяДата();
Пока ТекущаяДата() > ДатаНачала + 30 Цикл
//Ждем

КонецЦикла;
   Волшебник
 
Модератор
15 - 04.12.17 - 18:59
(14) Потому что это подвешивает систему и грузит процессор. Пауза должна быть бездеятельной, чтобы дать возможность всем остальным процессам сделать свои тёмные делишки.
   Владимир1С
 
16 - 05.12.17 - 09:26
Разве в 8ке нет возможности вызывать процедуру с заданным в модуле инициализации системы интервалом?
   Serg_1960
 
17 - 05.12.17 - 10:20
Всё просто когда "в теме" :)

В обработке пишешь процедуру, которую при запуске обработки будешь вызывать в фоновом режиме. Процедура в цикле отправляет писма, после каждого письма -
 пауза. Организовать паузу в фоновом задании - проще паренной репы - смотри (7)

Примитивный пример для фонового задания с наименованием "Почта50штЗа15минут":

ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Наименование", "Почта50штЗа15минут"))[0].ОжидатьЗавершения(18);


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует