Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Чем отличаются принципиально два запроса? У меня Итоги разные..

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

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

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

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

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

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

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

2-й

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////

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

СГРУППИРОВАТЬ ПО
    ВТ.Подразделение,
    ВТ.Номенклатура
   Ненавижу 1С
 
8 - 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) Это уже устранено.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.