Вход | Регистрация
 

Группировка итогового пакета запроса

Группировка итогового пакета запроса
Я
   TolstiyBeremenniy
 
24.12.18 - 03:54
Подскажите пожалуйста по построению итогового пакета запроса.
Дело в том что как задаю итоги, то в консоле запросов идет
замноживание выводимых данных. Без итогов же все выводится в
более наглядном и понятном виде. Суть задачи выбрать партии
для партионного списания, первая из которых партия из табличной
части документа если указанна.



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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДокТч.Номенклатура КАК НоменклатураИзДокумента,
    СУММА(ВТ_ДокТч.Количество) КАК КоличествоИзДокумента,
    ВТ_ДокТч.Партия КАК ПартияИзДокумента,
    ВТ_ОстаткиПартий.Номенклатура КАК НоменклатураОстатков,
    СУММА(ВТ_ОстаткиПартий.КоличествоОстаток) КАК КоличествоОстаток,
    ВТ_ОстаткиПартий.Партия КАК ПартияОстатков,
    ВЫБОР
        КОГДА ВТ_ДокТч.Партия = ВТ_ОстаткиПартий.Партия
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ КАК ПорядокСписания,
    ВТ_ОстаткиПартий.Партия.МоментВремени КАК ПартияМоментВремени
ИЗ
    ВТ_ДокТч КАК ВТ_ДокТч
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиПартий КАК ВТ_ОстаткиПартий
        ПО ВТ_ДокТч.Номенклатура = ВТ_ОстаткиПартий.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТ_ДокТч.Номенклатура,
    ВТ_ДокТч.Партия,
    ВТ_ОстаткиПартий.Номенклатура,
    ВТ_ОстаткиПартий.Партия,
    ВЫБОР
        КОГДА ВТ_ДокТч.Партия = ВТ_ОстаткиПартий.Партия
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ,
    ВТ_ОстаткиПартий.Партия.МоментВремени

УПОРЯДОЧИТЬ ПО
    ВТ_ДокТч.Номенклатура.Наименование,
    ПорядокСписания,
    ПартияМоментВремени
ИТОГИ
    СУММА(КоличествоИзДокумента),
    СУММА(КоличествоОстаток)
ПО
    НоменклатураИзДокумента,
    ПартияИзДокумента,
    НоменклатураОстатков,
    ПартияОстатков,
    ПорядокСписания,
    ПартияМоментВремени
 
 
   TolstiyBeremenniy
 
1 - 24.12.18 - 04:05
И почему задваиваются записи в запросе?


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

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

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

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

ВЫБРАТЬ
    ВТ_ОстаткиПартий.Номенклатура КАК НоменклатураОстатков,
    СУММА(ВТ_ОстаткиПартий.КоличествоОстаток) КАК КоличествоОстаток,
    ВТ_ОстаткиПартий.Партия КАК ПартияОстатков,
    СУММА(ВТ_ДокТч.Количество) КАК Количество
ИЗ
    ВТ_ДокТч КАК ВТ_ДокТч
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиПартий КАК ВТ_ОстаткиПартий
        ПО ВТ_ДокТч.Номенклатура = ВТ_ОстаткиПартий.Номенклатура

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

УПОРЯДОЧИТЬ ПО
    ВТ_ОстаткиПартий.Номенклатура.Наименование
ИТОГИ
    СУММА(КоличествоОстаток)
ПО
    НоменклатураОстатков,
    ПартияОстатков
   TolstiyBeremenniy
 
2 - 24.12.18 - 04:15
Вот запрос, почему записи задвоены. я кручу эти запросы
пытаюсь получить нормальную выборку. Есть номенклатура
есть партия, есть количество из регистра, есть количество
из документа.

Но в чем причина задвоения записей? Подскажите пожалуйста?


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

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

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

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

ВЫБРАТЬ
    ВТ_ОстаткиПартий.Номенклатура КАК НоменклатураОстатков,
    СУММА(ВТ_ОстаткиПартий.КоличествоОстаток) КАК КоличествоОстаток,
    ВТ_ОстаткиПартий.Партия КАК ПартияОстатков,
    МАКСИМУМ(ВТ_ДокТч.Количество) КАК Количество,
    ВЫБОР
        КОГДА ВТ_ДокТч.Партия = ВТ_ОстаткиПартий.Партия
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ КАК ПорядокСписания
ИЗ
    ВТ_ДокТч КАК ВТ_ДокТч
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиПартий КАК ВТ_ОстаткиПартий
        ПО ВТ_ДокТч.Номенклатура = ВТ_ОстаткиПартий.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТ_ОстаткиПартий.Номенклатура,
    ВТ_ОстаткиПартий.Партия,
    ВЫБОР
        КОГДА ВТ_ДокТч.Партия = ВТ_ОстаткиПартий.Партия
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    ВТ_ОстаткиПартий.Номенклатура.Наименование,
    ПорядокСписания,
    ВТ_ОстаткиПартий.Партия.МоментВремени
ИТОГИ
    СУММА(КоличествоОстаток),
    СУММА(Количество)
ПО
    НоменклатураОстатков,
    ПартияОстатков
   TolstiyBeremenniy
 
3 - 24.12.18 - 04:30
Вот вроде в запросе нормальная выборка, такую можно перебирать?


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

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

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

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

ВЫБРАТЬ
    ВТ_ОстаткиПартий.Номенклатура КАК НоменклатураОстатков,
    ВТ_ОстаткиПартий.Партия КАК ПартияОстатков,
    СУММА(ВТ_ОстаткиПартий.КоличествоОстаток) КАК КоличествоОстаток,
    СУММА(ВТ_ДокТч.Количество) КАК Количество,
    ВЫБОР
        КОГДА ВТ_ДокТч.Партия = ВТ_ОстаткиПартий.Партия
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ КАК ПорядокСписания
ИЗ
    ВТ_ДокТч КАК ВТ_ДокТч
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиПартий КАК ВТ_ОстаткиПартий
        ПО ВТ_ДокТч.Номенклатура = ВТ_ОстаткиПартий.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТ_ОстаткиПартий.Номенклатура,
    ВТ_ОстаткиПартий.Партия,
    ВЫБОР
        КОГДА ВТ_ДокТч.Партия = ВТ_ОстаткиПартий.Партия
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    ВТ_ОстаткиПартий.Номенклатура.Наименование,
    ПорядокСписания,
    ВТ_ОстаткиПартий.Партия.МоментВремени
ИТОГИ
    СУММА(КоличествоОстаток),
    СУММА(Количество)
ПО
    НоменклатураОстатков
   TolstiyBeremenniy
 
4 - 24.12.18 - 04:49
Задваиваться записи начинают когда я добавляю партию
в итог. если только номенклатура то нормально.
А если я не добавлю партию, как я буду обходить результат
по группировкам, если там не будет партии?

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