Имя: Пароль:
1C
1С v8
гуру sql можно ли решить это запросом?
0 Gorr
 
11.04.14
14:02
На входе имее 2 таблички заказы и продажи:
1я табличка "заказы"

Товар Резерв 5
Товар        5

2я табличка "продажи"

товар 8

на выходе надо получить что продано из резерва/не резерва. при этом считать, что сначала продается резерв. таким образом в примере результат должен быть:

товар 5(резерв) 3(не резерв)
1 ИА1С
 
11.04.14
14:05
Считать только на лету. Ты это в скуле хочешь)))? Или можно запросом 1С?
2 shuhard
 
11.04.14
14:08
(0) что-то мешает тупо вычесть одно из другого
и использовать Объединить все ?
3 Gorr
 
11.04.14
14:10
(2) пример в студию
4 _fvadim
 
11.04.14
14:11
(3) лентяй, напрягись маленько
5 Ненавижу 1С
 
гуру
11.04.14
14:12
select
Продажи.Товар,
case
  when Продажи.Количество>=coalesce(Заказы.Количество,0) then coalesce(Заказы.Количество,0)
  else Продажи.Количество
end as Резерв,
case
  when Продажи.Количество>=coalesce(Заказы.Количество,0) then Продажи.Количество-coalesce(Заказы.Количество,0)
  else 0
end as НеРезерв
from Продажи
left join Заказа По (Продажи.Товар=Заказы.Товар)
6 shuhard
 
11.04.14
14:12
(5) вот за что тебя форум ценит и уважает =)
7 Ёпрст
 
11.04.14
14:15
Ждём следующий вопрос, как реализовать coalesce в снеговике
:)))
8 КонецЦикла
 
11.04.14
14:22
Надо применить предварительную обработку данных
Кто мешает поместить в таблицу наименьшее кол-во от товара в резерве/не резерве, вот и выйдет продажа резерва, фторой столбец - разница
9 Gorr
 
11.04.14
14:52
(5) не катит - возвращает 2 строки. если соединение то уж внутреннее. кроме реализации функции мин в запросе ничего нового в запросе не увидел.
читайте внимательнее задание должно вернуть 1 строку:
товар 5(резерв) 3(не резерв)

(3) сам не лентяй? пример в студию!!!
10 Gorr
 
11.04.14
14:53
для удобства тестирования задания в консоли:
ВЫБРАТЬ
    "товар" КАК товар,
    ИСТИНА КАК резерв,
    5 КАК кол
ПОМЕСТИТЬ заказы

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

ВЫБРАТЬ
    "товар",
    ЛОЖЬ,
    5
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "товар" КАК товар,
    8 КАК кол
ПОМЕСТИТЬ продажи
;
11 Ненавижу 1С
 
гуру
11.04.14
14:53
(9) соединение левое и возвращает одну строку, не ври
12 Ненавижу 1С
 
гуру
11.04.14
14:54
(10)

ИСТИНА КАК резерв

что это за куйня?
13 Gorr
 
11.04.14
14:54
(10) такого условие означает что да, действительно заказано из резерва. что непонятного?
14 Gorr
 
11.04.14
14:55
+13 булево
15 _fvadim
 
11.04.14
14:56
(13) на предыдущем допросе вы рисовали другую схему
16 Gorr
 
11.04.14
14:56
(11) хоть левое хоть внутреннее. если в одной таблице две строки, а другой 1 то вернет две!
17 Ненавижу 1С
 
гуру
11.04.14
14:56
(13) непонятно как ты условия задачи пишешь

по делу:
измени в запросе из (5) последнюю строку на

left join Заказы by (Продажи.Товар=Заказы.Товар and Заказы.Резерв)
18 Gorr
 
11.04.14
15:01
(17) такое ощущение что вы задачу не поняли... запрос должен распределить количество реализации на две строки из заказа.
из первой удет 5 из второй уйдет остаток 3.
19 Ненавижу 1С
 
гуру
11.04.14
15:02
(18) это я не понял?
"не катит - возвращает 2 строки"
"запрос должен распределить количество реализации на две строки"
20 МойКодУныл
 
11.04.14
15:03
(19) не пытайся.=) Он ждет готового решения своей задачи в том виде, который себе представляет:)
21 МойКодУныл
 
11.04.14
15:04
(18)
А так?
ВЫБРАТЬ
    "товар" КАК товар,
    ИСТИНА КАК резерв,
    5 КАК кол
ПОМЕСТИТЬ заказы

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

ВЫБРАТЬ
    "товар",
    ЛОЖЬ,
    5
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "товар" КАК товар,
    8 КАК кол
ПОМЕСТИТЬ продажи
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    заказы.товар,
    СУММА(ВЫБОР
            КОГДА заказы.резерв
                ТОГДА заказы.кол
            ИНАЧЕ 0
        КОНЕЦ) КАК Резерв,
    СУММА(ВЫБОР
            КОГДА НЕ заказы.резерв
                ТОГДА заказы.кол
            ИНАЧЕ 0
        КОНЕЦ) КАК Сток
ПОМЕСТИТЬ ТоварыРезервСток
ИЗ
    заказы КАК заказы

СГРУППИРОВАТЬ ПО
    заказы.товар
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ Заказы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    продажи.товар,
    СУММА(ВЫБОР
            КОГДА ТоварыРезервСток.Резерв > продажи.кол
                ТОГДА продажи.кол
            ИНАЧЕ ТоварыРезервСток.Резерв
        КОНЕЦ) КАК СРезерва,
    СУММА(ВЫБОР
            КОГДА ТоварыРезервСток.Резерв > продажи.кол
                ТОГДА 0
            ИНАЧЕ продажи.кол - ТоварыРезервСток.Резерв
        КОНЕЦ) КАК Свободного
ИЗ
    продажи КАК продажи
        ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРезервСток КАК ТоварыРезервСток
        ПО продажи.товар = ТоварыРезервСток.товар

СГРУППИРОВАТЬ ПО
    продажи.товар
22 Gorr
 
11.04.14
15:12
(18) извиняюсь. все верно!
всем спасибо!
23 Gorr
 
11.04.14
15:12
+22 к (19)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс