|
Соединение трех документов через запросы | ☑ | ||
---|---|---|---|---|
0
nazareth
15.10.13
✎
18:50
|
Добрый вечер) Я вторую неделю изучаю 1С) С Запросами работал только, когда надо было выдавать инфу только из двух объектов. А сейчас столкнулся с задачей, где надо сделать отчет по всем контрагентам из справочника и выводить для каждого три разные суммы из трех разных документов: ЗаказТовара, Расходная и ОплатаПоЗаказу. Во всех документах имеются реквизиты Контрагент(ссылка на справочник) и СуммаДокумента (число). Каким методом, способом или приемом это сделать? Просто не пойму как связать один реквизит справочника сразу с тремя документами. Внешние соединения соединяют только две таблицы значений, а через конструктор запросов также не знаю какие ставить Связи. помогите новичку)
|
|||
1
SUA
15.10.13
✎
18:52
|
где 2 объекта - там и 3
делается запрос из 2х когда готов - цепляется 3й объект |
|||
2
SUA
15.10.13
✎
18:52
|
считая первый кусок одним
|
|||
3
bolobol
15.10.13
✎
18:55
|
Выбрал Контрагентов и три суммы по документам
Левое соединение Контрагент-СуммаДокументов1, Левое соединение Контрагент-СуммаДокументов2, Левое соединение Контрагент-СуммаДокументов3 И так хоть десять раз. Если только для каждого контрагента может быть лишь одна сумма быть или не быть. |
|||
4
User_Agronom
15.10.13
✎
18:56
|
первый
Соединение СоВторым ПО ... Соединение СТретьим ПО ... И т.д. |
|||
5
User_Agronom
15.10.13
✎
18:57
|
Только не документы нужно тасавать, а из регистров инфу брать
|
|||
6
unknown181538
15.10.13
✎
18:59
|
(3) Это только если на каждого по одному документу приходится.
Я бы сделал через ОБЪЕДИНИТЬ ВСЕ: типа: ВЫБРАТЬ ДОк.Контрагент, Док.Сумма КАК Сумма1, 0 КАК Сумма2 ИЗ Документ.Док КАК док ПОМЕСТИТЬ ВТ ОБЪЕДНИТЬ ВСЕ ДОк2.Контрагент, 0, Док2.Сумма ИЗ Документ.Док2 КАК Док2 ОБЪЕДНИТЬ ВСЕ Док3.Контрагент ..... ; ВТ.Контрагент, СУММА(ВТ.Сумма1), ... ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Контрагент ... |
|||
7
bolobol
15.10.13
✎
19:05
|
Не по одному _документу_, а по одной требуется сумме в разрезе _видов_ документов.
|
|||
8
nazareth
15.10.13
✎
19:05
|
Соединения подряд вы имели ввиду таким образом?
ВЫБРАТЬ ПолноеНаименование, Сумма(Заказы.СуммаДокумента) Как СуммаЗаказов, СУММА(РасходнаяНакладная.СуммаДокумента) КАК СуммаОтгрузки, СУММА(ОплатаПоЗаказуПокупателя.СуммаДокумента) КАК СуммаОплаты ИЗ Справочник.Контрагенты Как Контр Левое Внешнее Соединение Документ.ЗаказПокупателя КАК Заказы, Левое Внешнее Соединение Документ.РасходнаяНакладная КАК Расходная, Левое Внешнее Соединение Документ.ОплатаПоЗаказуПокупателя КАК Оплата ПО Контр.Ссылка = Контрагент Сгруппировать По ПолноеНаименование АВТОУПОРЯДОЧИВАНИЕ ИТОГИ ПО ОБЩИЕ Я понимаю, что надо через регистры, но моя конкретная задача - через документы. |
|||
9
nazareth
15.10.13
✎
19:11
|
(3)Соединения подряд вы имели ввиду таким образом?
ВЫБРАТЬ ПолноеНаименование, Сумма(Заказы.СуммаДокумента) Как СуммаЗаказов, СУММА(РасходнаяНакладная.СуммаДокумента) КАК СуммаОтгрузки, СУММА(ОплатаПоЗаказуПокупателя.СуммаДокумента) КАК СуммаОплаты ИЗ Справочник.Контрагенты Как Контр Левое Внешнее Соединение Документ.ЗаказПокупателя КАК Заказы, Левое Внешнее Соединение Документ.РасходнаяНакладная КАК Расходная, Левое Внешнее Соединение Документ.ОплатаПоЗаказуПокупателя КАК Оплата ПО Контр.Ссылка = Контрагент Сгруппировать По ПолноеНаименование АВТОУПОРЯДОЧИВАНИЕ ИТОГИ ПО ОБЩИЕ Я понимаю, что надо через регистры, но моя конкретная задача - через документы. |
|||
10
bolobol
15.10.13
✎
19:14
|
Так (8) не получится, так каждый документ Заказа соединится с каждой Расходной и каждая получившаяся пара соединится с Оплатой.
Сначала Выбрать Заказы.Контрагент, СУММА(Заказы.Сумма) ПОМЕСТИТЬ вт.ЗАКАЗЫ; Выбрать Расходная.Контрагент, СУММА(Расходная.Сумма) ПОМЕСТИТЬ вт.Расходная; Выбрать Оплата.Контрагент, СУММА(Оплата.Сумма) ПОМЕСТИТЬ вт.Оплата; И когда на каждого контрагента в таблице имеется лишь одна запись с суммой: Выбрать Контрагенты, вт.заказы.сумма, вт.расходная.сумма, вт.оплата.Сумма Контрагенты левое вт.заказы, левое вт.расхождная, левое вт.оплата ПО контрагент |
|||
11
bolobol
15.10.13
✎
19:15
|
А как в (8) - многократно увеличатся суммы из-за всевозможных комбинаций трёх видов документов
|
|||
12
nazareth
15.10.13
✎
19:16
|
(10)ПОМЕСТИТЬ это используется временные таблицы, верно? просто я не сталкивался еще с ними.
|
|||
13
nazareth
15.10.13
✎
19:18
|
(10) а все эти три ВЫБРАТЬ идут в идут тремя запросами или как-то объединяются в одном?
Спасибо за Вам за помощь! |
|||
14
bolobol
15.10.13
✎
19:18
|
Да. С ними не соль-то сталкиваться, просто отдельная выборка становится как таблица в БД ))
|
|||
15
bolobol
15.10.13
✎
19:20
|
Прямо в конструкторе на закладке Дополнительно (по моему) - надо поставить точку "Создать временную таблицу" и дать ей имя. А на последней закладке - создать следующий запрос, который будет видеть все предыдущие результаты.
|
|||
16
nazareth
15.10.13
✎
19:24
|
(15) мда)я думал, что должно несколько проще это делаться. вроде самая обычная ситуация, на первый взгляд. попробую сделать как Вы сказали. если не получиться - напишу)
|
|||
17
bolobol
15.10.13
✎
19:40
|
Всё просто - разделяй и влавствуй))
Восчем, вот как выглядит реальный запрос, ибо я домой: ВЫБРАТЬ РеализацияТоваровУслуг.Контрагент, СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК СуммаДокумента ПОМЕСТИТЬ Реал ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Дата >= &Дата СГРУППИРОВАТЬ ПО РеализацияТоваровУслуг.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслуг.Контрагент, СУММА(ПоступлениеТоваровУслуг.СуммаДокумента) КАК СуммаДокумента ПОМЕСТИТЬ Пост ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Дата >= &Дата СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслуг.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеНаРасчетныйСчет.Контрагент, СУММА(ПоступлениеНаРасчетныйСчет.СуммаДокумента) КАК СуммаДокумента ПОМЕСТИТЬ ПнРС ИЗ Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет ГДЕ ПоступлениеНаРасчетныйСчет.Дата >= &Дата СГРУППИРОВАТЬ ПО ПоступлениеНаРасчетныйСчет.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Реал.СуммаДокумента, Пост.СуммаДокумента КАК СуммаДокумента1, ПнРС.СуммаДокумента КАК СуммаДокумента2, Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Реал КАК Реал ПО Контрагенты.Ссылка = Реал.Контрагент ЛЕВОЕ СОЕДИНЕНИЕ Пост КАК Пост ПО Контрагенты.Ссылка = Пост.Контрагент ЛЕВОЕ СОЕДИНЕНИЕ ПнРС КАК ПнРС ПО Контрагенты.Ссылка = ПнРС.Контрагент ГДЕ Реал.СуммаДокумента <> 0 ИЛИ Пост.СуммаДокумента <> 0 ИЛИ ПнРС.СуммаДокумента <> 0 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |