[ОТВЕТИТЬ]
Опции темы
26.07.2013 15:54  
svtl
Цитата:
Сообщение от Explosion
Задумался...
А кто-нибудь знает как можно эти остатки получить обходным путем?))
Ну к примеру через FastReport и оракл в связке
так а в чем проблема, если в отчете?
использовать процедуру, чтоб в ttremains занести остатки на дату, а потом
из нее брать информацию.
пишите отчет в FastReport и получайте все, что нужно
 
26.07.2013 15:59  
Explosion
Ну тут все гораздо веселее
Это маленькая часть большого отчета Товар без движения
 
26.07.2013 17:05  
svtl
опять-таки не вижу проблемы. я эту процедуру использую в самых разных отчетах и для самых разных целей.
получите входные параметры (товары, места хранения, период работы отчета), сформируйте фильтры, с помощью процедуры сформируйте остатки на начало периода, например, и далее используйте таблицу в отчете.
на первых страницах была вся информация - как запустить, как передать параметры...
 
29.07.2013 13:10  
Explosion
В общем накалякал что-то такое страшное и медленное
Код:
Select l.name Магазин,
       rep_getcardclasspath(cc.tree, 1, 1) as Группа_товара,
       c.article as Артикул_товара,
       replace(c.name,CHR(9), ' ') as Наименование_товара,
       nvl(get_goods_ondate2(c.article, l.id, '&Начало_периода'),0) as Колво_На_остатках,
       nvl(cusf_last_wiprice(c.article,
                             l.id,
                             '&Начало_периода'),0) as Цена_закупа,
       p.price as Цена_продажи,
       nvl(get_goods_ondate2(c.article, l.id, '&Начало_периода') *
           cusf_last_wiprice(c.article,
                             l.id,
                             '&Начало_периода'),0) as Сумма_в_закупе,
       nvl(get_goods_ondate2(c.article, l.id, '&Начало_периода') * p.price,
           0) as Сумма_в_продажах,
       nvl(cusf_last_wiquant(c.article,
                             l.id,
                             '&Начало_периода'),0) as  Колво_посл_прихода,
       nvl(cusf_last_widate(c.article, l.id, '&Начало_периода'),null) as Дата_посл_прихода
  From smstorelocations l,
       sacardclass      cc,
       smcard           c,
       smprices         p,
       smpricetypes     pt,
       (Select ssc.article,dsc.createdat
          from smdocuments dsc, smspec ssc, smstorelocations lsc
         where dsc.id = ssc.docid
           and dsc.doctype = ssc.doctype
           and dsc.createdat >= to_date('&Начало_периода','dd.mm.yyyy')
           and dsc.createdat <= to_date('&Конец_периода','dd.mm.yyyy')
           and dsc.doctype in ('CS','WO')
           and lsc.id = dsc.locationfrom
           and  upper(lsc.name) like upper('%&Mecmo_Хранения%')
           and lsc.id not in (-1,1,2,10,13,14,22,34,35,40,45,48,51,52,54,55,56,57,58,59,60)
           group by ssc.article,dsc.createdat) prod
 Where cc.id = c.idclass
   and c.article not in
       (Select swi.article
          from smdocuments dwi, smspec swi, smstorelocations lwi
         where dwi.id = swi.docid
           and dwi.doctype = swi.doctype
           and dwi.createdat >= to_date('&Начало_периода','dd.mm.yyyy')
           and dwi.createdat <= to_date('&Конец_периода','dd.mm.yyyy')
           and dwi.doctype in ('WI')
           and lwi.id = dwi.locationfrom
           and  upper(lwi.name) like upper('%&Mecmo_Хранения%')
           and lwi.id not in (-1,1,2,10,13,14,22,34,35,40,45,48,51,52,54,55,56,57,58,59,60)
           group by swi.article)
   and c.article not in (prod.article)             
   and p.pricetype = pt.id
   and p.article = c.article
   and p.storeloc = l.id
   and l.id in
       (select loc.id
          from smstorelocations loc
         where upper(loc.name) like upper('%&Mecmo_Хранения%'))
   and l.id not in (-1,1,2,10,13,14,22,34,35,40,45,48,51,52,54,55,56,57,58,59,60)
   and prod.createdat  >= to_date('&Начало_периода','dd.mm.yyyy') and prod.createdat  <= to_date('&Конец_периода','dd.mm.yyyy')
   group by l.name,cc.tree,c.article,l.id,p.price,c.name
Что касается функции, установка фильтра мало чем помогла...

Код:
create or replace function get_goods_ondate2(art in string,
                                             mh  in number,
                                             dat in date) return number is
  Res number(14, 3);
  pragma autonomous_transaction;
begin
    Supermag.Sql_Filter.Clear_Allfilters();
    Supermag.Sql_Filter.Add_Location(mh);
    Supermag.Sql_Filter.Add_Article(art);
    Supermag.Remains.Calcfromsqlplus(to_date(dat, 'dd.mm.yyyy'));
    commit;
    Select ost_dat
      into Res
      from (Select ttr.quantity as ost_dat,
                   ttr.article,
                   ttr.remdate,
                   ttr.storeloc
              from supermag.ttremains ttr
             where ttr.remdate = to_date(dat, 'dd.mm.yyyy')
               and ttr.article = art
               and ttr.storeloc = mh);
  return(Res);
  exception when no_data_found then
  return 0;
end get_goods_ondate2;
 
29.07.2013 13:27  
Mtirt
Ну зачем 4 раза табличку заполнять то?

Нельзя ПЕРЕД запуском выборки данных ОДИН раз вызвать функцию get_goods_ondate2, а потом уже выбирать данные нужные из ttremains?
 
29.07.2013 13:36  
Explosion
Честно сказать, не думал что так можно делать.
Спс за совет, попробую
 
30.07.2013 07:03  
Explosion
Я конечно извиняюсь за нубский вопрос,
А как мне вызвать ее перед выборкой но при этом параметр передать?
 
01.08.2013 10:32  
svtl
зависит от языка, на котором вы пишете, думаю

Выше было несколько примеров, как передать параметры и запустить процедуру.
Не надо такой расчет всталять вовнутрь своей выборки как функцию.

Сформируйте предварительно штатной процедурой таблицу ttremains с остатками на нужную дату (с нужными параметрами, но не для одного артикула, а для всех либо для отобранных - группы классификатора, например),
а у себя в выборке используйте эту таблицу. Либр функцию - но тогда в своей функиции не расчитывайте заново все, а выбирайте данные из уже заполненной ttremains
 
 


Опции темы



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

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