![]() |
![]() |
![]() |
|
v8: Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
r_i_n_i_k
11.01.12
✎
18:02
|
есть 2 документа, необходимо написать такой запрос, что бы в итоговую таблицу попадали ТЧ из обоих документов.
так не помогает: ВЫБРАТЬ РГ_СчетНаОплатуПолученныйТовары.Номенклатура КАК НоменклатураПлан, ЕСТЬNULL(РГ_СчетНаОплатуПолученныйТовары.Количество, 0) КАК КоличествоПлан, ПоступлениеТоваровУслугТовары.Номенклатура КАК НоменклатураФакт, ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Количество, 0) КАК КоличествоФакт ИЗ Документ.РГ_СчетНаОплатуПолученный.Товары КАК РГ_СчетНаОплатуПолученныйТовары ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ПО (РГ_СчетНаОплатуПолученныйТовары.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн) ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн = &ДокОсн подскажите пжл |
|||
1
Rie
11.01.12
✎
18:04
|
(0) Как должны соединяться сами табличные части? По товару?
|
|||
2
Nagaru
11.01.12
✎
18:04
|
ну для начала приведи пример таличных частей и что в итоге тыхочешь получить, дальше будет видно что надо изменить в твоем запросе
|
|||
3
АНДР
11.01.12
✎
18:04
|
Объеденить (Union)
|
|||
4
a_alenkin
11.01.12
✎
18:06
|
Делаешь объединение - потом группируешь по номенклатуре, причем при объединении первый запрос - Количество, 0 - второй - 0, Количество
|
|||
5
r_i_n_i_k
11.01.12
✎
18:06
|
колонки в обеих ТЧ "Номенклатура", "Количество"
должны соединяться по товару делал через объеденить, идут сперва строки по 1й ТЧ, затем по 2й ТЧ |
|||
6
a_alenkin
11.01.12
✎
18:07
|
(5) потом группировка
|
|||
7
Rie
11.01.12
✎
18:07
|
(3), (4) Какие объединения, господа?
Возможно, ТС хочет знать, какой товар поступил, а какой - не поступил по оплаченному счёту. Или что-то в этом роде. |
|||
8
kotletka
11.01.12
✎
18:07
|
РГ_СчетНаОплатуПолученныйТовары.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн-это в где засунуть?
а про объединение - не по номенклатуре надо объединять не? |
|||
9
r_i_n_i_k
11.01.12
✎
18:08
|
(7) именно так
|
|||
10
r_i_n_i_k
11.01.12
✎
18:08
|
(8) есть полученный счет и ПТиУ, созданное на основани этого счета..
надо бы отчет, который порказывал отклонения |
|||
11
Rie
11.01.12
✎
18:10
|
(5) Так и вставь соответствующее условие
ПО (РГ_СчетНаОплатуПолученныйТовары.Номенклатура=ПоступлениеТоваровУслугТовары.Номенклатура) И (РГ_СчетНаОплатуПолученныйТовары.Ссылка=&ДокОсн) И (ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн=&ДокОсн) |
|||
12
Rie
11.01.12
✎
18:10
|
+(11) А условие ГДЕ в таком случае вообще выкинь
|
|||
13
a_alenkin
11.01.12
✎
18:11
|
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура, СУММА(ВложенныйЗапрос.КоличествоПлан) КАК КоличествоПлан, СУММА(ВложенныйЗапрос.КоличествоФакт) КАК КоличествоФакт ИЗ (ВЫБРАТЬ СчетНаОплатуПокупателюТовары.Номенклатура КАК Номенклатура, СчетНаОплатуПокупателюТовары.Количество КАК КоличествоПлан, 0 КАК КоличествоФакт ИЗ Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура, 0, РеализацияТоваровУслугТовары.Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура |
|||
14
Rie
11.01.12
✎
18:11
|
(13) Не нужно ему объединение с группировкой. Соединение всё само сделает.
|
|||
15
Nagaru
11.01.12
✎
18:12
|
(11) Но только при условии, что номенклатура не дублируется в табличной части. Иначе вложенный запрос с группировкой по номенклатуре нужно будет сделать.
|
|||
16
Nagaru
11.01.12
✎
18:12
|
+(15) Я бы сделал на всякий случай
|
|||
17
r_i_n_i_k
11.01.12
✎
18:12
|
(11)
в таком случае не попадают строки, когда в Счете есть товар, а в ПТиУ - нету, или наоборот |
|||
18
Aprobator
11.01.12
✎
18:14
|
чудно как то все. Неужели это не в каких регистрах не контролируется, что запрос приходится по докам делать?
|
|||
19
a_alenkin
11.01.12
✎
18:15
|
(11) чо такое ДокОсн?
|
|||
20
Rie
11.01.12
✎
18:15
|
(15) Это да. Согласен.
|
|||
21
a_alenkin
11.01.12
✎
18:15
|
Структура подчиненности в критериях отбора обычно хранится
|
|||
22
Rie
11.01.12
✎
18:16
|
(19) Спроси у ТС. У него в запросе такое поле имеется.
|
|||
23
Rie
11.01.12
✎
18:16
|
(17) При полном соединении?
|
|||
24
r_i_n_i_k
11.01.12
✎
18:18
|
(19) это Счет полученный, на основани которого введено поступление
|
|||
25
r_i_n_i_k
11.01.12
✎
18:18
|
сделал как в (13), выходят все Счет полученные и все поступления..так то правильно, только хотелось бы видеть в разрезе Счетов :)
|
|||
26
Nagaru
11.01.12
✎
18:19
|
(17) Ну тогда возможно условие
И (РГ_СчетНаОплатуПолученныйТовары.Ссылка=&ДокОсн) И (ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн=&ДокОсн) придется заменить на ГДЕ (РГ_СчетНаОплатуПолученныйТовары.Ссылка=&ДокОсн) ИЛИ (ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн=&ДокОсн) вроде навскидку отработает, но скорость запроса будет отвратительная. надо точно через веменные таблицы делать |
|||
27
Nagaru
11.01.12
✎
18:21
|
Лень пистаь запрос, но суть следующая, сначала создаешь ВТ по Счету где ссылка = &Ссылка
потом создаешь ВТ, по поступлению, где Поступление.ДокОсн = &Ссылка потом полное соединение этих двух таблиц по номенклатуре как оно у тебя сейчас и прописано потом удаляешь обе ВТ. |
|||
28
r_i_n_i_k
11.01.12
✎
18:23
|
сделал как в (11), исправил как в (26) - заработало, спасибо
|
|||
29
Rie
11.01.12
✎
18:23
|
(27) Можно не создавать ВТ, использовать подзапросы с ГДЕ нужное условие.
|
|||
30
r_i_n_i_k
11.01.12
✎
18:25
|
а теперь можно как то сделать, что бы не по конкретному Счету выводилась, а по всем Счетам?
|
|||
31
kosts
11.01.12
✎
18:26
|
(29) Рекомендуется наоборот делать ВТ
|
|||
32
Rie
11.01.12
✎
18:26
|
(30) Так у тебя и должно выводиться по тому счёту, который ты параметру ДокОсн присвоил.
|
|||
33
r_i_n_i_k
11.01.12
✎
18:26
|
(32) а если я не буду присваивать &ДокОсн, что бы он по всем счетам выводил, но с группировкой по счетам
|
|||
34
Nagaru
11.01.12
✎
18:36
|
(33) Так присваивать-то его всегда нужно, но если это будет пустая ссылка, то тогда нужно сделать следующее:
1. добавь поле ЕСТЬNULL(РГ_СчетНаОплатуПолученныйТовары.Ссылка, ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн), там всега будет выводиться ссылка на документ основание 2. сделай итоги по этому полю 3. условия в запросах по ВТ с Где РГ_СчетНаОплатуПолученныйТовары.Ссылка = &Ссылка замени на Где РГ_СчетНаОплатуПолученныйТовары.Ссылка = &Ссылка ИЛИ &Ссылка = Значение(Документ.РГ_СчетНаОплатуПолученныйТовары.ПустаяСсылка) |
|||
35
r_i_n_i_k
11.01.12
✎
18:43
|
(34) не соображу :)
|
|||
36
Rie
11.01.12
✎
18:51
|
(34) Может, ему стоит просто условием
ГДЕ НЕ (ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн ЕСТЬ NULL) убрать те поступления, которые не по счетам? |
|||
37
Nagaru
11.01.12
✎
19:02
|
(35) Охххх
Выбрать РГ_СчетНаОплатуПолученныйТовары.Номенклатура КАК Номенклатура, Сумма(РГ_СчетНаОплатуПолученныйТовары.Количество) КАК Количество, РГ_СчетНаОплатуПолученныйТовары.Ссылка КАК Ссылка Поместить ТаблицаПлан ИЗ Документ.РГ_СчетНаОплатуПолученный.Товары КАК РГ_СчетНаОплатуПолученныйТовары ГДЕ Документ.РГ_СчетНаОплатуПолученный.Ссылка = &ДокОсн ИЛИ &ДокОсн = Значение(Документ.РГ_СчетНаОплатуПолученный.ПустаяСсылка) Сгруппировать ПО Ссылка, Номенклатура ; /////////////////////////////////////////////////////////////////////////////// Выбрать ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, Сумма(ПоступлениеТоваровУслугТовары.Количество) КАК Количество, ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн КАК Ссылка Поместить ТаблицаФакт ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ Документ.ПоступлениеТоваровУслугТовары.Ссылка.ДокОсн = &ДокОсн ИЛИ &ДокОсн = Значение(Документ.РГ_СчетНаОплатуПолученный.ПустаяСсылка) Сгруппировать ПО Ссылка, Номенклатура ; /////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(ТаблицаПлан.Ссылка, ТаблицаФакт.Ссылка) КАК Счет ТаблицаПлан.Номенклатура КАК НоменклатураПлан, ЕСТЬNULL(ТаблицаПлан.Количество, 0) КАК КоличествоПлан, ТаблицаФакт.Номенклатура КАК НоменклатураФакт, ЕСТЬNULL(ТаблицаФакт.Количество, 0) КАК КоличествоФакт ИЗ ТаблицаПлан КАК ТаблицаПлан ПОЛНОЕ СОЕДИНЕНИЕ ТаблицаФакт КАК ТаблицаФакт ПО (ТаблицаПлан.Номенклатура = ТаблицаФакт.Номенклатура И ТаблицаПлан.Ссылка = ТаблицаФакт.Ссылка) ИТОГИ ПО Счет |
|||
38
Nagaru
11.01.12
✎
19:03
|
+(37) Тут могут быть ошибки, писал от руки и по памяти, но основную суть я вроде как изобразил полностью.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |