У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 13865
Из: Киев
Спасибо сказали: 4440 раз
Рейтинг: 3559.1
Понадобилось мне сегодня сделать паузу в коде. Работа присходит на сервере, так что Предупреждение не подходит. Мотать цикл тоже не подходит, ибо грузит сильно проц. На просторах было найдено такое решение:
На "заре" программирования, меня учили, что передача управления на маркер и ожидание - это как минимум плохой код, и допустим только в крайнем случае...
Зачем нужна пауза?
Обычно в это время что-то происходит. Тогда этим "что-то" можно (нужно) управлять. Например запускается внешняя программа и нужно ждать ее окончания - тогда:
Перем oExec Экспорт
Функция ЗапуститьПрограмму() Экспорт
Попытка
WshShell = НОВЫЙ COMОбъект("WScript.Shell"); oExec = WshShell.Exec("d:\Program Files\Программа.exe");
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 13865
Из: Киев
Спасибо сказали: 4440 раз
Рейтинг: 3559.1
yaxus , не пробовал ещё, но возьму на заметку . Хотя поторопился. Тоже ж цикл используете.. add: хотя, если добавлять таймаут, то ваш вариант имеет место быть
AnryMc, замечательно. Вот только про цикл я писал в самом первом сообщении.
Цитата(AnryMc @ 11.10.12, 9:58)
передача управления на маркер и ожидание - это как минимум плохой код
Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2534 раз
Рейтинг: 0
Цитата(TipsyKID @ 18.07.14, 8:41)
а вот тут вообще не понял, делали замеры производительности ( пруфы плз. ) ?
Дело не в замерах производительности (и зачем сразу требовать пруфы?), субъективные ощущения реализации, делать форму, подключать обработчик, это слишком сложно для задачи где нужна пауза в пол секунды.
Личные бесплатные консультации не даю, для этого есть форум!
Дело не в замерах производительности (и зачем сразу требовать пруфы?), субъективные ощущения реализации, делать форму, подключать обработчик, это слишком сложно для задачи где нужна пауза в пол секунды.
5-ть минут на реализацию этого метода, малая цена за кроссплатформенность.
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
Вставлю свои 5 коп., хотя в 8-й версии не пишу. В 7.7. очень хорошо с таким заданием справляется DialMail.dll и мне что-то кажется что 8-я ее тоже поддерживает.
Синтаксис на 7.7. Ожидание(<Мсек>); Назначение Приостанавливает работу 1С на <Мсек> миллисекунд без загрузки процессора. Окно 1С в данное время не перерисовывается. Возвращаемое значение: НЕТ Параметры: <Мсек> - число. Количество миллисекунд ожидания.
Пример кода на 7.7.:
Перем SystComm;
Процедура При открытии()
Если ЗагрузитьВнешнююКомпоненту("DialMail.dll") <> 1 Тогда Сообщить("Компонента 'DialMail.dll' не найдена", "!"); КонецЕсли; SystComm = СоздатьОбъект("AddIn.SystComm");
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!