Имя: Пароль:
1C
1С v8
Помогите с простым запросом
,
0 v_clim
 
19.04.12
10:33
Есть регистр остатков (Товар Количество)
Товар1 - 5
Товар2 - 4
Товар3 - 8
Товар4 - 7
Товар5 - 9

Есть табличная часть документа (Товар Количество)
Товар1 - 2
Товар2 - 3
Товар6 - 10
На выходе нужно вот такое
       рег  ТЧ
Товар1 - 5   2  
Товар2 - 4   3
Товар3 - 8   0
Товар4 - 7   0
Товар5 - 9   0
Товар6 - 0  10

Делал полное объединение не работает почему-то
1 aleks-id
 
19.04.12
10:34
ну показывай код как делал
2 butterbean
 
19.04.12
10:34
показывай запрос
3 Cube
 
19.04.12
10:34
Запрос в студию!
4 Рэйв
 
19.04.12
10:35
Криво делал значит
5 Wobland
 
19.04.12
10:35
(0) ЕСТЬNULL в остатках тебя спасёт
6 v_clim
 
19.04.12
10:38
ВЫБРАТЬ
   ПеремещениеТоваровМеждуТочкамиТовары.Товар КАК Товар,
   ПРЕДСТАВЛЕНИЕ(ПеремещениеТоваровМеждуТочкамиТовары.Товар),
   ПеремещениеТоваровМеждуТочкамиТовары.Количество КАК Количество,
   СУММА(Остатки.КоличествоОстаток) КАК ОСтаток,
   Остатки.Товар КАК Товар1
ИЗ
   Документ.ПеремещениеТоваровМеждуТочками.Товары КАК ПеремещениеТоваровМеждуТочкамиТовары
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Точка = &Точка) КАК Остатки
       ПО ПеремещениеТоваровМеждуТочкамиТовары.Товар = Остатки.Товар
ГДЕ
   ПеремещениеТоваровМеждуТочкамиТовары.Ссылка = &Ссылка
ИТОГИ
   СУММА(Количество),
   СУММА(ОСтаток)
ПО
   ОБЩИЕ
7 butterbean
 
19.04.12
10:39
ЕСТЬNULL(ПеремещениеТоваровМеждуТочкамиТовары.Товар,Остатки.Товар) КАК Товар
8 mzelensky
 
19.04.12
10:41
(0) а как в таблице:

На выходе нужно вот такое
       рег  ТЧ
Товар1 - 5   2  
Товар2 - 4   3
Товар3 - 8   0
Товар4 - 7   0
Товар5 - 9   0
Товар6 - 0  10

В тч для товара "Товар3" стоит "0"??? что же ты тогда перемещаешь? воздух?
9 Рэйв
 
19.04.12
10:42
+(7)
СУММА(ЕСТЬNULL(ПеремещениеТоваровМеждуТочкамиТовары.Товар,Остатки.Товар)) КАК Товар
10 Рэйв
 
19.04.12
10:42
(8)Это значит что остаток есть, но позиции нет в ТЧ.
11 GoldenCalf
 
19.04.12
10:46
(0) Для чего на выходе нужно такое?
12 _RTFM_
 
19.04.12
10:47
(9) а зачем сумма?
13 mzelensky
 
19.04.12
10:48
(10) а если у нас есть в наличии 100 000 позиций, то они все ему выведутся ?!
14 _RTFM_
 
19.04.12
10:49
+ (12) ну и может в итоге так:
ВЫБРАТЬ
   ЕСТЬNULL(ПеремещениеТоваровМеждуТочкамиТовары.Товар,Остатки.Товар)) КАК Товар,
   ЕСТЬNULL(ПеремещениеТоваровМеждуТочкамиТовары.Количество, 0) КАК Количество,
   ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Оcтаток
ИЗ
   Документ.ПеремещениеТоваровМеждуТочками.Товары КАК ПеремещениеТоваровМеждуТочкамиТовары
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Точка = &Точка) КАК Остатки
       ПО ПеремещениеТоваровМеждуТочкамиТовары.Товар = Остатки.Товар
ГДЕ
   ПеремещениеТоваровМеждуТочкамиТовары.Ссылка = &Ссылка
ИТОГИ
   СУММА(Количество),
   СУММА(ОСтаток)
ПО
   ОБЩИЕ
15 Рэйв
 
19.04.12
10:50
(12)Посмотрел, что  у него стоит:-)). Без группировок и правда можно убрать
16 Рэйв
 
19.04.12
10:50
(13)На то и полное соединение. Выводится все из обеих таблиц.
17 _RTFM_
 
19.04.12
10:51
в (14) в первой поле лишнюю скобку указал..
18 mzelensky
 
19.04.12
10:53
(15) а тебе не кажется ,что это бред?!
19 Рэйв
 
19.04.12
10:56
(15)Что именно?
20 Рэйв
 
19.04.12
10:58
(19)->(18)
21 v_clim
 
19.04.12
10:59
Сделал так все равно только 3 позиции показывает
22 v_clim
 
19.04.12
10:59
ВЫБРАТЬ
   ЕСТЬNULL(ПеремещениеТоваровМеждуТочкамиТовары.Товар,Остатки.Товар) КАК Товар,
   ЕСТЬNULL(ПеремещениеТоваровМеждуТочкамиТовары.Количество, 0) КАК Количество,
   ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Оcтаток
ИЗ
   Документ.ПеремещениеТоваровМеждуТочками.Товары КАК ПеремещениеТоваровМеждуТочкамиТовары
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Точка = &Точка) КАК Остатки
       ПО ПеремещениеТоваровМеждуТочкамиТовары.Товар = Остатки.Товар
ГДЕ
   ПеремещениеТоваровМеждуТочкамиТовары.Ссылка = &Ссылка
ИТОГИ
   СУММА(Количество),
   СУММА(Оcтаток)
ПО
   ОБЩИЕ
23 butterbean
 
19.04.12
11:00
(22) замени ГДЕ на И
24 v_clim
 
19.04.12
11:00
для чего это надо в печатную форму из перемещения выводить остаток на начало точки получателя и перемещение на эту точку
25 mzelensky
 
19.04.12
11:05
(19) то что он хочет вывести распечатку ВСЕГО товара, и там в одно колонке показать ,что этот товар есть в Документе, а в другой колонке показать сколько вообще этого товара...работать будет конечно, НО если (повторяюсь), на остатках 100 000 позиций (да пусть даже 15 000), то ВСЕ это выведется ему в отчет - попробуй потом там что-то найти!

Итог - задача сама по себе решена, но КАКОЙ ТОЛК ОТ ТАКОГО РЕШЕНИЯ?
26 v_clim
 
19.04.12
11:06
вроде получается!!! только колонка остаток правильно выводится а колонка количество дублирут позиции
27 v_clim
 
19.04.12
11:07
там товаров совсем немного 20 позиций
28 Рэйв
 
19.04.12
11:08
(25)Ну он там фильтрует вроде по точке.
Значит так надо:-)
29 Aprobator
 
19.04.12
11:24
ОБЪЕДИНЕНИЕ спасет отца русской демократии )))
30 v_clim
 
19.04.12
15:59
Выбрать
ЕстьNULL(Товары.Товар,0) КАК Товар,
СУММА(ЕСТЬNULL(Товары.Количество,0))КАК Количество,
СУММА(0) КАК Остаток
 
 ИЗ
   Документ.ПеремещениеТоваровМеждуТочками.Товары КАК Товары
     
ГДЕ
   Товары.Ссылка = &Ссылка
   СГРУППИРОВАТЬ ПО
   Товары.Товар
   
   ОБЪЕДИНИТЬ
   
Выбрать
 ЕстьNULL(Остатки.Товар,0) КАК Товар,
 СУММА (0) КАК Количество,
СУММА(ЕСТЬNULL(Остатки.КоличествоОстаток, 0)) КАК Оcтаток
ИЗ
 РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Точка = &Точка) КАК Остатки
 
 СГРУППИРОВАТЬ ПО
 Остатки.Товар


Вопрос - как сгруппировать по товару результат объединения ?
31 v_clim
 
19.04.12
17:06
Если правильно разобрался то делается это через ВложенныйЗапрос...