|   |   | 
| 
 | Как сделать задержку при отправке писем программно | ☑ | ||
|---|---|---|---|---|
| 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); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |