Имя: Пароль:
1C
 
Подбор запросом остатков с нескольких складов
0 i_dmi
 
21.05.15
14:01
Добрый день!
Есть следующая задача: нужно одним запросом подобрать необходимое количество номенклатуры с разных складов.
Пример
Необходимо 27 штук ТовараА.
На складе Х есть 18 штух, на складе У - 3 штуки, на складе Ц - 5 штук, на складе Т - 9 штук, на складе Ы - 15 штук.
Возможно ли написать запрос, результатом которого будет
Х - 18
У - 3
Ц - 5
Т - 3
Что то даже мыслей нет, как это организовать
1 mikecool
 
21.05.15
14:06
думается можно, особенно используя ВТ
2 FIXXXL
 
21.05.15
14:09
Запросом ты можешь получить остаток в разрезе складов
потом обойти результат и заполнить количество и склад, где тебе там надо
3 Бубка Гоп
 
21.05.15
14:11
(0) имхо, запрос - для получения информации. Обрабатывать ее лучше программно, имхо.
4 Timon1405
 
21.05.15
14:12
(0) почему не 27 = 18 + 9?
5 Креатив
 
21.05.15
14:12
(2)(3)Согласен.
Но, сдаётся мне, что автор что-то не договаривает.
(0)что ты собираешься делать с результатом?
6 i_dmi
 
21.05.15
14:14
(5) Потом заполняю ТЧ документа
(2)(3) Я хотел именно в запросе данные получить)
(4) Без разницы
7 Бубка Гоп
 
21.05.15
14:14
(4) кстати да, логичнее получать остатки в порядке убывания, обходить в цикле и заполнять до нужного значения
8 anatoly
 
21.05.15
14:16
зачем запросом?
так не правильно делать.

или опять какой то тест/экзамен?

(6) за "без разницы" тебя логисты расстреляют ))
9 Креатив
 
21.05.15
14:23
(6)В данном случае нет смысла наворачивать запрос. Обходишь результат запроса по всем складам и вычитаешь количество из требуемого, пока не получишь 0.
10 i_dmi
 
21.05.15
14:27
Всё, убедили, буду циклом)
11 Ненавижу 1С
 
гуру
21.05.15
14:27
можно и запросом
v8: FIFO в запросе
12 Ненавижу 1С
 
гуру
21.05.15
14:28
а какой приоритет складов?
13 i_dmi
 
21.05.15
14:37
(12) Вроде как нечто похожее
Приоритет - удаленность складов, отсортирую.
Спасибо!
14 Бубка Гоп
 
21.05.15
14:39
(0) можно сделать на ВЫБОР КОГДА, получется портянка, но если критично чтоб в запросе...

1 запрос в пакете

Выбор
    Когда
        С1.Остаток >= КоличествоНужно
    Тогда
        1
    Иначе
        Выбор
            Когда
                С1.Остаток + С2.Остаток >= КоличествоНужно Тогда
            Тогда
                2
...так далее...
Конец
Как КоличествоСкладов

2 запрос в пакете
выбор
    Когда
        КоличествоСкладов = 1 Тогда
    Тогда
        КоличествоНужно
    Иначе
        С1.Остаток
Конец    Как КоличествоВзятьСПервогоСклада

выбор
    Когда
        КоличествоСкладов = 1
    Тогда
        0
    Иначе

        Выбор
            Когда
                КоличествоСкладов = 2
            Тогда    
                С2.Остаток  - (С1.Остаток + С2.Остаток - КоличествоНужно)
        Иначе    
            Выбор
                Когда
                    КоличествоСкладов = 3
                Тогда    
                    С2.Остаток  - (С1.Остаток + С2.Остаток + С3.Остаток - КоличествоНужно)
            Иначе    
    ...так далее...    

Конец    Как КоличествоВзятьСоВторогоСклада

и так по каждому складу