RWSFilterParams Nesnesi üzerinden ilgili raporun filter listesini çekeriz, bu nesne üzerinden dönen veriler bize string tipinde xml olarak gelecektir.
Aşağıdaki kod satırları getfilter almaya örnek c#.net örneğidir.
ReportingService.RWSFilterParams parameters = new ReportingService.RWSFilterParams();
parameters.repName = "MMRPItemsList";string filterList =myService.getFilterList(parameters, basicParams);
Bize dönen filter listesi aşağıdaki gibi olacaktır.
<?xml version="1.0" encoding="UTF-8"?>
<navi-filters>
<filter type="group-selection" caption="Malzeme (Sınıfı) Türü" id="1" />
<filter type="group-selection" caption="Malzeme (Sınıfı) Durumu" id="2" />
<filter type="string" caption="Malzeme (Sınıfı) Kodu" id="3" range="true" />
<filter type="string" caption="Malzeme (Sınıfı) Açıklaması" id="4" range="true" />
<filter type="string" caption="Malzeme (Sınıfı) Özel Kodu" id="5" range="true" />
<filter type="string" caption="Malzeme (Sınıfı) Yetki Kodu" id="8" range="true" />
<filter type="string" caption="Malzeme (Sınıfı) Grup Kodu" id="10018" range="true" />
<filter type="string" caption="Üst Malzeme Sınıfı Kodu" id="20" />
<filter type="group-selection" caption="Konfigüre Edilebilir" id="10" />
<filter type="string" caption="Birim Seti Kodu" id="22" range="true" />
<filter type="string" caption="Birim Seti Açıklaması" id="23" range="true" />
<filter type="group-selection" caption="ızleme Yöntemi" id="24" />
<filter type="group-selection" caption="Stok Yeri Takibi" id="31" />
<filter type="numeric" caption="Alış KDV Oranı (%)" id="25" />
<filter type="numeric" caption="Satış KDV Oranı (%)" id="34" />
<filter type="numeric" caption="İade KDV Oranı (%)" id="35" />
<filter type="group-selection" caption="Kullanım Yeri" id="36" />
<filter type="string" caption="Org. Birimler" id="33" range="true" />
<filter type="string" caption="OrgBirimGrupKodu" id="9" />
<filter type="list-selection" caption="Ambar_Bilgisi_Detayları" id="28" />
<filter type="string" caption="Ambar Kodu" id="29" range="true" />
<filter type="list-selection" caption="Takım_Bilesenleri" id="30" />
</navi-filters>
Dönen filter üzerinden kullanmak istediğimiz parametreleri xml içerisinden eleyelim aşağıdaki formata çevirelim. Örneğin yukarıdaki filter listesinden malzeme kodunu kullanmak istiyoruz.
<?xml version="1.0" encoding="UTF-8"?>
<filter type="string" caption="Malzeme(Sınıfı) Kodu" id="3" range="true"/>
Yukarıda ki filter alanından gereksiz alanları çıkartırız,
Filter türleri
STRING_FILTER = 1
STRING_RANGE_FILTER = 2
NUMERIC_FILTER = 3
NUMERIC_RANGE_FILTER = 4
DATE_FILTER = 5
DATE_RANGE_FILTER = 6
TIME_FILTER = 7
TIME_RANGE_FILTER = 8
GROUPSEL_FILTER = 9
LISTSEL_FILTER = 10
Type alanını yukarıdaki filter türüne göre değiştiririz.
Kullanacağımız malzeme kodunda yukarıda type alanı string olarak bize geri dönmüştü, bunu filter türüne göre 1 yaparız.
Son olarak xml’e value alanı koyarak çağırmak istediğimiz değeri veya değer aralığını veririz, verdiğimiz örnekte value=”2|5” yani malzeme kodu 2 ile 5 arasındaki değerleri dönmesini istiyoruz.
Kullanacağımız xml yapısının değiştirdiğimiz hali;
<?xmlversion="1.0" encoding="UTF-8"?>
<navi-filters><filter type="2" id="3" value="2|5" /> </navi-filters>
Son olarakta raporumuzu çalıştırmak için kullandığımız metodda aşağıdaki kod satırında; tanımlanan filterlist xml’i kaydedilen yerden çekerek filterValues içerisine set edilir.
string filter = System.IO.File.ReadAllText(@"D:\web\reportfilterlist.xml");
parameters.filtersValues= filter;
Aşağıda c#.net üzerinden filterları kullanılarak çalıştırılan ReportingWebServis örnek metottur.
ReportingService.RWSParams parameters = new ReportingService.RWSParams();
parameters.reportName = "MMRPItemsList";
parameters.outputType = 4;
parameters.outputTypeSpecified = true;
string filter = System.IO.File.ReadAllText(@"D:\web\reportfilterlist.xml");
parameters.filtersValues = filter;
ReportingService.RWSBasicParams basicParams = new ReportingService.RWSBasicParams();
basicParams.firm = 1;
basicParams.firmSpecified = true;
basicParams.period = 1;
basicParams.periodSpecified = true;
basicParams.language = "TRTR";
string reportLink =myService.executeReport(parameters, basicParams);