Rivile GAMA sistemoje aprašomi atitinkamų modulių dokumentų skaitliukai.
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 N40_ABAR on n37_kodas_ps = n40_kodas_ps and n37_kodas_us = n40_kodas_us
WHERE N37_BAR_KODAS <> '000000000000'
AND NOT EXISTS (SELECT 1 FROM #RGI_MSCAN_SEARCH_filter as f WHERE N37_BAR_KODAS+N37_KODAS_PS+N37_KODAS_US+N17_PAV+ISNULL(N40_BAR_KODAS,'') NOT LIKE f.[value2])
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
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 NOT EXISTS (SELECT 1 FROM #RGI_MSCAN_SEARCH_filter as f WHERE N06_KODAS_OS+N06_PAV NOT LIKE f.[value2])
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
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 NOT EXISTS (SELECT 1 FROM #RGI_MSCAN_SEARCH_filter as f WHERE N06_KODAS_OS+N06_PAV NOT LIKE f.[value2])
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
WHERE NOT EXISTS (SELECT 1 FROM #RGI_MSCAN_SEARCH_filter as f WHERE I17_SERIJA NOT LIKE f.[value2])
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) + '_ )'


