Книга знаний |
|
1С:Предприятие / Администрирование / Производительность |
|
Статья описывает способ "безопасного" проведения документов при работающих сетевых или SQL-
пользователях. Дело в том, что если проводить документы без пауз, то работа остальных пользователей в 1С будет заблокирована. Статья содержит ссылку на внешнюю компоненту с исходным кодом, а также содержит другие рецепты, как сделать паузу без использования внешних компонент. | Автор статьи: romix | Редакторы: Лёвыч, Fragster, coding, mikecool, Последняя редакция №9 от 30.05.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); КонецПроцедуры;
Описание
| Рубрикатор
| Поиск
| ТелепатБот
| Захваченные статьи
| Установки
| Форум
|