03.08.2013 13:25
Explosion
 
Код:
with prod as (Select l.name as loc,l.id as idp,rep_getcardclasspath(cc.tree,1,1) as grp,c.article as art,replace(c.name,chr(9),' ')as naim ,nvl(ttr.quantity,0) as ttr,nvl(cusf_last_wiprice(c.article,l.id,'"+Begin_.Value.ToString("dd.MM.yyyy")+"'),0) as wipr, p.price,nvl(ttr.quantity *cusf_last_wiprice(c.article,l.id,'"+Begin_.Value.ToString("dd.MM.yyyy")+"'),0) as sumprih,nvl(ttr.quantity * p.price,0) as sumprod,nvl(cusf_last_wiquant(c.article,l.id,'"+Begin_.Value.ToString("dd.MM.yyyy")+"'),0) as quant ,nvl(cusf_last_widate(c.article, l.id, '"+Begin_.Value.ToString("dd.MM.yyyy")+"'),null) as lastdat from ttremains ttr,smstorelocations l,smcard c,sacardclass cc, smprices p,smpricetypes pt 
      where cc.id = c.idclass 
      and p.pricetype = pt.id 
      and p.article = c.article 
      and p.storeloc = l.id 
      and c.article = ttr.article 
      and l.id = ttr.storeloc 
      and c.article not in (Select ssc.article 
        from smdocuments dsc, smspec ssc, smstorelocations lsc 
      where dsc.id = ssc.docid 
      and dsc.doctype = ssc.doctype 
      and dsc.createdat >= to_date('"+Begin_.Value.ToString("dd.MM.yyyy")+"', 'dd.mm.yyyy') 
      and dsc.createdat <= to_date('"+Begin_.Value.ToString("dd.MM.yyyy")+"', 'dd.mm.yyyy') 
      and dsc.doctype in ('CS', 'WO') 
      and lsc.id = dsc.locationfrom 
      and lsc.id in 
      (select ll.id 
        from smstorelocations ll 
      where upper(ll.name) like upper('%"+Mesto.Text+"%') and ll.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) 
      and l.id in (select loc2.id 
        from smstorelocations loc2 
      where upper(loc2.name) like upper('%"+Mesto.Text+"%')))
Select prod.loc,prod.grp,prod.art,prod.naim,prod.ttr,prod.wipr,prod.price,prod.sumprih,prod.sumprod,prod.quant,prod.lastdat from prod
         where prod.art 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.locationto
           and lwi.id in
               (select loc.id
                  from smstorelocations loc
                 where upper(loc.name) like upper('%&Место%')
                   and loc.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)
Добрый день!
Не знаю почему, но такая конструкция отказывается работать в FastReport Супермага
Мастер ругается на ошибку парсера


В тексте отчета пишу то же самое.
Раньше с фастом знаком не был.

Код:
RepHost host;
    private void btnOk_Click(object sender, EventArgs e)
    {
      host = new RepHost(Report);
      RepOracleRunner.ExecuteText(host.Connection,
      SqlFormat("begin supermag.remains.calcfromsqlplus(to_date('"+Begin_.Value.ToString("dd.MM.yyyy")+"','dd.mm.yyyy')); end;"));
      TableDataSource remains = Report.GetDataSource("rem") as TableDataSource;
      remains.SelectCommand = 
        "with prod as (Select l.name as loc,l.id as idp,rep_getcardclasspath(cc.tree,1,1) as grp,c.article as art,replace(c.name,chr(9),' ')as naim ,nvl(ttr.quantity,0) as ttr,nvl(cusf_last_wiprice(c.article,l.id,'"+Begin_.Value.ToString("dd.MM.yyyy")+"'),0) as wipr, p.price,nvl(ttr.quantity *cusf_last_wiprice(c.article,l.id,'"+Begin_.Value.ToString("dd.MM.yyyy")+"'),0) as sumprih,nvl(ttr.quantity * p.price,0) as sumprod,nvl(cusf_last_wiquant(c.article,l.id,'"+Begin_.Value.ToString("dd.MM.yyyy")+"'),0) as quant ,nvl(cusf_last_widate(c.article, l.id, '"+Begin_.Value.ToString("dd.MM.yyyy")+"'),null) as lastdat from ttremains ttr,smstorelocations l,smcard c,sacardclass cc, smprices p,smpricetypes pt "+ 
      "where cc.id = c.idclass "+ 
      "and p.pricetype = pt.id "+ 
      "and p.article = c.article "+ 
      "and p.storeloc = l.id "+ 
      "and c.article = ttr.article "+ 
      "and l.id = ttr.storeloc "+ 
      "and c.article not in (Select ssc.article "+ 
      "from smdocuments dsc, smspec ssc, smstorelocations lsc "+ 
      "where dsc.id = ssc.docid "+ 
      "and dsc.doctype = ssc.doctype "+ 
      "and dsc.createdat >= to_date('"+Begin_.Value.ToString("dd.MM.yyyy")+"', 'dd.mm.yyyy') "+ 
      "and dsc.createdat <= to_date('"+Begin_.Value.ToString("dd.MM.yyyy")+"', 'dd.mm.yyyy') "+ 
      "and dsc.doctype in ('CS', 'WO') "+ 
      "and lsc.id = dsc.locationfrom "+ 
      "and lsc.id in "+ 
      "(select ll.id "+ 
      "from smstorelocations ll "+ 
      "where upper(ll.name) like upper('%"+Mesto.Text+"%') and ll.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) "+ 
      "and l.id in (select loc2.id "+ 
      "from smstorelocations loc2 "+ 
      "where upper(loc2.name) like upper('%"+Mesto.Text+"%'))) "+
      "Select prod.loc,prod.grp,prod.art,prod.naim,prod.ttr,prod.wipr,prod.price,prod.sumprih,prod.sumprod,prod.quant,prod.lastdat from prod "+
      "where prod.art 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.locationto "+
      "and lwi.id in "+
      "(select loc.id "+
      "from smstorelocations loc "+
      "where upper(loc.name) like upper('%&Место%') "+
      "and loc.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) ";
    }
В общем как быть не знаю.
По факту надо получить товар у которого за период не было движения
и соответственно был приход в период или был ранее начала периода
Я чет уже подзапарился.
Готов поделиться средствами.Может кто поможет.
04.08.2013 18:26
svtl
 
может, поступить проще?
1. сделать нужные выборки как sql-запросы и убедиться, что они работают. Прчем не запихивать все в один запрос, а сделать обработку поэтапно.
2. исходники отчетов в Fast Report открыты. Взять любой - напрмер, realization.frx, и посмотреть, как он написан. И сделать свой по образу и подобию. Там, кстатит, и примеры вставки параметров в запрос тоже есть.

Потому что мои, например, огроменные куски кода без комментов и нормального форматирования могу понять только я сама. Наверное, так же как и Ваши - только вы сами.
Вряд ли у кого-либо будет время с ними разбираться, нет?
И еще - в Fast Report под Супермагом можно писать на C# или на VB.
С+ пишет на C#. И часть обработчиков они писали сами, я так понимаю.
05.08.2013 01:17
whitewizard
 
Извращение какое. Не проще тоже самое, но в разы быстрее в бизнес-анализе получить?
05.08.2013 06:50
Mtirt
 
Товар без движения? В Бизнес-анализе? Можно пример отчета?
05.08.2013 10:49
svtl
 
нет там такого, по-моему. я еще в builder делала похожий отчет для клиента -
остатки на начло периода положительные, продаж за период не было,
приходы за период были, ну и перемещения всякие могли быть (т.е. передачи товара,
внутр. перемещения).
Цель - выловить неликвиды, по которым по-прежнему идут приходы.
05.08.2013 10:54
Mtirt
 
На самом деле в Супермаг+ есть стандартный отчет под названием "Товар без движения".
Миллион лет есть.
И мне интересно, чем он то автора ветки не устроил?
05.08.2013 10:59
svtl
 
единственное, что мне в голову приходит - что отчет не в fast-е, т.е. нет выгрузки в Excel
05.08.2013 13:34
Dim
 
а попросить С+ перекомпилить? чем лисапед изобретать...
05.08.2013 13:38
Mtirt
 
Да можно в принципе и стандартный отчет распарсить, а потом перенести в Fast Report.
Просто надо понимать, для чего это делать.
05.08.2013 13:46
whitewizard
 
в бизнес анализе выбрать модель "движение артикула" и в готовом отчёте добавить фильтры типа продажи=0, остаток на начало>0
Часовой пояс GMT +3, время: 10:49.

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