|
Пауза в выполнении кода | ☑ | ||
---|---|---|---|---|
0
Arxangel06
06.08.12
✎
15:39
|
Доброго времени суток.
Подскажите, кто знает, можно ли в коде 1с установить паузу в выполнении кода? Можно конечно вставить пустой цикл с проверкой времени выполнения, но исполнение этого цикла нагружает проц под завязку, да и вообще решение колхозное. В некоторых случаях можно использовать ПодключитьОбработчкиОжидания(<ИмяПроцедуры>,<Таймаут>), но в данном контексте не канает - нужно делать паузу внутри цикла. Например как в VBS команда Sleep(<Таймаут>). Или vbs-вставка и есть самое корректное решение? Заранее спасибо. |
|||
1
DrShad
06.08.12
✎
15:42
|
а для чего это нужно?
|
|||
2
aleks-id
06.08.12
✎
15:43
|
(1)+1
|
|||
3
Нуф-Нуф
06.08.12
✎
15:43
|
(2) +1
|
|||
4
Ksandr
06.08.12
✎
15:43
|
(3) + 1
|
|||
5
aleks-id
06.08.12
✎
15:45
|
нет, ну а чо? понапишут копрокода а потом удивляются - а чё это у нас тормозит так? йёёёё... да тут запрос в цикле со слипом в цикле!
|
|||
6
Timon1405
06.08.12
✎
15:49
|
||||
7
Arxangel06
06.08.12
✎
15:50
|
Это вывод таблицы значений на экран-табло. Задача сводится к следующему: Показать на экране ровно 12 строк текста, подождать 30 секунд, показать следующие 12 строк. Количество строк фиксировано и =60. Т.е. нужно показать 5 страниц, затем после 5ой вернуться к первой.
p.s. Нечего сказать - лучше промолчать. |
|||
8
Arxangel06
06.08.12
✎
15:51
|
(6) Ну собственно это и есть vbs-вставка.
|
|||
9
Stepa86
06.08.12
✎
15:51
|
(7) и чем ПодключитьОбработчкиОжидания( не нравится?
|
|||
10
ZanderZ
06.08.12
✎
15:52
|
подключи обработчик ожидания
|
|||
11
Arxangel06
06.08.12
✎
15:53
|
(7) а внутри обработчика прописать холостой цикл... Замечательная идея от которой я в самом начале отказался.
|
|||
12
Serginio1
06.08.12
✎
15:53
|
(1) Например при подключении к чему либо пока это устройство занято (почта, порты, файлы итд)
|
|||
13
Широкий
06.08.12
✎
15:57
|
(0) Делай вставку на vbs. ИМХО самое оптимальное
|
|||
14
aleks-id
06.08.12
✎
16:00
|
где хоть выполняется то? на клиенте? на сервере?
|
|||
15
aleks-id
06.08.12
✎
16:04
|
и что мешает повесить регламентное задание?
|
|||
16
aleks-id
06.08.12
✎
16:05
|
(11) нафига внутри обработчика холостой цикл? он у тебя будет вызываться 1 раз в 12 секунд и выводить нужную порцию инфы. никаких циклов
|
|||
17
Arxangel06
06.08.12
✎
17:47
|
В итоге vbs рулит. Хотя для какого-нибудь автопилота в следующий раз буду использовать предупреждение с таймаутом.
|
|||
18
Ахиллес
06.08.12
✎
17:57
|
(17) За пустые циклы и предупреждение с тайм-аутом (в целях задержки выполнения кода) прогам нужно руки тупой пилой отпиливать. В клюшках приходилось извращатся, а в восьмёрке для этих целей существует ПодключитьОбработчикОжидания (AttachIdleHandler)
|
|||
19
le_
06.08.12
✎
17:58
|
||||
20
Fragster
гуру
06.08.12
✎
18:05
|
я таки не понял, нафига в (6) временный файл? почему не использовать MSScriptControl.ScriptControl сразу?
|
|||
21
Fragster
гуру
06.08.12
✎
18:06
|
(7) юзай обработку ожидания
|
|||
22
smaharbA
06.08.12
✎
18:08
|
(20) ты погорячился
что бы получить объект WScript нужно несколько иное |
|||
23
Rebelx
06.08.12
✎
18:32
|
(22)его можно и без файла получить, но гемор.
вообще есть еще такой вариант:http://infostart.ru/public/16230/ |
|||
24
smaharbA
06.08.12
✎
18:34
|
(23) его можно получить без файла и без гемора
|
|||
25
Arxangel06
08.08.12
✎
09:47
|
(18) Ты внимательно читал условие? ПодключитьОбработчикОжидания НЕ работает в данном контексте.
|
|||
26
D_Pavel
08.08.12
✎
09:51
|
(0) я делала паузу через вызов системной команды ping, там можно указать сколько раз пинговать с паузой между пингами в 1 секунду.
|
|||
27
vde69
08.08.12
✎
09:59
|
Если Вопрос("Остановить выполнение?", 2, 1) = "Ок" Тогда
прервать; достоинство - видно что делается и можно прервать паузу недостаток - требуется висение окошка делал так для 7.7 при востановлении последовательности, что-бы другие пошльзователи могли работать |
|||
28
боксер
08.08.12
✎
10:06
|
обычно делаю
Предупреждение("Тех, пауза, сек "+колсек,колсек); |
|||
29
Heckfy
08.08.12
✎
10:07
|
(27) Ага, и в модуль проведения документа это запихать. :):)
|
|||
30
vde69
08.08.12
✎
10:11
|
(29) реально на прошлой работе выгребал тонны вопросов и предупреждений вставленых в проведение :),
а еще хранение таблиц и списков (со ссылками) в реквизите документа и справочника, и еще много чего... человек который это написал к тому времени возомнил себя мего 1с ником и ушел внедрять УПП |
|||
31
Arxangel06
08.08.12
✎
10:20
|
(29) Ну утрировать-то зачем? Хотя да, если есть желание делать работу ради работы, то паузы в проведении - самое оно. Но если работа все-таки на результат и платят не за время, потраченное на доработку, а за эффективность, то паузы нужны только там, где они действительно нужны.
|
|||
32
pumbaEO
08.08.12
✎
10:20
|
(30) мне кажись попалась его УПП :). Хранение таблиц и списков в реквизите - это точно он.
|
|||
33
боксер
08.08.12
✎
11:17
|
(29)нафига в проведнии пауза?
(30)тоже выгребал, но тем не менее (28)использую конечно не на сервере, не COM. а на клиенте где есть необходимость и естественно не в модуле проведения :-) |
|||
34
smaharbA
08.08.12
✎
11:19
|
(28) свернуть и "эта музыка будет вечной, если я не сменю ..."
|
|||
35
Serginio1
08.08.12
✎
11:48
|
(27) Особенно при реализации на сервере.
|
|||
36
aleks-id
08.08.12
✎
12:01
|
интересно, а чем не угодили ПодключитьОбработчикОжидания или Регламентное задание?
|
|||
37
Lex_Liven
08.08.12
✎
12:02
|
(36) господи, 35 сообщений в ветке - и нельзя почитать? Тем, что задержка нужна В ЦИКЛЕ!
|
|||
38
aleks-id
08.08.12
✎
12:05
|
(37) это тебе так кажется. на самом деле там МОЖНО и НУЖНО обойтись БЕЗ ЦИКЛА!
|
|||
39
aleks-id
08.08.12
✎
12:08
|
+(38) и ПодключитьОбработчикОжидания в этом случае самое то!
в идеале - наваять ВК, которая будет генерить ВнешнееСобытие каждый раз в заданном интервале и обрабатывать его через ОбработкаВнешнегоСобытия |
|||
40
Fragster
гуру
08.08.12
✎
12:28
|
(39) еще пару вещей типа службы для виндуса и назначенных заданий забыл... просто обработчик ожидания спасет...
|
|||
41
misha122062
08.08.12
✎
12:40
|
Элементарно Ватсон
к = Текущаядата + задержка Ставишь проверку - пока текущая дата меньше к цикл |
|||
42
misha122062
08.08.12
✎
12:44
|
(41) я такое ставил стремным контрагентам - которые обновлятся не хотели и на обслугу не брали - через полгода запускалась динамичноизменяемая задержка.
Базы тормозили Они в крик - меня звать Рубил бабло - ПРОФИТ |
|||
43
Reset
08.08.12
✎
12:48
|
(7) Использовать обработчик ожидания, с вызовом каждые 30 секунд.
p.s. (25) - читал, не тыкайте. Там фуйня. |
|||
44
misha122062
08.08.12
✎
12:49
|
(43) НАФИГА!
Подключать его...анализировать... Это Задача 1 класа на 2 строчки! |
|||
45
Reset
08.08.12
✎
12:50
|
(44) Изыди
|
|||
46
misha122062
08.08.12
✎
12:51
|
(45)да ты в степь уводишь чела.
Обработчик ожидания не для этого. и задача решается в 2 строки! |
|||
47
aleks-id
08.08.12
✎
12:52
|
/*пишет в блокнотик*/ misha122062 - копрокодер
|
|||
48
Fragster
гуру
08.08.12
✎
12:58
|
(47) да не, у него просто комп с таким процессором: http://www.ixbt.com/news/hard/index.shtml?12/54/56
|
|||
49
Lex_Liven
08.08.12
✎
13:06
|
(41) А скажи мне, друг, в чет отличие такой задержки от пустого цикла на 100000 итераций?
Пожалуй, я сам отвечу: В том, что ты регулируешь длину задержки. И все. Загрузка CPU 100% никуда не девается, прикинь? |
|||
50
Сергей Д
08.08.12
✎
13:07
|
Мы так и не узнали, ДЛЯ ЧЕГО это нужно. Иначе может оказаться, как в Саге про X,Y,Z
|
|||
51
Lex_Liven
08.08.12
✎
13:07
|
(50) узнали, читай тему. Недалеко, в частности (7)
|
|||
52
sergei123654
08.08.12
✎
14:10
|
(0) &НаКлиенте
Процедура ТаймаутСкрипта(Shell, ТаймаутВСекундах) Shell.Run("ping 127.0.0.1 -n "+СокрЛП(Число(ТаймаутВСекундах)+1),0,1); КонецПроцедуры // ТаймаутСкрипта() &НаКлиенте Процедура ТырымПырым(Команда) Shell = Новый COMОбъект("WScript.Shell"); ТаймаутСкрипта(Shell, 10); КонецПроцедуры |
|||
53
aleks-id
08.08.12
✎
14:20
|
(52) фееричный киздец
|
|||
54
Arxangel06
08.08.12
✎
14:23
|
Ну флудеры... Я себя почувствовал ТСом из ветки про уничтожение инфы на хардах... Одинесеры разделились на два лагеря:
1) копрокодеров, которым положить, что проц загружается на 100% и нифига при этом не делает 2) Vbs, который делает все необходимое, не нагружает проц и реализовать в нем можно хоть лилового черта в малиновую крапинку(это я про ping, sleep, что_еще_такое_предлагали?) p.s. Очень надеюсь вырваться в пятницу на миста-встречу в Москве на Бауманской, заодно и посмотрим друг на друга :) |
|||
55
Fragster
гуру
08.08.12
✎
14:24
|
(54) про обработчик ожидания забил?
|
|||
56
Arxangel06
08.08.12
✎
14:24
|
(54) Не, есть еще третий лагерь - ОбработчикиОжидания... Правда непонятно, ожидания чего и кем...
|
|||
57
Arxangel06
08.08.12
✎
14:25
|
(55) Все, я уже не адекватен, это истерика...
Модеры, закройте эту флудильню уже.... Или потянем до пятницы и выставим в юмор? |
|||
58
Fragster
гуру
08.08.12
✎
14:27
|
(57) не дождешься. эта ветка будет пятном позора в репутации одинесников, отметившихся в ней
|
|||
59
aleks-id
08.08.12
✎
14:30
|
(56) обработчики ожидания - самое правильное решение задержек в выполнении кода
(58) +1 |
|||
60
sergei123654
08.08.12
✎
14:32
|
(53)Ну не долюбливают они обработчикиОжидания как я понял из не внимательного чтения ветки!
|
|||
61
smaharbA
08.08.12
✎
14:35
|
есть еще метод
|
|||
62
Arxangel06
08.08.12
✎
14:36
|
(59)+(60) Ну попробуйте в обработчик ожидания параметры передавать... циклически меняющиеся. Очень занимательное занятие, могу сказать...
|
|||
63
Fragster
гуру
08.08.12
✎
14:37
|
(62) переменная формы решит все твои проблемы...
|
|||
64
Arxangel06
08.08.12
✎
14:37
|
(61) Сменить профессию и род занятий, как bizon2008? Да, это решение всех проблем, однозначно...
|
|||
65
smaharbA
08.08.12
✎
14:37
|
(62) это еще на 77 делалось массой способов
|
|||
66
Arxangel06
08.08.12
✎
14:40
|
Вот теперь я точно согласен с формулировкой (53) других слов уже не осталось...
|
|||
67
smaharbA
08.08.12
✎
14:44
|
вьюноша займитесь делом и не ходите по росе босиком
|
|||
68
misha122062
08.08.12
✎
15:44
|
Обработчики ожидания не ужны.
Вы скажите - где их здесь применять? |
|||
69
Fragster
гуру
08.08.12
✎
15:49
|
(68) судя по (7) - в обработке ожидания менять текст на форме
|
|||
70
Ksandr
08.08.12
✎
15:55
|
Сначала нужно вызвать:
ПодключитьСинтаксисПомощник() потом: ПодключитьОбработчикРазума() ПодключитьПрямыеРуки() и только потом ПодключитьОбработчикОжидания() |
|||
71
Arxangel06
08.08.12
✎
15:57
|
(68) Не-не-не, Дэвид Блэйн. ОбработчикОжидания - штука полезная и нужная, для некоторых вещей незаменимая. Но есть случаи, когда эта штука не работает или работает не так, как надо.
(70) Не так там все просто. |
|||
72
Ksandr
08.08.12
✎
15:58
|
(68) Правда, не понимаю, имеем интервал 12 секунд, нужно выполнить конкретное действие.
Исходя из видения задачи по сообщениям в этой теме Допустим данных много и на клиент их тащить нет смысла - делаем так: 1. Получаем и кладем данные во временное хранилище, адрес в реквизит формы. 2. На клиенте подключаем обработчик ожидания в котором определяем процедуру 3. В процедуре вызываем серверную процедуру где берем из временного хранилища нужные данные и выводим на форму. |
|||
73
Lex_Liven
08.08.12
✎
16:01
|
(71) А чем, собственно, VBS-вставка не устраивает? По-моему, для вашей задачи как раз подходит.
|
|||
74
Ksandr
08.08.12
✎
16:04
|
тьфу блин, инфы 60 строк, 5 страниц, 12 строк на каждой, 30 секунд.
ПриСозданииНаСервере создаем страницы программно, таблицы на них тоже программно, вызываем процедуру, которая получит данные и заполнит таблицы. Более сервер не дергаем, пока в этом нет необходимости. ПриОткрытии Подключаем обработчик ожидания, который будет переключать страницы. Второй обработчик с таким интервалом с каким нужно обновлять данные (брать из базы) Профит! Никаких лишних серверных вызовов :) |
|||
75
Stepa86
08.08.12
✎
16:10
|
вот это ннннада? http://screencast.com/t/h1VrCKpwNl
|
|||
76
Arxangel06
08.08.12
✎
16:13
|
(73) Да задача уже 2 дня как решена через vbs :)
|
|||
77
Lex_Liven
08.08.12
✎
16:15
|
(76) Тогда такой вопрос, предложенный в (6) вариант не работает - спотыкается на СоздатьОбъект("Текст"). Чем это можно заменить в 8.2.15.310?
|
|||
78
Arxangel06
08.08.12
✎
16:17
|
(74) хорошо, хорошо, убедил.
(77) "СоздатьОбъект" - это из клюшек. В снеговике это выглядит как "Новый <ТипОбъекта>". клюшки - 7.7, снеговик - 8.х |
|||
79
aleks-id
08.08.12
✎
16:23
|
(78) >>хорошо, хорошо, убедил.
не убедительно. давай код как сделал! |
|||
80
Arxangel06
08.08.12
✎
16:35
|
(79)Как решил конкретно эту задачу в работе, или как сидя дома с котом и пивом вчера перепилил?
|
|||
81
aleks-id
08.08.12
✎
16:36
|
как перепилил и как перепилишь теперь на работе
|
|||
82
smaharbA
08.08.12
✎
16:38
|
задача решается без вбс
|
|||
83
Arxangel06
08.08.12
✎
16:43
|
(81) И не подумаю даже перепиливать, поскольку дома сделано на типовой, а на работе -на самодельной, и очень многое на эту самодельность завязано. А "для себя" решилось так:
ПриОткрытии ПодключитьОбработчикОжидания(ОбновитьИнфу,30); Конец ОбновитьИнфу() ВывестиСтраницу(НомерСтраницы) Конец //номерСтраницы - Переменная уровня формы(объекта, если выполнение с сервера) Вполне универсальный механизм, при условии, что есть возможность хранить информацию. |
|||
84
SalavatUlaev
08.08.12
✎
16:45
|
(0) Я думал речь идет о том, кодишь - кодишь и бац паузу сдела - отдохнул
|
|||
85
Lex_Liven
08.08.12
✎
16:59
|
А теперь такой вопрос. В пресловутый VBS можно впихнуть обработку Ctrl+Break?
|
|||
86
Fragster
гуру
08.08.12
✎
17:03
|
(85) если делать х пауз по одной секунде - то почему бы и нет
|
|||
87
smaharbA
08.08.12
✎
17:21
|
(85) да
|
|||
88
smaharbA
08.08.12
✎
17:22
|
Можно сделать (иначе) с точностью до 100 наносекунд
|
|||
89
Fragster
гуру
08.08.12
✎
18:08
|
(88) все равно меньше 15.7 паузу не сделаешь
|
|||
90
Fragster
гуру
08.08.12
✎
18:08
|
миллисекунд
|
|||
91
smaharbA
08.08.12
✎
18:11
|
(89) сделаешь
тики не имеют прямого отношения к таймерам |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |