Имя: Пароль:
1C
1С v8
ПодключитьОбработчикОжидания не выполняется, если вызван ПодключитьОбработчикОжи
0 rowflag
 
21.11.12
15:36
Если подряд вызываются Тест1() с интервалом, меньшим, чем 8 секунд, то вызов УбратьЦветПоследнейСтроки() не происходит, пока не пройдет 8 секунд после последнего вызова Тест().
Как быть?


&НаКлиенте
Процедура УбратьЦветПоследнейСтроки()
   Для каждого Стр Из СообщенияТЗ Цикл
       Стр.Имя = "----";
   КонецЦикла;
   
КонецПроцедуры

&НаКлиенте
Процедура Тест1()
   СтрокаСоощения = СообщенияТЗ.Добавить();
   СтрокаСоощения.Имя = "абвг";
   ПодключитьОбработчикОжидания("УбратьЦветПоследнейСтроки",8,Истина);
КонецПроцедуры
1 hhhh
 
21.11.12
16:01
(0) меньше секунд задать. Почему эта магическая цифра 8?
2 rowflag
 
21.11.12
16:04
(1) Просто поставил 8 секунд задержку. Хочу чтобы строка меняла цвет через 8 секунд.
3 rowflag
 
21.11.12
16:05
(1) Как же менять цвет строк независимо друг от друга с задержкой?
4 НЕА123
 
21.11.12
16:08
как-то типа поставить 1сек, а в УбратьЦветПоследнейСтроки() проверка на 8 сек.
не?
5 Reset
 
21.11.12
16:09
(0) Поведение логично, каждое следующее подключение сбрасывает таймер.
6 НЕА123
 
21.11.12
16:10
можно попробовать отключить-подключить.
7 Reset
 
21.11.12
16:10
(6) Так это неявно и происходит
8 rowflag
 
21.11.12
16:10
(5) понимаю что логично. Как задачу решить свою тогда?
9 Reset
 
21.11.12
16:11
(8) Описать ее.
10 Reset
 
21.11.12
16:11
+ (8) пока неясно, какое поведение нужно
11 rowflag
 
21.11.12
16:11
Как же менять цвет строк независимо друг от друга с задержкой 8 секунд?
12 Reset
 
21.11.12
16:12
(11) Т.е. ты хочешь независимые обработчики на кждую строку?
13 НЕА123
 
21.11.12
16:12
&НаКлиенте
Процедура Тест1()
   СтрокаСоощения = СообщенияТЗ.Добавить();
   СтрокаСоощения.Имя = "абвг";

УбратьЦветПоследнейСтроки();
   ПодключитьОбработчикОжидания("УбратьЦветПоследнейСтроки",8,Истина);
КонецПроцедуры
14 rowflag
 
21.11.12
16:12
Строка появилась и через 8 секунд поменяла свой цвет. Независимо от того, что в течении этих 8 секунд появились еще 10 строк.
15 Reset
 
21.11.12
16:12
+(12) точнее, на каждый вызов Тест1()
16 Reset
 
21.11.12
16:14
(14) Сделать обработчик с периодичностью 1 сек и вести таблицу строк со счетчиками и ссылками на нужжные строки
17 Reset
 
21.11.12
16:15
+(16) каждую секунду перебирать таблицу, перекрашивать строки с истекшим счетчиком, удалять из таблицы
18 rowflag
 
21.11.12
16:15
(13) не понял..
19 Reset
 
21.11.12
16:16
(18) Он дал решения для другой задачи. "При появлении новой строки немедленно перекрасить предыдущую, а для новой запустить таймер"
20 rowflag
 
21.11.12
16:16
(12) Возможно. Я хочу чтобы строка, после появления через 8 сек. меняла цвет.
21 Reset
 
21.11.12
16:17
(12) (20) Незавимысе обработчики коряво, придется наплодить дофуя процедур. Делай кеш-таблицу
22 rowflag
 
21.11.12
16:17
(19) Понял. Не подходит.
23 rowflag
 
21.11.12
16:17
(21) это примерно хоть как?
24 Reset
 
21.11.12
16:19
(23) Не хочу давать корявый пример.

процедура УбратьЦветПоследнейСтроки1
процедура УбратьЦветПоследнейСтроки2
процедура УбратьЦветПоследнейСтроки3

при подключении циклически подключать УбратьЦветПоследнейСтроки+N

Коряво это
25 rowflag
 
21.11.12
16:19
(21) как в (16)?
26 Reset
 
21.11.12
16:19
(25) угу, я бы так делал наверное
27 vmv
 
21.11.12
16:20
(0) Предлагаю написать письмо чтобы быстрее убрали ОбработчикиОжидания из поставки платформы, ибо соблазн для г-кода
28 rowflag
 
21.11.12
16:20
(23) а если количество строк заранее неизвестно, и может равно быть 10000?
29 rowflag
 
21.11.12
16:20
(28) к (24)
30 Reset
 
21.11.12
16:21
(28) Потому и коряво
31 rowflag
 
21.11.12
16:21
(27) в чем соблазн то?
32 Serginio1
 
21.11.12
16:21
(0) А зачем подряд вызывать Тест1() а не УбратьЦветПоследнейСтроки()
?
33 rowflag
 
21.11.12
16:22
(26) ССССППППААААССССИИИИББББо!
34 rowflag
 
21.11.12
16:23
(32) мне не надо Тест1() вызывать подряд. Мне надо строки создавать, и менять цвет созданной, через 8 минут после ее появления.
35 НЕА123
 
21.11.12
16:24
как всегда, ответ в посте (1)
36 rowflag
 
21.11.12
16:26
(16) можно чтобы этот обработчик не вызывался если все строки уже поменяли цвет, а новые еще не появились? (чтобы не грузить систему)
37 rowflag
 
21.11.12
16:27
?
38 Reset
 
21.11.12
16:29
(36) Я не думаю что обработчик, проверяющий
СтрокиКОкраске.Количество()>0
сколько-существенно нагрузит.

Ну можно, если строк нет (кончились), отключать обработчик, а при добавлении подключать снова, но только если текущий список пуст
39 sidalexsandr
 
21.11.12
16:30
(34) Можно с помощью ОбработчикаОжидания получить Системное время компьютера в момент ввода новой строки.

8 минут - времени ввода текущей строки - время ввода предыдущей строки.
40 rowflag
 
21.11.12
16:33
(39) Можно чуть более подробно алгоритм описать?
41 Reset
 
21.11.12
16:35
Вот рыба к (38):

Проц ДобавитьСообщение()
Если КОкраске().Кол-во()=0 тогда
 ПодключитьОбрОжидания(блабла,1);
КонецЕсли;
Стр=КОкраске().Добавить();
Стр.Строка=ДобавленнаяСтрока;
Стр.ВремяДобавления=ТекущаяДата();
КонецПроц

Проц обработчикТаймера()
Если КОкраске.Кол-во()=0 тогда
 ОтключитьОбрОжидания(блабла);
Иначе
 Для каждого окрстр из КОкраске цикл
   Если  Текущаядата()-окрстр>8 тогда
      // перекрасить строку окрстр.Строка
      // удалить окрстр из КОкраске
  КонецЕсли;
КонецЕсли;
42 Reset
 
21.11.12
16:36
*Если  Текущаядата()-окрстр.ВремяДобавления>8 тогда
43 rowflag
 
21.11.12
16:36
(16)(38) Можно тоже чуть более подробнее алгоритм описать?
44 Reset
 
21.11.12
16:36
(43) Уже
45 rowflag
 
21.11.12
16:37
(А что такое РЫБА?)
46 Reset
 
21.11.12
16:37
(45) Предварительный грубый набросок, скелет
47 vmv
 
21.11.12
16:37
(46) свинья хуже поверь
48 rowflag
 
21.11.12
16:38
(44) У Вас же свой был алгоритм с кэш-таблицей? (в (41) он?)
49 rowflag
 
21.11.12
16:39
(47) Что такое Свинья?)
50 Reset
 
21.11.12
16:39
(48) Да, таблица КОкраске с полями Строка - как-то указывает на строку для перекастки и ВремяДобавления, по которому позже определяем прошло ли 8 сек
51 rowflag
 
21.11.12
16:41
(50) Понял. Просто подумал что это к (39) (ошибся). Спасиббббо!!
52 rowflag
 
21.11.12
16:41
(последний вопрос. Что такое свинья??)
53 Reset
 
21.11.12
16:42
Это животное такое. Человеки его разводят и едят потом
54 vmv
 
21.11.12
16:44
(52) Жирный кусок, мясо)
55 rowflag
 
21.11.12
16:55
(54) Как код может быть Жирным куском?
56 vmv
 
21.11.12
17:02
(55) когда ты это поймешь будет уже поздно - запах тухлой рыбы доканает)