Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite - Отбор по реквизиту шапки документа (число прочтений - 8767 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #15 - 27. Декабря 2010 :: 14:48
Печать  
JohnyDeath писал(а) 27. Декабря 2010 :: 13:57:
Ну так чё там по времени выполнения?

В связи с неравномерностью загрузки базы провести корректное сравнение сложно, но по ощущениям выигрыш на порядок..
Видимо в исходном виде запрос не попадал в индекс по графе отбора.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #16 - 28. Декабря 2010 :: 20:44
Печать  
CaBaT писал(а) 27. Декабря 2010 :: 14:48:
JohnyDeath писал(а) 27. Декабря 2010 :: 13:57:
Ну так чё там по времени выполнения?

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

Конечно не попадал.
Если бы ты сделал запрос.Отладка(), то явно бы это увидел.
Ну или в консольке план запроса бы глянул.
И кстати ты еще получил дополнительный бонус - отбор подчиненных доков только заданного вида, что методами 1С получиться сделать только через
Код
Выбрать все
Если док.Вид() <> "НужныйВид" Тогда
    Продолжить;
конецЕсли;
 



И кстати, если ты делаешь
Код
Выбрать все
  and iddocdef = :ВидДокумента.<ВидДокумента>
 


то тогда и в селекте пиши
Код
Выбрать все
select
  iddoc as [Док :Документ.<ВидДокумента>]
from __1s_crdoc as Ссылки
 


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


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #17 - 07. Января 2011 :: 20:28
Печать  
JohnyDeath писал(а) 27. Декабря 2010 :: 10:58:
А если так:
Код
Выбрать все
select
  iddoc as [Док :Документ],
  iddocdef as Док_вид,
from __1s_crdoc as Ссылки
left join Журнал on Журнал.iddoc = Ссылки.childid
where
  mdid = :ГрафаОтбора.Владелец
  and parentval = :Владелец*
  and iddocdef = :ВидДокумента.<ВидДокумента>  



А если Владелец - это Дата?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #18 - 08. Января 2011 :: 08:07
Печать  
А так же не прокатывает?
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #19 - 08. Января 2011 :: 18:21
Печать  
JohnyDeath писал(а) 08. Января 2011 :: 08:07:
А так же не прокатывает?

Нет... у меня выборка пустая получается...

|SELECT
|      IDDoc [Док $Документ],
|      IDDocDef Док_вид
|FROM
|      __1s_crdoc as Ссылки
|INNER JOIN  Журнал ON Журнал.iddoc=Ссылки.childid
| where
|  MDID= :ГрафаОтбора.ДатаЗадания AND
|  ParentVal = :ДатаЗаданияВН and
|             iddocdef=:ВидДокумента.КурьерВН
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #20 - 08. Января 2011 :: 20:05
Печать  
Как минимум у тебя нет модификатора *
А вообще надо смотреть как 1sqlite преобразует дату с этим модификатором и как хранится дата в этом поле отбора в dbf файле.
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #21 - 08. Января 2011 :: 22:11
Печать  
Модификатор не помогает...
Как/где можно посмотреть преобразование?
В 1SCRDOC.DBF данные типа "D20101026"
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #22 - 09. Января 2011 :: 08:22
Печать  
Значит тут либо к Саши Орефкову надо обратиться, чтобы он подправил этот момент, либо самому написать примерно так:
Код
Выбрать все
ParentVal = 'D' || :ДатаЗаданияВН and 



andrmit писал(а) 08. Января 2011 :: 22:11:
Как/где можно посмотреть преобразование?

Запрос.Отладка(1)
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #23 - 09. Января 2011 :: 09:01
Печать  
Код
Выбрать все
ParentVal = 'D' || :ДатаЗаданияВН and
 



Так помогло... Спасибо...
Орефкова стесняюсь беспокоить Нерешительный
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #24 - 10. Января 2011 :: 06:31
Печать  
andrmit писал(а) 08. Января 2011 :: 22:11:
Модификатор не помогает...
Как/где можно посмотреть преобразование?
В 1SCRDOC.DBF данные типа "D20101026"

Что-то ты не так делаешь.
Вот у себя тестил:

Код
Выбрать все
Процедура Сформировать()
	ЗагрузитьВнешнююКомпоненту("1sqlite.dll");
	база = СоздатьОбъект("SQLiteBase");
	база.Открыть(":memory:");
	з = база.НовыйЗапрос();
	з.Подставлять("Дт", ТекущаяДата());
	Сообщить(з.ВыполнитьЗапрос("select :Дт*", 0));
КонецПроцедуры
 



Результат:
D20110110
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #25 - 10. Января 2011 :: 19:38
Печать  
Я использовал Прямой запрос. Вот полный текст

Код
Выбрать все
ТекстЗапроса="
|SELECT
|	IDDoc [Док $Документ],
|	IDDocDef Док_вид
|FROM
|	__1s_crdoc as Ссылки
|LEFT JOIN  Журнал ON Журнал.iddoc=Ссылки.childid
| where
|MDID = :ГрафаОтбора.ДатаЗадания AND
| ParentVal = 'D' || :ДатаЗаданияВН* and
| iddocdef=:ВидДокумента.КурьерВН
|";
Запрос = СоздатьОбъект("ПрямойЗапрос");
 Запрос.Текст = ТекстЗапроса;
//	Запрос.РежимОтладки=1;
Запрос.УстановитьТекстовыйПараметр("ДатаЗаданияВН",Дата_);
ТЗ = Запрос.Выполнить();
 



Без
Код
Выбрать все
'D' ||  

не работает

1sqlite.dll 1.0.2.3
Прямой запрос от 12.08.2010
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite - Отбор по реквизиту шапки документа
Ответ #26 - 11. Января 2011 :: 06:58
Печать  
andrmit писал(а) 10. Января 2011 :: 19:38:
Я использовал Прямой запрос.

Тогда вопросы к автору ПрямогоЗапроса.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать