ОбработкаОжидания

Автор Arbuz, 27 августа 2024, 15:37

« назад - далее »

Arbuz

А подскажите, у одного объекта Сервис может быть только одна обработка ожидания? т.е. если, к примеру, установлена одна обработка и пока она не сработала у того же объекта задана другая, то первая не сработает?

Злоп

Насколько я понимаю - одна.
Посмотри в сторону РасшФормы.ОО и Таймер.
Хотя РасшФормы - это те же грабли вид сбоку...
.
Посмотри у Васи Душелова, написал ее по моему заказу и у меня работало успешно, генерит события в заданным интервалом, можно нацеплять разных событий с разными интервалами и разруливать по имени события при срабатывании
.
https://infostart.ru/1c/tools/19248/

Arbuz

Лень было что-то добавлять, даже писать КОП. И в конфе, в которой использовались разные ОО в ГМ от одного объекта Сервис (что, соответственно, вызывало непредсказуемые глюки) была добавлена одна глобальная переменная и одна функция:
Функция глТаймер(пТаймер = 0, пИнтервал = 0) Экспорт
    
    Если ТипЗначенияСтр(прТаймер) <> "АссоциативныйВектор" Тогда // глобальная переменная
        прТаймер = СоздатьОбъект("АссоциативныйВектор");
    КонецЕсли;
    
    Если пТаймер = 0 Тогда
        прТаймер.Очистить();
        Возврат 0;
    КонецЕсли;
    
    Если ТипЗначения(пТаймер) = 2 Тогда // строка
        _Поз = прТаймер.НайтиКлюч(пТаймер, 1);
        Если _Поз < 0 Тогда
            прТаймер.Добавить(СоздатьОбъект("Таймер"), пТаймер);
            прТаймер.Получить(_Поз).ЗадатьОбработчикВГлобальномМодуле(пТаймер);
        КонецЕсли;
        
        Если прТаймер.Получить(_Поз).Запущен = 1 Тогда
            прТаймер.Получить(_Поз).Остановить();
        КонецЕсли;
        
        Если пИнтервал > 0 Тогда
            прТаймер.Получить(_Поз).Запустить(пИнтервал);
        ИначеЕсли пИнтервал = -1 Тогда
            прТаймер.Удалить(_Поз);
        КонецЕсли;
    КонецЕсли;
    
    Возврат прТаймер.Количество();
    
КонецФункции // глТаймер

И просто вызовы Сервис.ОбработкаОжидания("Обработчик", Интервал) были заменены на глТаймер("Обработчик", Интервал). Кстати, обнаружилось, что таймер в отличие от сервисной ОО не принимает обработчик с необязательными параметрами.

Злоп

навскиду не понял что там в функции, не вдумывался.
что в итоге то функция делает по существу?

Злоп

Можно не отвечать.
Вдумался.
Тяжелый код по названиям переменных.
пТаймер - ну ладно, ПараметрТаймер
прТаймер..?

Arbuz

Она уже была. Лень было исправлять. И колорер у меня подсвечивает разные переменные. А так да... это чтобы враги не разобрались )))

ЗЫ: Убедил — сменил прТаймер на ПулТаймеров  %)