Переключение на Главную Страницу Страницы: 1 ... 13 14 [15] 16  ОтправитьПечать
Очень популярная тема (более 25 ответов) Провайдер OLE DB для ТП (число прочтений - 69186 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #210 - 15. Ноября 2007 :: 12:19
Печать  
Uzhast писал(а) 15. Ноября 2007 :: 12:17:
Nick писал(а) 15. Ноября 2007 :: 12:10:
INDEX ON eExpression TO IDXFileName | TAG TagName [BINARY]
  [COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
  [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]

А обновлять этот индекс в других сеансах 1С Пушкин будет? Подмигивание Они же про него не знают. Тут только DD править и следить за одинэсиной, чтобы она при следующем сохранении конфигурации этот индекс не выкинула.  Круглые глаза Кто-нибудь пробовал? Улыбка

Уже обсуждалось. trad даже выложил скрипт extDD
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #211 - 15. Ноября 2007 :: 12:23
Печать  
JohnyDeath писал(а) 15. Ноября 2007 :: 12:19:
Uzhast писал(а) 15. Ноября 2007 :: 12:17:
Nick писал(а) 15. Ноября 2007 :: 12:10:
INDEX ON eExpression TO IDXFileName | TAG TagName [BINARY]
  [COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
  [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]

А обновлять этот индекс в других сеансах 1С Пушкин будет? Подмигивание Они же про него не знают. Тут только DD править и следить за одинэсиной, чтобы она при следующем сохранении конфигурации этот индекс не выкинула.  Круглые глаза Кто-нибудь пробовал? Улыбка

Уже обсуждалось. trad даже выложил скрипт extDD


Ну вот, всё уже есть Улыбка
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #212 - 15. Ноября 2007 :: 12:28
Печать  
На самом деле в журналах документов чаще всего приходится фильтровать по полям, являющиеся типом Справочник, который уже имеет индекс по наименованию (а индексы по другим полям справочника можно штатно в конфигураторе сделать).
Да и вообще: есть индекс по полю - летаем. Нет индекса - ну и х#р с ним, подождем чуток. Или такая идеология здесь не прокатит?
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #213 - 17. Мая 2008 :: 02:49
Печать  
Итак, после долгого перерыва мы снова в эфире.
Сегодня в icpp добавлена возможность взаимодействия с внешними провайдерами для OLE DB. Выкладываю новую версию провайдера и обновленную 1cpp.dll.

Напоминаю, как использовать провайдер:
- CursorGrid.Provider.OleDb.VFP.dll должна быть доступна через ЗагрузитьВнешнююКомпоненту.
- QueryRows.prg должен находиться в каталоге базы.
- "Тест провайдера.ert" используется для демонстрации работы статического провайдера (один раз выполняет запрос и отображает его в ТП)
- "Тест провайдера (динамика).ert" используется для демонстрации динамического провайдера (аналогичен (в чем-то) провайдеру для ODBC).

Провайдер выкладываю, чтобы была возможность сравнивать провайдеры, созданные на основе универсального провайдера, с этим провайдером - написанном на C++. Если на универсальном провайдере будут получаться решения не уступающие по скорости и удобству данному, то работы над данным провайдером можно будет остановить совсем.
  

OleDbProvider.rar ( 162 KB | Загрузки )
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #214 - 17. Мая 2008 :: 02:50
Печать  
1cpp.dll
  

1CPP_001.rar ( 479 KB | Загрузки )
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #215 - 17. Мая 2008 :: 15:52
Печать  
Uzhast
Вряд ли классы 1С++ смогут заменить, настоящий провайдер однозначно будет быстрее,
проверял на ПоставщикеИТ, если в нем будут циклы 1С то на больших объемах данных очень тормознутая вещь получается  Подмигивание
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #216 - 17. Мая 2008 :: 15:57
Печать  
PVR писал(а) 17. Мая 2008 :: 15:52:
Вряд ли классы 1С++ смогут заменить, настоящий провайдер однозначно будет быстрее,
проверял на ПоставщикеИТ, если в нем будут циклы 1С то на больших объемах данных очень тормознутая вещь получается  Подмигивание

Провайдер на C++ конечно будет быстрее, если в нем нет серьезных просчетов (а они могут быть). Однако, при работе с ТП через провайдер за одну операцию прогоняется не очень большой объем данных. Поэтому надо проверить на практике, насколько велика будет разница между провайдером на 1С и на C++. Ждем, пока кто-нибудь не напишет провайдер на универсальном провайдере Улыбка
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #217 - 17. Мая 2008 :: 16:52
Печать  
Возможнно, но если там будет что-то вроде этого, то  Улыбка

                 гИТ.ВНачало(гИндекс);
                 Пока гИТ.СледующаяСтрока(гИндекс)=1 Цикл
                       Если гИТ.НомерСтроки=RowFrom Тогда
                             Прервать;
                       КонецЕсли;
                 КонецЦикла;
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #218 - 17. Мая 2008 :: 17:00
Печать  
PVR писал(а) 17. Мая 2008 :: 16:52:
Возможнно, но если там будет что-то вроде этого, то  Улыбка

- Доктор, когда я вот так делаю, у меня болит!
- А вы не делайте так, не делайте Улыбка
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #219 - 17. Мая 2008 :: 17:21
Печать  
Смех, для того и сообщаю, чтоб не делали так  Улыбка
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #220 - 18. Мая 2008 :: 07:02
Печать  
Uzhast писал(а) 17. Мая 2008 :: 02:49:
Итак, после долгого перерыва мы снова в эфире.
Сегодня в icpp добавлена возможность взаимодействия с внешними провайдерами для OLE DB. Выкладываю новую версию провайдера и обновленную 1cpp.dll.

А что поменялось с последнего раза?
Быстрый поиск не прикручивал?

Мне кажется, что провайдер-статик вообще не нужен, т.к. это можно реализовать через поставщика ТЗ или ИТЗ
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #221 - 18. Мая 2008 :: 07:10
Печать  
JohnyDeath писал(а) 18. Мая 2008 :: 07:02:
А что поменялось с последнего раза?
Быстрый поиск не прикручивал?

Ничего не поменялось.

JohnyDeath писал(а) 18. Мая 2008 :: 07:02:
Мне кажется, что провайдер-статик вообще не нужен, т.к. это можно реализовать через поставщика ТЗ или ИТЗ

Статический провайдер в теории ест меньше памяти и поэтому позволяет отображать в ТП объемы данных, при получении которых через ВыполнитьИнструкцию вылезает "недостаточно памяти" (сомнительное достижение, правда). Плюс, статический провайдер немного упрощает жизнь - меньше переменных, например, надо заводить Улыбка
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #222 - 18. Мая 2008 :: 07:13
Печать  
Ну может прикрутишь быстрый поиск, а? Без него ТП - не ТП
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #223 - 18. Мая 2008 :: 07:22
Печать  
JohnyDeath писал(а) 18. Мая 2008 :: 07:13:
Ну может прикрутишь быстрый поиск, а? Без него ТП - не ТП

Ну, типа, как раз хотел было всерьез опять браться за провайдер. Но тут появился универсальный провайдер, на основе которого каждый может сам себе сделать провайдер для OLE DB. Ну и, соответственно, возник вопрос, а стоит ли вообще заморачиваться с провайдером на C++? Провайдер на 1С более гибким должен быть, по идее. С возможностью допиливания под свои нужды и т.д. Вот и хотелось бы сначала выяснить этот вопрос. А, как думаешь?

Тут есть несколько "факторов" для сравнения:
- Скорость работы. Если разница будет, скажем, 2-4 процента, то это - нормально.
- Удобство развертывания. Тут C++ удобнее. Но ненамного.
- Простота доработок. Тут, естественно, провайдер на 1С будет получше.
- Еще что-нибудь?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Провайдер OLE DB для ТП
Ответ #224 - 18. Мая 2008 :: 12:33
Печать  
Замечена разница в том, что для построения провайдера на C++ применяется интерфейс объекта на С++, а для прокси-провайдера - интерфейс 1С.
Банально звучит, конечно.

Но смысл в том, что в интерфейсе 1С может не быть каких-то возможностей, которые есть у объекта.
Скажем, для нативного провайдера ИТ, время позиционирования на строку для любого индекса изначально было сделано со сложностью const для неиндексированнх таблиц, O(N) для уникальных индексов и O(N) <= x <= N для неуникальных.
Причем сделано это весьма элегантно, на языке 1С так красиво не сделать (хотя такую же сложность получить можно).

Кроме того, для нативного провайдера ИТ используется свой итератор, а не итератор ИТ, так что возможно просматривать ИТ в ТП и выполнять поиск по данному индексу без взаимного влияния.
Этого нельзя сделать для прокси-провайдера - нет интерфейса в 1С.
То же самое для фильтров - могу сделать свой фильтр ИТ для ТП (просто не вижу смысла) - для прокси-провайдера это невозможно.

Главный вывод я делаю отсюда такой: интерфейс объекта в 1С должен быть адекватен возможностям объекта.
Именно поэтому и убеждаю Лешу Диркса совместными усилиями привести интерфейс ИТ к максимально эффективному варианту.
  

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