Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1sqlite: движения по фильтру не выбираются. (число прочтений - 1425 )
Cthulhu
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 04. Апреля 2010
1sqlite: движения по фильтру не выбираются.
28. Сентября 2012 :: 14:05
Печать  
Код
Выбрать все
_1склБаза.Открыть(":memory:");
тТхт="
|SELECT
|	Остатки.Фирма [Фирма :Справочник.Фирмы]
|	, Остатки.Товар [Товар: Справочник.ТМЦ]
|	, Остатки.Склад [Склад :Справочник.МестаХранения]
|	, Остатки.Контрагент [Контрагент :Справочник.Контрагенты]
|	, Остатки.Продажа [Продажа :Документ]
|	, Остатки.IDDOC [Докум :Документ]
|	, Остатки.LINENO НомСтрДок
|	, Остатки.DEBKRED ФлРасх
|	, Sum(Остатки.ОстатокТовара) Кво
|FROM [Регистр.ТоварыНаХранении] Остатки
|WHERE
|	Остатки.Фирма = @ВыбФирма
|	AND Остатки.Товар = @ВыбТовар
|	AND Остатки.Склад = @ВыбСклад
|	AND Остатки.Контрагент = @ВыбКонтрагент
|	AND Остатки.Продажа = @ВыбПродажа
|GROUP BY
|	Остатки.Фирма
|	, Остатки.Товар
|	, Остатки.Склад
|	, Остатки.Контрагент
|	, Остатки.Продажа
|	, Остатки.IDDOC
|	, Остатки.LINENO
|ORDER BY
|	Остатки.IDDOC
|	, Остатки.LINENO";
_1склЗапросДокументы=_1склБаза.НовыйЗапрос()
_1склЗапросДокументы.Отладка(1);
_1склЗапросДокументы.Подготовить(тТхт);
//...
_1склЗапросДокументы.УстановитьПараметр("@ВыбФирма",тФирма);
_1склЗапросДокументы.УстановитьПараметр("@ВыбТовар",тТовар);
_1склЗапросДокументы.УстановитьПараметр("@ВыбСклад",тСклад);
_1склЗапросДокументы.УстановитьПараметр("@ВыбКонтрагент",тКонтрагент);
_1склЗапросДокументы.УстановитьПараметр("@ВыбПродажа",тПродажа);
тЗапросТЗ=_1склЗапросДокументы.Выполнить();
Сообщить(""+тЗапросТЗ.КоличествоСтрок(),"."); 


тупо ноль.
значения в параметры фильтры безутся из "штатного" запроса к тому же регистру по остаткам (сиречь все это комплект измерений, по которому имеются остатки, взятый из того же регистра).
где я ступил??? Нерешительный

ЗЫ: сходил в регистр, увидел, что измерение для "Продажа" кодируется в длину 13 - воткнул модификатор в установку параметра:
Код
Выбрать все
_1склЗапросДокументы.УстановитьПараметр("@ВыбПродажа",тПродажа,1); 


Стало выдавать ТЗ с единственной строкой, в которой в колонке "Докум" сидит пустой документ (не установленного вида)...
блинство.  Нерешительный

ЗЗЫ: вопрос снят добавкой IDDOCDEF Докум_вид в SELECT. теперь бы ускорить... ну да ладно.
« Последняя редакция: 28. Сентября 2012 :: 15:09 - Cthulhu »  
Наверх
 
IP записан
 
Cthulhu
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 04. Апреля 2010
Re: 1sqlite: движения по фильтру не выбираются.
Ответ #1 - 29. Сентября 2012 :: 11:59
Печать  
Продолжаем разговор... (с)
с моими извинениями за возможную неосведомленность.
Верно ли я понимаю, что фильтр, например, "Остатки.Продажа IN (select val from ФильтрПродажи)" - по уложенному в таблицу списку значений - плювать хотел на индексы и в них никогда не попадает (в отличие, например, от равенства указанному iddoc)?..
а тогда возможно ли как-то попасть в индекс (который точно есть - какой-то там via*)?.. в частности фильтром по измерению типа документ (в движениях регистра представлен в виде 13-значного iddoc)??? и если "да" - то как?..
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: 1sqlite: движения по фильтру не выбираются.
Ответ #2 - 29. Сентября 2012 :: 18:50
Печать  
Ну тут надо ответить на два вопроса:
1) каким по порядку идет измерение Продажа?
2) Если не первым то стоят ли на нем признаки отбора движений и итогов (чтобы было во что попадать то Подмигивание)?
3) Используй УложитьСписокОбъектов13 - для укладки не 9 значного ID и сравнения с 13-значным измерением а сразу для укладки 13 значных ID.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать