Запрос - Получить оборот между каждыми документами расхода
Ищу пути решения такой задачи:
РН остатки, измерение: Контрагент, ресурс: Сумма
Движения: приходная накладная (ПН), расходная накладная (РН)
Необходимо запросом получить оборот между каждой РН
Табличка типа:
Дата1 | Дата2 | Контрагент | 150
Дата2 | Дата3 | Контрагент | 0
Дата3 | Дата4 | Контрагент | 50
Дата4 | Дата5 | Контрагент | -100
Т.к. записей много, то подобный запрос в цикле получается неприемлим по времени:
Может кто-то встречался с подобной задачей?
РН остатки, измерение: Контрагент, ресурс: Сумма
Движения: приходная накладная (ПН), расходная накладная (РН)
Необходимо запросом получить оборот между каждой РН
Табличка типа:
Дата1 | Дата2 | Контрагент | 150
Дата2 | Дата3 | Контрагент | 0
Дата3 | Дата4 | Контрагент | 50
Дата4 | Дата5 | Контрагент | -100
Т.к. записей много, то подобный запрос в цикле получается неприемлим по времени:
ВЫБРАТЬ
&НачалоПериода КАК НачалоПериода,
&КонецПериода КАК КонецПериода,
ДвиженияПоКонтрагенту.Контрагент КАК Контрагент,
СУММА(ДвиженияПоКонтрагенту.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.ДвиженияПоКонтрагенту.Обороты(&НачалоПериода,&КонецПериода,,Контрагент = &Контрагент) КАК ДвиженияПоКонтрагенту
СГРУППИРОВАТЬ ПО
ДвиженияПоКонтрагенту.Контрагент
ПоказатьМожет кто-то встречался с подобной задачей?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Чтото типа такого, наведи красоту, добавь контрагента
ВЫБРАТЬ
ВЫБОР
КОГДА ДвиженияПоКонтрагентуОбороты.Регистратор ССЫЛКА Документ.РасходнаяНакладная
ТОГДА "РН"
ИНАЧЕ "Другое"
КОНЕЦ КАК Поле1,
ДвиженияПоКонтрагентуОбороты.Сумма КАК Сумма,
ДвиженияПоКонтрагентуОбороты.Период КАК Период
ПОМЕСТИТЬ вт
ИЗ
РегистрНакопления.ДвиженияПоКонтрагенту.Обороты(&дата1, &дата2, Регистратор, ) КАК ДвиженияПоКонтрагентуОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
вт.Период КАК Период,
АВТОНОМЕРЗАПИСИ() КАК Поле1
ПОМЕСТИТЬ ВТ2
ИЗ
вт КАК вт
ГДЕ
вт.Поле1 = "РН"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ2.Период КАК Период,
ВТ21.Период КАК Период1,
ВТ2.Поле1 КАК Поле1
ПОМЕСТИТЬ вт3
ИЗ
ВТ2 КАК ВТ2
ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ21
ПО (ВТ2.Поле1 + 1 = ВТ21.Поле1)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
вт3.Период КАК Период,
вт3.Период1 КАК Период1,
СУММА(вт.Сумма) КАК Сумма
ИЗ
вт3 КАК вт3
ЛЕВОЕ СОЕДИНЕНИЕ вт КАК вт
ПО вт3.Период <= вт.Период
И вт3.Период1 > вт.Период
СГРУППИРОВАТЬ ПО
вт3.Период,
вт3.Период1
Показать
(5)Да, с контрагентом засада, мыслей нет как это организовать в одном запросе.
Формируй отдельным запросом ТЗ Контрагент-ДатаРН, сортировка (Контрагент, Дата), и потом циклом пробежаться и сконвертировать в ТЗ Контрагент-Дата1-Дата2 и передавай ее в итоговый запрос.
Быстро должно работать, всяко лучше чем запрос в цикле
Формируй отдельным запросом ТЗ Контрагент-ДатаРН, сортировка (Контрагент, Дата), и потом циклом пробежаться и сконвертировать в ТЗ Контрагент-Дата1-Дата2 и передавай ее в итоговый запрос.
Быстро должно работать, всяко лучше чем запрос в цикле
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот