Имя: Пароль:
1C
1С v8
Избитая тема по запросу.посчитать разность в строках
,
0 serg-lom89
 
02.09.14
12:01
Добрый день

Вот мой запрос

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




Таблица результатов имеет вид

http://radikal.ru/fp/85773e3025cc4b4cbbb4b16027a0da36

сам результат мне нужен что бы имел вид

где помечено красным осталось,только если есть возврат тогда была их разность (напрмер продали 22 и возвратили 2 =20)
что бы красная таблица была но посчитало разность их


http://radikal.ru/fp/fcd6683c7d434ebdb48bd1e33ba546a2

подскажите как такое реализовать?
заранее всем спасибо за ответы =)
1 Рэйв
 
02.09.14
12:06
от одного поля отнимаешь другое и на конце пишешь "КАК Разность".
А каким цветом выводить при выводе и рули
2 serg-lom89
 
02.09.14
12:06
а можно пример кода показать?
3 РенеДекарт
 
02.09.14
12:09
(0) (1) только поля в ТЕКУЩЕЙ строке.
Арифметические операции между строками в запросе невозможны в 1С.
4 GROOVY
 
02.09.14
12:11
(3) Возможны в СКД, и можно завернуть запрос в сам себя.
http://1c.chistov.pro/2014/03/blog-post.html
5 serg-lom89
 
02.09.14
12:11
(3) так а как поступить в данной ситуации?
6 Рэйв
 
02.09.14
12:12
(2)ВЫБРАТЬ
    З.Десять ,
    З.Восемь,
    З.Десять-З.Восемь КАК Разница
ИЗ
    (ВЫБРАТЬ
        10 КАК Десять,
        8 КАК Восемь) КАК З
7 РенеДекарт
 
02.09.14
12:12
(5) ЧекККМПродажа.Количество - ЧекККМВозврат.Количество КАК Разность
и все
8 РенеДекарт
 
02.09.14
12:16
(4) соединение таблицы с самой собой и обработка строк результата запроса - это не одно и то же.
Мне нужно вычесть третью строку результата из десятой, потому что десятая - меньше четвертой (количество).
Только постобработка в коде.
9 serg-lom89
 
02.09.14
12:19
а как затем сделать результирующию таблицу?
ту что отмеченно красным цветом?только в кол-ве будет наша разность?
10 РенеДекарт
 
02.09.14
12:19
+ 4
невозможно выстроить все связи отношений строк друг к другу без обработки внутри "окна" результата.
11 serg-lom89
 
02.09.14
12:21
это я делаю вложенный запрос просто..затем буду его обрабатывать
12 РенеДекарт
 
02.09.14
12:23
(11) см. 3 и 7 ответы
4 - там постобработка результата в СКД приводится в пример
13 RomanYS
 
02.09.14
12:24
(7) с учетом левого соединения:
ЧекККМПродажа.Количество - ЕстьNULL(ЧекККМВозврат.Количество,0) КАК Разность
14 serg-lom89
 
02.09.14
12:32
(13) а можно по подробнее..объяснить?
если не затруднит конечно)
15 РенеДекарт
 
02.09.14
13:01
(14)читай про левое соединение.
Возможные значения с NULL отсеиваются только методом (13 )
16 РенеДекарт
 
02.09.14
13:03
+ точнее, преобразуются в 0, т.к. с NULL 1с не работает как со значением (Поле=NULL всегда ЛОЖЬ)
17 serg-lom89
 
02.09.14
13:08
(16) спасибо большое)
18 serg-lom89
 
02.09.14
16:02
ВЫБРАТЬ
    ЧекККМПродажа.Ссылка.Ссылка КАК Ссылка,
    ЧекККМПродажа.Ссылка.Сделка КАК Сделка,
    ЧекККМПродажа.Номенклатура КАК Номенклатура,
    ЧекККМПродажа.Количество КАК Количество,
    ЧекККМВозврат.Ссылка.Ссылка КАК Ссылка1,
    ЧекККМВозврат.Ссылка.ВидОперации КАК ВидОперации,
    ЧекККМВозврат.Ссылка.ЧекККМПродажа КАК ЧекККМПродажа,
    ЧекККМВозврат.Номенклатура КАК Номенклатура1,
    ЧекККМВозврат.СерияНоменклатуры КАК СерияНоменклатуры1,
    ЧекККМВозврат.Номенклатура КАК Номенклатура2,
    Сумма(ЧекККМВозврат.Количество) КАК Количество1
ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМПродажа
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ЧекККМВозврат
        ПО ЧекККМПродажа.Ссылка = ЧекККМВозврат.Ссылка.ЧекККМПродажа
            И ЧекККМПродажа.Номенклатура = ЧекККМВозврат.Номенклатура
            И ЧекККМПродажа.ХарактеристикаНоменклатуры = ЧекККМВозврат.ХарактеристикаНоменклатуры
            И ЧекККМПродажа.СерияНоменклатуры = ЧекККМВозврат.СерияНоменклатуры
ГДЕ
    ЧекККМПродажа.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    И (НЕ ЧекККМПродажа.Ссылка.Проведен)
    И ЧекККМПродажа.Ссылка.ВидОперации = &ВидОперации
    И ЧекККМПродажа.Ссылка.Организация = &Организация
    //и  ЧекККМПродажа.Количество - ЕСТЬNULL(ЧекККМВозврат.Количество, 0) > 0
    СГРУППИРОВАТЬ ПО
    ЧекККМПродажа.Ссылка.Ссылка,
    ЧекККМПродажа.Ссылка.Сделка,
    ЧекККМПродажа.Номенклатура,
    ЧекККМПродажа.Количество,
    ЧекККМВозврат.Ссылка.Ссылка,
    ЧекККМВозврат.Ссылка.ВидОперации,
    ЧекККМВозврат.Ссылка.ЧекККМПродажа,
    ЧекККМВозврат.Номенклатура,
    ЧекККМВозврат.СерияНоменклатуры,
    ЧекККМВозврат.Номенклатура


в запросе сгрупировал по полям и сложил по сумме по количеству
Как теперь наложить условие на которое был в предыдущем посте?
ЧекККМПродажа.Количество - ЕСТЬNULL(ЧекККМВозврат.Количество, 0) > 0
19 serg-lom89
 
02.09.14
16:03
просто получается когда при соединении таблиц,может быть что кол-во от продаж задваивается и получается не правильные цифры.
20 Ненавижу 1С
 
гуру
02.09.14
16:08
(19) а использовать регистры?
21 serg-lom89
 
02.09.14
16:10
http://radikal.ru/fp/687c4656a13a4fb4a4584c7cadce6530
вот после группировки
что красным обведенно останеться 2 а что синим станет 3 в сумме.и как после группировки наложить условие на все это?
22 serg-lom89
 
02.09.14
16:10
точнее картинка до группировки)
23 serg-lom89
 
02.09.14
16:11
а после группировки что красным обведенно останеться 2 а что синим станет 3 в сумме.Как после группировки наложить условие что ЧекККМПродажа.Количество - ЕСТЬNULL(ЧекККМВозврат.Количество, 0) > 0?
24 serg-lom89
 
02.09.14
16:22
вроде разобрался)