| Книга знаний |  | 
| 1С:Предприятие / Администрирование / Производительность | 
| 
 | 
| Статья описывает способ "безопасного" проведения документов при работающих сетевых или SQL- <br><br><br><br><br>пользователях. Дело в том, что если проводить документы без пауз, то работа остальных <br><br><br><br>пользователей в <br><br><br><br><br>1С будет заблокирована. Статья содержит ссылку на внешнюю компоненту с исходным кодом, а также <br><br><br><br><br>содержит другие рецепты, как сделать паузу без использования внешних компонент. | Автор статьи: romix | Редакторы: Лёвыч, Fragster, coding, mikecool Последняя редакция №14 от 07.06.11 | История URL: http://kb.mista.ru/article.php?id=98 | 
Процедура Проведение() док=СоздатьОбъект(«Документ»); док.ВыбратьДокументы(НачДата, КонДата); Пока док.ПолучитьДокумент()=1 Цикл док.Провести(); Предупреждение(«Ждем 3 секунды…», 3); КонецЦикла; КонецПроцедуры
Звезочет: предупреждение не срабатывает, если окно теряет фокус ввода. То же самое, для
диалога ВводЧисла. А вот для ВводСтроки - таймаут работает! ;))
v8: Аналог Sleep()
//делает паузу с округлением до целого числа секунд - 1000, 2000 и т.д. //Использует ВводСтроки с таймаутом, который работает даже если окно теряет фокус ввода. Процедура sleep(ms) стр="Ожидание "+ТекущееВремя(); Состояние(стр); сек=цел(ms/1000); ВвестиСтроку(стр, стр, 100, 0, сек); КонецПроцедуры
Процедура глВремя_Задержка(чСекунд) Экспорт
    ИмяПутьСкрипта = КаталогПользователя()+"sleep.js";
    
    Скрипт = СоздатьОбъект("Текст");
    
    Скрипт.ДобавитьСтроку("WScript.Sleep("+Строка(1000*чСекунд)+");");
    
    Скрипт.Записать(ИмяПутьСкрипта);
    
    cmdLine="wscript.exe "+ИмяПутьСкрипта;
    
    WshShell = СоздатьОбъект("WScript.Shell");
    
    WshShell.Run(cmdLine, 0, -1);
КонецПроцедуры
Процедура глПауза(Сек)
    scr = СоздатьОбъект("WScript.Shell");
    scr.Run("sleep "+СокрЛП(Число(Сек)),0,1);
КонецПроцедуры;
Процедура глПауза(Сек)
    scr = СоздатьОбъект("WScript.Shell");
    scr.Run("ping 127.0.0.1 -n "+СокрЛП(Число(Сек)+1),0,1);
КонецПроцедуры;
 Процедура глПауза(МСекунды)
     Перем Таймер;
     Таймер     = _GetPerformanceCounter() + МСекунды;
     Пока Таймер > _GetPerformanceCounter() Цикл
         //Состояние(Таймер);
     КонецЦикла;
КонецПроцедуры
Процедура Пауза(КоличествоСекунд = 1) Экспорт #Если Клиент Тогда // эта часть практ. аналогична Процедура глПауза(Сек), описанной выше scr = Новый COMОбъект("WScript.Shell"); scr.Run("ping 127.0.0.1 -n " + (КоличествоСекунд + 1), 0, 1); #ИначеЕсли Сервер Тогда HTTP = Новый HTTPСоединение(<адрес сервера с поднятым пхп>); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); HTTP.Получить("pause.php", ИмяВременногоФайла, "sec:" + КоличествоСекунд); Попытка УдалитьФайлы(ИмяВременногоФайла); Исключение КонецПопытки; #КонецЕсли КонецПроцедуры
| 
        Описание
	 | Рубрикатор
        | Поиск
        | ТелепатБот
        | Захваченные статьи
	 | Установки
        | Форум
          |