[ОТВЕТИТЬ]
06.07.2007 11:11
nekrom@nt.grave
 
Подскажите где искать то же что в SMGoods, но по датам
06.07.2007 11:21
Mtirt
 
Если посчитаешь статистику в адм.модуле на закладке "Статистика", то остатки на те даты, на которые ты посчитал будут в таблице FFRemains.
Если не рассчитывать - то в явном виде остатки на дату больше нигде не хранятся.
06.07.2007 11:25
nekrom@nt.grave
 
Статистику мона посчитать как-ндь из отчёта, (Oracle Reports прокрутчиком) вызываемой процедурой или что-то в том же духе, лишь бы не заставлять юзера лишний раз тыкать что-то кроме отчёта
06.07.2007 11:30
OlegON
 
У меня автомат расчета ТД считает, вызывай ночью по расписанию...
06.07.2007 11:41
nekrom@nt.grave
 
пасибо, а если админ не согласится, тогда чё делать, есть ещё способы? Есть идея впихнуть триггер, только на что
06.07.2007 11:42
Mtirt
 
Цитата:
nekrom@nt.grave пасибо, а если админ не согласится, тогда чё делать, есть ещё способы? Есть идея впихнуть триггер, только на что
Триггер тебе тут не поможет. Придется найти прогу, которая умеет нажимать на нужные кнопки по заданию...
06.07.2007 11:51
nekrom@nt.grave
 
есть какой нибудь хак или документированная воз-сть, чтобы перед отчетом выполнялась прога
06.07.2007 11:57
Mtirt
 
Цитата:
nekrom@nt.grave есть какой нибудь хак или документированная воз-сть, чтобы перед отчетом выполнялась прога
Если ты напишешь - будет.
Только одно замечание. Ты эту статистику считать пробовал? Сколько времени у тебя это занимает? У меня она считается больше суток, это раз. Перенос и расчет товародвижения очищает таблицы расчета статистики, это два.
06.07.2007 12:03
nekrom@nt.grave
 
Честно - нет, я напрямую с ораклом работаю, супермагом админ занимается.
Очищает в смысле посчитали статистику, порадовались, что-то переместили, статистики нет более в нашем мире?
06.07.2007 12:11
Mtirt
 
Ну не что-то переместили, а запустили перенос и расчет товародвижения. Это не чаще раза в сутки обычно происходит. Для переноса надо всех пользователей из базы выгнать, как минимум.
Странный подход. Работать только с ораклом и не понимать сути процессов, происходящих в базе данных. Рекомендую почитать документацию по СМ2000, ну и заодно структуру баз данных проштудировать.
06.07.2007 12:35
nekrom@nt.grave
 
не подход странный, а работаю всего третий день, с СМ.
Мне сказали сделать репорт, я делаю, дали структуру, остальное не мое дело, и это не мое решение
06.07.2007 12:49
YuraZ
 
Я так понимаю, что человек просто спрашивал как получить остатки на дату. Ведь не обязательно для этого считать статистику.
Тут 2 варианта:
1. считать все приходы с самого начала и отнимать от них все расходы, то же с самого начала.
2. считать все приходы и расходы с конца до указанной даты и отнимать их от кол-ва указанного в SMGoods.
На сколько я помню и тот и другой запрос уже проскакивали сдесь на форуме.
06.07.2007 12:51
nekrom@nt.grave
 
пасибо за понимание, а ссылочку, или имя топика
06.07.2007 12:58
YuraZ
 
Надо пользоваться поиском. Вот тут что-то было:


10.07.2007 11:49
nekrom@nt.grave
 
FFMapRep и проделать предложенное YuraZ, токмо не с самого начала, а с суказанной даты.
Поможет?
10.07.2007 13:46
Pyatak
 
Я получал остатки на дату таким вот запросом:
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток"
  FROM supermag.smcard c,
       supermag.smgoods q,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('03.07.2007')
           AND d.locationto = (4)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('03.07.2007')
           AND d.locationfrom = (4)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   AND q.storeloc=(4)
Обрати внимание, что в запросе в двух местах нужно подставить нужную дату и в трех местах код места хранения.
В моей базе запрос выполнился за 1,52 секунды.
11.07.2007 12:48
nekrom@nt.grave
 
как теперь посчитать $
ведь цена могёт меняться, где её смотреть на нужную дату
я имею ввиду цену соответствующую q.quantity
11.07.2007 14:05
nekrom@nt.grave
 
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток",
       NVL(p.price,0)-NVL(pr.totalprice,0)+NVL(rs.totalprice,0) as "money"
  FROM supermag.smcard c,
       supermag.smgoods q,
       supermag.smprices p,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.totalprice) as totalprice
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationto = (2)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.totalprice) as totalprice
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationfrom = (2)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   AND c.article=p.article(+)
   AND q.storeloc=(2)
   AND p.storeloc=(2)
   AND UPPER(c.name) LIKE '%ГАЗЕТА%'
где не так?
11.07.2007 14:13
kadr
 
Цитата:
nekrom@nt.grave как теперь посчитать $
ведь цена могёт меняться, где её смотреть на нужную дату
я имею ввиду цену соответствующую q.quantity
табличка smpricehistory содержит историю цен
11.07.2007 14:15
Mtirt
 
Цитата:
nekrom@nt.grave где не так?
Так и хочется ответить - в ДНК.

В smspec хранится цена из документа. Для приходной накладной - цена поставщика, для расходной и Z-отчета - цена продажи.

Просто подставляя цены ты получаешь большую и красивую кашу...
Для того, чтобы получить нормальный ответ, надо его нормально задать.
В твоем случае, понять, в каких ценах тебе нужны остатки на дату...
11.07.2007 14:21
nekrom@nt.grave
 
с БД работаю всего неделю, так что не удивительно, ожидал намёка на моё ДНК
11.07.2007 14:22
nekrom@nt.grave
 
Цитата:
Mtirt Так и хочется ответить - в ДНК.

В smspec хранится цена из документа. Для приходной накладной - цена поставщика, для расходной и Z-отчета - цена продажи.

Просто подставляя цены ты получаешь большую и красивую кашу...
Для того, чтобы получить нормальный ответ, надо его нормально задать.
В твоем случае, понять, в каких ценах тебе нужны остатки на дату...
пасиба не углядел
13.07.2007 13:21
nekrom@nt.grave
 
несколько оффтоп, но все про тот же отчёт.
проблема такая в стандартном отчете записей больше чем в моём.
вот код, только проверяющий группу товаров:
Код:
select c.article as "Артикул",
       c.name as "Наименование",
       cc.tree as tree,
       cc.name
  from supermag.smcard c,
       supermag.sacardclass cc,
       supermag.smgoods g
   where c.idclass = cc.id(+)
   and cc.tree like '1.1.1.%'
   and c.article = g.article(+)
   and g.storeloc = 2
   order by 3
13.07.2007 13:27
nekrom@nt.grave
 
понял в чём проблема.
где ещё кроме смгудс мона посмотреть сторелок
13.07.2007 13:31
YuraZ
 
Цитата:
nekrom@nt.grave понял в чём проблема.
где ещё кроме смгудс мона посмотреть сторелок
SMSTORELOCATIONS
13.07.2007 13:38
nekrom@nt.grave
 
я имею ввиду связку артикл->storeloc
13.07.2007 13:46
YuraZ
 
Цитата:
nekrom@nt.grave я имею ввиду связку артикл->storeloc
Такой связки нет.
13.07.2007 13:53
nekrom@nt.grave
 
я ошибся мне так и не ясна проблема, с тем почему в моём отчёте записей меньше, чем в стандартном. вот код:
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток"
  FROM supermag.smcard c,
       supermag.smgoods q,
       supermag.sacardclass cc,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationto = (2)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate>=2
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationfrom = (2)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   AND q.storeloc=(2)
   AND c.idclass = cc.id(+)
   AND cc.tree like '1.1.1.%'
на основе опликованного на этом форуме
13.07.2007 14:02
YuraZ
 
Напиши AND q.storeloc(+)=2
13.07.2007 14:13
nekrom@nt.grave
 
хм, не знал что так можно, это ведь как бы и не джойн - справа константа.
только теперь результатов больше


Опции темы


Часовой пояс GMT +3, время: 03:49.

 

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