Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Поставщик данных SQLite для ТП (число прочтений - 18694 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Поставщик данных SQLite для ТП
02. Июля 2008 :: 17:53
Печать  
Во вложении класс ПоставщикSQLite и пример его использования.
Код
Выбрать все
Пост=СоздатьОбъект("ПоставщикSQLite");

Пост.ПолеИндекса="idx_DATE_TIME_IDDOC";
Пост.Параметры.Установить("НачДата",НачДата);
Пост.Параметры.Установить("КонДата",КонДата);
мд=СоздатьОбъект("MetaDataWork");
г=Мд.ИДОбъекта(Метаданные.ГрафаОтбора("Контрагент"));
Пост.Параметры.Установить("ГрафаОтбораКонтрагент",Прав(СокрП(_IdToStr(г)),4));
Пост.УстановитьТекстЗапроса("
|SELECT Ж.idx_DATE_TIME_IDDOC
|,Ж.iddoc [Документ :Документ]
|,Ж.iddocdef [Документ_вид :ПредставлениеВида]
|,Ж.DocNo Номер
|,Ж.date [Дата :Дата]
|,Ж.time [Время :Время]
|,substr(О.ParentVal,7,9) [Контрагент :Справочник.Контрагенты]
|FROM Журнал Ж
|INNER JOIN __1S_Crdoc О ON О.ChildID=Ж.IdDoc AND О.MdID=:ГрафаОтбораКонтрагент
|WHERE idx_DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~
|");
ПроксиПоставщик=СоздатьОбъект("ПроксиПоставщикДанных");
ПроксиПоставщик.УстПоставщика(Пост);

_ТП.Колонки.Добавить("Док").Данные="Документ";
_ТП.Колонки.Добавить("Дата").Данные="Дата";
_ТП.Колонки.Добавить("Номер").Данные="Номер";
_ТП.Колонки.Добавить("Контрагент").Данные="Контрагент";
_ТП.ПоставщикДанных=ПроксиПоставщик;
_ТП.ОбновитьСтроки();
 


Требуется наличие ProxyDataProvider.dll
  

SQLiteProvider.rar ( 19 KB | Загрузки )

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #1 - 03. Июля 2008 :: 05:08
Печать  
Ну нифигасе!  Очень довольный сколько приятных новостей за последний месяц!
Будем тестить.
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #2 - 03. Июля 2008 :: 06:52
Печать  
Есть в этом поставщике такой
Код
Выбрать все
Функция Fetch() Экспорт
	Перем НулРез;
	Если гЗапрошеноСтрок=0 Тогда
		Возврат НулРез;
	КонецЕсли;

	Если гЗапрошеноСтрок>0 Тогда
		гЗапрошеноСтрок=гЗапрошеноСтрок-1;
	Иначе
		гЗапрошеноСтрок=гЗапрошеноСтрок+1;
	КонецЕсли;
	Если гБуфер.СледующаяСтрока()=1 Тогда
		Ключ=гБуфер.ПолучитьЗначение(,ПолеИндекса);
		Стр=СоздатьОбъект("Структура");
		Стр.Вставить("__Ключ__",Ключ);
		Для й=1 По гБуфер.КоличествоКолонок() Цикл
			ИмяКолонки=гБуфер.ИмяКолонки(й);
			Если ИмяКолонки<>ПолеИндекса Тогда
				Стр.Вставить(ИмяКолонки,гБуфер.ПолучитьЗначение(,й));
			КонецЕсли;
		КонецЦикла;
		Возврат Стр;
	Иначе
		Возврат НулРез;
	КонецЕсли;
КонецФункции
 


Время выполнения выделенного фрагмента становится сравнимым с временем выполнения запроса при количестве колонок, приближающимся к 10.

2 ADirks или artbear:
прошу добавить метод в ИТЗ, который бы выгружал текущую или заданную номером строку ИТЗ в структуру.
Ключ - наименование колонки, значение - значение в текущей строке.

PS: сделал бы сам, только у меня умер ноут, на котором была настроенная среда для разработки icpp
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #3 - 03. Июля 2008 :: 07:37
Печать  
steban писал(а) 03. Июля 2008 :: 06:52:
Есть в этом поставщике такой
Код
Выбрать все
		Для й=1 По гБуфер.КоличествоКолонок() Цикл
			ИмяКолонки=гБуфер.ИмяКолонки(й);
			Если ИмяКолонки<>ПолеИндекса Тогда
				Стр.Вставить(ИмяКолонки,гБуфер.ПолучитьЗначение(,й));
			КонецЕсли;
		КонецЦикла;
 


Время выполнения выделенного фрагмента становится сравнимым с временем выполнения запроса при количестве колонок, приближающимся к 10.

2 ADirks или artbear:
прошу добавить метод в ИТЗ, который бы выгружал текущую или заданную номером строку ИТЗ в структуру.
Ключ - наименование колонки, значение - значение в текущей строке.

Напиши в багзиллу, подумаем и сделаем.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #4 - 03. Июля 2008 :: 08:21
Печать  
steban писал(а) 03. Июля 2008 :: 06:52:
Время выполнения выделенного фрагмента становится сравнимым с временем выполнения запроса при количестве колонок, приближающимся к 10.

А в чем конкретно проблема с производительностью?
Язык 1С вообще не в состоянии выполнить 200 переносов (10 колонок на 20 строк) за приемлемое время?
А если отказаться от избыточных сравнений строк (сравнивать номера колонок)?

А структура - вообще-то зло.
Ибо не дает гарантий относительно порядка элементов.
Пора бы уже ее отправить на свалку истории. )
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #5 - 03. Июля 2008 :: 08:26
Печать  
kms писал(а) 03. Июля 2008 :: 08:21:
Пора бы уже ее отправить на свалку истории. )

Да ну нафиг!  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #6 - 03. Июля 2008 :: 09:36
Печать  
В сборке icpp 3.0.1.7  реализован объект ПроксиПоставщикДанных / ProxyDataProvider - для возможности написания поставщиков данных для ТП на языке 1С с помощью классов 1С++.
Прошу тестировать.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #7 - 03. Июля 2008 :: 10:54
Печать  
kms писал(а) 03. Июля 2008 :: 08:21:
А если отказаться от избыточных сравнений строк (сравнивать номера колонок)?

Отказался от сравнения вообще.

kms писал(а) 03. Июля 2008 :: 08:21:
А структура - вообще-то зло.
Ибо не дает гарантий относительно порядка элементов.
Пора бы уже ее отправить на свалку истории. )

СписокЗначений не лучше.
Он не в состоянии хранить пустые значения.
И по производительности примерно в одном ряду со Структурой.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #8 - 03. Июля 2008 :: 11:04
Печать  
Я лично в последнее время хочу перестать пользоваться списком значений и переключиться на Структуру, доработав ее в сторону ускорения работы + выгрузки/загрузки из основных контейнеров.
Михаил, помнится, ты как-то говорил об ускорении Структуры, но потом это ускорение было отложено.
Можешь напомнить, каким образом ты хотел ее ускорить.

ЗЫ тем более, что СЗ закрытый объект, а Структурой мы можем свободно рулить Улыбка
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #9 - 03. Июля 2008 :: 11:10
Печать  
artbear писал(а) 03. Июля 2008 :: 11:04:
Я лично в последнее время хочу перестать пользоваться списком значений и переключиться на Структуру, доработав ее в сторону ускорения работы + выгрузки/загрузки из основных контейнеров.
Михаил, помнится, ты как-то говорил об ускорении Структуры, но потом это ускорение было отложено.
Можешь напомнить, каким образом ты хотел ее ускорить.

ЗЫ тем более, что СЗ закрытый объект, а Структурой мы можем свободно рулить Улыбка


Я кстати согласен с Артуром, может стоит поработать над ее "скоростью" чем выкидывать, альтернативы то по сути почти нет
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #10 - 03. Июля 2008 :: 11:26
Печать  
artbear писал(а) 03. Июля 2008 :: 11:04:
выгрузки/загрузки из основных контейнеров.
Михаил, помнится, ты как-то говорил об ускорении Структуры, но потом это ускорение было отложено.
Можешь напомнить, каким образом ты хотел ее ускорить.

По скорости для структуры все, что можно, вроде бы уже сделано.
Пока не особо понятно, что именно требуется для ускорения приведенного кода у Степана.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #11 - 03. Июля 2008 :: 11:36
Печать  
Может кто сказать, почему без строки "WHERE idx_DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~" поставщик выдает ошибку?
Ну типа я хочу увидеть весь журнал Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #12 - 03. Июля 2008 :: 11:37
Печать  
Кстати, есть одно важное отличие СЗ от Структуры.
СЗ вроде как намного быстрее создается при загруженном 1С++ Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #13 - 03. Июля 2008 :: 11:43
Печать  
Степан, а может быть, стоит все-таки реализовать класс на С++, а?
Все-таки интерпретатор 1С прилично подтормаживает.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #14 - 03. Июля 2008 :: 11:53
Печать  
artbear писал(а) 03. Июля 2008 :: 11:36:
Может кто сказать, почему без строки "WHERE idx_DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~" поставщик выдает ошибку?
Ну типа я хочу увидеть весь журнал Улыбка

В текущей реализации код запроса поставщиком никак не анализируется.
Предполагается, что он имеет вид:
Код
Выбрать все
SELECT <поля>
FROM <таблицы>
WHERE условия 


Если ограничивать выборку условиями не нужно, то можно просто добавить в конец запроса
Код
Выбрать все
WHERE 1=1 

  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #15 - 03. Июля 2008 :: 11:56
Печать  
artbear писал(а) 03. Июля 2008 :: 11:43:
Степан, а может быть, стоит все-таки реализовать класс на С++, а?
Все-таки интерпретатор 1С прилично подтормаживает.

Конкретно для этой задачи нужен простой контейнер типа массива.
т.е. с возможностью быстро добавить и достать значение по числовому индексу.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #16 - 03. Июля 2008 :: 11:57
Печать  
steban писал(а) 03. Июля 2008 :: 11:56:
Конкретно для этой задачи нужен простой контейнер типа массива.
т.е. с возможностью быстро добавить и достать значение по числовому индексу.

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

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #17 - 03. Июля 2008 :: 12:00
Печать  
artbear писал(а) 03. Июля 2008 :: 11:43:
Все-таки интерпретатор 1С прилично подтормаживает.

Давай сделаем так, чтобы можно было писать КОПы на Lua или на Ch
Смех
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #18 - 03. Июля 2008 :: 12:01
Печать  
Кстати, а зачем ты для представления CDataRow пользуешься Структурой, почему не сразу ИТЗ ?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #19 - 03. Июля 2008 :: 12:02
Печать  
steban писал(а) 03. Июля 2008 :: 11:57:
steban писал(а) 03. Июля 2008 :: 11:56:
Конкретно для этой задачи нужен простой контейнер типа массива.
т.е. с возможностью быстро добавить и достать значение по числовому индексу.

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

Вот я и говорил чуть выше, что удобно было бы доработать Структуру для выгрузки/загрузки из/в нужных контейнеров (ТЗ, СЗ, ИТЗ и т.д.)
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #20 - 03. Июля 2008 :: 12:10
Печать  
artbear писал(а) 03. Июля 2008 :: 12:01:
Кстати, а зачем ты для представления CDataRow пользуешься Структурой, почему не сразу ИТЗ ?

Пробовал.
ИТЗ создается медленно.

Пробовал также использовать простой КОП с членом-массивом.
Те-же тормоза с созданием.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #21 - 03. Июля 2008 :: 12:16
Печать  
А простое ТЗ с одной строкой ?
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #22 - 03. Июля 2008 :: 13:06
Печать  
Замер выполнения при использовании ТЗ с одной колонкой как CDataRow
  

VTtimingVT.GIF ( 27 KB | Загрузки )
VTtimingVT.GIF

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #23 - 03. Июля 2008 :: 13:07
Печать  
То-же с использованием Структуры
  

VTtimingStruct.GIF ( 26 KB | Загрузки )
VTtimingStruct.GIF

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #24 - 03. Июля 2008 :: 13:11
Печать  
То-же с использованием ТЗ с одной строкой
  

VTtimingVT2.GIF ( 22 KB | Загрузки )
VTtimingVT2.GIF

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


#define sizeof(x) rand()

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

VTtimingVL.GIF ( 21 KB | Загрузки )
VTtimingVL.GIF

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #26 - 03. Июля 2008 :: 13:17
Печать  
ИТЗ и КОП показывать не буду.
Там вообще все выглядит печально.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #27 - 03. Июля 2008 :: 14:29
Печать  
Добавил в тестовую сборку 2.5 простой класс Вектор
Методы
Очистить()
УстановитьКоличество(Кол)
Функция Количество()
Установить(Индекс, НовоеЗначение)
Функция Получить(Индекс)

Метод ИТЗ.Выгрузить(Вектор) выгружает текущую строку ИТЗ с учетом фильтров в вектор.

Тестируйте скорость.

ЗЫ основан на std:vector - пока тупое решение, без всяких проверок на правильность значений.
  

1cpp_artbear_2506_Vector.rar ( 455 KB | Загрузки )

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #28 - 03. Июля 2008 :: 14:34
Печать  
С Вектором гораздо быстрее Улыбка
  

VTtimingVector.GIF ( 20 KB | Загрузки )
VTtimingVector.GIF

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #29 - 03. Июля 2008 :: 14:56
Печать  
Вот.
Теперь надо бы сделать "ИменованныйВектор".
Вектор, в котором к значениям можно обращаться по ключу.
И можно будет заменить сз и структуру.

P.S.
А стандартные контейнеры в таймингах и правда выглядят мрачно.
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #30 - 03. Июля 2008 :: 17:41
Печать  
steban писал(а) 03. Июля 2008 :: 14:34:
С Вектором гораздо быстрее Улыбка


А количество проходов разное для вектора и остальных !  
При одинаковых количествах может
Хотя, вроде быстрее  Улыбка
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #31 - 03. Июля 2008 :: 18:05
Печать  
PVR писал(а) 03. Июля 2008 :: 17:41:
А количество проходов разное для вектора и остальных ! 
При одинаковых количествах может http://www.1cpp.ru/forumfiles/Smilies/thumbdown.gif
Хотя, вроде быстрее  Улыбка

Во всех тестах, кроме первого в ТП пролистывался один и тот-же диапазон журнала.
103 вызова QueryRows (84 для первого теста).
И количество вызовов Fetch - 3885 одинаковое.
Обрати внимание, что при использовании Вектора нет необходимости в цикле по колонкам.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #32 - 03. Июля 2008 :: 18:14
Печать  
Цитата:
Обрати внимание, что при использовании Вектора нет необходимости в цикле по колонкам.

Согласен  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #33 - 04. Июля 2008 :: 03:15
Печать  
1. Значит, решено - внедряем Вектор в 1С++ ?
ИМХО еще для Вектора полезен метод - ОтключитьКонтрольДиапазона, чтобы не проверять попадание индекса в диапазан 1..КоличествоЭлементов. Метод будет использоваться для ускорения.

2. А зачем нужен ИменованныйВектор?
ИМХО структура - это же самое, просто над ней нужно немного поработать в плане ускорения.
Также можно структуре просто дать синоним, но не ИменованныйВектор, а АссоциативныйВектор - ИМХО это типовое название контейнера с подобным доступом.
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #34 - 04. Июля 2008 :: 05:11
Печать  
Ну тогда метод ИТЗ, ИМХО, должен выглядеть примерно так:
Цитата:
ИТЗ.Выгрузить(Вектор [, Индекс = ""] [, НомерСтроки = ТекущаяСтрока])
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #35 - 04. Июля 2008 :: 05:17
Печать  
JohnyDeath писал(а) 04. Июля 2008 :: 05:11:
Ну тогда метод ИТЗ, ИМХО, должен выглядеть примерно так:
Цитата:
ИТЗ.Выгрузить(Вектор [, Индекс = ""] [, НомерСтроки = ТекущаяСтрока])

для СЗ и Вектора/Структуры/АссоциативногоВектора ИМХО удобно было добавить в ИТЗ возможность двух вариантов выгрузки -
1) уже существующая выгрузка всех строк по одной колонке - уже есть, аналогично ТЗ.Выгрузить(СЗ)
2) выгрузка текущей или выбранной строки по всем колонкам - этого нет, но именно эта выгрузка и пригодилась Степану, и я ее реализовал в тестовом варианте
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #36 - 04. Июля 2008 :: 09:16
Печать  
artbear писал(а) 04. Июля 2008 :: 03:15:
Также можно структуре просто дать синоним, но не ИменованныйВектор, а АссоциативныйВектор - ИМХО это типовое название контейнера с подобным доступом.

Нет.
Структура - это не вектор.
И вообще, поаккуратнее с названиями Улыбка
Вектор - это прежде всего гарантии, а после этого - алгоритмы.

Кстати, а вы в курсе, что в 2.5 есть такое: "VectorValue.cpp".
Не помню, наверное в icpp при первичном портировании я его выкинул Улыбка
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #37 - 04. Июля 2008 :: 09:41
Печать  
artbear

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

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

Тот же вектор проще было взять из CSimpleCollection<CSimpleVector, CValue const&> всего-то нужно было зарегистрировать класс.
Ммм. ну да ладно.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #38 - 04. Июля 2008 :: 11:05
Печать  
kms писал(а) 04. Июля 2008 :: 09:41:
Это конечно, хорошо, даже очень, но плохо то, что в 1cpp и так полно коллекций.
И надо было бы для начала озаботиться единым интерфейсом, а уж потом фигачить по полной.

Тот же вектор проще было взять из CSimpleCollection<CSimpleVector, CValue const&> всего-то нужно было зарегистрировать класс.

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

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #39 - 04. Июля 2008 :: 11:54
Печать  
artbear писал(а) 04. Июля 2008 :: 11:05:
А знаешь, из-за чего? Потому что ты все свои коллекции засунул в папку CursorGrid Улыбка Печаль

Куда-куда я их засунул? Подмигивание
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #40 - 05. Июля 2008 :: 19:54
Печать  
При нажатии "END" наблюдаем чистое ТП вместо ожидаемого конца журнала.
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #41 - 06. Июля 2008 :: 07:31
Печать  
Перепиши ф-ю Fetch как на скрине http://www.1cpp.ru/forum/YaBB.pl?num=1215021188/23#23
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #42 - 08. Июля 2008 :: 11:26
Печать  
Вроде как сделал поставщика данных ТП для SQLite в 1sqlite.
Дока пока не готова.
Есть два примера использования:
1. В ТиСе показ документов по графе отборов Контрагент
2. В ТиСе показ справочника товаров с иерархией и остатками на складах

Все в архиве.
Просьба потестить.
http://www.1cpp.ru/forumfiles/Attachments/1sqlite_dp.zip
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #43 - 14. Июля 2008 :: 07:13
Печать  
Написал простенький вектор на Lua и использовал его как CDataRow для поставщика.
Результаты по скорости заполнения и выборки сравнимы со встроенным в 1С++ вектором Улыбка
  

VTtimingLuaVector.GIF ( 22 KB | Загрузки )
VTtimingLuaVector.GIF

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #44 - 14. Июля 2008 :: 07:15
Печать  
Вектор определен вот так: Цитата:
function vector()
 
return {
 
load = function(v,it)
   
ncols=it.ColumnCount()
   
for i=1,ncols do
     
v[i]=it.GetValue('',i)
   
end
 end
,
 
get=function(v,i)
   
return v[i]
 
end
}
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #45 - 14. Июля 2008 :: 07:31
Печать  
При написании сего преследовался чисто спортивный интерес:
потестить контейнеры на Lua.

С Lua-вектором не работает типизация.
Класс ПоставщикSQLite можно сдать в кунсткамеру в связи с появлением "родного" поставщика SQLite для ТП, который в его текущем состоянии работает вполне прилично и шире по функционалу.
« Последняя редакция: 30. Июля 2008 :: 05:40 - steban »  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #46 - 14. Июля 2008 :: 07:39
Печать  
Да можно было бы и пообсуждать.
Но что-то ты замер на предыщущем вопросе.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #47 - 14. Июля 2008 :: 07:42
Печать  
kms писал(а) 14. Июля 2008 :: 07:39:
что-то ты замер на предыщущем вопросе.

моя твоя нипанимай.
ты о чем?
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #48 - 14. Июля 2008 :: 07:48
Печать  
Да жду вот: http://www.1cpp.ru/forum/YaBB.pl?num=1215769064/35#35
А ты моя не читать однако Подмигивание
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Поставщик данных SQLite для ТП
Ответ #49 - 14. Июля 2008 :: 07:51
Печать  
Вот, например, что было на эту тему
http://www.1cpp.ru/bugs/show_bug.cgi?id=3813

Я смогу опереться на твою v7lua для того, чтобы написать скрипт на lua и использовать его из icpp?
Или это нереализуемо?

P.S.
Мне хотя бы понять - это будет быстрее, чем ВМ - или нет.
Если да, то насколько.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных SQLite для ТП
Ответ #50 - 14. Июля 2008 :: 07:55
Печать  
kms писал(а) 14. Июля 2008 :: 07:48:
Да жду вот: http://www.1cpp.ru/forum/YaBB.pl?num=1215769064/35#35
А ты моя не читать однако Подмигивание

ОК Улыбка
Продолжим разговор там
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать