чнику товаровДелаю запрос, выполняю поиск по справочнику товаров (поиск по вхождению), список товаров формируется, но хотелось бы в том же запросе видеть остатки товаров по выбранному складу и по всем складам. В конфе остатки хранятся в регистре "остатки", накладными товар забивается в регистр "резерв" (оба с 3 измерениями - товар,партия,склад + 1 ресурсом - остаток), т.е. актуальные итоги - Остаток по рег.Остатки минус Остаток по рег.Резерв.
стрдатыТА=строка(формат(НачМесяца(ПолучитьДатуТА()),"ДГГГГММДД"));
|SELECT
| Спр.ID as [Элемент $Справочник.Товары],
| sum($РегОст.Остаток) - sum($РезОст.Остаток) as Остаток,
| sum($Рег.Остаток) - sum($Рез.Остаток) as Всего
|FROM
| $Справочник.Товары as Спр
| left join $РегистрИтоги.Остатки as Рег on
| Рег.PERIOD='"+стрдатыТА+"' AND
| $Рег.Товар = Спр.ID
| left join $РегистрИтоги.Резерв as Рез on
| Рез.PERIOD='"+стрдатыТА+"' AND
| $Рез.Товар = Спр.ID
| left join $РегистрИтоги.Остатки as РегОст on
| РегОст.PERIOD='"+стрдатыТА+"' AND
| $РегОст.Товар = Спр.ID AND
| $РегОст.Склад = :ВыбСклад
| left join $РегистрИтоги.Резерв as РезОст on
| РезОст.PERIOD='"+стрдатыТА+"' AND
| $РезОст.Товар = Спр.ID AND
| $РезОст.Склад = :ВыбСклад
|WHERE
| Спр.IsMark = 0 AND
| Спр.Descr LIKE :стрпоиска
|GROUP BY
| Спр.ID
|";
RS.УстановитьТекстовыйПараметр("ВыбСклад",Склад);
RS.УстановитьТекстовыйПараметр("стрпоиска", "%"+СокрЛП(наим)+"%");
Этот запрос возвращает неверные остатки! Если сделать sum(DISTINCT $РегОст.Остаток), то у некоторых позиций остатки совпадают, а у некоторых нет. По отдельности все запросы остатков по этому шаблону возвращают верные цифры. Если оставить один join, то данные будут верны а добавляешь второй - и всё, цифры "с потолка".
Подскажите, правильной дорогой иду? Где ошибка? Может тут стоит думать в направлении виртуальных таблиц?