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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
ProxyDataProvider
16. Мая 2008 :: 12:56
Печать  
по просьбам трудящихся
Теперь поставщика данных для ТП может попытаться написать каждый. Был бы повод и фантазия Улыбка

Документации нет, но есть немного примеров.
Будет хорошо, если кто-нибудь осилит написание описалова.
В качестве стартового мини-sdk (для понимания работы поставщиков ТП вообще) может служить раздел докуметации ТП Описание интерфейса поставщиков данных табличного поля

в атаче ВК и md с тремя КОПами (поставщики ИТ,ТЗ,ТЧ)

КОП-поставщик может реализовать следующий интерфейс (интерфейс QS пока недореализован):
//DataRow
"GetFieldCount",
"GetFieldIndexOf",
"GetFieldName",
"GetFieldType",
"FormatField",
"GetRowIndex",
"GetValue",
//Provider
"QueryRows",
"Fetch",
"RefreshRow",
"CompareRows",
"GetLastError",
"GetRowCount",
"QueryField",
"ReleaseField",
"GetQuickSearchType",
"QuickSearch",
"OnAttach",
"OnDetach",
"BuildRowByValue"


исходники
_1Common.7z
ProxyDataProvider_src.rar

ProxyDataProvider.rar
« Последняя редакция: 23. Июля 2013 :: 06:47 - trad »  

1&&2&&3
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #1 - 16. Мая 2008 :: 13:06
Печать  
trad писал(а) 16. Мая 2008 :: 12:56:
Теперь поставщика данных для ТП может попытаться написать каждый. Был бы повод и фантазия Улыбка

Уф, ну, слава богу. Теперь мне провайдера OLE DB для ТП можно не дописывать Улыбка

PS. Сырки, надеюсь, выложил?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ProxyDataProvider
Ответ #2 - 16. Мая 2008 :: 13:17
Печать  
Работает только с icpp?
С 2.5 нет?
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #3 - 16. Мая 2008 :: 13:20
Печать  
Uzhast писал(а) 16. Мая 2008 :: 13:06:
Уф, ну, слава богу. Теперь мне провайдера OLE DB для ТП можно не дописывать Улыбка

Торопишься  Улыбка, вдруг не кто не осилит  Подмигивание
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #4 - 16. Мая 2008 :: 13:30
Печать  
Uzhast писал(а) 16. Мая 2008 :: 13:06:
Уф, ну, слава богу. Теперь мне провайдера OLE DB для ТП можно не дописывать Улыбка
Сдается мне, ты зря расслабился...

Цитата:
PS. Сырки, надеюсь, выложил?

Дык ничего там такого нет. Грубая прослойка.
ссылки на исходники в #0
« Последняя редакция: 03. Июля 2008 :: 07:37 - trad »  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #5 - 16. Мая 2008 :: 13:31
Печать  
kiruha писал(а) 16. Мая 2008 :: 13:17:
Работает только с icpp?
С 2.5 нет?

проверял на последних версиях обоих. там написано на каких.
  

1&&2&&3
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #6 - 16. Мая 2008 :: 13:33
Печать  
trad писал(а) 16. Мая 2008 :: 13:30:
Цитата:
PS. Сырки, надеюсь, выложил?

Дык ничего там такого нет. Грубая прослойка.
http://trad.citykirov.ru/_1Common.rar
http://trad.citykirov.ru/ProxyDataProvider_src.rar

А я ни на что и не намекаю Улыбка Просто для использования какой-то компоненты очень желательно, чтобы либо автор ее постоянно поддерживал, либо, чтобы сырки были открыты. Зная твою ленивость... Подмигивание
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #7 - 16. Мая 2008 :: 13:34
Печать  
Ну вот а я столько писал поставщика кривого, тормазнутого и никому не нужного Смех . Хорошо то что хорошо  Подмигивание пошел смотреть.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #8 - 16. Мая 2008 :: 13:44
Печать  
Цитата:
Зная твою ленивость... Подмигивание
тут ты сильно прав
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #9 - 16. Мая 2008 :: 13:57
Печать  
Uzhast писал(а) 16. Мая 2008 :: 13:33:
Просто для использования какой-то компоненты очень желательно,...
Позволю себе совет. Не используй эту компоненту. Напиши сам - у тебя лучше получиться. А еще правильнее (пока не разработаны безопасные внешние интерфейсы в 1cpp) именно этот функционал включить в 1с++. Ибо, как показали последние изменения, данные CDataRow или CDataProvider подвержены температурным расширениям и ВК перестанет работать.
  

1&&2&&3
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #10 - 16. Мая 2008 :: 13:58
Печать  
trad

Мне тоже странно, что многие простые в реализации идеи остаются нереализованными.
Пойду подумаю, почему так получается.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #11 - 16. Мая 2008 :: 14:00
Печать  
trad писал(а) 16. Мая 2008 :: 13:57:
А еще правильнее (пока не разработаны безопасные внешние интерфейсы в 1cpp) именно этот функционал включить в 1с++.

Поддерживаю полностью.
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #12 - 16. Мая 2008 :: 14:10
Печать  
Если кто-то будет дописывать - мой brain-stream
По моему мнению необходимо реализовать базовий для КОПов класс из которого выставить методы ResetData(), SetCurrentRow() и, возможно, OnFieldsChanged().
КОП можно опционально от него наследовать, если конечно частной реализации потребуетсмя обратная связь с ТП. А она обязательно потребуется например для QS.
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #13 - 16. Мая 2008 :: 14:12
Печать  
ps
даа, написал же ДмитрО нетленку - ТП
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #14 - 18. Мая 2008 :: 07:07
Печать  
Хотел попробывать "ПоставщикаДанныхТЧ". В модуле формы документа написал:
Код
Выбрать все
Процедура ПослеСозданияФормы()
	Ф=СоздатьОбъект("Форма");
	тпТЧ=Ф.СоздатьЭлементУправленияНаФорме(Форма, "ТабличноеПоле", "тпТЧ");

	Пост=СоздатьОбъект("ПоставщикДанныхТЧ");
	Пост.УстановитьКонтекстДокумента(ТекущийДокумент());

	ПроксиПоставщик=СоздатьОбъект("ПроксиПоставщикДанных");
	ПроксиПоставщик.УстПоставщика(Пост);

	тпТЧ.Колонки.Добавить("НомерСтроки").Данные=НомерСтроки;
	мдДок=Метаданные.Документ(Вид());
	Для Тек=1 По мдДок.РеквизитТабличнойЧасти() Цикл
		ИДРекв=мдДок.РеквизитТабличнойЧасти(Тек).Идентификатор;
		тпТЧ.Колонки.Добавить(ИДРекв).Данные=ИДРекв;
	КонецЦикла;
	тпТЧ.ОбновитьСтроки();
КонецПроцедуры	// ПослеСозданияФормы 



В самом КОПе добавил:
Код
Выбрать все
Сообщить("QueryRows"); 


и
Код
Выбрать все
Сообщить("Fetch"); 


в соответствующие процедуры, дабы увидеть выполняются ли эти процедуры.
В итоге на форме я имею пустую ТП и ниодного сообщения. По нажатию на "Home",  "End" или при прокрутке колесом имеем вылет.

Что я делаю не так?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #15 - 18. Мая 2008 :: 10:18
Печать  
тпТЧ.ПоставщикДанных = ПроксиПоставщик;
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #16 - 18. Мая 2008 :: 11:35
Печать  
Кому интересно могут протестировать «поставщикаИТ» доработанного под свои нужды Подмигивание

http://www.1cpp.ru/forum/YaBB.pl?num=1210427348/6#6
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #17 - 19. Мая 2008 :: 07:26
Печать  
kms писал(а) 18. Мая 2008 :: 10:18:
тпТЧ.ПоставщикДанных = ПроксиПоставщик;

жесть  Смущённый походу в отпуск пора  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #18 - 02. Июня 2008 :: 12:24
Печать  
Народ, так будем вставлять в icpp ?
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #19 - 02. Июня 2008 :: 12:25
Печать  
Конечно пригодится!
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #20 - 02. Июня 2008 :: 13:12
Печать  
Обязательно!  Очень довольный
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #21 - 02. Июля 2008 :: 15:06
Печать  
trad писал(а) 16. Мая 2008 :: 13:30:

Не успел схватить.
Сейчас по этим ссылкам - 404.
А очень хочется Подмигивание
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #22 - 03. Июля 2008 :: 03:25
Печать  
steban писал(а) 02. Июля 2008 :: 15:06:
trad писал(а) 16. Мая 2008 :: 13:30:

Не успел схватить.
Сейчас по этим ссылкам - 404.
А очень хочется Подмигивание

+1
Готов заняться внесением кода в 1С++
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #23 - 03. Июля 2008 :: 05:17
Печать  
В свете последних приятных событий очень захотелось "QuickSearch". Просто, как мне кажется, менять штатные журналы и списки без этого интерфейса не имеет смысла.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #24 - 03. Июля 2008 :: 06:47
Печать  
steban писал(а) 02. Июля 2008 :: 15:06:
trad писал(а) 16. Мая 2008 :: 13:30:

Не успел схватить.
Сейчас по этим ссылкам - 404.
А очень хочется Подмигивание

Качай заново, Дима восстановил ссылки.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #25 - 03. Июля 2008 :: 06:54
Печать  
Спасибо Улыбка
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #26 - 03. Июля 2008 :: 07:27
Печать  
только что еще раз обновил, перекачайте
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #27 - 03. Июля 2008 :: 07:31
Печать  
  

1&&2&&3
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #28 - 03. Июля 2008 :: 08:16
Печать  
Занялся вопросом переноса прокси-поставщика в 1С++.
В 3.0 переношу однозначно.

Вопрос - нужно ли данного поставщика реализовывать для 2.5 ?

Честно говоря, не хочется Печаль
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #29 - 03. Июля 2008 :: 08:24
Печать  
artbear писал(а) 03. Июля 2008 :: 08:16:
Занялся вопросом переноса прокси-поставщика в 1С++.
В 3.0 переношу однозначно.

Вопрос - нужно ли данного поставщика реализовывать для 2.5 ?

Честно говоря, не хочется Печаль

Давно на 3.0  Класс
А QS, будет?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #30 - 03. Июля 2008 :: 08:24
Печать  
artbear писал(а) 03. Июля 2008 :: 08:16:
Занялся вопросом переноса прокси-поставщика в 1С++.
В 3.0 переношу однозначно.

Вопрос - нужно ли данного поставщика реализовывать для 2.5 ?

Честно говоря, не хочется Печаль

Ты ж релиз собирался выпускать.

А как согласуется новый функционал и выпуск релиза?
Примерно как рыбалка и здоровый образ жизни.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #31 - 03. Июля 2008 :: 08:29
Печать  
Ну вдруг кому-то очень нужно сидеть на 2.5 Улыбка
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ProxyDataProvider
Ответ #32 - 03. Июля 2008 :: 08:52
Печать  
А возможно ли реализовать работу с приближенным "количеством строк в наборе данных" (GetRowCount) ?

Дело в том, что родные списки 1С поддерживают позиционирование бегунка в вертикальной прокрутке.
Фактическое же вычисление количества строк зачастую требует считывания всей таблицы(если есть условие WHERE),
а не только страницы - что существенно замедляет обновление.
Пользователю это удобно, но точное позиционирование в наборе - ему по барабану, достаточно приблизительное.

Или хотя бы в процедуре GetRowIndex добавить возможность управлять
индексом (для определения относительного положения строки)
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #33 - 03. Июля 2008 :: 09:09
Печать  
artbear писал(а) 03. Июля 2008 :: 03:25:
Готов заняться внесением кода в 1С++

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

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #34 - 03. Июля 2008 :: 09:13
Печать  
kiruha писал(а) 03. Июля 2008 :: 08:52:
А возможно ли реализовать работу с приближенным "количеством строк в наборе данных" (GetRowCount) ?

А что сейчас мешает?
Мне, правда, непонятно, как определять примерное количество строк и примерный индекс.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #35 - 03. Июля 2008 :: 09:19
Печать  
kms писал(а) 03. Июля 2008 :: 09:09:
artbear писал(а) 03. Июля 2008 :: 03:25:
Готов заняться внесением кода в 1С++

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

Код уже залил в репозитарий.
Сейчас буду выкладывать сборку 3.0.1.7

С докой пока сложнее, думаю над ней Улыбка
  

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: ProxyDataProvider
Ответ #36 - 03. Июля 2008 :: 09:24
Печать  
Выложена очередная сборка icpp под номером 3.0.1.7

Цитата:
[-] http://www.1cpp.ru/bugs/show_bug.cgi?id=3845
[+] реализован объект ПроксиПоставщикДанных / ProxyDataProvider - для возможности написания поставщиков данных для ТП на языке 1С с помощью классов 1С++
  

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: ProxyDataProvider
Ответ #37 - 03. Июля 2008 :: 09:26
Печать  
artbear писал(а) 03. Июля 2008 :: 09:19:
Код уже залил в репозитарий.

Можно было прямо в CursorGrid залить.

Цитата:
Сейчас буду выкладывать сборку 3.0.1.7

Ты на каждую сборку теперь тэг ставишь?
В принципе, удобно.
Но вот как сделать, чтобы при коллективной работе на коллизии не нарваться?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #38 - 03. Июля 2008 :: 09:29
Печать  
artbear писал(а) 03. Июля 2008 :: 09:24:
Выложена очередная сборка icpp под номером 3.0.1.7

Цитата:
[-] http://www.1cpp.ru/bugs/show_bug.cgi?id=3845
[+] реализован объект ПроксиПоставщикДанных / ProxyDataProvider - для возможности написания поставщиков данных для ТП на языке 1С с помощью классов 1С++

Обратите внимание на совпадение имен классов в 1С++ и исходной ВК, не путайтесь с загрузкой.
  

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: ProxyDataProvider
Ответ #39 - 03. Июля 2008 :: 09:31
Печать  
kms писал(а) 03. Июля 2008 :: 09:26:
artbear писал(а) 03. Июля 2008 :: 09:19:
Код уже залил в репозитарий.

Можно было прямо в CursorGrid залить.

Цитата:
Сейчас буду выкладывать сборку 3.0.1.7

Ты на каждую сборку теперь тэг ставишь?
В принципе, удобно.
Но вот как сделать, чтобы при коллективной работе на коллизии не нарваться?

Коллизии никак не исключишь Улыбка без анализа последних коммитов.
Просто последние сборки я работал исключительно один в 1С++, тебя не было, поэтому я так уверенно ставлю номера и теги.
  

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: ProxyDataProvider
Ответ #40 - 03. Июля 2008 :: 09:34
Печать  
kms писал(а) 03. Июля 2008 :: 09:26:
artbear писал(а) 03. Июля 2008 :: 09:19:
Код уже залил в репозитарий.

Можно было прямо в CursorGrid залить.

Если хочешь, перезалей Улыбка
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ProxyDataProvider
Ответ #41 - 03. Июля 2008 :: 09:34
Печать  
kms писал(а) 03. Июля 2008 :: 09:13:
kiruha писал(а) 03. Июля 2008 :: 08:52:
А возможно ли реализовать работу с приближенным "количеством строк в наборе данных" (GetRowCount) ?

А что сейчас мешает?
Мне, правда, непонятно, как определять примерное количество строк и примерный индекс.


Пользователь листает таблицу, например журнал документов.
Пока в середине - все ОК.  Исходное количество(строк в наборе) прокатывает.
Переходит в конец - тоже жить можно - добавились строки в таблице (в журнале) - увеличили количество(строк в наборе).
Переходит в начало - тут засада - если фактически строк больше(пока листали кто-то вбил докум. задним числом) - перед "первой" уже не отобразить, если меньше - выводятся пустые строки.
Вот поэтому хочется сказать строке, что она не "10" а например "1" в наборе.

P/S Или какой другой способ -  отобразить ползунок вертикальной прокрутки для табличного
поля, соответствующего журналу документов, если использовать только "страничные" запросы.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #42 - 04. Июля 2008 :: 09:10
Печать  
Да, проблема с артефактами при неточных данных понятна.
Я правда тестировал провайдер ТЗ на приблизительных данных (приблизительный GetRowCount()), там проблемы выглядят по-другому.
Там артефакты появляются только в конце данных и выглядят как зависание скроллбара (при недостатке данных) или как недомотка скроллбаром до конца (при избытке данных).
Не очень понятно, как у тебя получаются пустые строки в начале.

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

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ProxyDataProvider
Ответ #43 - 04. Июля 2008 :: 09:49
Печать  
А можно тогда такую хотелку -
в случае когда "поставщик НЕ поддерживает определение относительного положения записи во всем наборе данных"
чтобы при захвате вертикального ползунка мышью и его перемещении - также велась вертикальная
прокрутка страниц, аналогичная "щелканью" мышью над/под ползунком.

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

P.S> а если при этом еще в зависимости от удаленности ползунка от середины менялась бы
скорость прокрутки - вообще песня  Улыбка

В багзилле
http://www.1cpp.ru/bugs/show_bug.cgi?id=3965
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #44 - 04. Июля 2008 :: 09:53
Печать  
Думаю, надо бы сделать.
Если будет время, напиши в багзиллу, чтоб не потерялось.
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #45 - 23. Июля 2008 :: 05:12
Печать  
artbear писал(а) 03. Июля 2008 :: 09:19:
С докой пока сложнее, думаю над ней Улыбка

что-нибудь придумалось?
  

1&&2&&3
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #46 - 23. Июля 2008 :: 05:25
Печать  
Неа, пока ничего Печаль
  

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: ProxyDataProvider
Ответ #47 - 23. Июля 2008 :: 05:56
Печать  
kiruha писал(а) 04. Июля 2008 :: 09:49:
А можно тогда такую хотелку -
в случае когда "поставщик НЕ поддерживает определение относительного положения записи во всем наборе данных"
чтобы при захвате вертикального ползунка мышью и его перемещении - также велась вертикальная
прокрутка страниц, аналогичная "щелканью" мышью над/под ползунком.

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

P.S> а если при этом еще в зависимости от удаленности ползунка от середины менялась бы
скорость прокрутки - вообще песня  Улыбка

В багзилле
http://www.1cpp.ru/bugs/show_bug.cgi?id=3965

Сделал, никто не жалуется (вчера жалоб не было, а сегодня их число несколько снизилось). Улыбка
Ну, в принципе, и хорошо - у меня уже все привыкли.
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ProxyDataProvider
Ответ #48 - 23. Июля 2008 :: 06:53
Печать  
kms писал(а) 23. Июля 2008 :: 05:56:
kiruha писал(а) 04. Июля 2008 :: 09:49:
А можно тогда такую хотелку -
в случае когда "поставщик НЕ поддерживает определение относительного положения записи во всем наборе данных"
чтобы при захвате вертикального ползунка мышью и его перемещении - также велась вертикальная
прокрутка страниц, аналогичная "щелканью" мышью над/под ползунком.

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

P.S> а если при этом еще в зависимости от удаленности ползунка от середины менялась бы
скорость прокрутки - вообще песня  Улыбка

В багзилле
http://www.1cpp.ru/bugs/show_bug.cgi?id=3965

Сделал, никто не жалуется (вчера жалоб не было, а сегодня их число несколько снизилось). Улыбка
Ну, в принципе, и хорошо - у меня уже все привыкли.


Огроменное спасибо Улыбка
Думаю, теперь определять точное количество в наборе - нет необходимости )
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #49 - 23. Июля 2008 :: 16:42
Печать  
Отрадно. Улыбка

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

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #50 - 23. Июля 2008 :: 19:08
Печать  
С ползунком красиво получилось! Спасибо!  Улыбка
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #52 - 25. Июля 2008 :: 06:07
Печать  
PVR писал(а) 25. Июля 2008 :: 05:48:
Обьясните пожалуйста подробно работу верт. прокрутки  Смущённый
Все радуются, а у меня  Печаль

Дык потягай ползунок в ТП и все увидишь.
А получилось действительно классно.
  
Наверх
ICQ  
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #53 - 25. Июля 2008 :: 06:13
Печать  
vip писал(а) 25. Июля 2008 :: 06:07:
Дык потягай ползунок в ТП и все увидишь.
А получилось действительно классно.

В том и дело что увидел что вроде должно быть все класс только на моём копе все ужасно отразилось,
бегунок либо в верхней позиции или в нижней, редко в средней, до конца не прокручивает  Печаль

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #54 - 25. Июля 2008 :: 06:24
Печать  
Ничего не понял.

В верхней позиции - это начало данных.
В нижней позиции - это конец данных.
В середине - это неизвестно где.

Это все - для поставщиков, которые не поддерживают предоставление информации о количестве строк.

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

P.S.
Только, чтобы нормально понять, тестируй на поставщике ИТ (с установленным индексом) или поставщике MSSQL.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #55 - 25. Июля 2008 :: 06:30
Печать  
А, да.
И не забудь, что если ты бросаешь бегунок в самом вверху или в самом низу - это команда на переход в самый верх или в самый низ, соответственно.
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #56 - 25. Июля 2008 :: 06:34
Печать  
kms
я видел как это клево работает на поставщиках ИТ и SQLite.

вопрос в том как добится такого поведения в поставщике 1С ?

может тест написать для наглядности ?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #57 - 25. Июля 2008 :: 06:41
Печать  
PVR писал(а) 25. Июля 2008 :: 06:34:
я видел как это клево работает на поставщиках ИТ и SQLite.
вопрос в том как добится такого поведения в поставщике 1С ?
может тест написать для наглядности ?

А, теперь ясно.

Я думаю, тест не потребуется.
Просто тебе надо, чтобы поставщик перестал предоставлять некорректную информацию о количестве строк.
Это два метода:
- GetRowCount - для провайдера
- GetRowIndex - для строки

Наверное, Дима (trad) подскажет, как они называются в коде 1С и что должны возвращать.

PVR писал(а) 25. Июля 2008 :: 06:13:
чтоб тоже быть очень довольным!

Чтоб тебе быть очень довольным! Подмигивание
  

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



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


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

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

Гы.
Боюсь, Дима на меня обидится за такие отсылки.

Все-таки заглянул в код поставщиков.
Как ни странно, методы так и называются Улыбка

Попробуй в обоих (главное - в GetRowCount) возвращать 0, например.
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #60 - 25. Июля 2008 :: 07:04
Печать  
kms писал(а) 25. Июля 2008 :: 06:41:
Это два метода:
- GetRowCount - для провайдера
- GetRowIndex - для строки

Наверное, Дима (trad) подскажет, как они называются в коде 1С и что должны возвращать.

PVR писал(а) 25. Июля 2008 :: 06:56:
Дима, жду подсказки от тебя Улыбка

Они так и называются. См. первый пост ветки.
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #61 - 25. Июля 2008 :: 07:05
Печать  
kms писал(а) 25. Июля 2008 :: 07:01:
Как ни странно, методы так и называются Улыбка
действительно, странно  Улыбка
  

1&&2&&3
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #62 - 25. Июля 2008 :: 07:10
Печать  
kms, trad, спасибо!
уже догадался:
Цитата:
Попробуй в обоих (главное - в GetRowCount) возвращать 0, например.

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



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


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

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

Если время позволяет, может быть ты тогда тест небросаешь?
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #65 - 25. Июля 2008 :: 10:11
Печать  
kms писал(а) 25. Июля 2008 :: 09:53:
PVR писал(а) 25. Июля 2008 :: 07:21:
+ при прокрутке до упора вниз, вверх уже не поднимается(срабатывает только после перезахвата бегунка) Печаль

Если время позволяет, может быть ты тогда тест небросаешь?


Может целиком отчет для ТиС с классами?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #66 - 25. Июля 2008 :: 10:20
Печать  
PVR писал(а) 25. Июля 2008 :: 10:11:
Может целиком отчет для ТиС с классами?

Да не вопрос.
Только если будет слишком сложно для понимания, я с горя пойду читать анегдоты.

P.S.
Для поставщиков ИТ/MSSQL аналогичный эффект не проявляется?
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #67 - 25. Июля 2008 :: 11:08
Печать  
Там вроде не сложно и возможно интересно Улыбка

P.S.
Детализация по Номенклатуре, + Итоги по Группам.

Если покрутить колесико мышки вверх-вниз, последняя строка появляется Озадачен
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #68 - 25. Июля 2008 :: 19:30
Печать  
PVR писал(а) 25. Июля 2008 :: 11:08:
Там вроде не сложно и возможно интересно Улыбка

P.S.
Детализация по Номенклатуре, + Итоги по Группам.

Если покрутить колесико мышки вверх-вниз, последняя строка появляется Озадачен

Ну, сделано красиво, эт правда. Улыбка

Если я правильно понял, проблема в том, что при развороте уровней и перемещении ползуна в самый низ, ты не видишь последнюю строчку с данными?
У меня это "Расходы на хранение".
И только промотка вверх-вниз или свертка-развертка узла позволяет ее увидеть?

Такой дефект я вижу.
Но он проявляется и при простом нажатии END на клавиатуре.

Попробуй использовать мой (встроенный) класс поставщика ИТ.
Будет ли с ним проявляться проблема?
  

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


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

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

Так что
kms писал(а) 25. Июля 2008 :: 19:30:
Попробуй использовать мой (встроенный) класс поставщика ИТ.

Ну, либо подкрутить прокси-реализацию.

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


  

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



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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #71 - 25. Июля 2008 :: 20:23
Печать  
PVR писал(а) 25. Июля 2008 :: 20:20:
Тоесть поставщика 1C или мой класс?
Если моя ошибка то где, или она не решаема?

Не твоя ошибка, а ошибка поставщика ИТ для прокси поставщика.
Так что ты здесь не причем Улыбка
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #72 - 25. Июля 2008 :: 20:24
Печать  
А твоя ошибка в ТПОтчетДерево:

Код
Выбрать все
	Прокси =СоздатьОбъект("ТПОтчетДерево.ПоставщикДанныхИТ");
	ИНТЗ=Прокси.гИТ;
	ПроксиПоставщик=СоздатьОбъект("ПроксиПоставщикДанных");
	ПроксиПоставщик.УстПоставщика(Прокси);
 



надо заменить на:      
Код
Выбрать все
	ИНТЗ =СоздатьОбъект("ИндексированнаяТаблица");
	ПроксиПоставщик =СоздатьОбъект("ПоставщикДанныхИТ");
	ПроксиПоставщик.ИндексированнаяТаблица = ИНТЗ;
 



ну и может быть еще кое-что по-ходу, тебе виднее. Улыбка
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ProxyDataProvider
Ответ #73 - 25. Июля 2008 :: 20:30
Печать  
Ты советуеш использовать стандартый поставшик ИТ.
Если так, то это возможно будет сделать только если в ИТ появится возможность накладывать фильтр по индексу+колонкаИТ  Печаль
Я уже писал о этой хотелке  Печаль
« Последняя редакция: 26. Июля 2008 :: 08:17 - PVR »  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #74 - 25. Июля 2008 :: 20:32
Печать  
А, да, я вспомнил. Не, это нереально.
Тогда, Слав, пили этого поставщика, тока на ТП не жалуйся.
  

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



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

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

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


Теперь не залипает, Спасибо  Очень довольный
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ProxyDataProvider
Ответ #91 - 13. Августа 2008 :: 09:23
Печать  
PVR писал(а) 13. Августа 2008 :: 07:35:
Теперь не залипает, Спасибо  Очень довольный

На здоровье. Улыбка
Чтобы kiruhi'ны менеджеры не растеряли чувство удовлетворенности, пришлось сделать "адаптивный" бегунок.
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #92 - 20. Сентября 2008 :: 09:06
Печать  
релиз 1.1.0.2
Выполнена небольшая доработка для осуществления обратной связи с контролом ТП. (например для реализации QS)

Интерфейс дополнен методами:
OnFieldsChanged()
SetCurrentRow(Row)
ResetData(Row)
- эти методы реализованы у специального класса BaseDataProvider, который может быть базовым для КОП-поставщика.
Описание методов см. sdk по поставщикам ТП.
ВК и исходники на своих местах.

небольшой шаблон-пример для QS:
Код
Выбрать все
Функция GetQuickSearchType(ИмяПоля) Экспорт
    Возврат 1; //0-поиска нет, 1-поиск текстовый
КонецФункции

Процедура QuickSearch(ИмяПоля,ТипПоиска,Данные) Экспорт
    //выполняем поиск строки по специфичному для текущего поставщика алгоритму
    Row = ... //в итоге получаем объект идентифицирующий строку
    Сам().SetCurrentRow(Row); //вызов callback метода интерфейса
КонецПроцедуры 

  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #93 - 20. Сентября 2008 :: 09:34
Печать  
пример реализации QS для поставщика ТЗ.
Код
Выбрать все
Функция GetQuickSearchType(FieldName) Экспорт
	Если FieldName="" Тогда
		Возврат 0;
	ИначеЕсли FieldName="НомерСтроки" Тогда
		Возврат 0;
	КонецЕсли;
	Возврат 1;
КонецФункции

Процедура QuickSearch(FieldName,DataType,Data) Экспорт
	СтрПоиска=Врег(Data);
	Длина=СтрДлина(Data);
	Для ТекДлинаОбр=0 По Длина-1 Цикл
		ТекДлина=Длина-ТекДлинаОбр;
		ТекСтрПоиска=Лев(СтрПоиска,ТекДлина);
		Для ТекСтр=1 По гТЗ.КоличествоСтрок() Цикл
			Значение=гТЗ.ПолучитьЗначение(ТекСтр,FieldName);
			Если Врег(Лев(Значение,ТекДлина))=ТекСтрПоиска Тогда
				Сам(Контекст).SetCurrentRow(ТекСтр);
				Data=Лев(Data,ТекДлина);
				Возврат;
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	Data="";;
КонецПроцедуры
 

  

1&&2&&3
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ProxyDataProvider
Ответ #94 - 25. Сентября 2008 :: 16:10
Печать  
Off-Topic replies have been moved to this Topic.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать