Operacionet logjike (ndërmarrja 1s). Operacionet logjike (ndërmarrja 1s) Përdorimi i OSE logjike në kushte

Në vijim operacionet logjike:

JO logjik NOT (negacion); Dhe logjike DHE;

OSE logjike OSE.

Operandat e operacioneve logjike duhet të jenë shprehje logjike. Në tabelë. 2.5 tregon rezultatet e veprimeve logjike në shprehjet logjike LP1 dhe LP2, të cilat marrin vlerat e vërtetë(I) ose I rremë(L).

tabela e së vërtetës

Tabela 2.5

LV1 LV2 LV1 DHE LV2 LV1 OSE LV2 JO LV1
Dhe Dhe Dhe Dhe L
Dhe L L Dhe L
L Dhe L Dhe Dhe
L L L L Dhe

Operatori i mohimit është një operator unar i vendosur në të majtë të operandit. Të gjitha operacionet e tjera të konsideruara janë binare.

2.6.5. PRIORITET E OPERACIONIT

Të gjitha operacionet 1C kryhen në shprehjen nga e majta në të djathtë në përputhje me përparësinë e tyre (vjetërsinë), domethënë nëse dy operacione të njëpasnjëshme kanë përparësi të barabartë, fillimisht kryhet operacioni majtas. Nënshprehjet e mbyllura në kllapa vlerësohen së pari. Në tabelë. 2.6 Operacionet 1C janë rregulluar në rend zbritës të përparësisë së tyre.

Prioriteti i Operacionit

Tabela 2. b

%*,/+, JO DHE OSE<, <=, >, >=, =, <>

Komentoni.Çdo qelizë e tabelës përmban operacione me prioritet të barabartë.

Shembull:

8 % 2 * 3 // Do të kthehet 0
8 % (2 * 3) // Do të kthehet 2

Meqenëse operacionet logjike janë më të vjetra se operacionet relacionale, shprehja logjike e mëposhtme është e gabuar:

3> 2 dhe 4< 5 // Так неверно

pasi që fillimisht vlerësohet nënshprehja logjike e 2 dhe 4

operandët që nuk janë të pranishëm e vërtetë ose I rremë. Dhe kjo nuk është e vërtetë.

Por shprehja logjike është e vërtetë

(3 > 2) dhe (4< 5) // Это shembull i vërtetë. Llogaritni rezultatin e një shprehjeje boolean

(x/a=1) ose (b/(a+b)< 1) и не (б = а) или (х <>6) në x = 6.0, a= 2.0 dhe b=3.0.

Duke llogaritur rezultatin e operacioneve të nënshprehjeve të mbyllura në kllapa, marrim:

I rremë ose e vërtetë dhe jo I rremë ose I rremë.

I rremë ose e vërtetë dhe e vërtetë ose I rremë. Pasi bëri e vërtetë dhe e vërtetë: e rreme ose e vërtetë ose I rremë. Rezultati përfundimtar: e vërtetë.

2.7. VARGET

vargështë një objekt i të dhënave që përmban vlera të shumta të aksesuara nga numri i tyre ( indeksi).

Numri i elementeve në një grup quhet i tij madhësia. Madhësia e një grupi mund të jetë vetëm një konstante e plotë literale.

Operator i ndryshueshëm;

deklaron një grup njëdimensional (vektor) a nga pesë elementë. Elementet e grupit kanë emrat e mëposhtëm: a, a, a, a dhe a. Në këta emra, vlerat 1-5 janë indekset e elementeve të grupit.

Një grup konsiderohet i përcaktuar nëse jepen vlerat e të gjithë elementëve të tij. Për të vendosur vlerat fillestare të elementeve të grupit (inicializimi i grupit), qarku i mëposhtëm është i mundur:

për në = 1 deri në 5 cikël

Detyrat

ndryshoni respektivisht vlerat e elementeve të 2-të dhe të 5-të të grupit a.

Në përgjithësi, shprehjet numerike mund të përdoren si indekse të grupeve, të quajtura shprehjet e indeksit. Për shembull:

a = 9,1; // Ndrysho vlerën e elementit të tretë të grupit a

Nëse një shprehje e indeksit të grupit vlerësohet në një vlerë jo të plotë, atëherë pjesa e plotë e asaj vlere merret si indeks. Për shembull:

a = 9,1; // Ndrysho vlerën e elementit të parë të grupit a

Vlera e indeksit nuk duhet të shkojë përtej kufijve të grupit. Pra, kur punoni me një grup të deklaruar më parë a nga pesë elementët janë operatorë të gabuar

Elementet e së njëjtës grup mund të jenë të llojeve të ndryshme. Për shembull:

a = '25.11.01'; // Elementi i tipit Date Elementet e vargut mund të jenë të tipit agregat. Për shembull:

сtr = CreateObject("Directory.Punonjës");

table = CreateObject("Tabela");

Një grup nuk mund të përmbajë vargje të tjera si elemente.

Një grup mund të jetë një parametër formal i një komponenti të programit (procedurë ose funksion). Në këtë rast, madhësia e grupit nuk është e specifikuar dhe kllapat katrore janë ruajtur. Për të përcaktuar madhësinë e grupit të kaluar në procedurë (funksion), përdoret funksioni i integruar Size.

Shembull:

procedurë Inicializimi i variablës Array(s), madhësia;

madhësiaA = Madhësia(a); // Funksioni i integruar Size do të kthejë madhësinë e grupit a

për yin = 1 nga cikli zmA

a[në] = 1; // Tani të gjithë elementët e grupit janë të barabartë me njërin skaj të Loop;

fundProcedurat // InitializationArray

variabli procedura Execute();

// Thirrja e procedurës që vendos vlerat fillestare të elementeve të grupit

// Parametri i tij aktual është emri i grupit InitializationArray(a);

fundProcedurat // Ekzekutoni

Kushtet në pyetje përdoren kur është e nevojshme të zgjidhni jo të gjitha regjistrimet nga tabela e bazës së informacionit 1C, por vetëm ato që korrespondojnë me një ose më shumë kritere përzgjedhjeje.

Kushtet në pyetjet 1C mund të specifikohen në mënyra të ndryshme, në varësi të karakteristikave të vetë pyetjes dhe burimit të të dhënave.

Fjala kyçe "KU"

Fjalë kyçe KU përdoret në pyetjet 1C kur një kusht zbatohet për regjistrimet e zgjedhura nga baza e informacionit. Në këtë rast, të dhënat filtrohen në fazën e përzgjedhjes së tyre nga tabela e infobazës.

Për shembull, ekziston një tabelë Pagesat, që përmban një listë të punonjësve dhe pagesat e bëra ndaj tyre.

Nëse ju duhet të zgjidhni pagesa në shumën prej të paktën 10,000, atëherë kërkesa do të duket kështu

Kërkesë. Teksti= "ZGJIDH
| Pagesat.Punonjës,
| Pagesat.Paga
| NGA
| Pagesat
| KU
| Pagesat.Paga >=10000"

Rezultati i pyetjes do të jetë tabela e mëposhtme.

Fjala kyçe "KANË"

Fjalë kyçe DUKE në pyetjet 1C përdoret kur është e nevojshme të bëhet një përzgjedhje midis regjistrimeve të zgjedhura tashmë. Për shembull, kjo fjalë kyçe përdoret kur dëshironi të filtroni të dhënat e grupuara në rezultatin e një pyetjeje.

Le të kthehemi te shembulli i mësipërm. Le të themi se duhet të zgjedhim nga një tabelë Pagesat punonjës që kanë marrë më shumë se 20,000 gjithsej. Për ta bërë këtë, së pari duhet të futni një grupim sipas fushës Punonjës, llogaritni shumën sipas fushës Paga për secilin punonjës, dhe më pas nga të dhënat e marra zgjidhni ato që plotësojnë kushtin.

Teksti i kërkesës do të duket kështu.

Kërkesë. Teksti= "ZGJIDH
| Pagesat.Punonjës,
| AMOUNT(Pagesat.Paga) SI rrogë
| NGA
| Pagesat
|GRUPI NGA
| Pagesat.Punonjësi
| PASAJ
| AMOUNT(Pagesat.Paga) > 20000"

Rezultati i kësaj pyetjeje do të jetë i tillë.

Ky shembull tregon qartë ndryshimin midis fjalëve kyçe KU dhe DUKE. Nëse do të përdornim fjalën KU në vend të DUKE, më pas do të bëhej fillimisht përzgjedhja e regjistrave me pagë mbi 20 mijë dhe më pas do të llogaritej shuma për çdo punonjës. Si rezultat, do të merrnim një rezultat të pyetjes bosh, sepse asnjë punonjës nuk ka marrë më shumë se 20,000 në një pagesë të vetme.

Kushtet e përzgjedhjes në tabelat e regjistrit virtual

Të gjithë regjistrat në sistemin 1C:Enterprise kanë tabela virtuale: regjistrat e grumbullimit, regjistrat e informacionit, regjistrat kontabël. Ekzistojnë dy mënyra për të vendosur kushtet për tabelat virtuale:

  1. përmes parametrave të tabelës virtuale;
  2. nëpërmjet seksioneve të pyetjeve KU ose DUKE.

Dallimet midis seksioneve KU dhe DUKE ne kemi konsideruar tashmë. Për të kuptuar se si ndryshojnë kushtet në këto seksione të pyetjeve nga kushtet në parametrat e tabelës virtuale, duhet të kuptoni se çfarë është tabelat e regjistrave virtualë në 1C. Karakteristika e tyre e rëndësishme është se ato nuk ekzistojnë në infobazë. Ky është një mjet që na ofrohet nga platforma 1C: Enterprise për optimizimin e konfigurimit.

Kështu, nëse kushti është i specifikuar në parametrat e tabelës virtuale, atëherë ai zbatohet në fazën e formimit të tij nga të dhënat e tabelës së regjistrit real. Dhe nëse në seksione KU ose DUKE, pastaj - në të dhënat e tabelës virtuale tashmë të formuar.

Konsideroni një shembull. Jepet një tabelë e regjistrit periodik të informacionit Monedhat.

Kërkohet të zgjidhni monedhat për datën më të vogël, kursi i këmbimit i të cilave është më pak se 30 rubla.

Një pyetje me një kusht në parametrat e tabelës virtuale do të duket kështu:

Në këtë rast, ne do të marrim një hyrje: 28.3 dollarë nga 01.02.2007. Kjo do të jetë zgjidhja e duhur për problemin.

Nëse e vendosim kushtin në seksion KU, atëherë rezultati i pyetjes do të jetë bosh, pasi në fillim do të bëhet një prerje e të parëve për secilën monedhë (si rezultat do të marrim dy regjistrime nga 01/01/2007 30,25 dollarë dhe 40.5 euro), dhe më pas të dhënat që plotësojnë kushtin do të zgjidhen prej tyre. Por të dy morën kushtin e rekordeve mirë< 30 nuk kënaq.

Funksione të ndryshme mund të aplikohen në fushat e pyetjeve. Në këtë seksion, unë do të shqyrtoj më të përdorurat (nga unë vetë) prej tyre.

DATA KOHA- vendos një fushë konstante me llojin Date. Sintaksë:

DATA KOHA (<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)
Kërkesa.Teksti =
"ZGJIDH
| DATETIME(2013, 1, 1) AS OMG";// 1 janar 2013

DIFERENCA DATA- kthen diferencën e 2 datave në dimensionin e specifikuar (vit, muaj, ditë, orë, minutë, sekondë). Sintaksë:

NDRYSHIM(<Дата1>, <Дата2>, <Тип>)
Kërkesa.Teksti =
"ZGJIDH
| DATEDIFF(DATETIME(2013, 2, 28), DATETIME (2013, 1, 1), DITA)
| SI DITË DERI NË FUND TË DIMRIT”;

KUPTIMI- vendos një fushë konstante me një rekord të paracaktuar të njërës prej tabelave të bazës së të dhënave, gjithashtu mund të kaloni një referencë null. Sintaksë:

KUPTIMI (<Имя>)
Kërkesa.Teksti =
"ZGJIDH
//elementi i paracaktuar i drejtorisë
| VALUE (Referenca. Monedhat. Rubla) SI Rubla,
// lidhje bosh dokumenti
| VALUE(Dokument.Fatura e Klientit.NullReferencë) AS EmptyInvoice,
//vlera e numrit
| VALUE(Enumeration.GenderPersons.Male) AS Mashkull,
//llogari e paracaktuar nga grafiku i llogarive
| VALUE (Grafik Llogarish. Vetë-mbështetës. Mallra) AS Llogaria_41";

ZGJEDHJA- një analog i konstruksionit IF për gjuhën e pyetjeve 1C. Sintaksë:

ZGJEDHJA
KUR<Выражение>PASTAJ<Выражение>
PER Ndryshe<Выражение>
FUND
Kërkesa.Teksti =
"ZGJIDH
//nëse çmimi është më i vogël se 100, atëherë pyetja do të kthehet përsëri 100
// përndryshe kërkesa do të kthejë çmimin real
| ZGJEDHJA
| WHEN Produktet.Çmimi > 100
| PASTAJ Mallrat.Çmimi
| TJETËR 100
| FUND SI ÇMIM
| NGA

LIDHJE<Имя таблицы>
Kërkesa.Teksti =
"ZGJIDH
//nëse lloji i vlerës së regjistruesit është marrja e dokumentit,
//atëherë kërkesa do të kthejë "Mallrat e pranuara", në të kundërtën "Mallrat e shitura"
| ZGJEDHJA
| WHEN mbetet
| PASTAJ ""Pranimi i mallrave""
| TJETER ""Shitje e mallrave""
| FUNDIMI SI PAMJE LËVIZJE
| NGA
| Regjistri i Akumulimit.Mbetet AS Mbetet";

NDËRMJET- kontrollon nëse vlera është në interval. Sintaksë:

NDËRMJET<Выражение>Dhe<Выражение>
Kërkesa.Teksti =
//merrni të gjitha produktet në rangun e çmimeve nga 100 në 1000
"ZGJIDH
| Produktet.Produkti
| NGA
| KU
| Mallrat.Çmimi MES 100 DHE 1000";

AT dhe NË HIERARKI- kontrolloni praninë e një vlere në listën e transmetuar. IN HIERARCHY do të zgjerojë gjithashtu elementët hierarkikë poshtë dhe do të kërkojë vlerën midis elementeve të varur. Sintaksë:

AT(<СписокЗначений>), NË HIERARKI (<СписокЗначений>)
Kërkesa.Teksti =
//merr të gjitha nën-llogaritë e llogarive të 41-të dhe të 10-të
"ZGJIDH
| Vetëmbështetës.Referenca AS Faturë
| NGA
| Plani kontabël AS Vetë-mbështetës
| KU
| Vetë-mbështetës. Referenca NË HIERARKI (VLERË (Grafik Llogarish. Vetëmbështetës. Mallra),
| VALUE(Tagram Llogarish. Vetë-mbështetës. Materialet))";

LIKE- ju lejon të krahasoni një varg me një model, i përdorur kur vargu i kërkimit nuk është i koduar. Ndërtimi i modelit:

  • % (përqindje): sekuenca që përmban çdo numër karakteresh arbitrare
  • _ (nënvizoj): një karakter arbitrar
  • [...] (një ose më shumë karaktere brenda kllapave katrore): çdo karakter i vetëm i listuar brenda kllapave katrore. Numërimi mund të përmbajë vargje, të tilla si a-z, që do të thotë çdo karakter brenda intervalit, duke përfshirë skajet e diapazonit
  • [^...] (në kllapa katrore një shenjë mohimi e ndjekur nga një ose më shumë karaktere): çdo karakter i vetëm përveç atyre të renditur pas shenjës së mohimit

Sintaksë:

LIKE"<ТекстШаблона>"
Kërkesa.Teksti =
//gjeni të gjitha karriget në drejtorinë e nomenklaturës
"ZGJIDH
| Produktet.Produkti
| NGA
| Mallrat AS Mallra
| KU
| Mallrat.Emri LIKE ""mjet%""";
//kjo pyetje do të kthejë Karrige, karrige, karrige, karrige zyre, etj.,
//por tabela nuk do të jetë në këtë listë

ËSHTË NULL- nëse fusha nuk është e definuar, atëherë e definon atë në shprehjen e specifikuar. Sintaksë:

ISNULL(<Выражение>, <Выражение>)
Kërkesa.Teksti =
//Nëse fusha nuk është e përcaktuar (NULL)? pastaj jepini një referencë boshe
"ZGJIDH
| ISNULL(Products.Reference, VALUE(Catalog.Products.EmptyReference)) AS Produkt
| NGA
| Manual.Mallrat AS Mallra";

Unë vërej se NULL duhet të përpunohet, sepse ky është një lloj shumë "kapriçioz" (sistemi 1C:Enterprise 8 përcakton një lloj të veçantë NULL me një element). Nëse përpiqeni të krahasoni me një vlerë të këtij lloji ose ta caktoni atë, patjetër që do të hasni në një gabim, kështu që mos harroni këtë konstrukt. Kur mund të shfaqet NULL:

  • pas bashkimit të tabelave, përveç asaj të brendshme (artikulli vijues për bashkimet);
  • pas zgjedhjes së atributeve të përcaktuara vetëm për grupet e drejtorive dhe anasjelltas;
  • pas përzgjedhjes së kolonës së ditarit të dokumenteve, ndërsa dokumenti aktual nuk ka detaje të përfshira në këtë kolonë.

Kjo nuk është një listë e plotë e funksioneve të gjuhës së pyetjeve 1C 8, nëse jeni të interesuar për punën e të tjerëve - shkruani në komente.

Si rregull, studimi i çdo gjuhe programimi fillon me një shembull të shkrimit të programit të parë të thjeshtë ("Përshëndetje botë!"). Kjo bëhet për të treguar vizualisht punën me ndërtime sintaksore bazë. Ne nuk do të bëjmë përjashtim nga kjo mënyrë e zakonshme e paraqitjes së materialit kur mësojmë një mjedis të ri zhvillimi, dhe për këtë arsye artikulli ynë i parë duhet të konsiderohet në të njëjtën mënyrë. Në të, ne do të analizojmë në detaje përgjigjet e pyetjeve të mëposhtme në lidhje me programimin në platformën 1C:Enterprise 8:

  • Ku dhe me çfarë ndihme për të shkruar kodin e programit në gjuhën e integruar 1C?
  • Cilat janë modulet e programit, cilat janë rregullat për të punuar me to?
  • Çfarë është një variabël, si të punohet me të, si dhe ku të deklarohet?
  • Cilët janë operatorët e krahasimit, caktimit dhe kushtëzimit dhe si i përdorni ato?
  • Operacionet Boolean - cilat janë ato dhe si të punohet me to?
  • Pse nevojiten sythe dhe si t'i përdorni ato?

Artikulli do të jetë i dobishëm për të gjithë ata që nuk janë ende të njohur me zhvillimin në platformën 1C:Enterprise 8, por duan të mësojnë se si të programojnë në 1C.

Zbatueshmëria

Materiali është i rëndësishëm për botimet e platformës "1C:Enterprise 8" 8.2. dhe 8.3.

Variablat dhe Operatorët

Në këtë artikull, ne fillojmë të studiojmë gjuhën e integruar 1C:Enterprise 8. Kodi i ekzekutueshëm gjendet në modulet e programit.

Ka një numër mjaft të madh modulesh që janë krijuar për të trajtuar ngjarje të ndryshme.

Pra, identifikimi i përdoruesit përpunohet në një modul, dhe procesimi i përdoruesit që klikon në një buton të caktuar trajtohet në një tjetër krejtësisht.

Kështu, çdo modul përshkruan sjelljen e konfigurimit në një pikë të caktuar. Moduli përmban, para së gjithash, një seksion të deklarimit të ndryshoreve. ato. ne mund të deklarojmë disa variabla në një modul.

Në të ardhmen, ato mund të përdoren në procedurat dhe funksionet e këtij moduli. Nëse një variabël përcaktohet me fjalën kyçe Export, atëherë ai do të jetë i disponueshëm jashtë këtij moduli. Shembull i linjës së deklarimit të ndryshueshme:

Rem Warehouse, Division, Magazine Export;

Pas deklarimit të variablave, ekziston një seksion procedurash dhe funksionesh.

Pas tyre është seksioni i programit kryesor, i cili do të ekzekutohet në momentin e hyrjes në këtë modul.

Për shembull, në seksionin e programit kryesor, mund të inicializoni variablat, d.m.th. jepini atyre disa vlera fillestare:

Gjendja=1;
NewExpression=2;
rezultat=3;

Një modul mund të mendohet si një kombinim i operatorëve të ndryshëm që kryejnë veprime të ndryshme që na duhen.

Ndarësi i operatorit është karakteri ";" (pikëpresje). Kjo shenjë është një shenjë e fundit të operatorit. ato. Operatori mund të shkruhet kështu:

Rezultati=100X200
+400
-600;

Nuk ka rëndësi se në sa rreshta është deklarata.

Sigurisht, shpesh është më e përshtatshme dhe më e qartë të vendosësh operatorin në një linjë, por ndonjëherë operatorët janë mjaft të gjatë (numri i linjave mund të arrijë në mënyrë të arsyeshme disa dhjetëra).

Një pikëpresje mund të hiqet në deklaratën përfundimtare të një konstruksioni të caktuar, për shembull, një procedurë. ato. kodi i mëposhtëm do të funksionojë:

Procedura CalculateValue()

Vlera fillestare = 100;
IntermediateValue = Vlera Fillestare / 5;
Vlera përfundimtare = Vlera fillestare+Vlera e ndërmjetme

Procedura e Fundit

Sidoqoftë, është më mirë të përdorni një pikëpresje në deklaratën përfundimtare. Ka mundësi që me kalimin e kohës ndërtimi të vazhdojë dhe operatori final të mos jetë më përfundimtar. Ne do të duhet të monitorojmë në mënyrë specifike këtë situatë.

Variablat janë krijuar për të mbajtur një vlerë të çdo lloji të të dhënave. Ato përdoren për ruajtjen e ndërmjetme të informacionit për përpunim.

Pothuajse në çdo modul softuerësh që kryen disa veprime, ka variabla të ndryshëm. Shtypja e ndryshueshme sipas vlerave në Platformën 1C: Enterprise 8 është e butë.

Për shembull, një variabël mund të përmbajë një vlerë të një lloji të të dhënave dhe disa rreshta më vonë, një lloj tjetër:

Krijuar = fals;
Krijuar = e vërtetë;
Krijuar =100;

Në dy deklaratat e para, vlera e variablave është boolean, dhe në të tretën ajo është ndryshuar në një vlerë numerike. ato. shtypja varet nga vlera që i është caktuar kësaj variabli.
Variablat mund të deklarohen në dy mënyra:

  • metodë e nënkuptuar (përmendja në anën e majtë të operatorit të caktimit përshkruan këtë variabël, nuk ka përshkrim paraprak të ndryshores me fjalën Variable, d.m.th. nuk ka seksion të veçantë të deklarimit të variablave);
  • deklarimi i qartë i variablave (Variable ControlData;). Përdoret një deklaratë eksplicite e variablave, për shembull, nëse pritet transferimi i mëpasshëm i kësaj ndryshore në një funksion.

Për emrat e variablave, përdoret përshkrimi klasik i identifikuesit. Identifikuesi përbëhet nga shkronja, numra dhe nënvizime. Një identifikues duhet të fillojë ose me një shkronjë ose një nënvizim.

Në këtë rast, emri i ndryshores duhet të pasqyrojë kuptimin e kësaj ndryshore. Emrat e variablave me një shkronjë (si A, B, C) janë shembuj të këqij. Ato nuk pasqyrojnë thelbin e variablave.

Shembuj të emrave të saktë të variablave: Counter (ndryshore në rritje për ciklin), Kontraktor. Nëse emri i ndryshores përmban disa fjalë, atëherë çdo fjalë e re, për qartësi, duhet të fillojë me një shkronjë të madhe.

Fjalët e rezervuara, si Procedura, Funksioni, Loop, Cikli i Fundit, etj., nuk mund të përdoren në emrat e variablave. (këto konstruksione janë të theksuara me të kuqe në modulin e programit).

Fjalët e rezervuara janë operatorë gjuhësorë të integruar dhe ka mjaft prej tyre. Të gjitha ato janë paraqitur në Asistent sintaksor.

Duhet të theksohet se llojet e të dhënave nuk janë fjalë të rezervuara (për shembull, Array, Boolean, True, False). Sistemi do t'i perceptojë saktë emrat e variablave të tillë.

Për të shkruar kodin e programit, rasti nuk ka rëndësi. Për shembull, fjala Procedurë mund të shkruhet me shkronja të mëdha dhe të vogla. Për më tepër, shkronjat e mëdha dhe të vogla mund të ndërthuren brenda një fjale.

Nuk ka rëndësi për Platformën. Sidoqoftë, sipas rregullave të sjelljes së mirë, fillimi i një fjale duhet të shkruhet me shkronjë të madhe, të gjitha shkronjat e tjera me shkronja të vogla.

Rreth gjuhës. Ju mund të përdorni si rusisht ashtu edhe anglisht, dhe një kombinim të dy gjuhëve. Nëse është i përshtatshëm për dikë, mund të përdorni me siguri anglisht për të shkruar kodin e programit, si dhe për të kombinuar rusisht dhe anglisht. Nuk ka rëndësi për platformën.

Shumë emra në anglisht janë mjaft të vështira për t'u mbajtur mend. Kur përdorni një kombinim të dy gjuhëve, lexueshmëria e kodit të programit përkeqësohet.

Operacionet Boolean

Operatorët e krahasimit shumë shpesh përdorin logjikën Boolean që kthen True ose False.

Për shembull, në një operator të kushtëzuar, mund të krahasoni: Nëse Ngjarja = Shitja Atëherë algoritmi do të shkojë përgjatë një dege (dmth., nëse vlera është e vërtetë), sipas kushtit False, një degë tjetër e algoritmit ekzekutohet.

Kushtet mund të jenë mjaft komplekse, ato mund të kombinohen, duke përdorur operatorët e mëposhtëm: AND, OSE, dhe NOT. Pra, për operatorin AND:

E Vërteta DHE E Vërteta = E Vërtetë;
E vërtetë DHE E rreme = E gabuar;
E gabuar DHE E Vërtetë = E gabuar;
E rreme DHE E rreme = E rreme.

Për operatorin OR mjafton që njëri prej operandëve të jetë i barabartë me True, atëherë vlera e kombinimit do të jetë True. Vlera është False vetëm nëse të dy operandët janë False.

Operatori NOT thjesht e kthen vlerën aktuale (False në True, True to False).

Duke përdorur një kombinim të këtyre operatorëve, mund të ndërtoni kushte mjaft komplekse. Kur hartoni deklarata komplekse të kushtëzuara, merrni parasysh përparësinë.

Operatori NOT ka përparësinë më të lartë, i ndjekur nga operatori AND, i ndjekur nga operatori OR. Çdo gjë e mbyllur në kllapa ka përparësinë më të lartë dhe ekzekutohet e para.

Për shembull, le të japim përparësi (sekuencën e ekzekutimit) për operacionet në shprehjen e mësipërme:

JO (Kushti 1 OSE Kushti 2) DHE Kushti3 OSE Kushti4
1.Rezultati1 = (Kushti1 OSE Kushti2);
2. Rezultati2 = NUK Rezultati1;
3. Rezultati3 = Rezultati2 DHE Kushti1;
4. Rezultati = Rezultati3 OSE Kushti4;

Ekziston një rregull konvertimi:

JO (Kushti 1 OSE Kushti 2) = JO Kushti1 DHE JO Kushti2.

Sidoqoftë, nuk duhet të përpiqeni gjithmonë të thjeshtoni shprehjen, pasi shpesh, logjikisht, shprehja e zgjeruar është më e lehtë për t'u lexuar.

operatori i caktimit

Operatori i caktimit nuk duhet të ngatërrohet me barazinë, edhe pse kanë të njëjtën drejtshkrim.

Parimi i operatorit të caktimit është i tillë që vlerës së majtë (ndryshores në anën e majtë) i caktohet vlera që është në të djathtë të shenjës së barabartë. Le të marrim një shembull:

Variabla1 = Variabla2 = Variabla3;

Variablës1 i është caktuar vlera e barazisë nga logjika Boolean, d.m.th. E vërtetë nëse Variable2 = Variable3, ose False ndryshe.

Gjatë testimit për pozicionin e një programuesi fillestar, shpesh përdoret detyra: të ndërroni vlerat e dy variablave në vende.

Ky problem zgjidhet duke përdorur operatorin e caktimit dhe ka dy zgjidhje.

Zgjidhja #1 duke përdorur ndryshore të përkohshme:
TempVar = Variabli1;
Variabla1 = Variabla2;
Variabla2 = TempVariable;

Zgjidhja numër 2:
Variabla1 = Variabla1 + Variabla2;
Variabla2 = Variabla1 – Variabla2;
Variabla1 = Variabla1 – Variabla2;

Operator i kushtëzuar

Ekziston një operator i tillë If, pas së cilës është e nevojshme të përshkruhet një kusht (vetë gjendja mund të jetë mjaft e madhe). Kushti pasohet nga fjala Pastaj dhe deklaratat që do të ekzekutohen.

Kjo mund të pasohet nga fjala kyçe Tjetër dhe një sërë deklaratash të tjera. Nëse ka disa kushte të ndryshme, mund të përdorni një sërë fjalë kyçe Tjeter nese(shih shembullin më poshtë). E gjithë struktura duhet të plotësohet me fjalën kyçe FundNëse e ndjekur nga një pikëpresje.

Përveç kushteve të thjeshta dhe të shumëfishta, ekziston edhe një formë e shkurtuar e operatorit të kushtëzuar: ?(Kushti, Shprehja1, Shprehja2);

Nëse kushti është i vërtetë, atëherë Shprehja 1, ndryshe - Shprehja 2. Shembull kodi: ExpensiveItem = ?(Artikulli.Çmimi>100000, E vërtetë, E gabuar);

Në praktikë, në vend të krahasimit regjistrohet me vlerën E vërtetë (Gënjeshtra) lloji:

Nëse ndryshorja = e vërtetë, atëherë
dhe
Nëse Variable = False Atëherë

Në fakt përdoret shënimi ekuivalent:

Nëse variable Atëherë
dhe
Nëse JO e ndryshueshme Atëherë

Operatorët Ciklikë

Për çdo lloj cikli, kërkohet një tregues i qartë i përfundimit të këtij cikli duke përdorur fjalën kyçe Cikli i Fundit. Ka disa lloje ciklesh.

Cikli me banak- një cikël me një numër të caktuar përsëritjesh. Kushti për daljen nga laku është që të jetë tejkaluar vlera kufi. Një shembull i përdorimit për të llogaritur vlerën e A!

A = 5;
Faktorial = 1;
Për numërues = 1 nga një lak
Faktorial = Faktorial * Numërues;
Cikli i Fundit;

Lak sipas kushtit– ekzekutohet ndërkohë që kushti i këtij cikli është i vërtetë. Shembull:

Shuma e mbetur = 1000;
Çmimi i artikullit shtesë = 243;
Sasia = 0;
Ndërsa RemainingAmount>0 Cikli
Sasia = Sasia+1;
Shuma e mbetur = Shuma e mbetur - Sasia * Çmimi i Mallrave Shtesë;
Çmimi Shtesë = Çmimi Shtesë * 0,8;
Cikli i Fundit
Sasia = Sasia-1;

Ky lak llogarit se sa njësi të një produkti mund të blihen për një shumë të caktuar (1000 rubla) nëse, pas blerjes së çdo njësie të një produkti, çmimi i tij i mëparshëm shumëzohet me një faktor prej 0,8. Çmimi fillestar i mallrave është 243 rubla.

Një shembull i një gabimi gjatë përdorimit të këtij lloji të ciklit nga fillestarët është një lak i përjetshëm, kur kushti i ciklit është fillimisht i vërtetë, por brenda vetë ciklit nuk ndryshon në asnjë mënyrë.

Hapni koleksionet (një emër tjetër është Për secilin).

Platforma ka një numër mjaft të madh koleksionesh (këto janë kontejnerë që përmbajnë elementë të një lloji të caktuar).

Ju mund të përsërisni mbi elementët e një koleksioni duke përdorur një lloj të veçantë cikli.

Për shembull, ekziston një grup numrash, duhet të llogaritni shumën e të gjithë elementëve të grupit:

Shuma = 0;
Për çdo element nga cikli i vargjeve
Shuma=Shuma+Artikulli;
Cikli i Fundit;

Ekzistojnë operatorë të veçantë për sythe: Vazhdoni dhe abort.

Nëse në një moment të ciklit ekzekutimi i deklaratave të mëtejshme të këtij cikli bëhet i pakuptimtë, atëherë operatori përdoret për t'u kthyer në fillim të ciklit dhe për të organizuar ciklin e tij të ardhshëm. Vazhdoni.

Operatori abort lejon që cikli të përfundojë edhe nëse kushti i ciklit është i vërtetë.

Kjo përfundon njohjen tonë të parë me zhvillimin në gjuhën e brendshme të 1C.

Po Hello World? Nuk e kemi shkruar akoma, apo jo? Po, por asgjë nuk ju pengon ta bëni vetë, sepse. njohuritë tashmë janë të mjaftueshme. Epo, nëse kjo nuk funksionon, mund të shikoni këtu.

Në këtë artikull, ne duam të diskutojmë me të gjithë ju funksionet e gjuhës së pyetjes 1s, si dhe konstruktet e gjuhës pyetëse. Cili është ndryshimi midis një funksioni dhe një strukture? Funksioni thirret me kllapa dhe parametra të mundshëm në to, dhe ndërtimi shkruhet pa kllapa. Pa dyshim të gjitha ndërtimet dhe funksionet e gjuhës së pyetjes 1s e bëjnë procesin e marrjes së të dhënave fleksibël dhe shumëfunksional. Këto funksione dhe konstruksione zbatohen për fushat e pyetjeve, dhe disa zbatohen gjithashtu për kushtet.

Funksionet e gjuhës pyetëse 1s

Me një përshkrim të qartë funksionet e gjuhës së pyetjes 1sështë shumë më pak e zakonshme sesa përshkrimi i strukturave, vendosëm të fillojmë të shikojmë funksionet. Tani le të analizojmë secilën veç e veç, duke përshkruar qëllimin, sintaksën dhe shembullin e përdorimit, kështu:

1. Funksioni DATA KOHA- ky funksion krijon një fushë konstante me llojin "Date".

Sintaksë: DATA KOHA (<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Shembull përdorimi:

2. Funksioni DATE DIFFERENCE- kthen diferencën e dy datave në njërin nga dimensionet (viti, muaji, ditë, orë, minutë, sekondë). Matja kalohet si parametër.

Sintaksë: NDRYSHIM(<Дата1>, <Дата2>, <Тип>)

Shembull përdorimi:

Query.Text = "ZGJEDH | DIFFERENCA DATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | SI numri i ditëve";

3. Funksioni VALUE- vendos një fushë konstante me një hyrje të paracaktuar nga baza e të dhënave, gjithashtu mund të merrni një referencë nule të çdo lloji.

Sintaksa: VALUE(<Имя>)

Shembull përdorimi:

Query.Text = "ZGJEDH //elementin e paracaktuar | VALUE(Currency.Dollar.Catalog.Dollar) AS Dollar, //referencë bosh | VALUE(Document.IncomingGoodsServices.EmptyReference) AS Faturë, //Vlera e transferimit | VALUE(Transfertuale. Legal. .

4. Funksioni SELECT- ne kemi një analog të konstruksionit IF që përdoret në kod, vetëm ky përdoret në pyetjet 1C.

Sintaksë: ZGJEDHJE KUR<Выражение>PASTAJ<Выражение>PER Ndryshe<Выражение>FUND

Shembull përdorimi:

Kërkesë.Tekst = //nëse shuma është më shumë se 7500, atëherë duhet të ketë një zbritje prej 300 rubla, //prandaj, nëse kushti aktivizohet, atëherë funksioni //kthehet shumën - 300 //përndryshe, kërkesa thjesht do të kthejë shumën "ZGJEDHJE | ZGJIDH | KUR PMTë ardhura. Shuma > 7500 | PASTAJ PTReceipts.Shuma - 300 | TJETER PTPranime. Shuma | FUND AS Shuma e Zbritur | NGA | Dokumenti. Pranimet e mallrave të shërbimeveAS".

5. Funksioni EXPRESS- ju lejon të shprehni një fushë konstante me një lloj specifik.

Sintaksë: EXPRESS (Emri i fushës AS Lloji Emri)

Shembull përdorimi:

Query.Text = "ZGJIDHNI TË NDRYSHME | Numri i shitjeve. Regjistruesi, | ZGJIDH | KUR Dokumenti REF i Regjistruesit. Shpenzimet | PASTAJ EXPRESS(Shitjet.Regjistruesi AS Dokument.Shpenzime) | TJETËR ZGJIDHET | KUR Shitjet.Regjistruesi.Implementim | PASTAJ EXPRESS(Shitjet.Regjistruesi AS Dokument.Lëshimi) | FUND | ... | FUND SI Numër | NGA | Regjistrimi i grumbullimit. Blerjet SI Blerjet";

Ende ekziston një variant i përdorimit të funksionit EXPRESS në fushat e llojeve të përziera ku takohen të tillë? Shembulli më i thjeshtë është "Regjistruesi" për çdo regjistër. Pra, pse do të na duhet të kualifikojmë llojin në gjendjen civile? Le të shqyrtojmë situatën kur zgjedhim fushën "Numër" nga regjistruesi, nga cila tabelë do të zgjidhet numri? Përgjigja e saktë e të gjithëve! Prandaj, në mënyrë që pyetja jonë të funksionojë shpejt, ne duhet të specifikojmë një lloj të qartë duke përdorur funksionin EXPRESS

Shembull përdorimi:

Query.Text = "ZGJIDH | EXPRESS(Nomenklatura.Komenti AS varg(300)) AS Koment, | EXPRESS(Nomenklatura.Shuma AS Numër(15,2)) SI Shuma |NGA | Kërko.Nomenklatura SI Nomenklaturë";

6. Funksioni ISNULL(drejtshkrimi alternativ IS NULL) - nëse fusha është e tipit NULL, atëherë ajo zëvendësohet me parametrin e dytë të funksionit.

Sintaksë: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Shembull përdorimi:

Gjithashtu vini re se është e dëshirueshme që GJITHMONË të zëvendësohet lloji NULL me ndonjë vlerë, sepse krahasimi me NULL vlerësohet gjithmonë në FALSE edhe nëse krahasoni NULL me NULL. Më shpesh, vlerat NULL formohen si rezultat i bashkimeve të tabelave (të gjitha llojet e lidhjeve përveç të brendshmeve).

Query.Text = //Zgjidh të gjithë artikullin dhe bilancet e tij //nëse nuk ka bilanc në ndonjë artikull, atëherë do të ketë një fushë //NULL e cila do të zëvendësohet me vlerën 0 "SELECT | No.Ref, | ISNULL (GoodsInWarehouseRemains.InStockRemain, 0) SI Remainder | FROM | Drejtoria.

7. Funksioni PËRFAQËSIMI- ju lejon të merrni një paraqitje të fushës së kërkesës.

Sintaksë: PERFORMANCA (<НаименованиеПоля>)

Shembull përdorimi:

Query.Text = "ZGJIDH | PËRFAQËSIM (Free RemainsRemains. Nomenklaturë) AS Nomenklaturë, | PËRFAQËSIM (FreeRemainsRemains. Warehouse) AS Warehouse, | FreeRemainsRemains.AvailableRemains |FROM | AcumulationRemainsRemainsRemainsAS".

Ndërtimet në gjuhën pyetëse 1s

Më sipër kemi diskutuar me ju funksionet e gjuhës së pyetjes 1s, tani është koha për të marrë parasysh ndërtime në gjuhën pyetëse 1s, ato nuk janë më pak të rëndësishme dhe të dobishme, le të fillojmë.

1. LINK për ndërtim- është një operator kontrollues i llojit të referencës logjike. Më së shpeshti haset gjatë testimit të një fushe të një lloji të përbërë për një lloj të caktuar. Sintaksë: LIDHJE<Имя таблицы>

Shembull përdorimi:

Query.Text = //nëse lloji i vlerës së regjistruesit është Dokumenti Marrë, //atëherë kërkesa do të kthejë "Mallrat hyrëse", përndryshe "Shitje e Mallrave" "ZGJEDH | ZGJIDH | KUR Mbet. Regjistruesi LINK Dokumenti.Mallrat hyrëseShërbimet | PASTAJ ""Arritje" | TJETER "Shpenzime" | FUND SI Lloji i Lëvizjes | NGA | Regjistri i akumulimit. Mbetjet e mallrave në magazina AS mbetje ";

2. Ndërtimi MES- ky operator kontrollon nëse vlera është brenda intervalit të caktuar.

Sintaksë: NDËRMJET<Выражение>Dhe<Выражение>

Shembull përdorimi:

Query.Text = //merr të gjithë nomenklaturën, kodi i së cilës është në rangun nga 1 deri në 100 "ZGJEDHJE | Nomenklatura. Referenca | FROM | Katalog.Nomenklatura AS Nomenklaturë | WHERE | Nomenklatura.Kodi MES 1 DHE 100" ;

3. Ndërtimi B dhe B i HIERARKISË- kontrolloni nëse vlera është në listën e kaluar (vargjet, tabelat e vlerave, etj. mund të kalohen si listë). Operatori IN HIERARCHY ju lejon të shikoni hierarkinë (shembull i përdorimit të PlanAccounts).

Sintaksë: AT(<СписокЗначений>), NË HIERARKI (<СписокЗначений>)

Shembull përdorimi:

Pyetje.Text = // zgjidhni të gjitha nën-llogaritë e llogarisë "ZGJIDH | Vetë-mbështetëse. Lidh AS Llogari | NGA | Plani i llogarive. Vetë-mbështetës AS Vetëmbështetës | KU | Vetëmbështetës. Referenca NË VLERËN E HIERARKISË( Programi i Llogarive. Vetë-mbështetës. Mallrat)";

4. Ndertim LIKE- ky funksion na lejon të krahasojmë një varg me një model vargu.

Sintaksë: LIKE"<ТекстШаблона>"

Opsionet e modelit të linjës:

% - një sekuencë që përmban çdo numër karakteresh arbitrare.

Një personazh arbitrar.

[...] - çdo karakter i vetëm, ose një sekuencë karakteresh të renditura brenda kllapave katrore. Numërimi mund të përmbajë vargje, të tilla si a-z, që do të thotë çdo karakter brenda intervalit, duke përfshirë skajet e diapazonit.

[^...] - çdo karakter i vetëm, ose një sekuencë karakteresh të renditura brenda kllapave katrore, me përjashtim të atyre të renditur pas shenjës së mohimit.

Shembull përdorimi:

Pyetje.Text = //gjeni të gjithë nomenklaturën që përmban rrënjën TABUR dhe fillon //ose me një shkronjë të vogël ose të madhe t "ZGJEDHJE | Nomenklatura. Referenca | NGA | Drejtoria. Nomenklatura AS Nomenklaturë | WHERE | Mallra. Emri LIKE "" [Тт ]abur%""" ;

5. Dizajni LEJOHET- kjo deklaratë ju lejon të zgjidhni vetëm ato regjistrime nga baza e të dhënave për të cilat thirrësi ka të drejtë të lexojë. Këto të drejta janë konfiguruar në nivelin e regjistrimit (RLS).

Sintaksë: LEJOHET shkruhet pas fjalës kyç SELECT

Shembull përdorimi:

Query.Text = "ZGJIDHET E LEJUARA | Kundërpalët. Referenca | NGA | Drejtoria. Kundërpalët AS Kundërpalët";

6. Ndertim TE NDRYSHME- ju lejon të zgjidhni regjistrime në të cilat nuk ka regjistrime të përsëritura.

Sintaksë: NDRYSHME shkruhet pas fjalës kyç ZGJIDH

Shembull përdorimi:

Request.Text = //zgjedh regjistrimet për të cilat lexuesi ka të drejta "ZGJEDHJE TË NDRYSHME | Kundërpalët. Emri | NGA | Drejtoria. Kundërpalët AS Kundërpalët" ;

Konstrukti DIFFERENT mund të përdoret gjithashtu me operatorin LEJUAR dhe operatorë të tjerë.

Shembull përdorimi:

Query.Text = //zgjedh rekorde të ndryshme për të cilat lexuesi ka të drejta "ZGJIDH TË LEJUARA TË NDRYSHME | Kontraktorët. Emri | FROM | Drejtoria. Kontraktorët AS Kontraktorë";

7. Ndërtimi SË PARË- zgjedh numrin e rekordeve të specifikuara në parametër nga rezultati i pyetjes.

Sintaksa: E PARA<число>

Shembull përdorimi:

Query.Text = //zgjedhni 4 numrat e parë GTD nga direktoria "ZGJIDHNI 4 PARËT | Numrat GTD. Referenca | NGA | Katalogu. Numrat GTE SI Numrat GTD";

8. Dizajni PËR NDRYSHIM- ju lejon të kyçni tabelën, funksionon vetëm në transaksione (e rëndësishme vetëm për bravat automatike).

Sintaksë: PËR NDRYSHIM<НаименованиеТаблицы>

Shembull përdorimi:

Query.Text = "ZGJIDH | FreeRemainsRemains.Nomenklatura, | FreeRemainsRemains.Depo, | FreeRemainsRemains.AvailableRemains |NGA | Akumulimi Regjistro.FreeRemains.Mbetet AS FreeRemainsRemains |PER NDRYSHIM |

9. Struktura RENDIT NGA- rendit të dhënat sipas një fushe specifike. Nëse fusha është një lidhje, atëherë kur vendosni flamurin AUTO POROSI do të renditet sipas paraqitjes së lidhjes, nëse flamuri është i fikur, atëherë lidhjet renditen sipas vjetërsisë së adresës së lidhjes në memorie.

Sintaksë: NDAJ SIPAS<НаименованиеПоля>AUTO POROSI

Shembull përdorimi:

Query.Text = "ZGJIDH | FreeRemainsRemains.Nomenklatura AS Nomenklaturë, | FreeRemainsRemains.Depo AS Magazinë, | FreeRemainsRemains.Në StockRemaining |Nga |

10. Dizajn GRUPI NGA- përdoret për të grupuar vargjet e pyetjeve sipas fushave të caktuara. Fushat numerike duhet të përdoren me çdo funksion agregat.

Sintaksë: GRUP NGA<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Shembull përdorimi:

Query.Text = "ZGJIDH | ArtikujtNë magazinë.Nomenklatura AS Nomenklaturë, | ArtikujtNë magazinë.Magazina, | SUM(ArtikujtNë magazinë.Instock) AS Instock |FROM |

11. Design HAVING- ju lejon të aplikoni një funksion agregat në kushtin e përzgjedhjes së të dhënave, të ngjashme me konstruksionin WHERE.

Sintaksë: DUKE<агрегатная функция с условием>

Shembull përdorimi:

Query.Text = //zgjedh rekorde të grupuara ku fusha InStock është më e madhe se 3 "SELECT | GoodsInStock.Nomenklatura AS Nomenklaturë, | GoodsInWarehouse.Magazina, | SUM(ItemsInWarehouse.InStock) AS InStock |NGA | Grumbullimi i GoodStockInStock. |GRUPI SIPAS | MallraNë magazina.Nomenklatura, | MallraNë magazina.Magazina | |KANË | SHUMA(MallratNë magazina.Në magazinë) > 3" ;

12. INDEKSI SIPAS konstruktit- përdoret për të indeksuar fushën e pyetjes. Një pyetje e indeksuar kërkon më shumë kohë për t'u përfunduar, por përshpejton kërkimet në fushat e indeksuara. Mund të përdoret vetëm në tabela virtuale.

Sintaksë: INDEKSI NGA<Поле1, ... , ПолеN>

Shembull përdorimi:

Query.Text = "ZGJIDH | Emri Tz.OS, | Tz.Numri i dosjes, | Tz.CodeOS, | Tz.Term, | Tz.Type | PUT DataTz | FROM | &Tz SI Tz | | INDEKSI NGA | Emri Tz.OS , | Tz .CodeOS";

13. Ndërtimi KU- ju lejon të vendosni një kusht në çdo fushë të përzgjedhjes. Vetëm të dhënat që plotësojnë kushtin do të përfshihen në rezultat.

Sintaksë: KU<Условие1 ОператорЛогСоединения УсловиеN>

Shembull përdorimi:

Query.Text = //zgjidhni të gjitha regjistrimet me CompensationRemainder<>0 dhe //ShumaPër Calc.CompBalance > 100 "ZGJEDHJE | balancat RPO të kompensimit. Llogaria, | Kompensimi balancat e RPO. Fëmija, | Kompensimi balancat e RPO. Bilanci i kompensimit, | Balancat e kompensimit. ShumaPër llogaritjen. Regjistri i akumulimit Kompensimi RP Balancat AS Kompensimi Bilancet e RPO | Kompensimi i GPO.<>0 | Dhe balancat e RPO të kompensimit. Shuma për mbetjet e CalcComp > 100" ;

14. REZULTATET E Dizajnit ... NGA TË PËRGJITHSHME- përdoret për të llogaritur totalet, dizajni specifikon fushat me të cilat do të llogariten totalet dhe funksionet e grumbulluara do të zbatohen në fushat totale. Kur përdorni totalet për secilën fushë pas konstruksionit TOTALS, të dhënat grupohen. Ekziston një konstrukt opsional GENERAL, përdorimi i tij siguron gjithashtu grupim shtesë. Ju mund të shihni një shembull të rezultatit të pyetjes më poshtë.

Sintaksë: REZULTATET<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>AKTIV<ОБЩИЕ> <Поле1, ... , ПолеN>

Shembull përdorimi:

Query.Text = "ZGJIDH | Shlyerjet. Marrëveshja e kundërpalës. Lloji i Marrëveshjes SI Lloji i Marrëveshjes, | Zgjidhjet. Marrëveshja e Palës së Shtetit AS Marrëveshje, | Zgjidhjet.Kundërpala, | Shlyerjet. Shuma e Shlyerjeve të Ndërsjella Bilanci AS Bilanci | NGA | | Software | PËRGJITHSHËM, Lloji i kontratës";

Në figurë janë të rrethuara grupimet që janë formuar gjatë ekzekutimit të kërkesës, pjesa e sipërme i referohet rubrikës TË PËRGJITHSHME dhe e dyta në fushën e Kontraktorit Lloji i Kontratës.



Artikuj të ngjashëm: