|
|
v7: Помощь в быстром запросе |
☑ |
|
0
kstep174
22.08.19
✎
11:57
|
Комплексная конфигурация. Есть сделанный на подобии отчета Акт сверки документ. В табличной части поле "Документ" с типом Документ неопределенного типа.
Задача: Быстрым запросом найти документы АктСверки в которых присутствует выбранный документ. Реализация напр.
Алгоритм ниже выдает пустоту. Хочется понять почему. Из-за того что в документах есть строки с не выбранным документом? Или типизацию делаю не так?
Вроде всё просто, а не работает:
|SELECT DISTINCT Журнал.IDDOC
|FROM _1SJOURN AS Журнал With (NOLOCK)
|INNER JOIN $ДокументСтроки.АктСверки AS АктСверкиД With (NOLOCK) ON Журнал.IDDOC = АктСверкиД.IDDOC
|WHERE (Журнал.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)AND($АктСверкиД.Документ = :МойДок)
|";
RS.УстановитьТекстовыйПараметр("МойДок", Докум);
|
|
|
1
nicesc
22.08.19
✎
12:06
|
Думаю проблема в этом месте:
AND($АктСверкиД.Документ = :МойДок)
Так как у тебя в ТЧ поле документ имеет тип неопр.
Надо делать как то так:
AND (Журнал.iddocdef+Журнал.IDDOC= :МойДок)
Ну и это условие тебе нужно вынести в ON иначе просядет производительность.
ON (Журнал.IDDOC = АктСверкиД.IDDOC) AND (Журнал.iddocdef+Журнал.IDDOC= :МойДок)
|
|
|
2
trad
22.08.19
✎
12:18
|
$АктСверкиД.Документ = :МойДок~
|
|
|
3
trad
22.08.19
✎
12:21
|
Можно еще добавить
and Журнал.IDDOCDEF = $ВидДокумента.АктСверки
Будет несколько быстрее
|
|
|
4
kstep174
22.08.19
✎
12:41
|
Такая конструкция "Журнал.iddocdef+Журнал.IDDOC= :МойДок" приводит к ошибке в конверсии "Conversion failed when converting the varchar value ' 18E0M ' to data type int".
":МойДок~" - заработало. Спасибо!
Но первый вариант интересен для саморазвития.
|
|