Программа все делает верно, если осознать логику работы запроса:
сначала отбираются Движения по заданным условиям а потом выполняется агрегатная функция СУММА с группировкой по полю Номенклатура, итого имеем:
01.01.2010 Редис НачОст=0, Приход=1, Расход=0, КонОст=1;
02.01.2010 Редис НачОст=1, Приход=0, Расход=1, КонОст=0;
----
Сумма Редис НачОст=1, Приход=1, Расход=1, КонОст=1;
Скорее всего это происходит из-за использования режима Остатки и Обороты. Поскольку я его никогда не использовал то могу посоветовать решение только через ПОЛНОЕ СОЕДИНЕНИЕ и вложенный запрос:
ВЫБРАТЬ
ЕСТЬNULL(Обороты.Номенклатура(ЕСТЬNULL(НачОстатки.Номенклатура,КонОстатки.Номенклатура)) КАК Номенклатура,
ЕСТЬNULL(НачОстатки.Количество, 0) КАК КоличествоНачальныйОстаток,
ЕСТЬNULL(Обороты.КоличествоПриход, 0) КАК КоличествоПриход,
ЕСТЬNULL(Обороты.КоличествоРасход, 0) КАК КоличествоРасход,
ЕСТЬNULL(КонОстатки.Количество, 0) КАК КоличествоКонечныйОстаток
ИЗ
(ВЫБРАТЬ
Обороты.Номенклатура,
СУММА(ЕСТЬNULL(Обороты.КоличествоПриход, 0)) КАК КоличествоПриход,
СУММА(ЕСТЬNULL(Обороты.КоличествоРасход, 0)) КАК КоличествоРасход
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(НАЧАЛОПЕРИОДА(&Дн, ДЕНЬ), КОНЕЦПЕРИОДА(&Дк, ДЕНЬ)) КАК Обороты
ГДЕ
(НЕ Обороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстаткиИОбороты.Номенклатура
) КАК Обороты
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(КОНЕЦПЕРИОДА(&Дк, ДЕНЬ)) КАК НачОстатки
ПО (Обороты.Номенклатура=НачОстатки.Номенклатура)
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(КОНЕЦПЕРИОДА(&Дк, ДЕНЬ)) КАК КонОстатки
ПО (Обороты.Номенклатура=КонОстатки.Номенклатура)
ЕстьNULL - это перестраховка от несуществуюих записей. Порой забывание про эту функцию в случае объединения запросов приводит к трудновыловимым ошибкам.
P.S. Запрос писался прямо в форуме и не проверялся на конфигурации - могут быть синтаксические ошибки