Имя: Пароль:
1C
1C 7.7
v7: Остаток в прямом запросе 1С++
0 Кейси райбек
 
26.07.13
15:04
Здравствуйте! Получаю остаток в прямом запросе.
Текст запроса
        ТекстЗапроса = "";
        ТекстЗапроса = ТекстЗапроса + "
        |SELECT
        |Тов.ID AS [Товар $Справочник.Товары],
        |$Пост.менеджер AS [Пост $Справочник.Поставщики],
        |isnull(OST.Остаток,0) as '_1'
        |FROM $Справочник.Товары AS Тов (nolock)
        |
        |LEFT JOIN
        |
        |(select ОстаткиТоваров.Товар,
        |    ОстаткиТоваров.ОстатокТовараОстаток as [Остаток]
        |    from $РегистрОстатки.ОстаткиТоваров(:ДатаРасчета, , , Товар, ОстатокТовара) as ОстаткиТоваров
        |) as OST on OST.Товар = ТОВ.id
        |
        |LEFT JOIN
        | $Справочник.Поставщики as Пост (nolock) on Пост.id = $ТОВ.Поставщик
        |
        |where ТОВ.ismark = 0  and $ТОВ.Опт_Цена>0   and $Пост.менеджер = :выбменеджер
        |";

Остаток получается правильным на весь товар, кроме тех, которые имеют одинаковое наименование. Хотя я джойню по id. Как-только я меняю наименование товара, остаток считается правильно.
1 Ёпрст
 
26.07.13
15:05
а тебе точно весь справочник нужен в запросе ?
2 Кейси райбек
 
26.07.13
15:06
(1) Да. Я считаю процент нулевых позиций, от общего числа товаров
3 Ёпрст
 
26.07.13
15:07
ну, у тебя всё правильно, можно только было не оборачивать в подзапрос ВТ ОстаткиТоваров
4 Ёпрст
 
26.07.13
15:08
ну и условием Where $Пост.менеджер = :выбменеджер

ты LEFT JOIN
        | $Справочник.Поставщики a

превратил в inner join
5 Кейси райбек
 
26.07.13
15:12
Спасибо, нашел. Ошибка не в прямом запросе. А в обработке получаемой ТЗ была
6 Кейси райбек
 
26.07.13
15:17
Вру) Добавил ORDER BY Тов.ID и заработало