Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) ТП и поставщики данных... (число прочтений - 11252 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
ТП и поставщики данных...
30. Января 2009 :: 21:33
Печать  
Я даже не знаю, задать сначала вопрос, а потом сказать что мне хочется, или сначала сказать что хочется, а потом задать вопрос...

Наверное второе. И... я бы хотел получить как можно более развернутый СОВЕТ куда мне двигаться и надо ли.
Дело в том, что на текущий момент у меня релизован набор классов под кодовым названием "ПоставщикДанных1С"... он является своего рода "нашлепкой" над поставщиком ИТЗ с целью поставки данных: Справочников, Документов, Индексированной таблицы, Списка значений и Многострочной части документов.
Т.е. в реалии он создает панель управления и само табличное поле, заполняет его и управляет им в дальнейшем. Т.о. это заменитель форм списков, журналов и т.п.
Но дело в том что меня не устраивает производительность данного модуля. Нет, ну все в нем работает быстро, панель управления, анализ метаданных и табличное поле - это самые мелкие затраты. Как всегда "работа с жестким" здесь самое долгое. Сбор данных организован через прямые запросы, которые не раз прогонялись на замерах... НО, не смотря на значительную скорость работы, меня тем не менее это не устраивает, справочник без иерархии с 10-15 тысячами элементов считывается по сети значительное время.
Так вот мне все время хочется прийти к методы работы форм списка самой 1С, т.е. считывать только часть данных, определенное количество строк, при прокрутке "дочитывать".
Но ведь не известно сколько строк влезет верно? И совершенно не понятно сколько строк "прокрутил" пользователь. Т.е. не хватает "ПриПрокруткеТабличногоПоля" или что-то в таком духе, и "количество строк на экране"... вот.
На текущий момент приходится все считывать, загонять в ИТЗ и его в качестве поставщика использовать.
С другими поставщиками к сожалению я не разбирался, и в виду этого у меня вопрос, как они работают.
Например: поставщик данных ODBC, он выполнит весь запрос, а потом результат вернет и с ним будет работать? Если например в SQL базе использовать данного поставщика получу ли я выигрышь во времени? и какой? Но как тогда быть с DBF?
Еще есть ProxyProvider насколько помню, или что-то в этом духе, который позволяет создавать своего поставщика данных? Имеет ли смысл попробовать реализовать на нем в сцепке с SQLite (DBF) и ODBC (SQL).
В общем мне нужен самый оптимальный способ работы с данными. Ведь на текущий момент даже "автообновление" не сделать, т.к. всегда боюсь что на каком справочнике программер не укажет, а пользователь не настроит и в итоге один запрос, будет перекрывать другой.
В общем вот... если кто что понял с удовольствием выслушаю его мнение. Спасибо за внимание  Подмигивание

Пы.сы. в каких то темах скрины проскакивали.. ну так для "хвастовства"  Очень довольный
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ТП и поставщики данных...
Ответ #1 - 31. Января 2009 :: 07:18
Печать  
Цитата:
На текущий момент приходится все считывать, загонять в ИТЗ и его в качестве поставщика использовать.
С другими поставщиками к сожалению я не разбирался, и в виду этого у меня вопрос, как они работают.
Например: поставщик данных ODBC, он выполнит весь запрос, а потом результат вернет и с ним будет работать?

Убил наповал.
Если ты хочешь полностью имитировать работу штатных объектов, то ты выбрал тупиковый путь реализации (загонять данные в ИТЗ или ТЗ).
Если попробуешь наконец поставщика данных ODBC, большинство твоих вопросов отпадут.
Например
Цитата:
Т.е. не хватает "ПриПрокруткеТабличногоПоля" или что-то в таком духе, и "количество строк на экране"... вот.

Просто оттрасируй запросы во время работы ТП и все поймешь.

Я давно уже перевел журнал и тяжелые справочники на полную имитацию их табличным полем с поставщиком ODBC.
Для именно полной (подчеркиваю) имитации работы пришлось конечно потрудиться, была куча засад.
Но результат окупил все.
  
Наверх
ICQ  
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: ТП и поставщики данных...
Ответ #2 - 31. Января 2009 :: 09:47
Печать  
>vip  31.01.2009 10:18
>Убил наповал ... ты выбрал тупиковый путь реализации (загонять данные в ИТЗ или ТЗ) ...

Придерживаюсь другого мнения и другой логики. В индексированную таблицу переписываю не всю выборку, а только её часть - страницу (например 250 строк).
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ТП и поставщики данных...
Ответ #3 - 31. Января 2009 :: 11:52
Печать  
Burlak писал(а) 31. Января 2009 :: 09:47:
>vip  31.01.2009 10:18
>Убил наповал ... ты выбрал тупиковый путь реализации (загонять данные в ИТЗ или ТЗ) ...

Придерживаюсь другого мнения и другой логики. В индексированную таблицу переписываю не всю выборку, а только её часть - страницу (например 250 строк).

Перепиши часть строк журнала при интенсивном вводе документов.
Или справочника - при интенсивном вводе элементов. И если справочник не 10-15 тыс. строк, а 300-400 тыс.
Я сам сначала не совсем понимал механизм работы ТП с поставщиком ODBC. Когда понял, окуел.
И вы через это пройдете.
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #4 - 31. Января 2009 :: 16:00
Печать  
vip писал(а) 31. Января 2009 :: 07:18:
Убил наповал.
Если ты хочешь полностью имитировать работу штатных объектов, то ты выбрал тупиковый путь реализации (загонять данные в ИТЗ или ТЗ).
Если попробуешь наконец поставщика данных ODBC, большинство твоих вопросов отпадут.


Вот собственно это я и хотел услышать Смех. Только не так круто.
Почему я выбрал этот метод (ну немного можно себя позащищать?)...
1. Когда я это делал то не было поставщика SQLite, а мне нужна была универсальность
2. На тот момент я вообще мало представлял работу 1С в этом плане (работы с формами списка) поэтому и выбрал "не тот путь".
С другой стороны... sqlite-поставщик до сих пор значительно уступает поставщику ODBC а мне (повторюсь) нужна универсальность без большой потери в качестве работы.
А отсутствие быстрого поиска в sqlite меня малость напрягает
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #5 - 31. Января 2009 :: 16:02
Печать  
vip писал(а) 31. Января 2009 :: 11:52:
И вы через это пройдете.

Обязательно пройдем. Даже при моем "стаже" работы с 1С++ я значительно уступаю многим тут, поэтому и спрашиваю советов.
В любом случае рассчитываю на продолжение дискуссии.
Счас уже решено, попробую переписать работу поставщика на ODBC, но как быть с DBF? Если запросы унификации поддаются то вот поставщик... впрочем ушел читать Документацию, и искать Orefkova.  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: ТП и поставщики данных...
Ответ #6 - 01. Февраля 2009 :: 11:31
Печать  
>vip  
>... Перепиши часть строк журнала при  ...
Может быть Вы отчасти и правы. Не имею богатого опыта работы с частями 1С. Но не могу понять, что мне даст ODBC, если надо выборку строк из справочника надо построить используя LIKE и вывести результат в отсортированном виде. Разбирая примеры, заметил что 1С-ки не любят так работать, но пользователям удобно.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #7 - 01. Февраля 2009 :: 19:40
Печать  
Переписал часть... блин... а ведь на самом деле потрясающая вещь. Вот что называется мудрый пинок под зад  Подмигивание
Осталось рассмотреть 1sqlite под микроскопом и сделать на нем.
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #8 - 01. Февраля 2009 :: 20:52
Печать  
Саш, в 1sqlite есть нормальный поставщик, который так же как и поставщик ОДБЦ подтягивает данные партиями. Да, действительно, напрягает тот факт, что там отсутствует возможность быстрого поиска, а без него ИМХО никуда  Печаль Саша Орефков говорил, что посмотрит и быть может реализует.... видать не до этого ему последнее время  Нерешительный

Конечно, хотелось бы иметь поставщика для OLEDB, но там другая засада - он не может считывать данные партиями. Даже если мы в запросе укажем TOP 10, то он отработает ВСЕ записи и только потом отрежит от них нужные нам 10.
В своё время Ужаст пытался написать провайдера, но также не срослось... (точнее сказать - кое-какие положительные результаты были, но опять же до Быстрого Поиска там было далеко)
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #9 - 02. Февраля 2009 :: 04:08
Печать  
JohnyDeath писал(а) 01. Февраля 2009 :: 20:52:
Саш, в 1sqlite есть нормальный поставщик, который так же как и поставщик ОДБЦ подтягивает данные партиями. Да, действительно, напрягает тот факт, что там отсутствует возможность быстрого поиска, а без него ИМХО никуда  Печаль Саша Орефков говорил, что посмотрит и быть может реализует.... видать не до этого ему последнее время  Нерешительный


Ну в принципе я планировал реализовать простой поиск аля Ctrl+F3 в стандартных формах списка, так что может быть не все так страшно. Счас допиливаю на ODBC, планирую сначала все релизовать на нем, счас уже большинство функционала сделал... когда сделаю поиск (взамен быстрого поиска) тогда и на 1sqlite буду пилить.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #10 - 03. Февраля 2009 :: 16:13
Печать  
Сделал через поставщика ODBC эмулятор формы списка. НО: есть много вопросов, или точнее мыслей чтобы помогли:
1. Как реализовать добавление строки в табличное поле без данных? Т.е. мне нужна просто пустая строка... ткнут в нее, я предложу редактирование (через ТабличноеПоле.РедактироватьЗначение(...)), потом если что создам элемент и выборку обновлю...
2. Как реализовать позиционирование на какой либо строке? Видел в каком то примере но найти не могу... документацию вроде хорошо прочитал, не понял
в принципе если решить пункт 2 тогда можно и поиск реализовать, а то быстрый поиск всегда с начала срабатывает, а мне бы надо с конкретной позиции... кстати такое поведение быстрого поиска вроде при поставщике ИТЗ я не замечал... или плохо смотрел Улыбка
Кстати на счет поиска... с одной стороны у меня реализован механизм отбора где можно отбор сделать с условием "НачинаетсяС", "Содержит", сдругой стороны отбор никак не равно поиск. В общем вот.  Круглые глаза Есть мысли у кого?
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ТП и поставщики данных...
Ответ #11 - 03. Февраля 2009 :: 17:14
Печать  
Цитата:
Сделал через поставщика ODBC эмулятор формы списка. НО: есть много вопросов, или точнее мыслей чтобы помогли:
1. Как реализовать добавление строки в табличное поле без данных? Т.е. мне нужна просто пустая строка... ткнут в нее, я предложу редактирование (через ТабличноеПоле.РедактироватьЗначение(...)), потом если что создам элемент и выборку обновлю...

Сделать ты может что-то и сделал, но смысла поставщика ODBC похоже так и не просек. Явно продолжаешь мыслить категориями поставщика ТЗ/ИТЗ. Иначе бы таких вопросов не задавал.
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП и поставщики данных...
Ответ #12 - 03. Февраля 2009 :: 18:35
Печать  
vip писал(а) 03. Февраля 2009 :: 17:14:
Цитата:
Сделал через поставщика ODBC эмулятор формы списка. НО: есть много вопросов, или точнее мыслей чтобы помогли:
1. Как реализовать добавление строки в табличное поле без данных? Т.е. мне нужна просто пустая строка... ткнут в нее, я предложу редактирование (через ТабличноеПоле.РедактироватьЗначение(...)), потом если что создам элемент и выборку обновлю...

Сделать ты может что-то и сделал, но смысла поставщика ODBC похоже так и не просек. Явно продолжаешь мыслить категориями поставщика ТЗ/ИТЗ. Иначе бы таких вопросов не задавал.

не ну я же за помощью пришел, за направлением, и если я мыслю не так как надо, ну направь правильно...
Если есть желание то можно подискутировать...
Хочется сделать универсальный класс, который бы мог полноценно заменить любую многострочную часть любого справочника. Т.е. по сути, я хочу получить аналог работы 1С 8.х. Ну и представим что я не хочу заставлять каждого проггера писать форму элемента для справочника, если это не надо... и вот как данность попадает к данному классу справочник с редактированием в списке. В итоге... как надо работать?
при нажатии кнопки добавить, добавлять новый элемент в базу и делать обновление строк? А смысл? А если он ошибся, и что потом, нажимать Del (Удалить), помечать на удаление и удалять через стандартный механизм? Или сделать возможность непосредственного удаления? (что тоже на мой взгляд не хорошо).
Может я на самом деле мыслю другими категориями, может я не до конца посмотрел аналогию работы 8-ки? Ну подскажи тогда, буду на самом деле очень признателен.  Подмигивание
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ТП и поставщики данных...
Ответ #13 - 03. Февраля 2009 :: 18:57
Печать  
1. Цитата:
Хочется сделать универсальный класс, который бы мог полноценно заменить любую многострочную часть любого справочника.

Давай проясним вопрос.
У меня такого желания универсальности совсем нет. Переделывал я только тяжелые справочники, в которых нужны отборы по очень сложным критериям. Результатом очень доволен.
2. Редактирование в списке я делаю только для простейших справочников и о применении ТП для них даже не задумывался.
Не представляю сложный справочник со многими реквизитами, который удобно редактировать в списке.
3. Запрет на непосредственное удаление делаю только самым бесправным юзерам. Остальным можно удалять.
Защищаюсь от битых ссылок так.
Наиболее болезненные к удалению справочники включаю в графы отбора и в ПриУдаленнииЭлемента() очень быстро проверяю первую же ссылку. Пусть это несколько избыточно, но зато избавляюсь от невыносимо долгого штатного поиска ссылок.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ТП и поставщики данных...
Ответ #14 - 03. Февраля 2009 :: 19:08
Печать  
vandalsvq писал(а) 03. Февраля 2009 :: 18:56:
Эх... жаль, ждал ответа, даже видел "vip (отвечающие)", а vip ушел и даже тени не осталось  Смущённый

И я тут, и тень моя тут Улыбка
Пример сложного отбора.
Показывать только товары, имеющиеся в наличии на 2-х складах из 7-ми, с остатком не менее 50 шт. и ценой не более 100 руб.
При этом сохранять привычную навигацию по группам и быстрый поиск.
Без ТП это невыполнимо.
Я начинал, как и ты с построения списка элементов прямым запросом, потом ИспользоватьСписокЭлементов(), потом свой механизм быстрого поиска в таком списке и прочий гемморой.
ТП стала настоящим спасением.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать