Прямой запрос

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. Shok05 20.02.14 10:33 Сейчас в теме
Никак не могу понять , почему не работает запрос. Задачка на данный момент следующая. Есть документы РеестрПлатежей с табличной частью с полем Клиент из справочника Контрагенты. Нужно за определённый период выбрать все документы в которых поле клиент равно тому что ввел пользователь в поле на форме Клввод (т.е нечеткий поиск по нескольким буквам). Вот тест запроса:

ТекстЗапроса = "
|SEL ECT
| Док.IDDoc AS [Документ $Документ.РеестрПлатежей],
| $Док.магазин AS [Наименование $Справочник.МагазиныКухниСити],
| $Док.ВыбСпособОплаты AS [Способ $Перечисление.СпособОплаты],
| $Док.ВыбВалюта AS ВалютаДокП,
| $ОбщийРеквизит.Фирма AS ФирмаДокП,
| $ДокС.Клиент AS [Клиент $Справочник.Контрагенты]";

ТекстЗапроса=ТекстЗапроса+" FR OM $ДокументСтроки.РеестрПлатежей AS ДокС ";

ТекстЗапроса=ТекстЗапроса+"
|INNER JOIN
| $Документ.РеестрПлатежей as Док ON Док.IDDoc = ДокС.IDDoc ";
ТекстЗапроса = ТекстЗапроса + "
|INNER JOIN _1sjourn AS Журнал (nolock) ON Журнал.IDDoc = Док.IDDoc
|WHERE
| Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND UPPER($ДокС.Клиент) LIKE :КлвводП
|";


RS.УстановитьТекстовыйПараметр("НачДата", НачДата);
RS.УстановитьТекстовыйПараметр("КонДата", КонДата);
RS.УстановитьТекстовыйПараметр("КлвводП","%"+ВРег(СокрЛП(Клввод))+"%");

При вводе в поле Клввод букв ничего не находит. Если вводишь цифру, то показывает документы не понятно по какому принципцу.

Заранее очень благодарен!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ivsher 20.02.14 11:00 Сейчас в теме
$ДокС.Клиент - это char(9) ссылка на запись в таблице справочника. Применять к нему лайк неправильно. Для корректной работы с наименованием вам нужно приджоинть таблицу справочника клиенты и вот там уже делать лайк по полю DESCR.
P/S небольшое замечание по синтаксису. Условие отбора по журналу документов лучше использовать в операторе JOIN а не в WHERE. Проще читать запросы и разбираться в коде и стилистически в рамках SQL так будет более правильно. А как у вас написано это мувитон :)
3. Shok05 20.02.14 11:12 Сейчас в теме
(2) ivsher, Спасибо большое! Пока не хорошо разбираюсь в прямых запросах.. попробую догнать вашу мысль)
4. ivsher 20.02.14 11:20 Сейчас в теме
Ну вот вам в помощь :)
Код
ТекстЗапроса = " 
 |SELECT 
 |   Док.IDDoc AS [Документ $Документ.РеестрПлатежей], 
 |   $Док.магазин AS [Наименование $Справочник.МагазиныКухниСити], 
 |   $Док.ВыбСпособОплаты AS [Способ $Перечисление.СпособОплаты], 
 |   $Док.ВыбВалюта AS ВалютаДокП, 
 |   $ОбщийРеквизит.Фирма AS ФирмаДокП, 
 |   $ДокС.Клиент AS [Клиент $Справочник.Контрагенты]"; 
 |FROM $ДокументСтроки.РеестрПлатежей AS ДокС "; 
 |INNER JOIN 
 |   $Документ.РеестрПлатежей as Док ON 
 |       Док.IDDoc = ДокС.IDDoc "; 
 |INNER JOIN 
 |   _1sjourn AS Журнал (nolock) ON 
 |       Журнал.IDDoc = Док.IDDoc AND
 |       Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
 |INNER JOIN
 |   $Справочник.Клиенты AS СпрКл ON
 |       СпрКл.ID = $Док.Клиент    
 |WHERE 
 |  UPPER(СпрКл.DESCR) LIKE :КлвводП 
 |"; 
Показать полностью
5. Shok05 20.02.14 11:22 Сейчас в теме
(4) ivsher, Огромнейшее спасибо! Вы очень добрый человек :)
6. Shok05 20.02.14 11:34 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот