Имя: Пароль:
1C
1С v8
Быстро листаю список - как отработать ПриПолученииДанных по таймеру?
0 mikecool
 
17.07.13
12:20
Преамбула - в список выводятся несколько рассчетных колонок в ПриПолученииДанных
если быстро листать список это дело подтормаживает(написано все красиво, тут затыков нет) да и считаю неоптимальным рассчет данных, которые не нужны.
Думаю - прицепить обработку ожидания на событие ПриВыводеДанных с интервалом в секунду, но - не пойму пока как
сбрасывать счетчик обработки ожидания в привыводеданных, но как потом вернуться в привыводеданных?
есть какие мысли на эту тему?
1 Cube
 
17.07.13
12:23
Сделай переключатель над списком "Выводить доп. информацию / не выводить доп. информацию"...
2 mikecool
 
17.07.13
12:23
(1) переключатели есть, но тема актуальна
3 mikecool
 
17.07.13
12:26
вызвать ПриПолученииДанных в обработчике ожидания, но тогда надо еще какой то флаг держать в руке, дабы по нему не вернуться в обработку ожидания?
4 Ёпрст
 
17.07.13
12:27
1. кешируй расчетные данные
2. используй соответствия, заместо поиска в тз.
3. усё будет летать на этом неповоротливом снеговике.
5 mikecool
 
17.07.13
12:28
(4) соответствие разве быстрее поиска в тз?
6 Ёпрст
 
17.07.13
12:28
короче, кешируй расчетные данные в Соответствие для каждой расчетной колонки своё соответствие.
7 H A D G E H O G s
 
17.07.13
12:28
Таймер секундный.
Сбрасывается ПриВыводеСтроки
Когда таймер достиг 3 секунд - он выставляет флаг, обновляет список и отключается.
Список обновляется,
8 mikecool
 
17.07.13
12:28
+5 про кеш не забываю
9 Ёпрст
 
17.07.13
12:28
(5) раз в 10 наверное быстрее
10 H A D G E H O G s
 
17.07.13
12:28
(5) Нет.
Епрст глупит.
11 H A D G E H O G s
 
17.07.13
12:29
Они монопенисуальны с индексироанной таблицей.
12 Ёпрст
 
17.07.13
12:29
(10) ну и оставайся в неведении
13 mikecool
 
17.07.13
12:31
(7) вот, про привыводестроки пока не думал, спасибо за на водку )
14 H A D G E H O G s
 
17.07.13
12:32
Таймер секундный.
Сбрасывается ПриВыводеСтроки
Когда таймер достиг 3 секунд - он выставляет флаг, обновляет список и отключается.
Список обновляется.
Следующий ПриВыводеСтроки снова включает таймер.

Проблема только в вызове обновлении списка программно, я не помню, вызовется ли при этом ПриПолученииДанных
15 H A D G E H O G s
 
17.07.13
12:32
Кстати, годный механизм, надо попробовать
16 mikecool
 
17.07.13
12:32
(14) "вызовется ли при этом ПриПолученииДанных" вызовется, верняк
17 H A D G E H O G s
 
17.07.13
12:33
Майккул, ты иногда способен удивить концептуальными идеями.
18 Fragster
 
гуру
17.07.13
12:33
ПриПолученииДанных обработку ожидания на 0,5 секунды, однократную. сначала отменить, потом поставить. тогда если мотать быстрее, чем раз в 0.5 секунды - колонки рассчитываться не будут.
19 mikecool
 
17.07.13
12:33
(17) эти идеи я почерпнул еще году этак в 2002 когда работал в крупном проекте на дельфи )) с тех пор привношу их в 1с
20 Fragster
 
гуру
17.07.13
12:34
(16) сфига при изменении оформления вызываться получению данных?
21 mikecool
 
17.07.13
12:35
(20) какого оформления? "в вызове обновлении списка программно," - вот тут вызывается
22 H A D G E H O G s
 
17.07.13
12:35
(18) (20) Ты написал 2 поста и я тебя не понял, что озадачивает и пугает.
23 H A D G E H O G s
 
17.07.13
12:49
(18) Можно поподробнее?
24 mikecool
 
17.07.13
12:51
(23) я тоже что то не сложил в уме
25 Fragster
 
гуру
17.07.13
12:57
26 Ёпрст
 
17.07.13
12:58
Через соответствие будет всё равно быстрее ,чем через индексированную тз минимум, в 2 раза.
Всё время на поиск в тз будет тратится на добавление в структуру параметров для отбора по тз + получение данных с массива.
27 Fragster
 
гуру
17.07.13
12:59
(26) вопрос не в том, как ускорить расчет, а в том, как не считать, когда не надо (когда быстро мотаем список или еще что)
28 H A D G E H O G s
 
17.07.13
13:00
(26)
Всё время на поиск в тз будет тратится на добавление в структуру параметров для отбора по тз + получение данных с массива.


Мизер.
29 H A D G E H O G s
 
17.07.13
13:01
(27)

       Ждем = ТекущаяДата() + 2;
       Пока ТекущаяДата() < Ждем Цикл
           // ждем
       КонецЦикла;


Это бы на еще один обработчик ожидания заменить, но боюсь, если ОформленияСтрок уйдут из области видимости процедуры
ПриПолученииДанных() - они разрушатся.
30 H A D G E H O G s
 
17.07.13
13:01
Надо пробовать, че...
31 H A D G E H O G s
 
17.07.13
13:02
(27) У тебя есть внеплатформенный sleep() ?
32 Fragster
 
гуру
17.07.13
13:03
(29) это эмуляция долгого расчета. по хорошему - фоновое задание надо запускать и при завершении - обновлять колонки.

а прокидывание оформлений в обработчик ожидания - оно почему-то в дамп валит, влом разбираться
33 Fragster
 
гуру
17.07.13
13:04
(31)

Процедура Пауза() Экспорт
   Инфо = Новый СистемнаяИнформация();
   Если
       Инфо.ТипПлатформы = ТипПлатформы.Windows_x86 ИЛИ
       Инфо.ТипПлатформы = ТипПлатформы.Windows_x86_64
   Тогда
       ЗапуститьПриложение("ping -n 2 127.0.0.1", , Истина); // windows
   Иначе
       ЗапуститьПриложение("ping -c 2 127.0.0.1", , Истина); // linux
   КонецЕсли;
КонецПроцедуры
34 H A D G E H O G s
 
17.07.13
13:04
(32) Область видимости - как и предсказано.
Скорее всего чето рекурсивное запускается и с переполнением стэка умирает.
35 Fragster
 
гуру
17.07.13
13:04
(33)+ только на сервере
36 H A D G E H O G s
 
17.07.13
13:04
(33) Брррр.
37 Fragster
 
гуру
17.07.13
13:05
(36) в многопоточном тесте и не такого насмотришься :)
38 Ёпрст
 
17.07.13
13:05
Какой-то мегатормоз, а не поделка.. вообще ничего не листается
39 H A D G E H O G s
 
17.07.13
13:06
(38) Это ожидалось.
40 Fragster
 
гуру
17.07.13
13:06
(38) листается. просто если остановиться, то оно на 1-2 секунды замерзает. типа считает что выводить. по хорошему - (32)
41 Ёпрст
 
17.07.13
13:07
(40) да никак не листается
:(
42 H A D G E H O G s
 
17.07.13
13:08
(41) off course!
43 Fragster
 
гуру
17.07.13
13:09
кстати, там ошибка небольшая. надо так:

Процедура ЗаполнениеКолонок()
   Сообщить("Заполнение");
   
   ПоТаймеру = Истина;
   ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
КонецПроцедуры
44 Fragster
 
гуру
17.07.13
13:10
почему-то обновление не дожидается опустошения стека вызовов (или еще что-то мистическое) и "долгий расчет" 2 раза происходит
45 Ёпрст
 
17.07.13
13:12
выкинул пустой цикл, теперь листается, но, в верхних двух строчках нет данных, при остановке, данные каждый раз пересчитываются, что не есть гуд.
46 Fragster
 
гуру
17.07.13
13:13
(45) чета фигня какая-то. у меня все так, как я ожидаю. пока мотаешь - колонка не заполняется, останавливаешься - заполняется.
47 Ёпрст
 
17.07.13
13:13
есжели форму растянуть - тоже болт  (нет расчетных данных)
48 Ёпрст
 
17.07.13
13:13
(46) она заполняется не вся
49 Fragster
 
гуру
17.07.13
13:14
(47) растянуть - через пол секунды (+ время цикла) данные появляются
50 Ёпрст
 
17.07.13
13:14
по крайней мере у меня( мотаешь вниз - верхние строчки пустые, вверх - нижние), растягиваешь форму - тоже пусто.
При остановке данные постоянно обновляются (не все) в цикле ожидания.
51 RomaH
 
naïve
17.07.13
13:15
обновить форму - вроде должно вызвать и получение данных?
тогда в получении данных писать время в реквизит формы

сравнивать текущее время с этой переменной - если меньше 1 секунды (лучше 0.5) - возврат и вызов обработчитка ожидания на 1 сек

иначе - выполнение

в обработчике - если время переменной отличается от текущего на 1 сек - обновить форму
иначе - возврат
52 Ёпрст
 
17.07.13
13:15
(49) неа.. уже пару минут висит, пока тут сообщение постю - могу скриншот кинуть, как это выглядит
53 Fragster
 
гуру
17.07.13
13:18
(52) может 1ску штырит? попробуй обработку с 0 сделать.
54 Fragster
 
гуру
17.07.13
13:19
(53)+ учитывая (43)
55 kosts
 
17.07.13
13:22
В при активизации строки подключать обработчик ожидания.
В обработчике ожидания включать флаг и обновлять форму.
В приполученииданных смотреть флаг и выводить нужные данные.

Вроде должно взелеть.
56 kosts
 
17.07.13
13:24
(55) Не тоже не вариант - при растягивании формы - не сработает снова.
57 kosts
 
17.07.13
13:27
В приполученииданных сбрасывать флаг и подключать обработчик ожидания.
В обработчике ожидания включать флаг и обновлять форму.
В приполученииданных смотреть флаг и выводить нужные данные.

Так лучше.
58 Ёпрст
 
17.07.13
13:28
http://rusfolder.com/37267954
вот видево
59 Ёпрст
 
17.07.13
13:28
что в (43)  учел
60 RomaH
 
naïve
17.07.13
13:50
Процедура ОбновитьСписок()
   Если ТекущаяДата() - ВремяОбновленияДанных < 2 Тогда
       Возврат;    
   КонецЕсли;
   ЭтоПервыйПроход = Истина;
   ЭтоВторойПроход = Ложь;
   ВызванИзОбработчика = Истина;
   ЭлементыФормы.СправочникСписок.ОбновитьСтроки();
КонецПроцедуры

//Процедура - обработчик события "ПриПолученииДанных" табличного поля СправочникСписок
//
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
   
   Если ВремяОбновленияДанных = '00010101' Тогда
       ВремяОбновленияДанных = ТекущаяДата();
   КонецЕсли;
   
   Если Не ВызванИзОбработчика Тогда
       ВремяОбновленияДанных = ТекущаяДата();
       ПодключитьОбработчикОжидания("ОбновитьСписок",3,Истина);
       Возврат;
   КонецЕсли;
   
   Если Не ЭтоПервыйПроход И Не ЭтоВторойПроход Тогда
       ВызванИзОбработчика = Ложь;
   КонецЕсли;
   
   Если ЭтоПервыйПроход Тогда
       ЭтоВторойПроход = Истина;
   Иначе
       ЭтоВторойПроход = Ложь;
   КонецЕсли;
   
   ЭтоПервыйПроход = Ложь;
   
   ВремяОбновленияДанных = ТекущаяДата();
   

концепт - рабочий - только время желательно до долей секунды учитывать

переменные все в реквизитах формы
61 Fragster
 
гуру
17.07.13
13:50
(60) что-то буков много
62 RomaH
 
naïve
17.07.13
13:51
заковырка в том что обработчик получения данных срабатывает три раза подряд при обновлении спсика
63 Fragster
 
гуру
17.07.13
13:51
(58) а ты сам обработку делал? а то у меня колонок в ТЧ больше... и работает все...
64 RomaH
 
naïve
17.07.13
13:51
(61) говорюже - концепт - собрано на коленке
65 Fragster
 
гуру
17.07.13
13:52
(62) ты в (25)+(43) смотрел? кнопок намного меньше...
66 Fragster
 
гуру
17.07.13
13:53
не кнопок а буков
67 kosts
 
17.07.13
13:53
(60)

   Если ЭтоПервыйПроход Тогда
       ЭтоВторойПроход = Истина;
   Иначе
       ЭтоВторойПроход = Ложь;
   КонецЕсли;


Сильно
68 Ёпрст
 
17.07.13
13:55
(65) видево поглядел эффекта ?
у тебя так же, или не ?
69 Fragster
 
гуру
17.07.13
13:56
(68) не, у меня все четко
70 Ёпрст
 
17.07.13
13:57
а релиз какой у тя ?
71 Aprobator
 
17.07.13
13:58
(0) пля, открываем любую типовую конфу. Справочник Сотрудники - форма списка. Событие соответствующего табличного поля ПриПолученииДанных и смотрим как там организован этот процесс. Нет - надо лисапед изобретать.
72 Fragster
 
гуру
17.07.13
13:58
в смысле поглядел - какая-то фигня. у меня все четко. и почему-то у тебя колонки одной в списке нету. попробуй целиком обработину сделать руками, возможно из-за того, что я в совместимости ее делал, а еще и по метаданным различия может быть есть, оно глючит.

Почему в ПриПолученииДанных не все строки попадают?

у меня 8.2.16 в совместимости 8.1
73 Aprobator
 
17.07.13
13:59
+(71) кстати там для кеширования данных сотрудника используется таблица значений с индексом по полю сотрудник.
74 Ёпрст
 
17.07.13
14:03
странну, у меня тоже 8.2.16 с совместимостью 8.2.13
75 Fragster
 
гуру
17.07.13
14:08
(74) у тебя прямо сразу колонок было столько, сколько на видео?
76 Ёпрст
 
17.07.13
14:13
да. я выкинул наименование с формы.
77 Ёпрст
 
17.07.13
14:14
задержку поставил в обработке ожидания 0.1
78 Ёпрст
 
17.07.13
14:14
ну и сообщить все заккоментил
79 Fragster
 
гуру
17.07.13
14:21
(78) ну ХЗ, я ж говорю - попробуй с нуля другую обработку сделай с таким же (условно) кодом
80 mikecool
 
17.07.13
14:34
(71) сам ты пля )))) для меня типовые не авторитет, я ищу только лучшее, но за ссылку спасибо - посмотрю
81 mikecool
 
17.07.13
14:40
+80 открыл зуп корп, приполученииданных - и где там заявленное в сабже???
82 H A D G E H O G s
 
17.07.13
14:56
(81) Он скорее всего про
мКешПриПолученииДанных
83 H A D G E H O G s
 
17.07.13
14:56
Только что делать с устареванием данных?
84 mikecool
 
17.07.13
14:58
(83)
варианта 2 - обновлять по кнопке, либо по таймеру раз в минуту
85 H A D G E H O G s
 
17.07.13
14:59
Это не вариант
86 mikecool
 
17.07.13
15:00
(31) был же ужо, даже я свои дописки в кз дописывал
вот найти чтолибо в кз трудно ((
87 mikecool
 
17.07.13
15:00
(85) было бы оповещение меж сеансов - вопросов бы не было
88 H A D G E H O G s
 
17.07.13
15:01
(86) Все что вы дописывали в КЗ - хрень.
89 H A D G E H O G s
 
17.07.13
15:02
Мне концепт RomaH понравился, счаст заделаю себе.
90 mikecool
 
17.07.13
15:04
что то насчет трех срабатываний - хз, два было, помню, но три - ни разу
91 Fragster
 
гуру
17.07.13
15:06
(89) чем он лучше варианта:

Процедура ЗаполнениеКолонок()
   ПоТаймеру = Истина;
   ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
КонецПроцедуры

Процедура ТабличноеПоле1ПриПолученииДанных(Элемент, ОформленияСтрок)
   
   Если ПоТаймеру Тогда
       ПоТаймеру = Ложь;

       // оформить строки
       Для каждого Оформление Из ОформленияСтрок Цикл
           Оформление.Ячейки.ДолгоСчитается.УстановитьТекст(ТекущаяДата());
       КонецЦикла;
   Иначе
       ОтключитьОбработчикОжидания("ЗаполнениеКолонок");
       ПодключитьОбработчикОжидания("ЗаполнениеКолонок", 0.5, Истина);
   КонецЕсли;
КонецПроцедуры
92 Fragster
 
гуру
17.07.13
15:07
зачем плодить "проходы"?
93 Ёпрст
 
17.07.13
15:11
Пересоздал поделку с "0", эффект остался..
ща в 8.1 попробую.
94 RomaH
 
naïve
17.07.13
15:16
(91) он работает? ОбновитьСтроки - вызывает получение данных вроде как минимум два раза - я делал на сотрудниках в ЗУП - там получалось 3 раза
95 H A D G E H O G s
 
17.07.13
15:17
ОтключитьОбработчикОжидания("ЗаполнениеКолонок");
надо добавить после

Если ПоТаймеру Тогда
       ПоТаймеру = Ложь;
96 H A D G E H O G s
 
17.07.13
15:19
Странно, 3 параметр (Однократно) не отрабатывается.
8.2.17.159
97 H A D G E H O G s
 
17.07.13
15:22
(94) Все, понял. RomaH дело говорит :-)
98 Fragster
 
гуру
17.07.13
15:25
(94) у меня отрабатывает все четко (1 раз) (у меня там были еще Сообщить() добавлены - следил по ним)
99 H A D G E H O G s
 
17.07.13
15:25
(94) 2 раза у меня.
100 Fragster
 
гуру
17.07.13
15:26
(99) 2 раза - это скаченная, или именно с кодом (91)? в той, которую я выкладываю сначала идет ОбновитьСтроки, потом ПоТаймеру = Истина; из-за этого два раза вызывалось.
101 RomaH
 
naïve
17.07.13
15:27
v8: v8: Событие ПриПолученииДанных отрабатывает дважды

agarych

   
(0) посмотри на ИТС там все написано.

Первый раз отрабатывает, для строк выше текущей строки, второй раз для текущей строки + все что ниже.

Кстати два раза он у тебя будет вызываться если ты кнопки page up, page down используешь. И один раз если колесиком мышки крутить.
102 H A D G E H O G s
 
17.07.13
15:28
(100) (91)
103 H A D G E H O G s
 
17.07.13
15:28
(101) Все понятно.
Как ты ТРИ раза добился?
104 RomaH
 
naïve
17.07.13
15:29
(60) тестировалось на ЗУП - там не оформленные строки занимают 2 строки, а оформленные - 1

поэтому, похоже, отрабатывает целых три рааз
105 RomaH
 
naïve
17.07.13
15:30
т.е. обработало одну порцию - верхнюю - оформило - вывело
на экране стало показывать больше строк чем было изначально
потом - обрабатывает вторую часть - изначальну
на экране помещается еще больше строк
потом - обрабатывает все оставшиеся строки
106 RomaH
 
naïve
17.07.13
15:32
по сути алгоритм из (60) вроде должен работать хоть на одном хоть на трех проходах
107 Fragster
 
гуру
17.07.13
15:33
понял, счас посмотрю, что можно сделать...
108 Fragster
 
гуру
17.07.13
15:35
апдейт, который пашет правильно, вроде:

Процедура ВключитьТаймер()
   ПоТаймеру = Истина;
   ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
КонецПроцедуры

Процедура ВыключитьТаймер()
   ПоТаймеру = Ложь;
КонецПроцедуры

Процедура ТабличноеПоле1ПриПолученииДанных(Элемент, ОформленияСтрок)
   
   Если ПоТаймеру Тогда
       Для каждого Оформление Из ОформленияСтрок Цикл
           Оформление.Ячейки.ДолгоСчитается.УстановитьТекст(ТекущаяДата());
       КонецЦикла;
       ПодключитьОбработчикОжидания("ВыключитьТаймер", 0.1, Истина);
   Иначе
       ОтключитьОбработчикОжидания("ВключитьТаймер");
       ПодключитьОбработчикОжидания("ВключитьТаймер", 0.1, Истина);
   КонецЕсли;
КонецПроцедуры
109 Fragster
 
гуру
17.07.13
15:38
лучше у включения таймаут 0.5, иначе если успеть после первого оформления - то он при мотании будет оставшиеся строки все равно доотрисовывать
110 mikecool
 
17.07.13
15:42
(108) в этом случае только раз срабатывает ПриПолученииДанных?
111 RomaH
 
naïve
17.07.13
15:43
(110) см (101)
112 mikecool
 
17.07.13
15:44
(111) это я посмотрел, получается что в этой процедуре ОформленияСтрок - весь выводимый набор, но срабатывает дважды для "верха" и  "низа"?
113 mikecool
 
17.07.13
15:44
+112 нафига тогда в ОформленияСтрок  пихать весь набор?
114 RomaH
 
naïve
17.07.13
15:45
(110) не все-ли равно ОформленияСтрок всегда разные
115 RomaH
 
naïve
17.07.13
15:46
(113) точно разный?
116 H A D G E H O G s
 
17.07.13
15:46
(108) Вроде работает :-)
117 mikecool
 
17.07.13
15:47
(114) так если всегда разный, то какая разница - какой проход? если надо обработать все
118 mikecool
 
17.07.13
15:47
так что - годная тема получилась? можно было на конкурс с ипадом отправлять? )))
119 RomaH
 
naïve
17.07.13
15:50
(117) я тебя не понял
есть обновление данных списка
есть три прохода
оформление строк на всех трех проходах содержат разные коллекции
сумма коллекций в итоге дает все строки котрые показываются на экране
120 mikecool
 
17.07.13
15:52
(119) зачем отслеживать номер прохода, если каждый проход содержит другую коллекцию строк, которые надо обработать?
121 RomaH
 
naïve
17.07.13
15:54
(120) ... что бы не обрабатывать 4 проход вызваный прокручиванием спсика
122 mikecool
 
17.07.13
15:56
все равно не понимаю )))
есть событие, которое вызывается три раза
1) для текущей строки
2) для строк выше
3) для строк ниже
порядок щас не суть, каждый вызов содержит
1) одну строку
2) строки выше
3) строки ниже
каждую эту коллекцию надо обработать, а у тебя получается первые две пропускается и обрабатывается только третья?
123 RomaH
 
naïve
17.07.13
15:56
объясняю логику
надо обновить данные только после 3 секунд после остановки прокручивания

т.е. надо выподнять обновление не сразу, а только после 3 секунд после обновления

для этого при обновлении ... читайте код
124 RomaH
 
naïve
17.07.13
15:57
(122) у меня первые три обрабатываются - а последующие нет
125 mikecool
 
17.07.13
15:58
(124) а, епа мать )))
126 RomaH
 
naïve
17.07.13
15:58
2) строки выше
3) строки ниже
3) строки которые получились после уменьшения высоты строк из впервых двух коллекций
127 RomaH
 
naïve
17.07.13
15:59
(122) у меня первые три обрабатываются - а потом сбрасывается флаг, что это вызов надо обрабатывать
128 Fragster
 
гуру
17.07.13
16:06
Для того, чтобы случайно не попасть в период, когда таймер включен, но мы крутим форму - выключение флага перенес в обновление отображения, вроде работает:


Процедура ВключитьТаймер()
   Таймер = Истина;
   ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
КонецПроцедуры

Процедура ТабличноеПоле1ПриПолученииДанных(Элемент, ОформленияСтрок)
   Сообщить("При получении " + Таймер);
   Если Таймер Тогда
       Для каждого Оформление Из ОформленияСтрок Цикл
           Оформление.Ячейки.ДолгоСчитается.УстановитьТекст(ТекущаяДата());
       КонецЦикла;
   Иначе
       ОтключитьОбработчикОжидания("ВключитьТаймер");
       ПодключитьОбработчикОжидания("ВключитьТаймер", 0.5, Истина);
   КонецЕсли;
КонецПроцедуры

Процедура ОбновлениеОтображения()
   Сообщить("Обновление " + Таймер);
   Таймер = Ложь;
КонецПроцедуры
129 mikecool
 
17.07.13
16:07
да вроде и так норм отрабатывает
130 Fragster
 
гуру
17.07.13
16:07
(129) ну, залипнуть может - попробуй таймаут на выключение таймера поставить 5 секунд :)
131 H A D G E H O G s
 
17.07.13
16:09
(130) Он не залипнет. Он будет отрабатывать как будто никаких приблуд нет.
132 H A D G E H O G s
 
17.07.13
16:10
(130) Ну отработает несколько ПриПолученииДанных(), потом отлипнет.
Для 0.1 секунды вообще вряд ли так случиццо.
133 mikecool
 
17.07.13
16:15
Для 0.1 таймер срабатывает по ощущениям как через секунду (
134 H A D G E H O G s
 
17.07.13
16:15
Но вообще идея здравая, лучше перебдеть :-)
135 H A D G E H O G s
 
17.07.13
16:16
(133)
Вызов будет осуществляться только в "состоянии покоя", то есть в тот момент, когда программа не выполняет никаких действий.
136 mikecool
 
17.07.13
16:16
не, щас поставил 0,1 - не успеваю нажать на клавишу - срабатывает ))) надо 0.2
137 H A D G E H O G s
 
17.07.13
16:17
(136) Тоесть?
138 H A D G E H O G s
 
17.07.13
16:17
p.s. Вот мы фигней занимаемся...
139 mikecool
 
17.07.13
16:18
(138) почему фигней? я не знаю как у кого, но мне например не приятно, когда я листаю список, а он у меня покадрово с интервалом в 2 секунды прорисовывается ( юзерам думаю тоже не прикольно
140 Ёпрст
 
17.07.13
16:33
(139) И сколько у тебя расчетных колонок ?
141 mikecool
 
17.07.13
16:38
(140) пока две, щас планируют еще штуки три
142 mikecool
 
17.07.13
16:39
щас по мелочи переделываю вывод списка, умудрились получать валюту бух и упр в цикле по каждому оформлению ((( в шоке
143 Aprobator
 
17.07.13
16:41
(142) если в Корпе нет, то пример можно посмотреть на конфе КА или УПП.
144 mikecool
 
17.07.13
16:42
(143) да хватит с меня копрокода
145 Aprobator
 
17.07.13
16:43
грубо суть в следующем, с оформлениястрок снимается информация по полю источнику. Затем выполняется проверка наличия данных в кэше. Если данных нет - выполняется их получение с последующей записью в кэш.
146 mikecool
 
17.07.13
16:45
(145) да как бы уже разобрались )))
147 H A D G E H O G s
 
17.07.13
16:46
(145) Я тя помню еще с тех времен, когда бы запрос к ТабличномуПолю делал :-)
148 H A D G E H O G s
 
17.07.13
16:46
бы->ты
149 Aprobator
 
17.07.13
16:47
(147) попрошу без наездов) Все мы были когда то молодыми и глупыми )
150 Ёпрст
 
17.07.13
16:48
(141) тогда точно фигнёй.. всё и так листается на раз, переделай тока на соответствия.
151 Fragster
 
гуру
17.07.13
16:48
(145) да. только вот у тебя 10к номенклатуры и колонка с остатками. ты мотаешь список пэйдждайном. как тебе кэш поможет?
152 mikecool
 
17.07.13
16:49
(150) нихрена не на раз, залипание на вывод почти в секунду
но щас разгребу всю процедуру, возможно половину перенесу в запрос
153 Ёпрст
 
17.07.13
16:49
не думаю, что кого-то порадует, видеть нужные данные с задержкой, только после остановки.
154 Ёпрст
 
17.07.13
16:50
ну кидай свой код в приполучении
155 mikecool
 
17.07.13
16:51
(153) я не думаю, что их радует ждать после каждого нажатия )
как нибудь договоримся о компромиссе ))
(154) еще в процессе, кидать стыдно - он не мой )
156 Fragster
 
гуру
17.07.13
16:51
(153) допустим у тебя идет набор по строке. зачем тебе задержка на показ ненужных данных? а если данные получаются 2 секунды, то задержку в +0.2 ты не заметишь
157 H A D G E H O G s
 
17.07.13
16:51
(153) А мы опционально....
158 H A D G E H O G s
 
17.07.13
16:52
ПВХ
НастройкиПользователей
хватит на всех.
Даром.
И никто не уйдет обиженным.
159 Fragster
 
гуру
17.07.13
16:52
в идеале - чтобы вообще не тормозило - надо еще на фоновые переделать
160 Aprobator
 
17.07.13
16:52
(151) хм - я просто других вариантов не представляю. Либо каждый раз базу дергать, либо данные где то хранить.
161 Fragster
 
гуру
17.07.13
16:53
(160) вот в (0) вариант - дергать данные только когда мы остановили прокрутку списка...
162 mikecool
 
17.07.13
16:53
(160) лучше дергать по таймауту нужные, потому как акуальность их меняется довольно часто
163 Ёпрст
 
17.07.13
16:54
10к влёт кешируются в соответствиях, проверено.
У меня нет вообще обращения к базе при получении данных, тормозов, тоже нет..
164 mikecool
 
17.07.13
16:55
(163) а на создание соответствия времени сколько уходит?
165 Aprobator
 
17.07.13
16:56
(161) одно другому не мешает.
166 Ёпрст
 
17.07.13
16:59
(164)задержка при открытии формы подбора..1-2 секунды..
167 Ёпрст
 
17.07.13
16:59
не так и много
168 Ёпрст
 
17.07.13
16:59
могу видево слепить
169 Aprobator
 
17.07.13
17:00
+(165) идея конечно интересная сама по себе.
170 H A D G E H O G s
 
17.07.13
17:01
(169) Она великолепна.
Как поддерживать кэш в актуальном состоянии?
171 Aprobator
 
17.07.13
17:03
(170) нужен механизм, контролирующий изменения данных с момента последнего залива их в кэш.
172 Aprobator
 
17.07.13
17:05
хотя в случае остатков - кэш то может быть и нефига не оптимальным решением.
173 Ёпрст
 
17.07.13
17:05
(170) да никак не поддерживается, это форма подбора номенклатуры с останками и  кнопкой обновить.
Я забил на "актуальность" останков в "прямом эфире"
174 H A D G E H O G s
 
17.07.13
17:06
(173) Ну вот и все дела.
175 H A D G E H O G s
 
17.07.13
17:07
Когда идет выписка реализаций - остатки будут скакать каждую минуту, нафиг этот ваш кэш.
176 Aprobator
 
17.07.13
17:07
(175) согласен - тут не поспоришь.
177 Ёпрст
 
17.07.13
17:08
(174) на самом деле, при любой продаже получать всегда "актуальные" останки не реально, да и не верно это.
Ну прилетел тебе якобы "реальный остаток" в документ - и далеко не факт, что в момент проведения он еще будет на останках.
178 fisher
 
17.07.13
17:12
<робко> ... а может, сделать этот список на УФ?
179 Aprobator
 
17.07.13
17:13
+(176) хотя если присобачить какое нить оповещение кэша об изменении остатков - хз. Вот только как это реализовать? И где хранить кэш в таком случае?
180 H A D G E H O G s
 
17.07.13
17:13
Попробуйте с данным механизмом ВывестиСписок
181 H A D G E H O G s
 
17.07.13
17:14
Правой кнопкой - Вывести список.
И выберите расчетные колонки.

Бяда.
182 Fragster
 
гуру
17.07.13
17:15
(180) ты о отрисовке с задержкой?
183 H A D G E H O G s
 
17.07.13
17:15
(182) Да
184 Ёпрст
 
17.07.13
17:19
врят ли кто будет печатать это..
185 H A D G E H O G s
 
17.07.13
17:23
Как бы отследить источник вызова ПриПолученииДанных
186 Fragster
 
гуру
17.07.13
17:27
(185) или как вызвать команду "Вывесит список" программно?
187 Леха Дум
 
17.07.13
17:40
А вы УФ с динамическим списком не пробовали использовать?
188 mikecool
 
17.07.13
17:42
(187) уже спрашивали про это
189 mikecool
 
17.07.13
17:42
(184) у меня как раз любители печатать (
190 Ёпрст
 
17.07.13
17:43
забил бы давно болт на это, всё в кеш и привет.
191 Ёпрст
 
17.07.13
17:45
и обновление кеша по кнопке.
192 Леха Дум
 
17.07.13
17:46
(188) и где же ответ на этот вопрос?
193 mikecool
 
17.07.13
17:53
(192) см (181)
194 mikecool
 
17.07.13
17:53
+193 мои пользователи привыкли к отбору, а не к поиску (
и пока я их не буду переучивать, ибо и так туповаты, да скоро новая конфига будет внедряться
195 Леха Дум
 
17.07.13
18:03
(194) у нас тоже привыкшие были, переводил все формы списков на УФ постепенно, когда раскушали - сказали срочно давай еще это, это и это! Не увидел никаких проблем с печатью списка.
196 Полотенчик
 
17.07.13
18:16
А зачем считать ПриПолученииДанных? Почему нельзя сразу в таблицу поместить уже посчитанное?
197 Ёпрст
 
18.07.13
10:33
(194) ну чего, слепил ?
Можешь видево снять, как сейчас форма "ездиет" ?..