Norint turėti galimybę dirbti su MSCAN v3 versija, Rivile GAMA programoje reikia aprašyti parametrą MSCAN_V3.
Servisas -> Administravimas -> Parametrai
Parametras | Aprašymas |
---|---|
MSCAN_BAR_PA | Prekės paieška |
MSCAN_OBJ_PA, MSCAN_OB2_PA | Objekto paieška |
MSCAN_SER_PA, MSCAN_SE2_PA | Serijos paieška |
MSCAN_SKEN | Skenavimo metu kviečiamos formulės |
MSCAN_PABAIG | Operacijos pabaigimo metu kviečiamos formulės |
MSCAN_BA_INF | Informacijos apie barkodą formulė |
MSCAN_LAU_TV | Rodomi skenavimo laukai ir jų eiliškumas |
MSCAN_MENIU | Rodomi meniu punktai ir jų eiliškumas |
MSCAN_MINUSL | Neigiami lokacijų likučiai |
MSCAN_V3** | Versijos keitimo mygtukas |
** - veikia tiek senoje tiek naujoje V3 versijoje
Parametras turi dvi reikšmes:
Kaip aprašyti formules paieškos laukams galima rasti čia.
Pagal nutylėjimą paieška yra išjungta.
Sistemiškai paieška atsižvelgia į Rivile GAMA nustatytus filtravimo parametrus: SS_FIL_PS - Prekių filtras, SS_FIL_OS - Objektų filtras.
Serijos laukas nėra sąrašinis, todėl nėra sisteminio serijų sąrašo. Norint naudoti paiešką, būtina aprašyti formulę ir ją nurodyti parametre antrame reišmės lauke.
Rivile MSCAN aplikacijoje paiešką galima rasti skenavimo lange prie skenavimo lauko, paspaudus ant mygtuko . Jeigu paieškos parametras neaprašytas - pasirinkimų lange "Paieška" nebus matoma.
Atidarius paieškos langą - sąrašas tuščias. Įvedus bent vieną simbolį pradedama paieška pagal įvestą fragmentą.
Jei Parametras 1 reikšmė nustatyta - S, tuomet laukas tampa sąrašiniu.
Senoje MSCAN versijoje, norint pakeisti skenavimo procesą, klientams buvo galima programuoti papildomas kliento procedūras - RGI_MSCAN_EDIT_CHECK_PRODUCT_CUSTOM arba RGI_MSCAN_EDIT_CHECK_PRODUCT_CUSTOM_P.
V3 versijoje šios procedūros vis dar veiks, bet prioritetą turės aprašytos formulės.
Parametras turi dvi reikšmes. Pirmoji skirta aprašyti formulei, kuri bus kviečiama prieš sistemines patikras. Antroji - formulei, kuri bus kviečiama po sisteminių patikrų.
Servisas -> Kortelės -> Formulės
Formulė rašoma T-SQL kalba.
Tiek formulė PRIEŠ, tiek formulė PO gali dirbti su laikinomis lentelėmis #inParams, #outParams, #appErrors, #appWarnings.
Formulė PRIEŠ gali būti naudojama, jei reikalinga skenuoti kitokį, nei standartinis barkodas
Formulėse numatyta galimybė vartotojui išvesti pasirinkimus į laikiną lentelę #appWarnings
įtraukiant pranešimus. Jei neužpildomas laukas warningId
tuomet vartotojo pasirinkimas grąžinamas lauke ignoreWarnings
. Formulės pavyzdys su tokio patvirtinimo pavyzdžiu:
-- perspėti jei pardavimo operacijos data vėlesnė nei šiandiena
if exists (select 1 from #inParams inner join dbo.i06_parh on module = 'RO' and ignoreWarnings = 0 and operationCode = i06_kodas_po and i06_op_data > left(convert(char(30), getdate(), 102), 10))
insert into #appWarnings (warningCode, warningMessage) values (0, 'Pardavimo data vėlesnė nei šiandien!')
Numatyta galimybė išvesti ir kelis pranešimus, tokiu atveju dar pildomas warningId
laukas ir pagal jį identifikuojamas atsakymas naudojant funkciją RGI_F_WARN_VALUE(warningId, value)
. Taip pat vietoje mygtuko "Tęsti" galima turėti iki 3 mygtukų su norimais pavadinimais (pildomos btn1, btn2 ir btn3 reikšmės). Formulės pavyzdys su dviem atskitais paklausimais:
-- lokacijos ir galiojimo datos pasirinkimas pirkimo operacijose
if exists (select 1 from #inParams where kodas_0l2 = '' and module = 'PO')
begin
-- lokacijos paklausimas
if not exists (select 1 from #inParams where warningId like '%LOKACIJA%')
begin
insert into #appWarnings (warningCode, warningId, warningMessage, btn1, btn2, btn3) values (0, 'LOKACIJA', 'Pasirinkite lokaciją', 'Lokacija Nr.1', 'Lokacija Nr.2', 'Paletė Nr.1')
return
end
else
update #inParams set kodas_0l2 = case when dbo.RGI_F_WARN_VALUE(warningId, 'LOKACIJA') = 1 then 'LL1' when dbo.RGI_F_WARN_VALUE(warningId, 'LOKACIJA') = 2 then 'LL2' else 'PP1' end
-- galiojimos datos priskyrimas
if not exists (select 1 from #inParams where warningId like '%GALIOJIMAS%')
insert into #appWarnings (warningCode, warningId, warningMessage, btn1, btn2) values (0, 'GALIOJIMAS', 'Galiojimo datos pasirinimas', '30 dienų', 'Nekeisti')
else
update #inParams set expirationDate2 = getdate() + 30 where dbo.RGI_F_WARN_VALUE(warningId, 'GALIOJIMAS') = 1
end
Senoje MSCAN versijoje, norint pakeisti pabaigimo procesą, klientams buvo galima programuoti papildomas kliento procedūras - RGI_MSCAN_FINALIZE_CUSTOM arba RGI_MSCAN_FINALIZE_CUSTOM_P.
V3 versijoje šios procedūros vis dar veiks, bet prioritetą turės aprašytos formulės.
Parametras turi dvi reikšmes. Pirmoji skirta aprašyti formulei, kuri bus kviečiama prieš sisteminį pabaigimą. Antroji - formulei, kuri bus kviečiama po sisteminio pabaigimo.
Servisas -> Kortelės -> Formulės
Formulė rašoma T-SQL kalba.
Rašant formulę, yra pasiekiami tam tikri kintamieji.
Kintamasis | Aprašymas |
---|---|
@module | Modulio kodas |
@operationCode | Operacijos kodas |
@operationType | MSCAN operacijos tipas (ATR - atrinkimas, PAJ - pajamavimas, LOK - lokacijos op.) |
@mscanUser | MSCAN vartotojas |
@locale | Kalba |
@note | Pastaba |
@departmentId | Padalinio kodas |
Formulės PRIEŠ su papildomu tikrinimu pavyzdys:
-- leidžiama pabaigti tik operacijas su logistikos kodu TEST, taikoma tik pirkimų ir pardavimų moduliams
if @module in ('PO', 'RO') and not exists (select 1 from dbo.i06_parh where i06_kodas_po = @operationCode and i06_kodas_ls_1 = 'TEST')
insert into #A12345 (Tag, Err_Code, Expr2) values ('KLAIDA', 0, 'Galimas tik operacijų su logistikos kodu "TEST" pabaigimas')
-- vidinėse operacijose tik vartotojas priklausantis vadovų grupei gali pabaigti taros perkėlimus
if @module = 'VD' and exists (select 1 from #FinalizeCheck inner join dbo.n17_prod on productCode = n17_kodas_ps and n17_kodas_gs = 'TARA') and not exists (select 1 from dbo.R05_USER where r05_kodas_rs = @mscanUser and r05_kodas_rs_g = 'VADOVAI')
insert into #A12345 (Tag, Err_Code, Expr2) values ('KLAIDA', 0, 'Taros perkėlimą gali pabaigti tik vadovai')
Formulės PO su pakeitimais po pabaigimo pavyzdys:
-- gamybos operacijose data pakeičiama į šios dienos datą
if @module = 'KA'
update dbo.i15_kalh set i15_op_data = convert(char(30), getdate(), 102) where i15_kodas_ka = @operationCode
Formulės prieš pabaigimą su paklausimu vartotojui pavyzdys:
-- serijos tikrinimas ir užpildymas kliento "RIVILE" pirkimo pasiūlymams
if @module = 'PO' and exists (select 1 from #FinalizeCheck where lot = '')
and exists (select 1 from dbo.i06_parh where i06_kodas_po = @operationCode and i06_kodas_ks = 'RIVILE' and i06_op_tip = 4)
begin
if @ignoreWarnings = 0
begin
insert into #appWarnings (warningCode, warningMessage, btn1, btn2) values (0, 'Rastos prekės be serijos!', 'Užpildyti šios dienos data', 'Nekeisti')
return
end
-- serijų atnaujinimas
if @ignoreWarnings = 1
begin
update dbo.i07_pard set i07_serija = convert(varchar(8), getdate(), 112) from #FinalizeCheck where i07_kodas_po = operationCode and i07_serija = ''
update dbo.rgi_mscan_d set lot = convert(varchar(8), getdate(), 112) from #FinalizeCheck tmp where tmp.operationCode = rgi_mscan_d.operationCode and rgi_mscan_d.lot = ''
update #FinalizeCheck set lot = convert(varchar(8), getdate(), 112) where lot = ''
end
end
MSCAN aplikacijoje informacija apie prekę matoma:
Modulyje "Prekės informacija";
Paspaudus ant detalios eilutės ir pasirinkus "Informacija pagal barkodą";
Įvedus barkodą skenavimo lange, paspaudus mygtuką ir pasirinkus "Informacija pagal barkodą".
Senoje MSCAN versijoje norint koreguoti šią informaciją buvo galima įkelti kliento procedūrą RGI_MSCAN_GET_PRODUCT_INFO_CUSTOM. Šis funkcionalumas vis dar veikia, tačiau naujoje versijoje atsirado paprastesnis būdas - galimybė aprašyti formulę parametre MSCAN_BA_INF.
V3 versijoje ši procedūra vis dar veiks, bet prioritetą turės aprašyta formulė.
Parametre nurodoma papildoma formulė informacijai apie barkodą.
Servisas -> Kortelės -> Formulės
Formulė rašoma T-SQL kalba.
Rašant formulę, yra pasiekiami tam tikri kintamieji bei laikinos lentelės.
Kintamieji
Kintamasis | Aprašymas |
---|---|
@tipas | PS - prekė, LO - lokacija, PA - paletė |
@barcode | Barkodas |
@barcode_pgr | Pagrindinis barkodas |
@barcode_alt | Altrenatyvus barkodas |
@operationCode | Operacijos kodas |
@module | Modulio kodas |
@rowNumber | Eilutės numeris |
@locale | Kalba |
@productCode | Prekės kodas |
@unitCode | Matavimo vienetas |
@departmentCode | Padalinio kodas |
@imageLink | Paveikslėlio nuoroda |
Rezultatų lentelė #RGI_MSCAN_GET_BARCODE_INFO_result - į kurią talpinamas rezultatas
Stulpelis | Pavadinimas | Tipas |
---|---|---|
eil | Eiliškumas | int |
type | Tipas | varchar(50) |
key | Raktas | varchar(max) |
value | Reikšmė | varchar(max) |
title | Pavadinimas | varchar(2000) |
color | Spalva | varchar(50) |
data | Duomenys | xml |
Esant poreikiui papildyti ar nerodyti tam tikros informacijos, galima koreguoti duomenis lentelėje #RGI_MSCAN_GET_PRODUCT_INFO_result.
Formulė rašoma T-SQL kalba.
-- Informacija pagal barkodą
-- Resultatas talpinamas čia: #RGI_MSCAN_GET_BARCODE_INFO_result ([eil] int, [type] varchar(50), [key] varchar(max), [value] varchar(max), [title] varchar(2000), varchar(50), [data] xml)
if @tipas<>'PS' -- Keisime tik prekės informaciją. Kitais atvejais (('LO')Lokacijos ir ('PA')Paletės) - rodysime standartiškai
goto ExitCode
-- 1. Pašaliname skiltį "Pagrindinis matavimo vienetas"
DELETE FROM #RGI_MSCAN_GET_BARCODE_INFO_result where [key]='Pagrindinis matavimo vienetas'
-- 2. Skiltyje "Matavimo vienetas" rodyti ne kodą, o matavimo vieneto pavadinimą (Pavadinimas kita kalba 1)
UPDATE #RGI_MSCAN_GET_BARCODE_INFO_result SET [value]=rtrim(N18_PAV_K1) FROM N18_MAT WHERE [key]='Matavimo vienetas' and [value]=N18_KODAS_US
-- 3. Įterpiame naują skiltį "Pardavimo kaina"
declare @kain numeric(12,4)
SELECT @kain=I33_KAINA FROM I33_PKAI WHERE I33_KODAS_IS=@departmentCode and I33_KODAS_PS=@productCode and I33_KODAS_US=@unitCode
insert into #RGI_MSCAN_GET_BARCODE_INFO_result ([eil],[key],[value],[type],[data])
select 7 as eil, 'Pardavimo kaina' as [key], cast(@kain as varchar(10))+' €/'+rtrim(@unitCode) as [value], 'inline' as [type], null as [data] where @kain is not null
-- 4. Likutį rodome tos prekės visų mato vienetų visuose padaliniuose
declare @xml_lik xml
SELECT cast(ROW_NUMBER() OVER(ORDER BY I17_KODAS_IS, I17_KODAS_OS, I17_SERIJA) as numeric(10,1)) AS Row_number, I17_KODAS_PS, I17_KODAS_IS, I17_KODAS_OS, I17_SERIJA, N37_FRAKCIJA_A as frakcija, SUM(I17_KIEKIS-I17_ATIDUOTA-I17_REZERVAS)/N37_KOEFICI*N37_FRAKCIJA_A as likutis
into #tmp_lik
from I17_VPRO inner join N37_PMAT on I17_KODAS_PS=N37_KODAS_PS and I17_KODAS_US_A=N37_KODAS_US
where I17_KODAS_PS=@productCode
group by I17_KODAS_PS, I17_KODAS_IS, I17_KODAS_OS, I17_SERIJA, N37_KOEFICI, N37_FRAKCIJA_A
having SUM(I17_KIEKIS-I17_ATIDUOTA-I17_REZERVAS)<>0
select @xml_lik= (
select * from (
select Row_number as eil_nr, '[PAD:'+rtrim(dbo.RGI_F_SPEC_SYMB(n07_pav))+'] '+rtrim(dbo.RGI_F_SPEC_SYMB(n17_pav)) as [key], dbo.RGI_F_D_KIEKIS(likutis,frakcija)+' '+rtrim(@unitCode) as [value], 'inline' as [type], case when likutis<0 then 'red' else null end as
from #tmp_lik
inner join N07_IMON on N07_KODAS_IS=I17_KODAS_IS
inner join N17_PROD on N17_KODAS_PS=I17_KODAS_PS and N17_TIPAS=1
) as [schema]
order by [key], eil_nr
for xml auto, elements
)
drop table #tmp_lik
DELETE FROM #RGI_MSCAN_GET_BARCODE_INFO_result where [key] in ('Likučiai','Likutis')
insert into #RGI_MSCAN_GET_BARCODE_INFO_result (eil,[key],[value],[type],[data])
select 99 as eil, 'Likučiai padaliniuose' as [key], '' as [value], 'list' as [type], @xml_lik as [data] where @xml_lik is not null
MSCAN aplikacijoje skenavimo lange yra galimybė dirbti su 11 laukų - lokacija iš, lokacija į, barkodas, kiekis, objektas, gavėjo objektas, serija, gavėjo serija, galiojimo data, galiojimo data lokacijoje ir papildoma informacija. Barkodo ir kiekio laukai yra privalomi ir įjungti visada. Laukus lokacija, objektas, gavėjo objektas, serija, gavėjo serija, galiojimo data ir papildoma informacija galima įjungti/išjungti MSCAN nustatymuose.
Lokacijos nustatymas kontroliuoja visus su lokacija susijusius laikus, t.y. lokacija iš, lokaciją į ir galiojimo data lokacijoje. Šių laukų rodymas priklauso nuo modulio ir parametro MSCAN_LAU_TV konfigūrcijos.
Laukai rodomi tik tuo atveju, jei jie įjungti tiek per MSCAN_LAU_TV parametrą, tiek per MSCAN nustatymus.
MSCAN_LAU_TV parametras naudojamas tiek skenavimo laukų įjungimui / išjungimui, tiek jų eiliškumui keisti. Parametras gali būti aprašytas modulio ir vartotojo lygyje. Parametro neaprašius rodomi standartiniai numatyti laukai.
Reikšmė lokacija įjungia pagrindinį lokacijos lauką modulyje (pirkimuose - lokacija į, pardavimuose - lokacija iš ir pan.) Reikšmė lokacija2 įjungia papildomą lokacijos lauką (pirkimuose - lokacija iš, pardavimuose - lokacija į ir pan.)
Ne visuose moduliuose galima įjungti visus laukus, pvz kaupikliuose galimi tik barkodo, kiekio ir papildomi laukai, gavėjo objektas ir gavėjo serija - tik vidinėse operacijose gavimo atveju.
Lauko pavadinimas | Lauko kodas | Pagal nutylėjimą įjungtas moduliuose |
---|---|---|
Lokacija iš | lokacija/lokacija2 (pagal modulį) | Pardavimuose, vidinėse op., gamyboje, lokacijų op. |
Lokacija į | lokacija/lokacija2 (pagal modulį) | Pirkimuose, vidinėse op., inventorizacijoje, lokacijų op. |
Barkodas | barkodas | Visuose moduliuose be galimybės išjungti |
Kiekis | kiekis | Visuose moduliuose be galimybės išjungti |
Objektas | objektas | Visuose moduliuose išskyrus kaupiklius ir vidines op. priėmimo atveju |
Gavėjo objektas | objektas2 | Vidinėse operacijose priėmimo atveju |
Serija | serija | Visuose moduliuose išskyrus kaupiklius ir vidines op. priėmimo atveju |
Gavėjo serija | serija2 | Vidinėse operacijose priėmimo atveju |
Galiojimo data | galiojimoData | Pirkimuose, vidinėse op. |
Galiojimo data lokacijoje | galiojimoData2 | - |
Papildoma informacija | papildomi | Visuose moduliuose |
Parametro reikšmės pagal nutylėjimą pagal modulius:
Modulis | Reikšmė pagal nutylėjimą |
---|---|
Pardavimai | lokacija,barkodas,kiekis,objektas,serija,papildomi |
Pirkimai | lokacija,barkodas,kiekis,objektas,serija,galiojimodata,papildomi |
Vidiniai judėjimai | lokacija,lokacija2,barkodas,kiekis,objektas,serija,galiojimodata,papildomi |
Kaupikliai | barkodas,kiekis,papildomi |
Inventorizacija | lokacija,barkodas,kiekis,objektas,serija,papildomi |
Gamyba | lokacija,barkodas,kiekis,objektas,serija,papildomi |
Lokacijos | lokacija,lokacija2,barkodas,kiekis,objektas,serija,papildomi |
Laukų eiliškumas kontroliuojamas keičiant jų poziciją parametre. Pateiktame pavyzdyje laukai objektas ir serija iškeliami į viršų:
Aprašius parametrą MSCAN_MENIU galima apriboti kokie meniu punktai (moduliai) prieinami vartotojui ir kokiu eiliškumu jie rodomi. Parametras gali būti aprašytas vartotojo lygyje. Parametro neaprašius rodomas visų modulių sąrašas.
Modulių kodai atskiriami kableliu. Sąrašo apribojimo pavyzdys:
PO,RO,IF
Modulio kodas | Pavadinimas |
---|---|
RO | Pardavimai |
PO | Pirkimai |
VD | Vidiniai judėjimai |
KP | Kaupikliai |
IF | Inventorizacija |
KA | Gamyba |
0E | Lokacijos |
PS | Prekės informacija |
Parametre nurodoma ar lokacijose gali būti neigiami likučiai.
Aprašius parametrą MSCAN_V3 ir nustačius jo reikšmę į "Taip", tiek senoje tiek naujoje MSCAN versijoje nustatymuose atsiranda mygtukas, leidžiantis pakeisti versiją.
Senoje MSCAN aplikacijos versijoje nustatymuose atsiranda mygtukas "Pereiti prie naujos versijos".
Perėjus prie naujos versijos, nustatymuose atsiranda mygtukas "Grąžinti seną versiją".
Senoje MSCAN versijoje buvo galimybė nustatymuose įjungti/išjungti Objekto ir Serijos laukų kopijavimą
Naujoje versijoje šių nustatymų nelieka, tačiau atsiranda galimybė operacijoje užrakinti barkodo, kiekio, objekto, serijos laukų reikšmes.
Tai padaryti galima prie konkretaus lauko paspaudus mygtuką ir pasirinkus "Užrakinti". Kai užrakinimas nebereikalingas - paspaudus tą patį mygtuką galima pasirinkti "Atrakinti". Užrakintas laukas tampa neaktyvus ir skenuojant reikšmė išsaugoma.
Esant poreikiui, vartotojui nustatymuose padaryta galimybė įjungti/išjungti Tamsų aplikacijos režimą.
Jeigu MSCAN aplikacijoje skenavimo lange norima naudoti prekės, objekto ar serijos paiešką, tam reikalinga aprašyti parametrus MSCAN_BAR_PA, MSCAN_OBJ_PA, MSCAN_SER_PA.
Jeigu paiešką norima papildyti tam tikra informacija, ar serijų atveju aprašyti sąrašą, tam naudojamos formulės.
Patarimai programuojantiems: Formulės programavimą ir testavimą geriausia vykdyti naudojant SQL priemones (MSSQL SSMS arba Sybase iSQL).Formulės pradžioje aprašomi standartiniai kintamieji, kurie bus naudojami užpildant juos testinėmis reikšmėmis. Vėliau keliant programinį kodą į formulę, šią dalį galima užkomentuoti.
Servisas -> Kortelės -> Formulės
Formulė rašoma T-SQL kalba.
Rašant formulę, yra pasiekiami tam tikri kintamieji bei laikinos lentelės.
Kintamieji
Kintamasis | Aprašymas |
---|---|
@user | Vartotojas |
@module | Modulis |
@param1 | Lauko, kuriame ieškoma, pavadinimas |
@filter | Įvesta filtravimo frazė |
@isList | Nurodo, ar formulė kviečiama iš sąrašo ar is paieškos formos |
Rezultatų lentelė #RGI_MSCAN_SEARCH_result - į kurią talpinamas rezultatas
Stulpelis | Pavadinimas |
---|---|
value | Reikšmė - būtinai barkodas, objekto kodas ar serija - priklausomai nuo sąrašo. |
label | Pavadinimas. Gali būti sudarytas iš įvairių reikšmių pagal kurias bus norima ieškoti. |
Filtravimo lentelė #RGI_MSCAN_SEARCH_filter - kurioje patalpinta vartotojo filtravimui įvesta frazė
Stulpelis | Pavadinimas |
---|---|
value | Filtravimui įvesta frazė |
value1 | Filtravimui įvesta frazė + % |
value2 | % + Filtravimui įvesta frazė + % |
Šioje lentelėje įvedus paieškos frazę iš kelių žodžių ar simbolių atskirtų kableliu, bus sugeneruojami kelios eilutės. Pavyzdžiui: "Mano prek" bus įrašai lentelėje #RGI_MSCAN_SEARCH_filter:
value | value1 | value2 |
---|---|---|
Mano | Mano% | %Mano% |
prek | prek% | %prek% |
Klaidos registravimui naudojama funkcija RGI_KLAIDA.
Funkcijos parametrų eilės tvarka:
Parametras | Tipas | Paskirtis / Reikšmė |
---|---|---|
@Tag | varchar(50) | Laukas, kuris įtakojo klaidą |
@Expr2 | varchar(250) | Klaidos pranešimas (LT) |
@Expr3 | varchar(250) | Klaidos pranešimas (EN) |
@Expr1 | varchar(8000) | Papildoma išplėstinė klaidos informacija |
@Err_Code | int | Klaidos kodas (Pagal nutylėjimą 0) |
Klaidos funkcijos naudojimo pavyzdys:
exec dbo.RGI_KLAIDA '@data_nuo_iki','Įvestas laikotarpis turi būti ne ilgesnis nei 7 dienos', 'The entered period must not exceed 7 days!'
Prekės paieškos formulė
--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma
--@isList - parametras nurodantis, ar formulė kviečiama is sąrašinio lauko.
-- Jei reikšmė lygi 1, tada iš sąrašinio, jei 0 tada per paiešką
IF @filter <> '' or @isList = 1
INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
SELECT N37_BAR_KODAS as [value], RTRIM(N37_KODAS_PS) + ', ' + RTRIM(N37_KODAS_US) + ', ' + RTRIM(N17_PAV) as [label]
FROM N37_PMAT n37
LEFT JOIN N17_PROD on n17_kodas_ps = n37_kodas_ps
LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
ON (N37_BAR_KODAS like xx.[value1]
or N37_KODAS_PS like xx.[value2]
or N37_KODAS_US like xx.[value2]
or N17_PAV like xx.[value2]
)
WHERE N37_BAR_KODAS <> '000000000000' and ((@filter <> '' AND XX.[value1] is not null) or (@filter = ''))
GROUP BY N37_BAR_KODAS, RTRIM(N37_KODAS_PS) + ', ' + RTRIM(N37_KODAS_US) + ', ' + RTRIM(N17_PAV)
Objekto paieškos formulė
declare @rdate datetime
select @rdate = convert(datetime,left(convert(varchar,getdate(),120),10),120)
--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma
--@isList - parametras nurodantis, ar formulė kviečiama is sąrašinio lauko.
-- Jei reikšmė lygi 1, tada iš sąrašinio, jei 0 tada per paiešką
IF @filter <> '' and @isList <> 1
INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
SELECT N06_KODAS_OS as [value], '$g$' + N06_PAV + '$g$' + ' ( _' + RTRIM(N06_APRAS) + '_ )' as [label]
FROM N06_OBJ
LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
ON (N06_KODAS_OS like xx.[value1]
or N06_PAV like xx.[value2]
)
WHERE N06_TIPAS = 2 AND (N06_POZ_DATE = 0 OR (N06_POZ_DATE = 1 AND @rDate >= N06_BEG_DATE and @rDate <= N06_END_DATE)) AND N06_TEVAS = 'KILMES_SALIS'
and ((@filter <> '' AND XX.[value1] is not null) or (@filter = ''))
GROUP BY N06_KODAS_OS, '$g$' + N06_PAV + '$g$' + ' ( _' + RTRIM(N06_APRAS) + '_ )'
IF @isList = 1
INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
SELECT N06_KODAS_OS as [value], N06_PAV + ' ( _' + RTRIM(N06_APRAS) + '_ )' as [label]
FROM N06_OBJ
LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
ON (N06_KODAS_OS like xx.[value1]
or N06_PAV like xx.[value2]
)
WHERE N06_TIPAS = 2 AND (N06_POZ_DATE = 0 OR (N06_POZ_DATE = 1 AND @rDate >= N06_BEG_DATE and @rDate <= N06_END_DATE)) AND N06_TEVAS = 'KILMES_SALIS'
and ((@filter <> '' AND XX.[value1] is not null) or (@filter = ''))
GROUP BY N06_KODAS_OS, N06_PAV + ' ( _' + RTRIM(N06_APRAS) + '_ )'
Serijos paieškos formulė
--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma
--@isList - paraemtras nurodantis, ar formulė kviečiama iš sąrašinio lauko.
-- Jei reikšmė lygi 1, tada iš sąrašinio, jei 0 tada per paiešką
IF @filter <> '' or @isList = 1
INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
SELECT I17_SERIJA as [value], i17_serija as [label]
FROM I17_VPRO
LEFT JOIN #RGI_MSCAN_SEARCH_filter AS xx
ON I17_SERIJA like xx.[value2]
WHERE (@filter <> '' AND XX.[value1] is not null) or (@filter = '')
GROUP BY I17_SERIJA
Esant poreikiui dokumento ar detalioje eilutėje paryškinti ar nuspalvinti tam tikrą teksto dalį, tai galima padaryti naudojant specialius žymėjimus. Šie žymėjimai gali būti naudojami aprašant parametrus MSCAN_DSAR, MSCAN_HSAR, MSCAN_BAR_PA, MSCAN_OBJ_PA, MSCAN_SER_PA.
Žymėjimai
Tekstą rašant tarp simbolių *, jis bus paryškintas. Pavyzdžiui, tekstas.
*norimas tekstas*
Tekstą rašant tarp simbolių _ , jis bus parašytas kursyvu. Pavyzdžiui, tekstas.
_norimas tekstas_
Tekstą rašant tarp simbolių ~, jis bus perbrauktas. Pavyzdžiui, tekstas
~norimas tekstas~
Tekstą rašant tarp simbolių $r$, jis bus nuspalvintas raudonai.
$r$norimas tekstas$r$
Tekstą rašant tarp simbolių $g$, jis bus nuspalvintas žaliai.
$g$norimas tekstas$g$
Tekstą rašant tarp simbolių $b$, jis bus nuspalvintas mėlynai.
$b$norimas tekstas$b$
Pavyzdžiai
'*$g$'+trim(productName)+'$g$* , $b$'+unitCode+' $b$ obj: '+objectCode+' serija:$r$'+lot+'$r$'
Jei reikšmė yra pakankamai ilga - galima nurodyti formulės kodą. O jau pačioje formulėje nurodyti formuojamą tekstą.
'Dok: *'+documentNr+'*, '+convert(char(10),docDate,120)+', renka:'+addUser+' K:$b$'+clientName+'$b$'
Jei reikšmė yra pakankamai ilga - galima nurodyti formulės kodą. O jau pačioje formulėje nurodyti formuojamą tekstą.
declare @rdate datetime
select @rdate = convert(datetime,left(convert(varchar,getdate(),120),10),120)
--@filter - vartotojo įvesta filtravimo sąlyga
-- kol neįvestas nei vienas simbolis informacija nerodoma
IF @filter <> ''
INSERT INTO #RGI_MSCAN_SEARCH_result ([value],[label])
SELECT N06_KODAS_OS as [value], '$g$' + N06_PAV + '$g$' + ' ( _' + RTRIM(N06_APRAS) + '_ )' as [label]
FROM N06_OBJ
INNER JOIN #RGI_MSCAN_SEARCH_filter AS xx
ON (N06_KODAS_OS like xx.[value1]
or N06_PAV like xx.[value2]
)
WHERE N06_TIPAS = 2 AND (N06_POZ_DATE = 0 OR (N06_POZ_DATE = 1 AND @rDate >= N06_BEG_DATE and @rDate <= N06_END_DATE)) AND N06_TEVAS = 'KILMES_SALIS'
GROUP BY N06_KODAS_OS, '$g$' + N06_PAV + '$g$' + ' ( _' + RTRIM(N06_APRAS) + '_ )'
Esant poreikiui Vidinėse operacijose dirbti ne tik su Siuntėjo serija ir/ar objektu, bet ir su Gavėjo objektu ir/ar serija šiuos laukus galima įjungti Nustatymų lange.
Jeigu laukai neįjungti, atliekant atrinkimą eilutės bus tikrinamos tik pagal Siuntėjo objektą ir/ar seriją. Įjungus laukus eilutės bus tikrinimos tiek pagal Siuntėjo, tiek pagal Gavėjo objektą ir/ar seriją.
Pajamavimo operacijose dirbama tik su Gavėjo objektu ir/ar serija.
Gavėjo objekto ir/ar serijos laukai taip pat gali būti sąrašiniai arba turėti paieškas. Tam reikia aprašyti parametrus MSCAN_OB2_PA, MSCAN_SE2_PA
Esant poreikiui Pirkimo ar Vidinėse operacijose dirbti su Galiojimo data, ją įjungti galima Nustatymų lange.
Jeigu galiojimo data nėra įjungta, atrinkimo metu ji ignoruojama. Jeigu įjungta - atrinkimo metu tikrinama ir detalios eilutės galiojimo data.
Senoje MSCAN versijoje Kaupiklių ir Inventorizacijos moduliuose nuskenavus naują eilutę, ji iškart būdavo įterpiamos į atitinkamas operacijas jau sukiekiais. MSCAN V3 versijoje veikimo principai suvienodinti – įterpiama eilutė su nuliniu kiekiu (jei per parametrus leidžiamas naujų eilučių įterpimas ir naujų eilučių įterpimas į originalų dokumentą), o kiekiai pakoreguojami tik užbaigus MSCAN operaciją
Atnaujintas ir papildytas MSCAN_INFO langas – dabar informacija atvaizduojama ir šiuose moduliuose.