Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) а кто-нить пример покажет SQLite+регистры на ДБФ? (число прочтений - 15553 )
sashas09
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 148
Местоположение: Киев
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
а кто-нить пример покажет SQLite+регистры на ДБФ?
22. Июля 2008 :: 12:18
Печать  
собственно сабж
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #1 - 22. Июля 2008 :: 12:37
Печать  
Делал на основе Степановскго класса
Добавил ВТ $РегистрОстатки._ИмяРегистра_
делал по аналогии с ВТ для SQL http://www.1cpp.ru/docum/icpp/html/ODBC.html#id34
но пока есть много ограничений, а именно:
1. Цитата:
ГраницаРасчета - тип: значение. Строка, представляющая период или момент времени во внутреннем формате 1С. Если передан период времени (дата или позиция документа), остатки рассчитываются на конец периода.  Для формирования моментов времени также можно воспользоваться позицией документа: процедурой СформироватьПозициюДокумента() синтаксис 1, указывая не нулевой ФлагСмещения; или СформироватьПозициюДокумента() синтаксис 2.
Если передавать документ, то остатки расчитываются на КОНЕЦ документа.

2. Работает только с регистрами, для которых установлен флаг "Быстрая обработка движений"
...ну может и ещё что-то.

Хочу переделать, но, думаю, как пример - сойдёт.
« Последняя редакция: 25. Июля 2008 :: 05:35 - JohnyDeath »  

1sqliteVT_001.rar ( 20 KB | Загрузки )
Наверх
 
IP записан
 
sashas09
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 148
Местоположение: Киев
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #2 - 22. Июля 2008 :: 12:51
Печать  
Спасибки

буду посмотреть Улыбка
  
Наверх
ICQ  
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #3 - 24. Июля 2008 :: 07:31
Печать  
2 JohnyDeath

Виртуальная таблица ПоследнееЗначение неверно отрабатывает. Возвращает первое значение.
Изменил запрос в классе: "... ORDER BY date desc LIMIT 1", теперь возвращает значение ближе к нужной дате, но все равно неправильно Печаль. Закономерность пока не ясна. Вот текст запроса в конечном виде
Код
Выбрать все
SELECT спр.id as [Валюта :Справочник.Валюты],
(
(SELECT value FROM __1S_Const
WHERE objid=спр.id AND id='   E' AND date<= '20080529' ORDER BY date desc LIMIT 1)
) as Курс
FROM Справочник_Валюты as спр 



В чем может быть проблема?

ЗЫ. Респект за класс, очень нужная вещь,  +100  Улыбка
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #4 - 24. Июля 2008 :: 07:39
Печать  
Это не мой класс, я ж писал. Это Степановский: http://www.1cpp.ru/forum/YaBB.pl?num=1214687800
Я добавил только ВТОстатки для регистров. С последним значением не разбирался, поэтому пока сказать ничего не могу.
  
Наверх
 
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #5 - 24. Июля 2008 :: 07:46
Печать  
JohnyDeath писал(а) 24. Июля 2008 :: 07:39:
Это не мой класс, я ж писал. Это Степановский: http://www.1cpp.ru/forum/YaBB.pl?num=1214687800
Я добавил только ВТОстатки для регистров. С последним значением не разбирался, поэтому пока сказать ничего не могу.


Сорри, недоглядел Смущённый. Знатоки SQLite, подскажите, где собака порылась.
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #6 - 24. Июля 2008 :: 08:41
Печать  
Thor писал(а) 24. Июля 2008 :: 07:46:
JohnyDeath писал(а) 24. Июля 2008 :: 07:39:
Это не мой класс, я ж писал. Это Степановский: http://www.1cpp.ru/forum/YaBB.pl?num=1214687800
Я добавил только ВТОстатки для регистров. С последним значением не разбирался, поэтому пока сказать ничего не могу.


Сорри, недоглядел Смущённый. Знатоки SQLite, подскажите, где собака порылась.


Слушай, у меня в одной базе тоже похожий глюк был... почему-то проверка условия
типа date<= '20080529' не проходила. По очереди исключал условия и вышел на него. Исправилось только заменой на два условия ("<" or "="). Причем копия этой же конфы на моей машине исходный вариант отрабатывал нормально.
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #7 - 24. Июля 2008 :: 08:54
Печать  
Код
Выбрать все
(SELECT value FROM __1S_Const
WHERE objid=спр.id AND id='   E' AND date<= '20080529Я' ORDER BY date desc LIMIT 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+регистры на Д
Ответ #8 - 24. Июля 2008 :: 08:56
Печать  
Thor писал(а) 24. Июля 2008 :: 07:31:
Виртуальная таблица ПоследнееЗначение неверно отрабатывает.

Действительно косяк. Исправим.
эта ВТ была написана чтобы проверить парсинг вложенных ВТ
  

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


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #9 - 24. Июля 2008 :: 10:13
Печать  
steban писал(а) 24. Июля 2008 :: 08:54:
Код
Выбрать все
(SELECT value FROM __1S_Const
WHERE objid=спр.id AND id='   E' AND date<= '20080529Я' ORDER BY date desc LIMIT 1)
) 

а так работает?

Не помогло Печаль. Причем странные вещи наблюдаются:
30.05.08 - правильно
29.05.08 - выдается значение за дату 19.05.08 (значение уникальное, проверил)
с 20.05.08 по 28.0508 - правильно
19.05.08 - выдается значение за 15.05.08
Дальше не проверял. Мистика какая-то! Готовлю тестовую базу, выложу тут.
  
Наверх
ICQ  
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #10 - 24. Июля 2008 :: 10:17
Печать  
Chieftain писал(а) 24. Июля 2008 :: 08:41:
Thor писал(а) 24. Июля 2008 :: 07:46:
JohnyDeath писал(а) 24. Июля 2008 :: 07:39:
Это не мой класс, я ж писал. Это Степановский: http://www.1cpp.ru/forum/YaBB.pl?num=1214687800
Я добавил только ВТОстатки для регистров. С последним значением не разбирался, поэтому пока сказать ничего не могу.


Сорри, недоглядел Смущённый. Знатоки SQLite, подскажите, где собака порылась.


Слушай, у меня в одной базе тоже похожий глюк был... почему-то проверка условия
типа date<= '20080529' не проходила. По очереди исключал условия и вышел на него. Исправилось только заменой на два условия ("<" or "="). Причем копия этой же конфы на моей машине исходный вариант отрабатывал нормально.


Спасибо, помогло. Значит, отношение "<=" неверно отрабатывает?
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #11 - 24. Июля 2008 :: 11:00
Печать  
а так:
Код
Выбрать все
(SELECT value FROM __1S_Const
WHERE objid=спр.id AND id='   E' AND date < '20080529Я' ORDER BY date desc LIMIT 1)
) 

?
  
Наверх
 
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #12 - 24. Июля 2008 :: 11:13
Печать  
JohnyDeath писал(а) 24. Июля 2008 :: 11:00:
а так:
Код
Выбрать все
(SELECT value FROM __1S_Const
WHERE objid=спр.id AND id='   E' AND date < '20080529Я' ORDER BY date desc LIMIT 1)
) 

?

Нет, не работает.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #13 - 24. Июля 2008 :: 11:35
Печать  
Последняя попытка (наверное Улыбка):
Код
Выбрать все
(SELECT value FROM __1S_Const
WHERE
idx_ID_OBJID_DATE_TIME_DOCID_PARTNO <
('   E' || спр.id || '20080529Я') ORDER BY date desc LIMIT 1)
) 

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: а кто-нить пример покажет SQLite+регистры на Д
Ответ #14 - 24. Июля 2008 :: 11:53
Печать  
JohnyDeath писал(а) 24. Июля 2008 :: 11:35:
Последняя попытка (наверное Улыбка):
Код
Выбрать все
(SELECT value FROM __1S_Const
WHERE
idx_ID_OBJID_DATE_TIME_DOCID_PARTNO <
('   E' || спр.id || '20080529Я') ORDER BY date desc LIMIT 1)
) 


Скорее всего тоже не прокатит. Скорее всего sqlite сначала сортирует всю таблицу, а только потом накладывает фильтр  Печаль (надо ещё тестить)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать