Имя: Пароль:
1C
1С v8
Запрос, как обойти лишнее соединение?
0 НикДляЗапросов
 
11.12.13
12:06
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    СписокНоменклатура.Ссылка КАК Номенклатура,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстатокРезерв
ИЗ
    Справочник.Номенклатура КАК СписокНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, ) КАК ТоварыНаСкладахОстатки
        ПО СписокНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
        ПО СписокНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура.Ссылка
ГДЕ
    (ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
            ИЛИ ТоварыНаСкладахОстатки.КоличествоОстаток > 0)

Нужен список номенклатуры, которая есть в остатках или в резерве
1 НикДляЗапросов
 
11.12.13
12:06
Лишнее это связь со справочником
2 Defender aka LINN
 
11.12.13
12:08
Ну соедини тупо регистры, в чем проблема?
3 НикДляЗапросов
 
11.12.13
12:10
Я попробовал не получилось ((
4 alexiv79
 
11.12.13
12:11
(0) Вложенный запрос делай - Быстрее будет работать. Какая конфа?
5 Euguln
 
11.12.13
12:11
Объединить не предлагать?
6 alexiv79
 
11.12.13
12:12
(5) ну если отчет на СКд то можно и объединить
7 НикДляЗапросов
 
11.12.13
12:12
Я не могу соединить два регистра! не понимаю ОТКУДА БРАТЬ НОМЕНКЛАТУРУ
8 alexiv79
 
11.12.13
12:13
(7) Конфа какая?
9 chelentano
 
11.12.13
12:13
(7) а ты их ОБЪЕДИНИ
10 Defender aka LINN
 
11.12.13
12:14
(7) Из обоих. И орать тут не надо.
11 НикДляЗапросов
 
11.12.13
12:18
так если из обоих, то они в разных колонках будут...
У меня получается или так или вложенным запросом. можно как то без этого?
12 alexiv79
 
11.12.13
12:19
Вот в качестве примера вложенного запроса

ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    СУММА(ВложенныйЗапрос.ОборотПартии) КАК ОборотПартии,
    СУММА(ВложенныйЗапрос.ОборотПродажи) КАК ОборотПродажи
ИЗ
    (ВЫБРАТЬ
        ПартииТоваровКомпанииОбороты.Номенклатура КАК Номенклатура,
        СУММА(ПартииТоваровКомпанииОбороты.КоличествоОборот) КАК ОборотПартии,
        СУММА(0) КАК ОборотПродажи
    ИЗ
        РегистрНакопления.ПартииТоваровКомпании.Обороты(, , , ) КАК ПартииТоваровКомпанииОбороты
    
    СГРУППИРОВАТЬ ПО
        ПартииТоваровКомпанииОбороты.Номенклатура
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ПродажиОбороты.Номенклатура,
        СУММА(0),
        СУММА(ПродажиОбороты.КоличествоОборот)
    ИЗ
        РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
    
    СГРУППИРОВАТЬ ПО
        ПродажиОбороты.Номенклатура) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Номенклатура

УПОРЯДОЧИТЬ ПО
    Номенклатура
13 alexiv79
 
11.12.13
12:21
+(12)  Если нужно чтобы в одну колонку попадали, тогда второе поле ОборотПродажи лишнее получается
14 Defender aka LINN
 
11.12.13
12:27
(11) Это у тебя будут. У того, кто потрудился хотя бы основы SQL узнать - не будут.
17 alexiv79
 
11.12.13
13:00
(15) Зря ты так - тебе уже все написали. ты хочешь готовый текст запроса? Даже какая конфа не написал
18 НикДляЗапросов
 
11.12.13
13:05
написали? ни одного объяснения, спасибо точно некому сказать
19 alexiv79
 
11.12.13
13:06
Читай книжку Хрусталевой "Язык запросов". без основ ты ничего не поймешь
23 НикДляЗапросов
 
11.12.13
13:14
задашь сложный вопрос - ноль ответов, задашь простой - сто ответов с нулевой информацией
24 Бледно Золотистый
 
11.12.13
13:16
Ответ в (2), что (3) не получилось?
25 alexiv79
 
11.12.13
13:17
(22) Да я недавно ее прочитал - помогает, советую
26 НикДляЗапросов
 
11.12.13
13:17
(24) Ответа в два нет, так как это вопрос
соединить не получается
27 НикДляЗапросов
 
11.12.13
13:18
Вопрос блин как соединить два регистра, в кого вы блин такие?
28 Eugene555
 
11.12.13
13:19
(27) про полное соединение слышал?
29 Бледно Золотистый
 
11.12.13
13:20
(26) Ладно держи готовый вариант, раз не думается

ВЫБРАТЬ
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0) КАК КоличествоОстатокРезерв,
    ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, ) КАК ТоварыНаСкладахОстатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
        ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
ГДЕ
    (ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
            ИЛИ ТоварыНаСкладахОстатки.КоличествоОстаток > 0)
30 Fragster
 
модератор
11.12.13
13:20
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    0 КАК КоличествоОстатокРезерв
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, ) КАК ТоварыНаСкладахОстатки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
    0 КАК КоличествоОстаток,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки
31 Fragster
 
модератор
11.12.13
13:20
ну и это еще свернуть можно потом
32 Bigbro
 
11.12.13
13:21
Габец Гончаров простые примеры разработки стр 206

используется Полное соединение
33 m-serg74
 
11.12.13
13:21
(31) жди благодарности типа (20)
34 Серго62
 
11.12.13
13:24
(27) Соединение с условием:
ТоварыНаСкладахОстатки.Номенклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура.Ссылка

не канает?
35 Simod
 
11.12.13
13:24
(30) А ВСЕ не лишнее?
36 НикДляЗапросов
 
11.12.13
13:27
Офигеть, смысл выкладывать неправильные ответы
(30) будет так
Н1 10 -
н2 20 -
Н1 - 5
37 Бледно Золотистый
 
11.12.13
13:29
(36) Чё даже группировку не осилил?
38 Sammo
 
11.12.13
13:29
(36) А 31 мы пропустили?
39 Sammo
 
11.12.13
13:29
Кстати, в 30 момент - не указано на какую дату, но это уже сам затить должен, имхо.
Ведь это не окончательное решение, а принцип
40 Sammo
 
11.12.13
13:30
+39 сорри, в исходном такая же пурга. Возможно здесь какая-то хитрая задумка
41 dmpl
 
11.12.13
13:33
(0) Очень просто: заменить

СписокНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура.Ссылка

на

СписокНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура
42 m-serg74
 
11.12.13
13:34
(41) Да Вы гений:)
43 Defender aka LINN
 
11.12.13
13:34
(36) Пернатый даже готовый ответ осилить не может.
44 dmpl
 
11.12.13
13:35
(35) Если количество не нужно - можно и без ВСЕ. Если нужно - то без ВСЕ не обойдешься.
45 НикДляЗапросов
 
11.12.13
13:40
(43) Я уже все сделал, 100500 раз...И прав у тебя обзываться нет, усек, чмо?
46 dmpl
 
11.12.13
13:43
(36) Думаешь в варианте (0) такого не будет?
47 Defender aka LINN
 
11.12.13
13:46
(45) Иди отдохни маленько
48 Bigbro
 
11.12.13
14:18
похоже автор пьян..