Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ТабличноеПоле - ПоставщикДанныхИТЗ (число прочтений - 4603 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ТабличноеПоле - ПоставщикДанныхИТЗ
05. Февраля 2007 :: 06:01
Печать  
Народ, сделал для Табличного поля поставщик данных от Индексированной Таблицы.
1) С простым вариантом по образу и подобию поставщика ТЗ нет никаких проблем. Там все тривиально.

2) Начал добавлять работу с индексами ИТЗ - идея в том, чтобы данные в ТП выбирались в соответствии с индексом.Например, если на индекс установлен фильтр, то в ТП будут видны данные, которые подпадают под условие фильтра.

И появилась большая проблема - ТП может выбирать данные из любого места ИТЗ, т.е используется прямой доступ к данным. А у ИТЗ при работе с индексами используется только последовательный доступ, т.е. возможны только последовательный итераторы (назад или вперед).
Вот и получается нестыковка.
Что посоветуете?

ЗЫ в ночную сборку пока не заливал.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #1 - 05. Февраля 2007 :: 06:09
Печать  
Т.е. у поставщика ТЗ есть ИД, по которому определяется уникальность строки - это номер строки.
И вся выборка в ТП идет по этому полю.
Если же использовать подобную схему для поставщика ИТЗ, как я и сделал, тогда приходится использовать прямой переход по номеру строки для индекса. А это очень тормозной путь Печаль

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

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #2 - 05. Февраля 2007 :: 19:22
Печать  
artbear писал(а) 05. Февраля 2007 :: 06:01:
И появилась большая проблема[/b] - ТП может выбирать данные из любого места ИТЗ, т.е используется прямой доступ к данным.

Нет там произвольного доступа в общем понимании.
Есть переход к строке и фактически дальнейшее итерирование.

artbear писал(а) 05. Февраля 2007 :: 06:09:
Если же использовать подобную схему для поставщика ИТЗ, как я и сделал, тогда приходится использовать прямой переход по номеру строки для индекса.


Цитата:
А это очень тормозной путь Печаль

На чем основано такое убеждение? (теория мне известна).
Вопрос - настолько ли он тормозной, как кажется?
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #3 - 05. Февраля 2007 :: 19:48
Печать  
+
И насколько часто переход по абсолютному номеру реально необходим?
Т.е. не может быть заменен навигацией по индексу относительно некоей известной точки в пределах окна ТП?
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #4 - 05. Февраля 2007 :: 20:59
Печать  
+
Там даже перемещения типа ->HOME ->END реализуются идеально.
Нужно только сделать грамотную навигацию по индексу и сервис для пересчета позиции в индексе (с которой будет работать ТП / провайдер ТП) в номер строки ИТ.

P.S.
А вот как сейчас сделана для поставщика ТЗ навигация по вертикальному слайдеру - это эх... это да... Плачущий
Бесконечный Fetch...


Вселенная конечна, но беспредельна... Как вам это нравится?
  

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


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #5 - 06. Февраля 2007 :: 05:19
Печать  
Я для себя уже решил, что в качестве ключа строки нужно использовать не номер строки, а пару - узел и номер в узле.
Плюс немного доработать ИТ на предмет прямого позиционирования на строку, указываемую этой парой-ключом.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #6 - 06. Февраля 2007 :: 08:57
Печать  
Это будет отдельный объект или сама ИТЗ будет поставщиком данных?
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #7 - 06. Февраля 2007 :: 09:54
Печать  
Видишь ли Дмитрий.

Если делать грамотно, тогда нужно делать 1 поставщик - сама ИТ.
Кстати, это красиво решает и некоторые архитектурные вопросы, которые неизменно проявятся.

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

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #8 - 06. Февраля 2007 :: 11:47
Печать  
Артур сказал, что будет делать качественно. Это главное.

По реализации я бы предложил сделать сначала отдельного поставщика, и отладить публичный интерфейс, а потом уже решить дальнейший вопрос о добавлении его в состав ИТ.

Не знаю, как с идеей о навигации по узлам и смещениям в узлах, у меня другое представление, как это должно выглядеть.
Но можно с чего-то начать, там видно будет.
  

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


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #9 - 06. Февраля 2007 :: 13:42
Печать  
kms писал(а) 06. Февраля 2007 :: 11:47:
По реализации я бы предложил сделать сначала отдельного поставщика, и отладить публичный интерфейс, а потом уже решить дальнейший вопрос о добавлении его в состав ИТ.

Не знаю, как с идеей о навигации по узлам и смещениям в узлах, у меня другое представление, как это должно выглядеть.
Но можно с чего-то начать, там видно будет.

Да, я начал именно с отдельного поставщика, чтобы разобраться с интерфейсами поставщиков.

Поделись своим представлением.
Я же ветку для этого и завел.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТабличноеПоле - ПоставщикДанныхИТЗ
Ответ #10 - 06. Февраля 2007 :: 15:49
Печать  
Дык я и делюсь с начала ветки - а ты говоришь, что "для себя уже все решил" Подмигивание

На самом деле позиционирование на номер индекса, а тем более в условиях визуальной компоненты - это не проблема.
Посмотри, как сейчас сделан быстрый поиск для ТЗ - а ведь никто на скорость не жалуется!
Посмотри метод "КоличествоСтрок" - разве он неэффективен?

Надо делать нетупого поставщика, который не каждый раз с нуля позиционируется на позицию в индексе, а использует известные ему предыдущие значения - это очень эффективные операции.
Нужно учесть, что ТП не выбирает строки произвольно, а итерирует с некоторой позиции.

Операции "в конец", "в начало" - как я уже отметил, также реализуются очень эффективно.

Будет вопрос - что делать с позицией в индексе, которую будет возвращать метод ТП::ТекущаяСтрока.
Думаю, некий сервис пересчета позиции в индексе в номер строки ИТ и обратно решит все проблемы.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать