Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 Elenchka
 
03.03.12
23:13
Добрый вечер!
Помогите, пожалуйста, с запросом в 1С 8.2 КА 1.0.
Есть 2 таблицы

1-я таблица содержит данные:
Контрагент    Тара    КоличествоОстаток
Контрагент1    Тара1    3
Контрагент1    Тара2    2
Контрагент1    Тара3    1

2-я таблица содержит данные:
Контрагент    Тара    КоличествоВозврат
Контрагент1    Тара1    1

Нужно из 2-х таблиц получить следующую таблицу:
Контрагент    Тара    КоличествоОстаток    КоличествоВозврат
Контрагент1    Тара1    3    1

Пишу следующий запрос:
ВЫБРАТЬ
   д_УчетВозвратнойТарыОстаткиИОбороты.Контрагент КАК Контрагент,
   д_УчетВозвратнойТарыОстаткиИОбороты.Тара КАК Тара,
   д_УчетВозвратнойТарыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
   РеализацияТоваровУслугВозвратнаяТара.Количество КАК Количество
ИЗ
   РегистрНакопления.д_УчетВозвратнойТары.ОстаткиИОбороты(, &ДатаКон, , , ) КАК д_УчетВозвратнойТарыОстаткиИОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслугВозвратнаяТара
       ПО д_УчетВозвратнойТарыОстаткиИОбороты.Контрагент = РеализацияТоваровУслугВозвратнаяТара.Ссылка.Контрагент
ГДЕ
   РеализацияТоваровУслугВозвратнаяТара.Ссылка = &Ссылка

Работает неверно, не пойму в чем причина
1 fimanich
 
03.03.12
23:24
(0)Хорошо бы запросы подучить...
Во вложенном запросе делаешь объединение 2-х таблиц, затем группируешь по Контрагент и Тара
Выбрать ВложенныйЗапрос.Контрагент,
ВложенныйЗапрос.Тара,
Сумма(ВложенныйЗапрос.Остаток),
Сумма(ВложенныйЗапрос.Возврат) из (
выбрать
Т1.Контрагент,
Т1.Тара,
Т1.Остаток,
0 как возврат
из т1 как т1
объединить все
1.Контрагент,
Т2.Тара,
0,
Т2
из т2 как т2)
сгруппировать по Контрагент, Тара
2 ЛЮС
 
03.03.12
23:40
(0) надо добавить в условие соединения условие на поле тара, а не только контрагент
(1) при объединении не получится вид таблицы заданный в условии
3 Elenchka
 
03.03.12
23:48
(2)Спасибо, в этом случае все работает.
Подскажите, пожалуйста, а как получить следующую результирующую таблицу из 2-х исходных?

Контрагент    Тара    КоличествоОстаток    КоличествоВозврат
Контрагент1    Тара1    3                    1
Контрагент1    Тара2    2    
Контрагент1    Тара3    1
4 viktor_vv
 
03.03.12
23:55
Полное соединение
5 viktor_vv
 
03.03.12
23:56
Isnull(д_УчетВозвратнойТарыОстаткиИОбороты.Контрагент,РеализацияТоваровУслугВозвратнаяТара.Ссылка.Контаргент) КАК Контрагент,
6 viktor_vv
 
03.03.12
23:56
(4)+ Вместо внутреннего.
7 fimanich
 
03.03.12
23:57
(2)Ну так я ж мысли читаю, вот уже в (3) условие поменялось, и объединение может помочь :-)
8 viktor_vv
 
03.03.12
23:59
(7) Ну таки да, или объединение. Вроде как объединение будет побыстрее, чем полное соединение.
9 fimanich
 
04.03.12
00:00
(8) а на счет полного соединения краем уха слышал, что не все sql-сервера корректно его могут обработать, так что для универсальности без него лучше обойтись...
10 Elenchka
 
04.03.12
00:21
(7) Спасибо за помощь!
а можно сделать так, чтобы  в результате:

Контрагент    Тара    КоличествоОстаток    КоличествоВозврат
Контрагент1    Тара1    3                    1
Контрагент1    Тара2    2                    0
Контрагент1    Тара3    1                    0

Вместо нулей ничего не выводилось?
11 fimanich
 
04.03.12
00:32
(10) Если у тебя отчет, который в макет выводится, то задай формат ячейки в макете, чтобы 0 не отображался
Программист всегда исправляет последнюю ошибку.