24.06.2021 08:44
Здравствуйте, помогите пожалуйста сделать возможность выбора группы товара, пытался делать по аналогии с другими отчетами, но не получается всеравно выводит все товары


Цитата:
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
{
string qMainSQL=" SELECT c.article, c.name, gru.normtree NORMTREE, gru.tree TREE, gru.name GROUPNAME FROM supermag.smcard c, supermag.SACARDCLASS gru, (select ost.article, sum(ost.quantity) qty from supermag.smgoods ost group by ost.article) ost, (select distinct logi.article from supermag.smcardsecuritylog logi where logi.actioncode=1 and logi.eventtime>=current_date-180) clog, (select distinct s.article from supermag.smdocuments d, supermag.smspec s [AKTI] and s.doctype=d.doctype and s.docid=d.id and d.createdat>=current_date-180 and d.docstate>=2 ) docs WHERE c.accepted=1 [UCENKA] AND ost.article(+)=c.article AND clog.article(+)=c.article AND docs.article(+)=c.article AND c.idclass=gru.id AND NVL(ost.qty, 0)=0 AND clog.article is null AND docs.article is null ORDER BY NORMTREE ";
string sGroupName;
string Ucenka;
string Akti;


RepHost host;


private void _StartReport(object sender, EventArgs e)
{

// Хост отчёта
host = new RepHost(Report);




//Учитывать возвраты
if(ToInt32(Report.GetParameterValue("P_FLAG1"))==0){
Ucenka=" AND c.datatype<>5 ";
Akti=" where d.doctype in ('OR', 'WI', 'WO', 'IW', 'CS', 'CR', 'PO', 'PN', 'PE') ";

}else{
Ucenka=" AND c.datatype=5 ";
Akti=" where d.doctype in ('AC') ";
}



qMainSQL=Replace(qMainSQL,"[UCENKA]",Ucenka);
qMainSQL=Replace(qMainSQL,"[AKTI]",Akti);

host.TableDataSourcePreInit("RepData", qMainSQL);

}

}
}

в фастрепорте
Цитата:
<Dictionary>
<SupermagFastReportConnection Name="Connection" LoginPrompt="true">
<TableDataSource Name="Table2" Alias="RepData" DataType="System.Int32" Enabled="true" SelectCommand="SELECT &#13;&#10; NormTree&#13;&#10;,'' TREE &#13;&#10;,'' GroupName &#13;&#10;,'' ARTICLE&#13;&#10; '' NAME&#13;&#10;''">
<Column Name="ARTICLE" DataType="System.String"/>
<Column Name="NAME" DataType="System.String"/>
<Column Name="NORMTREE" DataType="System.String"/>
<Column Name="TREE" DataType="System.String"/>
<Column Name="GROUPNAME" 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"/>
<Parameter Name="P_FLAG1" DataType="System.Int32"/>
</Dictionary>
<ReportPage Name="Page1" PaperWidth="280" RawPaperSize="9" FirstPageSource="15" OtherPagesSource="15" Fill.Color="White" TitleBeforeHeader="false">

<PageHeaderBand Name="PageHeader" Width="982.8" Height="40.12" CanGrow="true"/>
<GroupHeaderBand Name="GroupHeader" Top="161.73" Width="1047.06" Height="18.9" CanGrow="true" BeforePrintEvent="GroupHeader_BeforePrint" KeepWithData="true" Condition="[RepData.NORMTREE]" SortOrder="None">
<TextObject Name="TextGroupName" Top="3.78" Width="1043.28" Height="15.12" Text="[RepData.GROUPNAME]" VertAlign="Center" Font="Arial, 9pt, style=Bold"/>
<DataBand Name="DataSpec" Top="44.12" Width="982.8" CanGrow="true" DataSource="Table2" PrintIfDetailEmpty="true" PrintIfDatasourceEmpty="true">
<TextObject Name="txtArticle" Width="100" Height="29" Border.Lines="All" Border.Width="0.3" CanGrow="true" CanBreak="false" Text="[RepData.ARTICLE]" VertAlign="Center" Font="Arial, 8pt"/>
<TextObject Name="txtNAME" Left="100" Width="433.85" Height="29" Border.Lines="All" Border.Width="0.3" CanGrow="true" CanBreak="false" Text="[RepData.NAME]" VertAlign="Center" Font="Arial, 8pt"/>
<TextObject Name="txtTREE" Left="534.7" Width="200" Height="29" Border.Lines="All" Border.Width="0.3" CanGrow="true" CanBreak="false" Text="[RepData.TREE] [RepData.GROUPNAME]" VertAlign="Center" Font="Arial, 8pt"/>
</DataBand>
</GroupHeaderBand>



</ReportPage>
24.06.2021 11:13
Пишите версию СуперМага и про наличие доработок.

У меня, например, в 1.033 нет столбца SACardClass.NormTree.

SQL код:
select R1.ID, R1.Tree, R1.Name, SMCard.Article, SMCard.Name
  from Supermag.SMCard, Supermag.SACardClass, Supermag.SACardClass R1
 where Supermag.SACardClass.ID = SMCard.IDClass
   and SMCard.IDClass=R1.ID
   and R1.Tree like '25.%'
 order by R1.Tree, SMcard.Name 
24.06.2021 11:19
Цитата:
DMaslov Пишите версию СуперМага и про наличие доработок.

У меня, например, в 1.033 нет столбца SACardClass.NormTree.

SQL код:
select R1.ID, R1.Tree, R1.Name, SMCard.Article, SMCard.Name
  from Supermag.SMCard, Supermag.SACardClass, Supermag.SACardClass R1
 where Supermag.SACardClass.ID = SMCard.IDClass
   and SMCard.IDClass=R1.ID
   and R1.Tree like '25.%'
 order by R1.Tree, SMcard.Name 
Версия 1.044

в SACARDCLASS есть ID TREE NAME FLAGS CREATOR NORMTREE, в общем карточка товара
25.06.2021 10:08
Может кто помочь пожалуйста?
25.06.2021 10:20
Если используется стандартная форма отчета, то в ней должны быть добавлены параметры P_GROUP_ALL, P_BGROUP, P_GROUP_TREE, в соответствии с документацией Супермаг+. В код отчета добавляется процедура отбора необходимых товаров.
Код:
 // фильтр по группам товаров
      RepOracleRunner.ExecuteProcedure(host.Connection,"Supermag.RepTools.LoadClass", 
        Report.GetParameterValue("P_GROUP_ALL"),
        Report.GetParameterValue("P_BGROUP"),
        Report.GetParameterValue("P_GROUP_TREE"));
В описание текста запроса, в условия отбора данных надо добавить
Код:
 RepOracleRunner.ExecuteScalar<string>(host.Connection, "select supermag.RepTools.ClassString(6,'s') from dual")+
Здесь вместо 's' нужно указать псевдоним таблицы, в которой есть артикула товаров.

Еще в отчетах используются
Код:
RepOracleRunner.ExecuteScalar<string>(host.Connection, "select supermag.RepTools.ClassString(5) from dual")
для выбора корректной таблицы, по которой нужно строить группировку и отбор данных.
Код:
RepOracleRunner.ExecuteScalar<string>(host.Connection,"Select supermag.RepTools.ClassString(14) from dual")
для условия для группировки товара.

Все вышеперечисленное можно найти в любом имеющемся отчете, разработанном С+, например, остатки товаров.
Часовой пояс GMT +3, время: 02:31.

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