Интеркампани. Анализ остатков для передачи

1. lotta 22.04.15 17:03 Сейчас в теме
Добрый день! В управление торговлей 10.3 анализ остатков для передачи от организации-владельца продавцу происходит по запросу:

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

ИНДЕКСИРОВАТЬ ПО
    ПоложительныеОстатки.Организация,
    ТоварыОрганизацийОстатки.Номенклатура,
    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
    ТоварыОрганизацийОстатки.СерияНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ВременнаяРаспределение.Организация КАК Организация,
    ВременнаяРаспределение.Номенклатура КАК Номенклатура,
    ВременнаяРаспределение.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ВременнаяРаспределение.СерияНоменклатуры КАК СерияНоменклатуры,
    ВременнаяРаспределение.Номенклатура.ЕдиницаХраненияОстатков КАК Единица,
    ВременнаяРаспределение.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
    МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации) КАК ОстатокГлавнойОрганизации,
    МИНИМУМ(ВременнаяРаспределение.ОтрицательныйОстаток) КАК ОтрицательныйОстаток,
    МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток) КАК ОстатокОрганизации,
    ВЫБОР
        КОГДА СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток) >= МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации)
            ТОГДА 0
        ИНАЧЕ ВЫБОР
                КОГДА МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток) = СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток)
                    ТОГДА ВЫБОР
                            КОГДА МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток) >= СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток)
                                ТОГДА СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток)
                            ИНАЧЕ МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
                        КОНЕЦ
                ИНАЧЕ ВЫБОР
                        КОГДА МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации) - (СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)) >= МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
                            ТОГДА МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
                        ИНАЧЕ МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации) - (СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток))
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК ПоложительныйОстаток
ИЗ
    ВременнаяРаспределение КАК ВременнаяРаспределение
        ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяРаспределение КАК ВременнаяРаспределениеСоединения
        ПО ВременнаяРаспределение.Организация >= ВременнаяРаспределениеСоединения.Организация
            И ВременнаяРаспределение.Номенклатура = ВременнаяРаспределениеСоединения.Номенклатура
            И ВременнаяРаспределение.ХарактеристикаНоменклатуры = ВременнаяРаспределениеСоединения.ХарактеристикаНоменклатуры
            И ВременнаяРаспределение.СерияНоменклатуры = ВременнаяРаспределениеСоединения.СерияНоменклатуры

СГРУППИРОВАТЬ ПО
    ВременнаяРаспределение.Организация,
    ВременнаяРаспределение.Номенклатура,
    ВременнаяРаспределение.ХарактеристикаНоменклатуры,
    ВременнаяРаспределение.СерияНоменклатуры,
    ВременнаяРаспределение.Номенклатура.ЕдиницаХраненияОстатков,
    ВременнаяРаспределение.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент

УПОРЯДОЧИТЬ ПО
    ВременнаяРаспределение.Организация
Показать


Не понятно соединение двух таблиц ВременнаяРаспределение и ВременнаяРаспределениеСоединения по условию ВременнаяРаспределение.Организация >= ВременнаяРаспределениеСоединения.Организация? Как таким образом сравниваются ссылки? И какой в этом смысл: почему выбрано больше или равно?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Caspersky 23.04.15 00:55 Сейчас в теме
(1) lotta, Вбросил, так вбросил...ничего не скажешь)))

Как сравниваются ссылки вообще?
сравнивается бинарное представление GUID, хранящееся в базе данных, т.е. значения хранящиеся в самой БД без преобразований...

И каков в этом сакральный смысл?
Никакого... наверное (нетЪ, смысл наверняка есть, но я не смог его постичь...).
Попробуй выполни запрос с ">=",с любым другим знаком или вообще без условия по организации...Результат одинаков. У меня по крайней мере в демо-базе.
Может у меня выборка. конечно, не репрезентативная... сижу, короче, медитирую на
ПО ВременнаяРаспределение.Организация >= ВременнаяРаспределениеСоединения.Организация
3. lotta 23.04.15 09:38 Сейчас в теме
(2) Caspersky, спасибо за ответ.
Нет, вот именно результат разный. Например, Организация1-продавец остатков списала за день 8 штук. Есть две организации-владельцы остатков: Организация2 - 70 шт и Организация3 - 54 шт (две ссылки, по сортировке Организация3 ">" Организация2). Если в запросе соединение >=, тогда расчетное поле "Положительный остаток" равен Организация2 = 70, Организация3 = 0. Если убираем это соединение, тогда "Положительный остаток" = 0. Если ставим <=, тогда Организация2 = 0, Организация3 = 54. Понятно, что так, по расчетному полю "Положительный остаток", пытаются распределить остаток. Для пользователя, например, непонятно, вроде бы логично списать с той организации, у которой минимальный остаток (Организация3 = 54, Организация2 = 0), а так пользователь не видит уид и не понимает, по каким параметрам одна организация мощнее другой!
4. Rishat7 2 24.01.18 11:19 Сейчас в теме
| ВЫБОР КОГДА (СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток))
| >= МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации)
// Все распределено на предыдущем шаге, для текущего шага 0.00.
| ТОГДА 0.00
| ИНАЧЕ ВЫБОР КОГДА МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток) = СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток)
// Первая строка в группе, получаем минимальное значение между отрицательным остатком организации (покупатель) и положительным остатком организации (поставщик).
| ТОГДА ВЫБОР КОГДА МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток) >= СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток)
| ТОГДА СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток)
| ИНАЧЕ МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
| КОНЕЦ
// Следующая строка в группе для распределения.
| ИНАЧЕ ВЫБОР КОГДА (МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации) -
| (СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток))) >= МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
// Нераспределенное больше остатка поставщика, берется остаток поставщика.
| ТОГДА МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
// Нераспределенное меньше остатка поставщика, берется нераспределенный остаток.
| ИНАЧЕ МИНИМУМ(ВременнаяРаспределение.ОстатокГлавнойОрганизации) -
| (СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток))
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК ПоложительныйОстаток

не понятный механизм расчета

СУММА(ВременнаяРаспределениеСоединения.ПоложительныйОстаток) - МИНИМУМ(ВременнаяРаспределение.ПоложительныйОстаток)
для чего эта операция? какой смысл
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот