Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Бизнес-анализ - отчет о реализации с остатком : Супермаг Плюс (Супермаг 2000)

25.11.2024 7:02


18.11.2015 08:42
Благодаря Ferus познакомился с бизнес-анализом, обзовем его "наполовину программированием".

Как я понимаю, залезать в алгоритм составления запроса себе дороже, пока хочу выяснить пределы, в которых можно работать. Добавить простейший подзапрос count(1) - это понятно. А вот такой?

SQL код:
 select nvl(sum(
                                   decode(head.doctype,
                                          'WI', spc.quantity,
                                          'CR', spc.quantity,
                                          'CS', -spc.quantity,
                                          'WO', -spc.quantity,
                                          0
                                         )
                               ), 0
                           ) quantity
     
      from smdocuments head, smspec spc
     where head.doctype = spc.doctype
       and head.id = spc.docid
       and head.createdat <= {Фильтр. Реализация. Дата. FDateLast}
       and head.docstate in(2, 3)
       and (
                 head.location = {Место хранения. Код места хранения}
              or head.locationfrom = {Место хранения. Код места хранения}
              or head.locationto = {Место хранения. Код места хранения}
           )
       and spc.article = {Карточка товара. Артикул} 
ORA-22818: выражения подзапросов здесь запрещены.


И еще вопрос - зачем он группирует по кол-ву в отчете о реализации? Как это в интерфейсе убрать?

SQL код:
 SELECT (CRD.Article) as Field4,
        (CRD.Name) as Field5,
        round((nvl(D.RealQty, 0)), 3) as Field6,
        round((nvl(D.RealSum, 0)), 4) as Field7,
        (LOC.Name) as Field2,
        round((SUM(nvl(D.RealSum, 0))), 4) as Field3
   FROM SMStoreLocations LOC,
        SVCardName CRD,
        (SELECT CreateDat, StoreLoc, Article, RealQty, RealSum
           FROM supermag.SVAReal R
          WHERE CreateDat between to_date('01.11.2015', 'DD.MM.YYYY') and
                to_date('17.11.2015', 'DD.MM.YYYY')
            and R.StoreLoc = 13) D
  WHERE D.Article = CRD.Article
    and D.StoreLoc = LOC.ID
  GROUP BY (LOC.Name),
           (CRD.Article),
           (CRD.Name),
           round((nvl(D.RealQty, 0)), 3),  --------------
           round((nvl(D.RealSum, 0)), 4)
  ORDER BY 1 ASC, 2 ASC, 3 ASC, 4 ASC, 5 ASC 
18.11.2015 09:06
И на более простой подзапрос ругается "ORA-22818: выражения подзапросов здесь запрещены."

SQL код:
            select g.quantity
              from supermag.smgoods g
             where g.storeloc = {Место хранения. Код места хранения}
               and g.article = {Карточка товара. Артикул} 
18.11.2015 09:07
Видимо, пытается его в группировку тоже вставить.
18.11.2015 09:28
Если убрать свои поля то у тебя получается какой-то список.
Так вот запрос для твоего поля должен содержать одну запись для каждой строки основной выборки.
А чем не устраивает стандартная задача "реализация за период"? Там остатки есть и на начало периода и на конец.
И зачем их собирать из первички?
Если не устраивает стандартная, то на форуме проскакивала функция получения остатков(возможно ошибаюсь). Нужно поискать
18.11.2015 09:45
Цитата:
DMaslov И на более простой подзапрос ругается "ORA-22818: выражения подзапросов здесь запрещены."

SQL код:
            select g.quantity
              from supermag.smgoods g
             where g.storeloc = {Место хранения. Код места хранения}
               and g.article = {Карточка товара. Артикул} 
У тебя по запросу идет группировка по реализации. Ведь не каждую продажу отображаешь.
Поэтому к твоему полю должна быть применена какая либо функция.
Так как как в supermag.smgoods остатки не поменяются сколько раз бы ты не запросил, то делаешь среднее значение для этого поля.


Сейчас проверил все работает
18.11.2015 11:49
Цитата:
Ferus Если убрать свои поля то у тебя получается какой-то список.
Так вот запрос для твоего поля должен содержать одну запись для каждой строки основной выборки.
Так и есть, primary key SMGOODS - ARTICLE, STORELOC.

Цитата:
А чем не устраивает стандартная задача "реализация за период"? Там остатки есть и на начало периода и на конец.
Не увидел такой. Версия 1.030.1 SP4.



Цитата:
И зачем их собирать из первички?
Другого способа пока не знаю.

Цитата:
Сейчас проверил все работает
Возможно у нас отличаются настройки задачи.

18.11.2015 11:55
При создании новой задачи появляется список возможных кубов Бизнес-Анализа.
Вот там в списке и надо искать "Реализация за период".
18.11.2015 12:02
Проверял на версии 1.031.1

Создать задачу и в списке есть реализация за период


А вот пример поля остаток из goods

18.11.2015 12:08
И чем тебе не нравятся "Остатки на начало периода" и "Остатки на конец периода"?
Они есть в модели...
18.11.2015 12:36
Цитата:
Mtirt И чем тебе не нравятся "Остатки на начало периода" и "Остатки на конец периода"?
Они есть в модели...
Я того же мнения, зачем городить

Я не топик стартер :)
Часовой пояс GMT +3, время: 07:02.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.