Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Исскуственный замедлитель выполнения кода 1С          
Batchir Подменю пользователя
сообщение 13.09.11, 22:47
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Иногда возникает потребность в создании искусственного замедлителя выполняемого кода 1С.
В типовых решениях встречаются конструкции типа
к=0;
Пока к<100 Цикл
    к=к+1;
КонецЦикла;

или этой подобные. Всё бы ничего ... для одного пользователя ... с одним запущенным экземпляром 1С.
А когда речь идет о большой системе с большим количеством пользователей, то такие замедлители вводят в ступор, потому что в этот момент 1С начинает, не то что кушать, а именно жрать ресурсы компьютера(сервера), вызывая неоправданное замедление работы.
А если замедлитель используется часто и без него никак, то естественным образом начинается поиск как избежать этой проблемы.

Вот и я однажды столкнулся с такой проблемой. Но решение оказалось достаточно простым - использование утилиты sleep.exe.
Данная утилита позволяет сделать паузу в выполнении любого сценария (я не говорю только про 1С) на заданный в секундах промежуток времени. Утилита не входит в состав винды, но её можно найти в на просторах интернета (например [необходимо зарегистрироваться для просмотра ссылки]) и просто скопировать на любой компьютер (если мне не изменяет память, то в систем32)
При выполнении команды этой утилиты 1С просто останавливает выполнение кода, вообще не кушая ресурсы компьютера(сервера), как это делается при любой штатной реализации замедлителя.

А процедура на 8-ке выглядит примерно так
Процедура Пауза(КоличествоСекунд) Экспорт
   Попытка
    WSHShell = Новый COMОбъект("WScript.Shell");
    WSHShell.Run("sleep "+Формат(КоличествоСекунд, "ЧГ=0"),0,1);
   Исключение
    // если перенесут базу на другой компьютер, где нет этой утилиты, то можно описать замедлитель
    // средствами 1С или ничего не описывать и не делать паузу.    
    ВремяПаузы = ТекущаяДата();
    Пока (ТекущаяДата() - ВремяПаузы) < КоличествоСекунд Цикл
        //холостой цикл замедлителя, но жрущий ресурсы ПК
    КонецЦикла;    
   КонецПопытки
КонецПроцедуры

Спасибо сказали: XBrut,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 15:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!