Имя: Пароль:
1C
1С v8
Розница - Распоряжения на отгрузку
0 prtx
 
15.10.18
15:51
Добрый день граждане!
Собственно обнаружил косячину в Розница для Украины (2.0.5.1) и походу во всех предыдущих тоже есть это.

При использовании ордерной схемы, в форме списка документов "Расходные ордера на товар", во вкладке "Распоряжения на отгрузку", если установить магазин(вверху формы), не работает "отбор", т.е. не показываются распоряжения на отгрузку для этого магазина.

Вот запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Склады.Ссылка КАК Склад
ПОМЕСТИТЬ СкладыМагазина
ИЗ
    Справочник.Склады КАК Склады
ГДЕ
    Склады.Магазин = &Магазин

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)

ИНДЕКСИРОВАТЬ ПО
    Склад
;

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

ИНДЕКСИРОВАТЬ ПО
    ДокументРаспоряжение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыКОтгрузкеОстаткиИОбороты.ДокументОснование.Дата КАК Дата,
    ТоварыКОтгрузкеОстаткиИОбороты.ДокументОснование КАК Распоряжение,
    ЕСТЬNULL(ТоварыКОтгрузкеОстаткиИОбороты.ДокументОснование.Контрагент, ТоварыКОтгрузкеОстаткиИОбороты.ДокументОснование.МагазинПолучатель) КАК Получатель,
    ТоварыКОтгрузкеОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыКОтгрузкеОстаткиИОбороты.Характеристика КАК Характеристика,
    ТоварыКОтгрузкеОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    ТоварыКОтгрузкеОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
    ВЫБОР
        КОГДА ТоварыКОтгрузкеОстаткиИОбороты.КоличествоКонечныйОстаток > 0
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК Выполнен
ПОМЕСТИТЬ Результат
ИЗ
    РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(
            ,
            ,
            ,
            ,
            ДокументОснование В
                (ВЫБРАТЬ
                    Распоряжения.ДокументРаспоряжение
                ИЗ
                    Распоряжения КАК Распоряжения)) КАК ТоварыКОтгрузкеОстаткиИОбороты

ИНДЕКСИРОВАТЬ ПО
    Распоряжение,
    Получатель,
    Номенклатура,
    Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.Дата КАК Дата,
    ВложенныйЗапрос.Распоряжение,
    ВложенныйЗапрос.Получатель,
    ВложенныйЗапрос.Выполнен
ИЗ
    (ВЫБРАТЬ
        Результат.Дата КАК Дата,
        Результат.Распоряжение КАК Распоряжение,
        Результат.Получатель КАК Получатель,
        ВЫБОР
            КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Результат.Выполнен) = 1
                ТОГДА МАКСИМУМ(Результат.Выполнен)
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Выполнен
    ИЗ
        Результат КАК Результат
    ГДЕ
        ВЫБОР
                КОГДА &ОтборПоПолучателю
                    ТОГДА Результат.Получатель = &Получатель
                ИНАЧЕ ИСТИНА
            КОНЕЦ
    
    СГРУППИРОВАТЬ ПО
        Результат.Дата,
        Результат.Получатель,
        Результат.Распоряжение) КАК ВложенныйЗапрос
ГДЕ
    ВЫБОР
            КОГДА &ОтборПоСтатусу
                ТОГДА ВложенныйЗапрос.Выполнен = ЛОЖЬ
            ИНАЧЕ ИСТИНА
        КОНЕЦ

УПОРЯДОЧИТЬ ПО
    Дата

проблема заключается во второй временной таблице "распоряжения". а именно в условие:
    И ВЫБОР
            КОГДА &ОтборПоМагазину
                ТОГДА ЕСТЬNULL(ТоварыКОтгрузкеОбороты.ДокументОснование.Магазин, ТоварыКОтгрузкеОбороты.ДокументОснование.МагазинПолучатель) = &Магазин
            ИНАЧЕ ИСТИНА
        КОНЕЦ

которое не понятно на кой хрен тут вообще, если оно противоречит логике запрос.

если простыми словами - сначала в параметрах виртуальной таблицы мы отбираем все доки где склад отправителя входит в список складов, выбранного магазина, а потом на результат применяем условие ГДЕ, и отхреначиваем все склады где магазин-получатель не равен выбранному магазину. т.е. мы моем получит только отгрузки магазина самому себе. и это такая фишка или я не догоняю?

кто, что думает?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой