|
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 секунд. |
| Форум | Правила | Описание | Секции | Поиск |