Обороты за разные периоды в одном запросе. #687063


#0 by vicof
Всем привет. Грубо говоря, есть отгрузки торгового оборудования (один регистр) и продажи (второй регистр). Пользователи хотят отчет за период, в котором хотят видеть номенклатуру, дату прихода ТО, дату расхода ТО (если она была) и оборот по этой номенклатуре из второго регистра. Причем обороты должны считаться за даты с начала периода до даты окончания (или возврата, если был возврат). Собственно вопрос, можно ли в одном запросе соединить отгрузки и обороты за разные периоды по каждой номенклатуре? Что-то типа среза последних на каждую дату, только с оборотами. Или лепить 25 тыщ соединений за разные периоды? Или вообще вежливо пользователю с такой хотелкой?
#1 by vicof
* Вежливо отказать...
#2 by shuhard
не делай это на СКД
#3 by vicof
Ну а вообще реально это сделать в запросе, не лепя кучу соединений, пусть даже не на скд?
#4 by 1dvd
Воспользуйся ВТ, если у тебя джоинофобия
#5 by Skom
ГДЕ АВТОУПОРЯДОЧИВАНИЕ
#6 by 1dvd
Извините. Вы с SQL работали до появления воьмёрки? Что-то уж больно стиль написания запроса напоминает...
#7 by Skom
ага)) меня коробит писать ЕСТЬNULL
#8 by Skom
у тебя в запросе будет всего 2 периода? или их может быть множество.
#9 by 1dvd
больше запятая перед параметром выдаёт :)
#10 by Skom
Для отладки так удобнее.
#11 by vicof
множество
#12 by Skom
тогда в запросе сложнее
#13 by vicof
я в запросе вижу пока только одно решение - количество соединений по количеству разных периодов.
#14 by Skom
как ты их в запросе то увидишь?
#15 by Ofizer
видимо только так, тоже других вариантов не вижу
#16 by vicof
Да, тоже вопрос. Добавляется еще программная обработка
#17 by Skom
что-то не соображу как у тебя это получится
#18 by sirsp
Так что ли? ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н2", ДАТАВРЕМЯ(2013, 5, 16), ДАТАВРЕМЯ(1, 1, 1) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н3", ДАТАВРЕМЯ(2013, 1, 5), ДАТАВРЕМЯ(2013, 8, 7) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н4", ДАТАВРЕМЯ(2013, 1, 9), ДАТАВРЕМЯ(2013, 12, 16) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н5", ДАТАВРЕМЯ(2013, 2, 17), ДАТАВРЕМЯ(1, 1, 1) ПОМЕСТИТЬ Рег2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н1", ДАТАВРЕМЯ(2013, 7, 12), -200 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н1", ДАТАВРЕМЯ(2013, 9, 20), 100 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н2" Номенклатура, ДАТАВРЕМЯ(2013, 1, 3) Период, 500 СуммаОборот ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н2", ДАТАВРЕМЯ(2013, 6, 1), -300 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Н2", ДАТАВРЕМЯ(2013, 9, 1), 200 //etc     ПО         Рег2.Период МЕЖДУ Рег1.ДатаРеализации И ВЫБОР КОГДА Рег1.ДатаВозврата = ДАТАВРЕМЯ(1, 1, 1) ТОГДА &КонецПериода ИНАЧЕ Рег1.ДатаВозврата КОНЕЦ СГРУППИРОВАТЬ ПО
#19 by DexterMorgan
Скд, два набора данных, при соединении передавай параметры ДатаНач и ДатаКон во второй набор
#20 by vicof
Похоже на то, но, блин, это громоздко и медленно шокапец. Вот, собственно, что я и хотел услышать. Щас посмотрю, что Хрусталева предлагает по этому поводу.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С