Имя: Пароль:
1C
1С v8
Чем отличаются принципиально два запроса? У меня Итоги разные..
0 Обработка
 
30.12.20
10:57
1-й

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

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.Склад.Подразделение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыОрганизацийБУОстатки.Подразделение,
    ТоварыОрганизацийБУОстатки.Товар,
    СУММА(ТоварыОрганизацийБУОстатки.КоличествоОстаток) КАК КоличествоОстаток
ПОМЕСТИТЬ ИП
ИЗ
    РегистрНакопления.ТоварыОрганизацийБУ.Остатки(&Период, ) КАК ТоварыОрганизацийБУОстатки

СГРУППИРОВАТЬ ПО
    ТоварыОрганизацийБУОстатки.Подразделение,
    ТоварыОрганизацийБУОстатки.Товар
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ИП.Товар КАК Товар,
    ИП.Подразделение КАК Подразделение,
    ИП.КоличествоОстаток КАК ОстатокПоИП,
    ТовНаСкладах.КоличествоОстаток КАК ОстатокПоТовНАСкладах,
    ТовНаСкладах.КоличествоОстаток - ИП.КоличествоОстаток КАК Разность
ИЗ
    ТовНаСкладах КАК ТовНаСкладах
        ПОЛНОЕ СОЕДИНЕНИЕ ИП КАК ИП
        ПО ТовНаСкладах.Номенклатура = ИП.Товар
            И ТовНаСкладах.СкладПодразделение = ИП.Подразделение
ГДЕ
    ТовНаСкладах.КоличествоОстаток - ИП.КоличествоОстаток <> 0

УПОРЯДОЧИТЬ ПО
    Товар,
    Подразделение

2-й

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.Склад.Подразделение,
    ТоварыОрганизацийБУОстатки.Подразделение,
    ТоварыНаСкладахОстатки.КоличествоОстаток как ОстатокПоТовНАСкладах,
    ТоварыОрганизацийБУОстатки.КоличествоОстаток КАК ОстатокПоИП,
    ТоварыНаСкладахОстатки.КоличествоОстаток - ТоварыОрганизацийБУОстатки.КоличествоОстаток КАК Разность
    
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизацийБУ.Остатки КАК ТоварыОрганизацийБУОстатки
        ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыОрганизацийБУОстатки.Товар
            И ТоварыНаСкладахОстатки.Склад.Подразделение = ТоварыОрганизацийБУОстатки.Подразделение
ГДЕ
    ТоварыНаСкладахОстатки.КоличествоОстаток - ТоварыОрганизацийБУОстатки.КоличествоОстаток <> 0
1 Галахад
 
гуру
30.12.20
11:08
В первом к группированным данным условие.
Во втором нет.
2 Ненавижу 1С
 
гуру
30.12.20
11:11
при полном соединении надо писать

ГДЕ
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) - ЕСТЬNULL(ТоварыОрганизацийБУОстатки.КоличествоОстаток,0) <> 0
3 Обработка
 
30.12.20
12:04
(2) Спасибо.

Вставил в два отчета все равно результат сильно отличается.
4 Ёпрст
 
30.12.20
12:48
(0) выкинуть оба запроса, открыть для себя объеденить все + имеюшие, наслаждаться, кушать печенки
5 patria0muerte
 
30.12.20
12:49
(2) Во втором варианте таблица "Товары на складах" не сгруппирована по подразделениям.
Т.е. условно при наличии разных складов с одним подразделением - у тебя будет несколько строк с разными суммами, но с одним подразделением.
Ну и при полном соединении лучше все завернуть в ЕСТЬNULL()/

А вообще судя по запросу, ИМХО, тебе надо сделать через ОБЪЕДИНИТЬ ВСЕ, сгруппировать и вычислить разность в уже сгруппированной таблице. И соединение полное не использовать
6 patria0muerte
 
30.12.20
12:49
(5) к (0)
7 Обработка
 
30.12.20
14:27
ТАк пробовал не взлетело

ВЫБРАТЬ
    ТоварыНаСкладах.Склад.Подразделение КАК Подразделение,
    ТоварыНаСкладах.Номенклатура как Номенклатура,
    ТоварыНаСкладах.КоличествоОстаток КАК ОстТовНаСкл
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладах

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Подразделение,
    ВТ.Номенклатура,
    СУММА(ВТ.ОстТовНаСкл) КАК ОстТовНаСкл
ИЗ
    ВТ КАК ВТ
где
    ОстТовНаСкл <> 0    

СГРУППИРОВАТЬ ПО
    ВТ.Подразделение,
    ВТ.Номенклатура
8 Ненавижу 1С
 
гуру
30.12.20
14:48
(7) последнее тогда так:

ВЫБРАТЬ
    ВТ.Подразделение,
    ВТ.Номенклатура,
    СУММА(ВТ.ОстТовНаСкл) КАК ОстТовНаСкл
ИЗ
    ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
    ВТ.Подразделение,
    ВТ.Номенклатура

ИМЕЮЩИЕ
    СУММА(ВТ.ОстТовНаСкл)<>0
9 Обработка
 
30.12.20
14:58
(8) Попробовал получилось. вроде как.

Но в идеале мне нужно сравнить два регистра и по первому регистру второй регистр выровнять.
А как я понимаю этот запрос всего лишь дает отличие
И еще... при корректировке второго регистра использую еще одно доп измерение или по остатку или по движению.
10 Хозрасчетный
 
30.12.20
15:47
(0) У тебя в одном запросе так:

РегистрНакопления.ТоварыОрганизацийБУ.Остатки(&Период, ) КАК ТоварыОрганизацийБУОстатки

а в другом так

РегистрНакопления.ТоварыОрганизацийБУ.Остатки КАК ТоварыОрганизацийБУОстатки

Логично, что они дают разные результаты.
11 Ёпрст
 
31.12.20
01:38
(9) ё..добавь еще 2 поля в текст запроса - суммы первого и второго регистра..вот те и различия..
12 Обработка
 
31.12.20
07:50
(10) Это уже устранено.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн