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

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

28.03.2024 18:35


18.11.2015 08:42
DMaslov
 
Благодаря 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(23)
       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.RealQty0)), 3) as Field6,
        
round((nvl(D.RealSum0)), 4) as Field7,
        (
LOC.Name) as Field2,
        
round((SUM(nvl(D.RealSum0))), 4) as Field3
   FROM SMStoreLocations LOC
,
        
SVCardName CRD,
        (
SELECT CreateDatStoreLocArticleRealQtyRealSum
           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 13D
  WHERE D
.Article CRD.Article
    
and D.StoreLoc LOC.ID
  GROUP BY 
(LOC.Name),
           (
CRD.Article),
           (
CRD.Name),
           
round((nvl(D.RealQty0)), 3),  --------------
           
round((nvl(D.RealSum0)), 4)
  
ORDER BY 1 ASC2 ASC3 ASC4 ASC5 ASC 
18.11.2015 09:06
DMaslov
 
И на более простой подзапрос ругается "ORA-22818: выражения подзапросов здесь запрещены."

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

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


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

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



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

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

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

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


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

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

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

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