Имя: Пароль:
1C
1C 7.7
v7: Прямой запрос (вид документа)
0 pofigos
 
20.11.13
15:49
Добрый день. Есть запрос:

ТекстЗапроса = "
|SELECT ОсновнойОстатки.Субконто1 [Субконто1 $Справочник.Контрагенты]
|, ОсновнойОстатки.Субконто2 [Субконто2 $Справочник.Документы]
|, $Документы.ДоговорДок [Договор $Справочник.Договора]
|, $ДокТТН.Мол [Склад $Справочник.Склады]
|, ОсновнойОстатки.СуммаОстаток
|FROM $БИОстатки.Основной(:ВыбДата~
|            ,
|            ,(Счет = :ВыбСчет)
|            ,(Субконто1,Субконто2)
|            , Фильтр) AS ОсновнойОстатки
|
|LEFT JOIN $Справочник.Документы AS Документы (NOLOCK) on Документы.id = ОсновнойОстатки.Субконто2
|LEFT JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН (NOLOCK) on ДокТТН.IdDoc = RIGHT($Документы.СсылкаНаДокумент,9)
|
|
|WHERE    (ОсновнойОстатки.СуммаОстаток > 0)
|
|Условия
|";

В принципе все отрабатывает. Проблема в том, что $Документы.СсылкаНаДокумент может принимать 3 Вида документа. Никак не могу выставить условие на то, чтобы отбор был только по одному виду документа. Что-то вроде (ДокТТН.IDDOCDEF = $ВидДокумента.ТТННаОрганизациюТовары).

Помогите, кто сможет.
1 pofigos
 
20.11.13
15:52
(0) Правильнее будет условие:
$Документы.СсылкаНаДокумент.IDDOCDEF = $ВидДокумента.ТТННаОрганизациюТовары
2 Ёпрст
 
20.11.13
15:53
ну замени left на unner, делов то..
3 Ёпрст
 
20.11.13
15:54
вот тут
--LEFT JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН (NOLOCK) on ДокТТН.IdDoc = RIGHT($Документы.СсылкаНаДокумент,9)
inner JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН (NOLOCK) on ДокТТН.IdDoc = RIGHT($Документы.СсылкаНаДокумент,9)
4 pofigos
 
20.11.13
15:55
(3) во тупил то. Спасибо
5 pofigos
 
20.11.13
15:57
ЁПРСТ, вопрос еще..Конструкция $БИОстатки.Основной(,,,,) предусматривает параметр соединения? хотелось бы часть информации отфильтровать до выбора ВТ
6 pofigos
 
20.11.13
18:00
И еще на вопрос наткнулся.. Дописал немного запрос. Остался последний штрих. Нужно получить значение периодического реквизита из справочника Контрагенты.

ТекстЗапроса = "
|SELECT ОсновнойОстатки.Субконто1 [Субконто1 $Справочник.Контрагенты]
|, ОсновнойОстатки.Субконто2 [Субконто2 $Справочник.Документы]
|, $ДокТТН.Мол [Склад $Справочник.Склады]
|, ОсновнойОстатки.СуммаОстаток
|FROM $БИОстатки.Основной(:ВыбДата~
|        ,
|,(Счет = :ВыбСчет)
|,(Субконто1,Субконто2)
|, Фильтр) AS ОсновнойОстатки
|
|LEFT JOIN $Справочник.Документы AS Документы (NOLOCK) on Документы.id = ОсновнойОстатки.Субконто2
|LEFT JOIN $Справочник.Договора AS Договора (NOLOCK) on Договора.id = RIGHT($Документы.ДоговорДок,9)
|LEFT JOIN $Справочник.Контрагенты AS Контрагент (NOLOCK) on Контрагент.id = ОсновнойОстатки.Субконто1
|INNER JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН (NOLOCK) on ДокТТН.IdDoc = RIGHT($Документы.СсылкаНаДокумент,9)
|INNER JOIN $Справочник.Сотрудники AS Сотрудник (NOLOCK) on Сотрудник.id = $ДокТТН.Менеджер
|
|
|WHERE    (ОсновнойОстатки.СуммаОстаток > 0)
|
|Условия
|";

Подскажите, как сделать
7 Ёпрст
 
20.11.13
18:02
8 pofigos
 
20.11.13
18:04
(7) Спасибо добрый человек.
9 pofigos
 
20.11.13
18:50
ну и последний наглый вопрос.. Пустая строка как-либо иначе проверяется?

Условия=Условия+"AND (RTRIM(LTRIM($ПоследнееЗначение.Контрагенты.КомментарийДляСуда(ОсновнойОстатки.Субконто1, :ВыбДата))) <>  :ПустСтр )";
Запрос.УстановитьТекстовыйПараметр("ПустСтр",Строка(""));
10 viktor_vv
 
20.11.13
18:52
Условия=Условия+"AND (RTRIM(LTRIM($ПоследнееЗначение.Контрагенты.КомментарийДляСуда(ОсновнойОстатки.Субконто1, :ВыбДата))) <>  '' )";

одинарные кавычки, чтобы параметр не устанвливать.
11 Mikeware
 
20.11.13
18:52
(9) а чем не угодило '' ?
12 pofigos
 
20.11.13
18:55
(11) тем что не вспомнил даже про это ) Спасибо. Отрабатывает.