29.04.2021 03:48
У меня есть отчет Товар без движения и остатков склад
Стоит задача сделать такой же отчет, но товар должен быть создан более 3 месяцев назад с момента отчета и не участвует в определенных типов операций, но всеравно выходят все товары

SQL код:
 using System;
  using System.Collections;
  using System.Collections.Generic;
  using System.Collections.ObjectModel;
  using System.ComponentModel;
  using System.Windows.Forms;
  using System.Drawing;
  using System.Data;
  using FastReport;
  using FastReport.Data;
  using FastReport.Dialog;
  using FastReport.Table;
  using FastReport.Utils;
  using FastReport.Format;

  using Sm.FastReports;
  using Sm.FastReports.Link;
  using Sm.Interfaces;
  using Sm.Objects;
  using Sm.Core;
  
  namespace FastReport
{
  public class ReportScript
  {
    RepHost host;
  
  // название отчета
    private string sRepName = "Какой то отчет";
    // подзаголовок отчета: места хранения
    private string sLocName;
    // подзаголовок отчета: группы товаров
    private string sGroupName;
    // подзаголовок отчета: период отчета
    private string sDateName;
    // контрагент "От имени"
    private string sUserName;

    
    private void _StartReport(object sender, EventArgs e)
      {
        // Хост отчёта даёт доступ к полезным сервисам
        host = new RepHost(Report);
        // Стартуем транзакцию
        RepTransaction transaction = new RepTransaction(host.Connection);
        
        // контрагент "От имени"
      sUserName = RepClientInfo.GetClientName(host.Connection, Report.GetParameterValue("P_USER_ID"));
      // заголовок отчета
      sRepName = "Остатки по состоянию на " + ToString(Report.GetParameterValue("P_DATE"));

       // фильтр по местам хранения
      RepOracleRunner.ExecuteProcedure(host.Connection,"Supermag.RepTools.LoadLoc", 
        Report.GetParameterValue("P_STORED_ALL"),
        Report.GetParameterValue("P_STORED_NAME"),
        Report.GetParameterValue("P_PARTNER"),
        null); 
      // подзаголовок отчета: места хранения
      sLocName = RepOracleRunner.ExecuteScalar<string>(host.Connection, "select supermag.RepTools.LocString(10) from dual");
             
      // фильтр по группам товаров
      RepOracleRunner.ExecuteProcedure(host.Connection,"Supermag.RepTools.LoadClass", 
        Report.GetParameterValue("P_GROUP_ALL"),
        Report.GetParameterValue("P_BGROUP"),
        Report.GetParameterValue("P_GROUP_TREE"));
      // подзаголовок отчета: группы товаров
      sGroupName = RepOracleRunner.ExecuteScalar<string>(host.Connection, "select supermag.RepTools.ClassString(10) from dual");
      
      // подзаголовок отчета: период отчета
      string sFirstDate = ToString(Report.GetParameterValue("P_FIRSTDATE"));
      string sLastDate = ToString(Report.GetParameterValue("P_LASTDATE"));
      int iCountDay = (RepConvert.ToSmDate(sLastDate)-RepConvert.ToSmDate(sFirstDate)).Days;
      string sCountDay = Safe.ToSqlNumber( iCountDay );
      sDateName = "с "+sFirstDate+" по "+sLastDate+" ( "+sCountDay+" дн. )";
   
 // данные отчета
    string sSQL = 
    SqlFormat("select"+
    "  CMS.ARTICLE, CMS.name from  "+
    "  supermag.smcard cms left join (SELECT  ost.ARTICLE, sum (OST.QUANTITY) quanto from supermag.SMGOODS ost GROUP BY ost.ARTICLE ) ost on (ost.ARTICLE=CMS.ARTICLE and OST.QUANTO=0) "+
    "  LEFT JOIN (SELECT logi.article FROM supermag.SMCARDSECURITYLOG "+
    "  logi where logi.ACTIONCODE = 3 "+
    "  and logi.EVENTTIME between ("+RepSqlText.ToSqlDate(sLastDate)+")-90 and "+RepSqlText.ToSqlDate(sLastDate)+
    "  ) n on (n.article=cms.article) "+
    "  LEFT JOIN (SELECT reps.article from supermag.FFMAPREP reps  "+
    "  where reps.saletype NOT IN (WI, WO, IW, CS, CR, PO, PN) and REPS.SALEDATE between "+RepSqlText.ToSqlDate(sFirstDate)+" and "+RepSqlText.ToSqlDate(sLastDate)+
    "  )reps on (reps.ARTICLE=CMS.ARTICLE) "+
    "  where CMS.ARTICLE=OST.ARTICLE "+
    "  and OST.QUANTO is not null "+
    "  and cms.ACCEPTED=1  "+
    "  and n.article is null"+
    "  and reps.article is null"+
    "   GROUP BY CMS.ARTICLE, cms.Name"
    );


      host.TableDataSourcePreInit("RepData", sSQL);      
      }
  } 
} 
29.04.2021 04:29
Иподскажите пожалуйста как вывести доп данные? например SALETYPE вот так невыводит
SQL код:
<Dictionary>
    <SupermagFastReportConnection Name="Connection" LoginPrompt="true">
      <TableDataSource Name="Table2" Alias="RepData" DataType="System.Int32" Enabled="true" SelectCommand="SELECT 
'' ARTICLE
 '' NAME
 '' SALETYPE
''>
        <Column Name="ARTICLE" DataType="System.String"/>
        <Column Name="NAME" DataType="System.String"/>
         <Column Name="SALETYPE" DataType="System.String"/>
      </TableDataSource>
    </SupermagFastReportConnection>
    <Relation Name="DocSpec_DocSpecScale" ParentDataSource="Table2" ChildDataSource="null" ParentColumns="SPECITEM" ChildColumns="SPECITEM" Enabled="true"/>
    <Parameter Name="P_STORED_ALL" DataType="System.Int32"/>
    <Parameter Name="P_STORED_NAME" DataType="System.String"/>
    <Parameter Name="P_PARTNER" DataType="System.Int32"/>
    <Parameter Name="P_BGROUP" DataType="System.Int32"/>
    <Parameter Name="P_GROUP_ALL" DataType="System.Int32"/>
    <Parameter Name="P_GROUP_TREE" DataType="System.String"/>
    <Parameter Name="P_FIRSTDATE" DataType="System.String"/>
    <Parameter Name="P_LASTDATE" DataType="System.String"/>
    <Parameter Name="P_SURNAME" DataType="System.String"/>
    <Parameter Name="P_USER_ID" DataType="System.Int32"/>
    <Parameter Name="P_DATE" DataType="System.String"/>
  </Dictionary>
<ReportPage Name="Page1" RawPaperSize="9" FirstPageSource="15" OtherPagesSource="15" Fill.Color="White" TitleBeforeHeader="false"  PaperWidth="280">
    <PageHeaderBand Name="PageHeader" Width="800.06" Height="40.12" CanGrow="true">
     
      
     
    </PageHeaderBand>
    
    <DataBand Name="DataSpec" Top="167.1" Width="718.2"  CanGrow="true" DataSource="Table2" PrintIfDetailEmpty="true" PrintIfDatasourceEmpty="true" >
      <TextObject Name="txtArticle" VertAlign="Center"  Width="100" Height="29.00" CanGrow="true" CanBreak="false" Text="[RepData.ARTICLE]" HorzAlign="Left" Font="Arial, 8pt"Border.Lines="Right, Bottom, left,top" Border.Width="0.3" HorzAlign="Center"/>
      <TextObject Name="txtNAME"  VertAlign="Center" Left="100" Width="450" Height="29.00" CanGrow="true" CanBreak="false" Text="[RepData.NAME]" Font="Arial, 8pt" Border.Lines=" Bottom, left, right,top" Border.Width="0.3"/>
     <TextObject Name="txtSALETYPE"  VertAlign="Center" Left="100" Width="250" Height="29.00" CanGrow="true" CanBreak="false" Text="[RepData.SALETYPE]" Font="Arial, 8pt" Border.Lines=" Bottom, left, right,top" Border.Width="0.3"/>
    
    </DataBand>
</ReportPage> 
29.04.2021 04:57
опять неявное приведение типов в дате...
29.04.2021 05:40
Цитата:
OlegON опять неявное приведение типов в дате...
подскажите пожалуйста что где и как?
29.04.2021 11:26
Подскажите пожалуйста люди добрые
29.04.2021 12:09
Цитата:
redesupar но всеравно выходят все товары
Уточните, какое условие не выполняется. По дате создания или по операциям.
С операциями у вас странное
Код:
NOT IN (WI, WO, IW, CS, CR, PO, PN)
Непонятно, как запрос вообще работает, должен ошибку выдавать, т.к. WI и прочее должны быть в апострофах 'WI'
Вы уверены, что СМ запускает не стандартный, а ваш измененный отчет?

Насчет дат - по-хорошему их нужно оборачивать в TO_DATE(), чтобы не было зависимости от региональных настроек клиента.
Или вообще параметры запроса использовать, но не подскажу как в супермаговском fastreport это выглядит, давно не работал с ним.
30.04.2021 09:23
Цитата:
string sSQL =
SqlFormat(&quot;select&quot;+
&quot; CMS.ARTICLE, CMS.name from &quot;+
&quot; supermag.smcard cms left join (SELECT ost.ARTICLE, sum (OST.QUANTITY) quanto from supermag.SMGOODS ost GROUP BY ost.ARTICLE ) ost on (ost.ARTICLE=CMS.ARTICLE and OST.QUANTO=0) &quot;+
&quot; LEFT JOIN (SELECT logi.article FROM supermag.SMCARDSECURITYLOG &quot;+
&quot; logi where logi.ACTIONCODE = 1 &quot;+
&quot; and logi.EVENTTIME <= to_date('(&quot;+RepSqlText.ToSqlDate(sLastDate)+&quot;)-90') &quot;+
&quot; ) n on (n.article=cms.article) &quot;+
&quot; LEFT JOIN (SELECT reps.article from supermag.FFMAPREP reps &quot;+
&quot; where reps.saletype NOT IN ('WI', 'WO', 'IW', 'CS', 'CR', 'PO', 'PN', 'PE')&quot;+
&quot; )reps on (reps.ARTICLE=CMS.ARTICLE) &quot;+
&quot; where CMS.ARTICLE=OST.ARTICLE &quot;+
&quot; and OST.QUANTO is not null &quot;+
&quot; and cms.ACCEPTED=1 &quot;+
&quot; and n.article is null&quot;+
&quot; and reps.article is null&quot;+
&quot; GROUP BY CMS.ARTICLE, cms.Name&quot;
);
переделал так, но теперь выдает ошибку из за <= нехватает правой скобки ,незнаю как быть, а надо чтобы созданные товары должны быть более 3 месяцов и старше с начала LASTDATE
30.04.2021 09:44
Не хватает не скобок, а параметров у функции to_date. RTFM, плиз
Хотя, лично я не понимаю, зачем нужно
- приведение из параметра отчета к переменной
- а потом из переменной в дату?

И еще вопрос, а документы каких типов должны выходить в отчете?
И для чего в отчете нужен FFMAPREP? Что он там делает?
13.05.2021 03:05
Цитата:
Mtirt Не хватает не скобок, а параметров у функции to_date. RTFM, плиз
Хотя, лично я не понимаю, зачем нужно
- приведение из параметра отчета к переменной
- а потом из переменной в дату?

И еще вопрос, а документы каких типов должны выходить в отчете?
И для чего в отчете нужен FFMAPREP? Что он там делает?

Здравствуйте, мне нужно выводить неактивные карты которые каким то образом остались активными (т.е. товар у которого остаток 0 и давно никуда не двигался, но постоянно выходит в инвентаризациях, статус активно а остатков 0 уже как год-два-три итд)
13.05.2021 03:09
В общем сама задача по отчету:
Выводить карточки товаров которые созданы более 90 дней назад от выбранной даты с остатком 0 и никуда не двигались (т.е. не было новых заказов, перемещений от поставщиков итд итп, а только внутримагазинские операции типо инвентаризация итд) где стоит статус Активно и остаток 0
Часовой пояс GMT +3, время: 08:58.

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