Запрос к оборотам регистра накопления

Версия для печатиPDF-версия

Платформа:

Добрый день!

Есть запрос к РН "Движение денежных средств" (Обороты). 

В запросе ставлю условие: 

ВЫБОР
КОГДА ДвиженияДенежныхСредствОбороты.ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
ТОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот
ИНАЧЕ ДвиженияДенежныхСредствОбороты.СуммаОборот * -1
КОНЕЦ
 
Проблема вот в чем : у некоего контрагента есть движения как в плюс, так и в минус.
Соответственно в результатах запроса выводит две строки.А мне нужна одна.
Если я суммирую по этому полю в группировке, почему-то плывут другие строки(двоят)
 
Как правильно надо сгруппировать запрос, чтобы получить таблицу вида  контрагент-суммаОплат?

Какая периодичность установлена у виртуальной таблицы ДвиженияДенежныхСредствОбороты?

Выложите структуру регистра и полный текст запроса.

периодичность не установлена.

ВЫБРАТЬ
СУММА(ВЫБОР
КОГДА ДвиженияДенежныхСредствОбороты.ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
ТОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот
ИНАЧЕ ДвиженияДенежныхСредствОбороты.СуммаОборот * -1
КОНЕЦ) КАК СуммаОплат,
Договора.Договор.Номер КАК ДоговорНомер
ИЗ
РегистрСведений.Договора.СрезПоследних(&КонецПериода, ) КАК Договора
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ДвиженияДенежныхСредствОбороты
ПО Договора.Договор.Номер = ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента.Номер
 
 
СГРУППИРОВАТЬ ПО
Договора.Договор.Номер
 
УПОРЯДОЧИТЬ ПО
ДоговорНомер

Предлагаю воспользоваться группировкой. У вас же там есть еще поля в запросе, кроме этого?  Например, Контрагент. Сгруппируете этому полю, а значение в поле с приходом-расходом - ссумируйте. Тогда приход идет со знаком "+", расход с "-", результат будет математической суммой.

А какая принципиальная разница группировать по договору или контрагенту?

 

У меня так и сгруппировано - договор в группировке, данные по оборотам в суммировании, но часть сумм дублируется. 

Какая конфигурация?

Зачем в запрос добавлен РегистрСведений.Договора? Попробуйте его убрать и группировать по ДоговорКонтрагента из регистра ДвиженияДенежныхСредствОбороты.

Переделанная УПП

Мне в отчете надо,чтобы были выведены все договора, даже по которым не было оплат

Без привязки к контрагенту?

у одного контрагента может быть несколько договоров. А инфо по контрагенту я могу выбрать из Договора при необходимости вывода в отчет

А без регистра Договоры при группировке по ДоговорКонтрагента строки также задваиваются?

Нет, не задваиваются, но! Если я в своем запросе (который выложен) убираю суммирование, то каждому договору (кроме одного, где + и -) соттветствует по одной строке, дубликатов нет, нет пустых строк. Как только ставлю суммирование в 5 из 70 строк дублируются значения. 

Это при запросе только по регистру ДвиженияДенежныхСредств?

Если запрос только по РН, задвоенных строк нет. Я про изначальный запрос с договорами  -не понимаю, что дублируется, если визуально у всех по одной строке

Тогда попробуйте создать временную таблицу с данными из регистра ДвиженияДенежныхСредств с группировкой по ДоговорКонтрагента, а в основном запросе соедините эти данные с регистром Договоры.

Связывать лучше по самому договору, а не его номеру.

Это только часть большого запроса. Как лучше делать в таком случае - временные таблицы или вложенные запросы?

По новой методике 1С лучше делать временные таблицы.

Огромное спасибо! Буду пробовать! 

Делаю,как Вы порекомендовали. Возникла следующая проблема:

не могу вытащить полное наименование контрагента (из Договоров), пишет,что нельзя группировать по полю с неограниченной длинной . Функция ВЫРАЗИТЬ КАК СТРОКА не прокатывает.

А "ВЫРАЗИТЬ КАК СТРОКА(1000)" пробовали?

Да, только у меня 200 символов. Выдает ошибку. Получилось только если договора запихнуть во вложенныйзапрос