|
v7: Прямой запрос к базе 1С 7.7(sql) с использованием 1С++
| ☑ |
0
Leo_2012
29.08.14
✎
13:58
|
Описание проблемы:
В базе есть справочник "ДокиДляОбработки" у него два реквизита:
Документ - тип "ДОКУМЕНТ" (т.е. любой док.из конфы)
ПризнакОбработки - число 1-разряд (0 - обработан, 1 - надо обработать)
У нас есть текущий список значений (СпВидыДоков), в котором перечислены требуемые для отбора виды документов и период (с Дата1 по Дата2) который нас интересует.
Надо получить список документов из этого справочника по условиям
(признак "ПризнакОбработки" равен 1) И (рек."Документ" - вид документа принадлежащий списку "СпВидыДоков") И (рек."Документ" - дата документа <Дата2 и >Дата1, т.е. принадлежит требуемому периоду).
Раньше было так:
ТекстЗапроса =
"ТекДок = Справочник.ДокиДляОбработки.Документ;
|Признак = Справочник.ДокиДляОбработки.ПризнакОбработки;
|Условие((ТекДок.ДатаДок >= Дата1)И(ТекДок.ДатаДок <= Дата2)И(ПризнакОбр = 1));
|Условие(ВыбранныеДокументы.Принадлежит(ТекДок.Вид()) = 1);
";
Но теперь запрос стал тупить (на сегодня в справочнике больше 200тыс.элементов)...
Хочу сделать прямой запрос, но не знаю как ограничить результат по всем условиям:
ТекстЗапроса = "
|SELECT
| $ТекТаб.Документ as [ТекДок $Документ],
| $ТекТаб.Документ as [ДокВид $ВидДокумента],
| $ТекТаб.ПризнакОбработки as Признак
|FROM
| $Справочник.ДокиДляОбработки as ТекТаб
|WHERE
| $ТекТаб.ПризнакОбработки = 1
// как огранить по периоду и списку?
|";
|
|
1
Ёпрст
29.08.14
✎
14:07
|
(0)
иннер джоин _1sjourn on left($ТекТаб.Документ,9) = Жур.iddoc
and Жур.iddocdef in (select val from :СписокДоков) and
Жур.date_time_iddoc between :НачДата and :КонДата~
Токма еще типизация в селекте у тебя не верная..
|
|
2
Leo_2012
29.08.14
✎
15:47
|
Спасибо, с периодом получилось.
Не понял как список значений засунуть в свой запрос?
|
|
3
Chum
29.08.14
✎
15:50
|
(2) уложитьсписокобъектов
|
|
4
Chum
29.08.14
✎
15:51
|
+(3) еще есть уложитьсписокобъектов13 - угадай для чего
|
|
5
Ёпрст
29.08.14
✎
15:53
|
или так
Жур.iddocdef in ($ВидДокумента.Реализация,$ВидДокумента.Перемещение,...)
|
|
6
Leo_2012
01.09.14
✎
11:09
|
Ёпрст, спасибо!
Все получилось, прямой запрос выполняется за секунду, старый выполнялся около 40 секунд.
|
|