Имя: Пароль:
1C
1C 7.7
v7: Прямые запросы. Отбор по списку.
,
0 Альбатрос
 
24.12.13
10:35
ТекстЗапроса =  "SELECT  
        |    Журнал.DocNo as НомерДок,
        |   Журнал.IDDOC as [Ссылочка $Документ.ВводОстатковКредита],
        |    Журнал.SP1165 [Клиент $Справочник.Клиенты],
        |   Журнал.SP1005 [Фирма $Справочник.Фирмы],
        |   Журнал.IDDocDEF as ВидДока,
        |   $Док.Сумма as СуммаДокумента,
        |   Док.SP7521 as АлкИдентификатор,
        |   Док.SP5704 as [ВидВвода $Справочник.ВидыВОК],
        |    CAST(LEFT(Журнал.DATE_TIME_IDDOC, 8) AS DateTime) as ДатаДок
        |
        |FROM
        |   $Документ.ВводОстатковКредита as Док
        |INNER JOIN
        |    _1SJourn as Журнал
        |    ON Журнал.IDDoc = Док.IDDoc
        |INNER JOIN #tt1 as Клиенты
        |ON Клиенты.f_0 = Журнал.SP1165
        |
        |WHERE
        |    CAST(LEFT(Журнал.DATE_TIME_IDDOC, 8) AS DateTime) BETWEEN ? AND ?
        |AND Журнал.Closed&1=1
        |AND Док.SP5704 IN (SELECT Val FROM #Группа)
        |GROUP BY
        |Журнал.IDDOC,
        |Док.SP7521,
        |Док.SP5704,
        |Журнал.SP1165,
        |Журнал.SP1005,
        |Журнал.IDDocDEF,
        |Журнал.DocNo,
        |$Док.Сумма,
        |    CAST(LEFT(Журнал.DATE_TIME_IDDOC, 8) AS DateTime)
        |";



        
        глЗапросSQL.Подготовить(ТекстЗапроса);

        
        
Если глЗапросSQL.ПостроитьПараметры() = 1 Тогда
    глЗапросSQL.УстПараметр(1, НачДата);    
    глЗапросSQL.УстПараметр(2, КонДата);
КонецЕсли;    
        глЗапросSQL.УложитьСписокОбъектов(Список, "#Группа", СпрВидов.Вид());    
        Результат2 = глЗапросSQL.ВыполнитьИнструкцию(ТекстЗапроса);


В итоге ошибка:

State 07002, native 0, message [Microsoft][ODBC SQL Server Driver]Неправильное поле COUNT или ошибка синтаксиса

Что неправильно?
1 Альбатрос
 
24.12.13
10:36
Добавлю, что если убрать вот эту строчку:
глЗапросSQL.УложитьСписокОбъектов(Список, "#Группа", СпрВидов.Вид());
и соответственно условие в запросе на список, то запрос отрабатывает нормально.
2 toypaul
 
гуру
24.12.13
10:38
параметры строить надо после уложить объекты. я думаю так.
3 Альбатрос
 
24.12.13
10:40
(2) Вот мля! Спасибо!
4 Ёпрст
 
24.12.13
10:42
И зачем тут параметизированный запрос - хз..
Ты его многократно в цикле выполнять будешь ?
:)
5 sapphire
 
24.12.13
10:44
(1) Не забывай (NOLOCK) для физических таблиц.
6 sapphire
 
24.12.13
10:45
(1) Используешь 1сpp
и пишешь
|   Док.SP7521 as АлкИдентификатор,
        |   Док.SP5704 as [ВидВвода $Справочник.ВидыВОК],

не кошерно, ИМХО
7 Альбатрос
 
24.12.13
10:49
(4) (5) (6) Поясните, пожалуйста. Я с прямыми почти впервые работаю.
8 sapphire
 
24.12.13
10:51
9 Ёпрст
 
24.12.13
10:53
10 sapphire
 
24.12.13
10:54
(7) _1SJourn as Журнал (NOLOCK)

http://www.1cpp.ru/forum/YaBB.pl?num=1258282296
11 sapphire
 
24.12.13
10:54
(9) :))) то же самое, что и в (8) :)))
12 sapphire
 
24.12.13
10:56
(7) кста, запомни ресурс из (8) - там масса полезной инфы.
13 Альбатрос
 
24.12.13
11:10
Спасибо огромное!!! Изучаю
14 Альбатрос
 
24.12.13
11:32
Мужики, все же нужно пояснение по отбору из списка.

Заполнение списка:

    Список = СоздатьОбъект("СписокЗначений");
    
    СпрВидов = СОздатьОбъект("Справочник.ВидыВОК");
    СпрВидов.НайтиПоКоду(" 100",0);  
    
    Список.ДобавитьЗначение(СпрВидов.ТекущийЭлемент());
    
    СпрВидов.НайтиПоКоду(" 50",0);
    Список.ДобавитьЗначение(СпрВидов.ТекущийЭлемент());

Строка отбора в запросе:
|AND Док.SP5704 IN (SELECT Val FROM #Группа)

Установка лок. таблицы:

    глЗапросSQL.УложитьСписокОбъектов13(Список, "#Группа");


В итоге результат пустой за выбранный мной период. Нужные доки, отвечающие условиям отбора существуют, но запрос их не отбирает.
15 Альбатрос
 
24.12.13
11:34
Список не пустой.
16 sapphire
 
24.12.13
11:40
(15) В списке группы, да?
17 trad
 
24.12.13
11:47
(14) УложитьСписокОбъектов vs УложитьСписокОбъектов13 - есть разница
18 trad
 
24.12.13
11:48
тип SP5704 какой?
19 Альбатрос
 
24.12.13
11:49
(17) Я и так и так пробовал.
(18) Справочник.ВидыВОК
20 Альбатрос
 
24.12.13
11:50
Все, ошибку понял ))
21 Альбатрос
 
24.12.13
11:50
(16) (17) Еще раз спасибо