Пауза в программном коде 1С

Печать (Ctrl+P)

Могут быть случай, когда требуется выполнить паузу в процессе выполнения программного когда. Например, в написанной мною обработке Рассылка писем должникам , заказчик попросил выполнить задержку между каждыми сообщениями, отправляемыми должникам при автоматической рассылке с упоминанием об оплате долга. Заказчик объяснил это тем, что при атематической рассылке сообщений без задержки сервер SMTP может принять сообщение как спам.

Вот пример процедуры, которую можно использоваться для выполнения задержки :

&НаКлиенте
// Процедура формирует задержку указанной длительности.
//
// Параметры:
//  Время - Число - Длительность задержки в секундах.
//
Процедура Пауза(Время) 

	ВремяЗавершения = ТекущаяДата() + Время;
	Пока ТекущаяДата() < ВремяЗавершения Цикл
	КонецЦикла;

КонецПроцедуры
 

Вот фрагмент рассылки при использовании задержки

&НаКлиенте
Процедура ОтправитьПисьма(Команда) //ОТПРАВКА!!!
	ТекстСообщения = "Выполняется отправка";
	Длительность = ТаблицаПолучателей.Количество(); 
   	Картинка = БиблиотекаКартинок.ОтправитьЭлектронноеПисьмо;
        Индекс =0;  
   Для Каждого Получатель Из ТаблицаПолучателей Цикл
	  Индекс= Индекс+1;  
	 Процент = Макс(Цел(Индекс * 100 / Длительность), 1);
     Пояснение = "Обработано: " + Строка(Индекс) + " из "+ Строка(Длительность);
     Состояние(ТекстСообщения, Процент, Пояснение,  Картинка); 
     ПараметрыПисьма = НовыеПараметрыПисьма(Получатель);	
      Если ОтправитьПочтовоеСообщениеНасервере(ПараметрыПисьма) Тогда
	ТекстСообщения = "Пауза на " + строка(ВремяЗадержки)+ " сек" ;
	 Состояние(ТекстСообщения, Процент, Пояснение,  Картинка); 
	Пауза(ВремяЗадержки);
	ТекстСообщения = "Выполняется отправка";
       КонецЕсли;
     КонецЦикла;
	Сообщить("Рассылка писем уведомлений по списку должников завершена!"); 
     КонецПроцедуры
Previous Article

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.