Имя: Пароль:
   
1C
 
Помогите с запросом
0 Varlant1n
 
06.03.21
17:21
Здравствуйте, дорогие форумчане. Мне в запросе нужны пары условий. Я написал, но это не работает. Помогите, пожалуйста.

ВЫБОР
    КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) <> 0
        ТОГДА ВЫБОР
                КОГДА ОстаткиЗаказовКлиента.ЗаказаноОстаток = КоличествоТоваровИтог.Количество
                    ТОГДА 1
                КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) = 0
                    ТОГДА -1
                ИНАЧЕ 0
            КОНЕЦ
КОНЕЦ

*КоличествоТоваровИтог.Количество - это количество товара в заказе клиента.
Нужен такой результат:
1 - Товар полностью не отгружен,
2 - Отгружена часть товара,
3 - Товар полностью отгружен.


У меня почему то у всех документов заказа результат -1. Помогите, пожалуйста
1 DAFA
 
06.03.21
17:47
задача из спеца по платформе
2 DAFA
 
06.03.21
17:49
не видит остаток  надо чтоб видело
3 DAFA
 
06.03.21
17:50
полный текст запроса  выложи .кто знает .что там в начале
4 Varlant1n
 
06.03.21
18:08
(3)

ВЫБРАТЬ
    ДокументЗаказКлиента.Ссылка КАК Ссылка,
    ДокументЗаказКлиента.Менеджер КАК Менеджер,
    ДокументЗаказКлиента.Партнер КАК Партнер,
    ДокументЗаказКлиента.Номер КАК Номер,
    ДокументЗаказКлиента.Дата КАК Дата,
    ДокументЗаказКлиента.Подразделение КАК Подразделение,
    ДокументЗаказКлиента.АдресДоставки КАК АдресДоставки,
    ВЫБОР
        КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) = 0
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Отгружено,
    КоличествоТоваровИтог.Количество КАК КоличествоИтог,
    ВЫБОР
        КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) <> 0
            ТОГДА ВЫБОР
                    КОГДА ОстаткиЗаказовКлиента.ЗаказаноОстаток = КоличествоТоваровИтог.Количество
                        ТОГДА 1
                    КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) = 0
                        ТОГДА -1
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ КАК ПризнакОтгруженности
ИЗ
    Документ.ЗаказКлиента КАК ДокументЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СУММА(ЗаказыКлиентовОстатки.ЗаказаноОстаток) КАК ЗаказаноОстаток,
            ЗаказыКлиентовОстатки.ЗаказКлиента КАК ЗаказКлиента
        ИЗ
            РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
        
        СГРУППИРОВАТЬ ПО
            ЗаказыКлиентовОстатки.ЗаказКлиента) КАК ОстаткиЗаказовКлиента
        ПО ДокументЗаказКлиента.Ссылка = ОстаткиЗаказовКлиента.ЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СУММА(ЗаказКлиентаТовары.Количество) КАК Количество,
            ЗаказКлиентаТовары.Ссылка КАК СсылкаЗаказ
        ИЗ
            Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        
        СГРУППИРОВАТЬ ПО
            ЗаказКлиентаТовары.Ссылка) КАК КоличествоТоваровИтог
        ПО ДокументЗаказКлиента.Ссылка = КоличествоТоваровИтог.СсылкаЗаказ
ГДЕ
    ДокументЗаказКлиента.Проведен = ИСТИНА
    И ДокументЗаказКлиента.Товары.Склад В(&Склады)
    И ДокументЗаказКлиента.Дата МЕЖДУ &ДатаНачала И &ДатаКонец
5 rphosts
 
06.03.21
18:55
Ну так на вскидку... у тебя проведенные документы, поэтому отгрузка какая-то уже есть. Остатки ты получаешь не на дату, а Актуальные... поэтому "Товар полностью не отгружен" не возможно в принципе.
6 Varlant1n
 
06.03.21
18:58
(5) Нет, дело в том, что у меня работало, но я потом поменял. Так как сделал два значения у ПризнакаОтгруженности. Истина или ложь. Теперь не могу додумать как вернуть обратно... Полностью запутался. Нужно просто додумать этот момент:

ВЫБОР
    КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) <> 0
        ТОГДА ВЫБОР
                КОГДА ОстаткиЗаказовКлиента.ЗаказаноОстаток = КоличествоТоваровИтог.Количество
                    ТОГДА 1
                КОГДА ЕСТЬNULL(ОстаткиЗаказовКлиента.ЗаказаноОстаток, 0) = 0
                    ТОГДА -1
                ИНАЧЕ 0
            КОНЕЦ
КОНЕЦ
7 mikecool
 
06.03.21
20:11
как минимум не хватает ИНАЧЕ
а вообще - распиши на бумаге алгоритм, пойми его и заложи в запрос
8 Varlant1n
 
06.03.21
20:15
(7) Все сделал, все бумаги расписал. Работало все, но как я поменял и решил вернуть обратно, не могу теперь логически додумать, что и как должно быть(((
9 Varlant1n
 
06.03.21
21:07
Тема закрыта
Ошибка? Это не ошибка, это системная функция.