Имя: Пароль:
1C
1C 7.7
v7: Как перебрать строки ТЗ с задержкой в n секунд?
0 aptomilov
 
29.08.11
12:07
Как перебрать строки ТЗ с задержкой в n секунд?
1 Chum
 
29.08.11
12:09
_GetPerfomanseCounter не поможет?
2 Chum
 
29.08.11
12:10
т.е. _GetPerformanceCounter
3 povar
 
29.08.11
12:11
интересно зачем ?
4 Chum
 
29.08.11
12:13
ну или метод Sleep объекта WScript тебе в помощь, оно кагбэ предпочтительнее будет.

(3) +1
5 aptomilov
 
29.08.11
12:23
фишка такая я перебираю строки тз в которую ген дир откладывает запросы на отчет  в пдф , собственно перебирая строки я по условным символам формирую пдф через пдф ный принтер  а тут вы сами понимаете что если отчетов больше одного в тз то оно тупо не успевает сформироваться вообщем из 3 1  выползает)
6 izekia
 
29.08.11
12:32
правильное название темы: "Как организовать программную задержку"
7 Mikeware
 
29.08.11
12:38
Тут не нужна программная задержка. Собственно, и необходимость ТЗ вызывает вопрос...
ТС нужно просто последовательное выполнение заданий.
А он банально не умеет читать документацию...
8 aptomilov
 
29.08.11
12:56
.. как заставить 1С последовательно  исполнять задачи дожидаясь окончания работы обработки? а потом запускать её заново?
9 FN
 
29.08.11
12:59
(8) дык она по другому и не умеет...
10 aptomilov
 
29.08.11
13:10
в том то и дело что она уже запускает обработку в след раз  а пред идущая ещё печатает на пдф принтер !
11 mishaPH
 
29.08.11
13:11
у формекса есть аналог ЗапуститьПриложение() от 1с

ЗапуститьОжидая()
12 VladZ
 
29.08.11
13:14
(0) Нда... Когда ты научишься правильно задавать вопросы - сможешь быстрее решать поставленные задачи...
13 aptomilov
 
29.08.11
13:27
VladZ, ответ я хочу получить именно на первоначальный вопрос!
14 defini
 
29.08.11
13:31
(0)
Процедура Пауза(мс)
   ч = _GetPerformanceCounter();
   Для н = 1 По 1000000000 Цикл
       Если (_GetPerformanceCounter() - ч) > мс Тогда
           Прервать;
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
15 Mikeware
 
29.08.11
13:36
(13) "Ответ на первоначальный вопрос" никак не связан с решением задачи.
зы. открой для себя ОткрытьФормуМодально()
16 Фокусник
 
29.08.11
13:37
(14) Буквально неделю назад разгребал за одним автоматизатором аналогичный код. У заказчика сервер "ни с того ни с сего начал выдавать 100%ую загрузку процессора"

если уж пауза нужна, то Предупреждение("Пауза", 10) лучше сделать :)
17 zak555
 
29.08.11
13:37
по-моему, ген диру пора в отпуск
чем голову себе забил ?
18 mishaPH
 
29.08.11
13:39
(14) за это надо бить. можно по голове.


Процедура Пауза(КолСек) Экспорт
   Темп = КаталогВременныхФайлов() + "sleep.vbs";
   Текст = СоздатьОбъект("Текст");
   Текст.ДобавитьСтроку("wscript.sleep 1000");
   Текст.Записать(Темп);
   cmdLine = "wscript.exe " + Темп;

   WshShell = СоздатьОбъект("WScript.Shell");
   
   Для Сч = -КолСек По -1 Цикл
       Состояние("Пауза. Осталось секунд: " + (-Сч));
       WshShell.Run(cmdLine, 0, -1);
   КонецЦикла;

КонецПроцедуры // Пауза()
19 defini
 
29.08.11
13:40
(16) Согласен;) Просто мне необходима была пауза в доли секунды.
20 aptomilov
 
29.08.11
13:40
предупреждение и ввести строку почему то не помогает, форма открывается 1 раз и все время открыта и в конце закрывается
то есть из 3 нужных итераций я получаю одну(
21 defini
 
29.08.11
13:41
(18) Как раз за создание файлов во временной папке с последующим их исполнением и надо бить, и можно не только по голове)
22 mishaPH
 
29.08.11
13:42
(19) см (18) или используй слип во вк.

(21) с чего это. они по крайней мере не грузят тупо проц как цикл от 1с.
23 mishaPH
 
29.08.11
13:43
+ 22 у автора не просто затормозить работу компа надо, а чтобы выполнилась другая прога.
24 defini
 
29.08.11
13:44
(22) Вот насчет 1с грузит проц не спорю, так и есть. А вот код скрипта можно и из самой 1С выполнить, не создавая файлов, и уж тем более, не используя для таких целей ВК!
25 defini
 
29.08.11
13:45
+24 ОткрытьФормуМодально может помочь
26 mishaPH
 
29.08.11
13:46
(24) это уже детали. а за (14) надо бить по голове. спорить тут глупо.
27 aptomilov
 
29.08.11
13:46
буду пробовать модальную форму
28 __Se24
 
29.08.11
13:51
//*************************************************************************************
Функция ПаузаСекунды(Секи)
   Попытка
       scrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
       scrptCtrl.language="vbscript";
       КодСкрипта="
       |Function GetPause()
       |Set WScript = CreateObject(""WScript.Shell"")
       |WScript.Sleep (";
       КодСкрипта=КодСкрипта+Строка(Секи*1000)+")";
       КодСкрипта=КодСкрипта+"
       |GetPause = """"
       |End Function
       |";
       scrptCtrl.addcode(КодСкрипта);
       Рез = ScrptCtrl.Run("GetPause");
   Исключение
       Возврат "";
   КонецПопытки;
   Возврат Рез;
КонецФункции
29 povar
 
29.08.11
13:51
(20) (15) смотрел ?
30 __Se24
 
29.08.11
13:54
+(28) чтото мне подсказывает , что она так и не заработала ...
изза отсутствия sleep.exe
в итоге я сделал через пинг
31 mishaPH
 
29.08.11
13:57
(28)

Рез = ScrptCtrl.Run("GetPause");
{D:\ОБРАБОТКИ В РАЗАРАБОТКЕ\ЗАГРУЗКААКТОВХ5.ERT(33)}: Ошибка выполнения Microsoft VBScript: Объект не поддерживает это свойство или метод: 'WScript.Sleep'
32 __Se24
 
29.08.11
14:02
во , нашел , кстати на мисте ...

Процедура глПауза(Сек)
   scr = СоздатьОбъект("WScript.Shell");
   scr.Run("ping 127.0.0.1 -n "+СокрЛП(Число(Сек)+1),0,1);
КонецПроцедуры;
33 aptomilov
 
29.08.11
14:13
спасибо всем кто участвовал в процессе вообще не понимая как я мог забыть про модальную форму ведь она пока не отработает никого не пускат, с модальной формой все пашет
34 Mikeware
 
29.08.11
14:19
(33) Это потому, что вместо вопроса "как дождаться конца выполнения задания" ты поставил _себе_ вопрос "как сделать паузу"