1. 1C / Говнокод #8046

    −140

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    //делает паузу с округлением до целого числа секунд - 1000, 2000 и т.д.
    //Использует ВводСтроки с таймаутом, который работает даже если окно теряет фокус ввода.
    Процедура Sleep(Таймаут)
        Предупреждение("Таймаут " + Строка(Таймаут) + " секунд", Таймаут, "Sleep");
    	ОбработкаПрерыванияПользователя();
    КонецПроцедуры  
    
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    	
    	Если НЕ ВремяНачалаВыполнения = Дата(1,1,1) Тогда
    		Пока Истина = Истина Цикл
    			ОбработкаПрерыванияПользователя();
    			Sleep(45); //Шаг 45 секунд.	
    			Если Час(ТекущаяДата()) = Час(ВремяНачалаВыполнения) И Минута(ТекущаяДата()) >= Минута(ВремяНачалаВыполнения) Тогда
    				Прервать;
    			КонецЕсли;
    		КонецЦикла;
    	КонецЕсли;
            
            //Далее идет обработка перепроведения документов
    
    КонецПроцедуры

    Интересная версия выполнить процедуру по времени

    Запостил: AndreyEvtyushin, 30 Сентября 2011

    Комментарии (5) RSS

    • > ОбработкаПрерыванияПользователя();

      1с-ный аналог DoEvents?
      Ответить
      • Нет. Задача этого метода по ctrl + break прервать выполение обработки. Работает только если после нажатия комбинации клавиш обработка зайдет в этот метод, поэтому и размещается в цикле.
        Ответить
    • Пока Истина = Истина цикл

      Доставило :)
      Ну, и фоновые задания и обработчики ожидания никто не отменял...
      Ответить
    • показать все, что скрытоvanished
      Ответить

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