Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7  ОтправитьПечать
Очень популярная тема (более 25 ответов) ProxyDataProvider (число прочтений - 46064 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #75 - 25. Июля 2008 :: 20:40
Печать  
Да, вот еще что:
у тебя в поставщике плохая логика промотки от конца в начало

При переходе в самый низ вызывается QueryRows с pRowFrom =NULL, и отрицательным количеством строк.
Тут тебе надо это дело обыграть - типа гИТ. ВКонец(), что-то в этом роде.
Ну, примерно, как это сделано у тебя при переходе в самое начало.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #76 - 25. Июля 2008 :: 20:44
Печать  
Цитата:
Не, это нереально.

Почему не реальнно?
Ведь всё, что можно реализовать на 1С, с легкостью реализуется на С++ Круглые глаза
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #77 - 25. Июля 2008 :: 20:48
Печать  
Потому что в худшем случае такой фильтр вырождается в тупой перебор колонки с линейным временем поиска.
И кому оно надо?

А напомни, что мешает тебе построить индекс в ИТ, включающий эту колонку?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #78 - 25. Июля 2008 :: 20:52
Печать  
Перестройка индекса при развороте узлов занимает много времени Печаль
Такой фильтр и реализован специально в этом поставщике, чтоб избавится от перестройки индекса (используется спец колонка показать 1 или 0, она решает быстрое заполнение показа строк по индексу без перестройки индексов в ИТ).
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #79 - 25. Июля 2008 :: 20:57
Печать  
Цитата:
Потому что в худшем случае такой фильтр вырождается в тупой перебор колонки с линейным временем поиска.
И кому оно надо?

Прокрутка в ТП это и есть линейный перебор по индексу, но с доп. условием показать или нет Подмигивание
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #80 - 25. Июля 2008 :: 21:32
Печать  
Может кто нибудь сделал что то подобное с сортировкой и разворотами по уровням, но в более быстрой реализации чем у меня, просьба поделится Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #81 - 25. Июля 2008 :: 21:33
Печать  
PVR писал(а) 25. Июля 2008 :: 20:52:
Перестройка индекса при развороте узлов занимает много времени Печаль
Такой фильтр и реализован специально в этом поставщике, чтоб избавится от перестройки индекса (используется спец колонка показать 1 или 0, она решает быстрое заполнение показа строк по индексу без перестройки индексов в ИТ).

Да, ясно.
Перестроение индекса при заполнении колонки, участвующей в индексе, действительно выполняется очень долго.
Если честно, я не ожидал, что все так непросто.

Лады, как дойдут руки до игр с деревьями, буду много думать на эту тему.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #82 - 25. Июля 2008 :: 21:37
Печать  
PVR писал(а) 25. Июля 2008 :: 21:32:
Может кто нибудь сделал что то подобное с сортировкой и разворотами по уровням, но в более быстрой реализации чем у меня, просьба поделится Улыбка

Ну, ты еще можешь взять поставщика 1sqlite.
Но там опять же будет схема с index seek + index scan, т.е. ничего нового. Подмигивание
Так что ты тут на острие прогресса, только неточности, о которых я выше говорил, надо поправить.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #83 - 26. Июля 2008 :: 09:08
Печать  
Цитата:
Короче, это дефект данного поставщика ИТ - плагина к прокси-поставщику.
Он некорректно работает с промоткой от конца вверх.

И от верха в конец. Поправить возможно ?

Цитата:
Вот это, кстати, тоже неверно, если в планах есть корректное использование фильтра:
Код:
Код
Выбрать все
Функция RefreshRow(RowFrom) Экспорт
	Возврат 1;
КонецФункции 

Можно подробнее? Я взял из примера  Смущённый

С переходом в конец разобрался(исправил), СПАСИБО Улыбка

Вот исправленная версия:
  

TP_IT.7z ( 6 KB | Загрузки )
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #84 - 26. Июля 2008 :: 09:39
Печать  
PVR писал(а) 26. Июля 2008 :: 09:08:
И от верха в конец. Поправить возможно ?

С переходом в конец разобрался(исправил), СПАСИБО Улыбка

О. Работает. Подмигивание
В принципе, можно в начало/в конец/на строку переходить прямо в QueryRows, а в Fetch - уже только проматывать.

А что там с переходом от верха в конец?
Вроде все нормально.

Цитата:
Цитата:
Вот это, кстати, тоже неверно, если в планах есть корректное использование фильтра:
Код:
Код
Выбрать все
Функция RefreshRow(RowFrom) Экспорт
	Возврат 1;
КонецФункции 

Можно подробнее? Я взял из примера  Смущённый


Ну, смысл RefreshRow() в чем: убедиться, что эта строка все еще принадлежит набору данных. Т.е. не пропала.
Если строка пропала из набора данных, а ты возвращаешь 1, то дальше могут поджидать различные проблемы в разных местах.

Для твоего провайдера ИТ - RefreshRow может возвращать единицу, если
1. Ты можешь найти эту строку в ИТ-источнике данных (гИТ), с учетом индекса и фильтра
2. Колонка-признак по-прежнему равна 1
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #85 - 26. Июля 2008 :: 10:37
Печать  
Цитата:
В принципе, можно в начало/в конец/на строку переходить прямо в QueryRows, а в Fetch - уже только проматывать.

Нельзя, пробывал, будет ошибка первой строки НЕТ, хотя возможно это первоночальное заполнение, попробую разобраться Улыбка

Цитата:
А что там с переходом от верха в конец?
Вроде все нормально.

Если бегунок дотащили до конца вниз, то вверх уже не тащит(аналогично в обратную)  Печаль

RefreshRow, у меня всегда должен быть 1 (если что-то развернули или любой чих, то это новый набор данных) Подмигивание

В классах есть ещё недоработки, малек исправлю выложу в ветке "Класс ТПОтчетДерево"  Подмигивание

Очередное СПАСИБО  Улыбка
« Последняя редакция: 28. Июля 2008 :: 20:17 - PVR »  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #86 - 26. Июля 2008 :: 10:57
Печать  
PVR писал(а) 26. Июля 2008 :: 10:37:
Цитата:
В принципе, можно в начало/в конец/на строку переходить прямо в QueryRows, а в Fetch - уже только проматывать.

Нельзя, пробывал, будет ошибка первой строки НЕТ, хотя возможно это первоночальное заполнение, попробую разобраться Улыбка

Если перенести в QueryRows, то перестают отрабатывать HOME и END Печаль
Оставим как есть (не зря добавил гСтр) Подмигивание
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #87 - 28. Июля 2008 :: 12:26
Печать  
PVR писал(а) 26. Июля 2008 :: 10:37:
Если бегунок дотащили до конца вниз, то вверх уже не тащит(аналогично в обратную)  Печаль

А, я понял.
Ты имеешь в виду - с самого начала дотащили до самого конца - а пока не отпустишь - обратно наверх отмотать нельзя?
Действительно, не очень удобно.

Ну, могу сделать, чтобы дельта считалась не от точки захвата бегунка, а всегда от середины скроллбара.
Но тогда придется в самом верху и в самом низу сначала до середины скроллбара бегунок дотаскивать.
Хз, как удобнее... ну, давайте попробуем Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #88 - 28. Июля 2008 :: 12:57
Печать  
kms писал(а) 28. Июля 2008 :: 12:26:
Хз, как удобнее... ну, давайте попробуем Улыбка

Попробуем Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ProxyDataProvider
Ответ #89 - 28. Июля 2008 :: 12:58
Печать  
kms писал(а) 28. Июля 2008 :: 12:26:
PVR писал(а) 26. Июля 2008 :: 10:37:
Если бегунок дотащили до конца вниз, то вверх уже не тащит(аналогично в обратную)  Печаль

А, я понял.
Ты имеешь в виду - с самого начала дотащили до самого конца - а пока не отпустишь - обратно наверх отмотать нельзя?
Действительно, не очень удобно.

Ну, могу сделать, чтобы дельта считалась не от точки захвата бегунка, а всегда от середины скроллбара.
Но тогда придется в самом верху и в самом низу сначала до середины скроллбара бегунок дотаскивать.
Хз, как удобнее... ну, давайте попробуем Улыбка


Для наших манагеров это слишком сложно
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 
ОтправитьПечать