1c krahasimi i datave në një kërkesë. Si të specifikoni një datë të zbrazët në një kërkesë? Konverto në datë

Shumë shpesh ekziston nevoja për të punuar me variabla të llojit "Data". Në këtë artikull do të shikojmë teknikat bazë - kalimi i datës aktuale, kontrollimi i një vlere boshe, një datë arbitrare.

Kur shkruani pyetje, shpesh duhet të krahasoni të dhënat me datën aktuale. Gjuha e integruar 1C ka funksionin CurrentDate(). Kjo ju lejon të përcaktoni kohën dhe datën aktuale në kompjuterin tuaj. Për të kryer operacione me datën aktuale, duhet t'ia kaloni kërkesës vlerën e këtij funksioni si parametër.

Më poshtë është një pyetje që zgjedh të gjithë skedarët e bashkangjitur në raportet e shpenzimeve me një datë krijimi deri më tani:

ShembullKërkesë = Kërkesë e re;
Shembull Request.Text = "
|ZGJIDH
| AdvanceReportAttachedFiles.Link
|NGA
| Drejtoria.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
| KU
| AdvanceReportAttachedFiles.Date< &ТекДата»;
Shembull Request.SetParameter("Data aktuale",Data aktuale());

Data e personalizuar

Funksioni i diskutuar më sipër ju lejon të krahasoni dhe, për rrjedhojë, të bëni një përzgjedhje për çdo periudhë. Kjo metodë ju lejon të specifikoni një përzgjedhje strikte në kërkesë pa përdorur parametra shtesë.

Ju lutemi vini re se kur përdornim këtë funksion në shembullin e mësipërm, ne kaluam vetëm tre numra (viti, muaji, dita) si parametra hyrës. Tre të fundit (orë, minutë, sekondë) janë opsionale dhe, nëse mungojnë, zëvendësohen me "0", domethënë fillimi i ditës.

Ky shembull do të marrë të gjithë skedarët e bashkangjitur në raportet e shpenzimeve deri në fund të vitit të kaluar 2016. Në këtë drejtim, ne do të tregojmë orën, minutën dhe sekondën për të krahasuar pikën kohore "31 Dhjetor 2016 23:59:59".

ZGJIDHNI
AdvanceReportAttachedFiles.Link
NGA
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
KU
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Data e zbrazët

Mënyra më e lehtë për të kontrolluar një variabël për të parë nëse përmban një datë të zbrazët është të përdorni një krahasim të thjeshtë. Në këtë shembull, duke përdorur një pyetje, ne do të zgjedhim të gjitha arkëtimet e parave të gatshme në llogarinë për të cilën data e hyrjes nuk është plotësuar.

43
NULL – vlerat që mungojnë. Nuk duhet ngatërruar me vlerën zero! NULL nuk është një numër, nuk është i barabartë me një hapësirë, një referencë boshe ose të papërcaktuar. NULL është një vlerë tip-formuese, d.m.th. ekziston një lloj NULL dhe një vlerë e vetme e këtij lloji. I PAVLEFSHËM... 26
Për të gjeneruar dhe ekzekutuar pyetje në tabelat e bazës së të dhënave në platformën 1C, përdoret një objekt i veçantë i gjuhës programuese Query. Ky objekt krijohet duke thirrur konstruktin New Request. Kërkesë e përshtatshme... 18
Artikulli ofron teknika të dobishme kur punoni me pyetjet 1C v.8.2, si dhe informacione që nuk janë aq të njohura për gjuhën e pyetjeve. Unë nuk jam duke u përpjekur të jap Përshkrimi i plotë kërkoj gjuhën, por dua të ndalem vetëm në... 13
LIKE - Operatori për kontrollimin e një vargu për ngjashmëri me një model. Analog i LIKE në SQL. Operatori SIMILAR ju lejon të krahasoni vlerën e shprehjes së specifikuar në të majtë të saj me vargun e modelit të specifikuar në të djathtë. Kuptimi i shprehjes...

Lloji "Data" në 1C është një nga 4 llojet kryesore të të dhënave së bashku me numrin, vargun dhe Boolean. Datat janë të kudondodhura në konfigurime - është e pamundur të shmanget puna me këtë lloj të dhënash gjatë zhvillimit. Prandaj, është më mirë të filloni të shkruani pyetje duke kuptuar tashmë se si të përpunoni datat, cilat opsione ekzistojnë për të punuar me to dhe si ruhen ato. Le të shohim shembuj të të gjitha nuancave të shkrimit të pyetjeve me data të ndryshme.

Shembuj të punës me data në pyetjet 1C

Para së gjithash, duhet të merrni datën në kërkesë në formatin e kërkuar - me ose pa kohë. Ka disa mënyra për të përfunduar këtë detyrë:

  1. Kaloni përmes parametrit. Ju mund të merrni vetëm datën aktuale të seancës duke përdorur këtë metodë;
  2. Merrni datën në pyetje nga fusha e përzgjedhjes;
  3. Konvertoni nga vlerat numerike duke përdorur funksionin DATETIME().

Detyra më e zakonshme kur punoni me dokumente është kontrollimi i një date boshe në një kërkesë 1C. Në këtë rast, është më e lehtë të krahasosh një ndryshore ose fushë me një datë boshe, e cila merret duke përdorur funksionin DATETIME(1,1,1):

DATETIME (1, 1, 1)

Duke përdorur një komandë të ngjashme, mund të merrni një datë dhe orë arbitrare në një kërkesë. Për më tepër, ato mund të specifikohen me një saktësi deri në një sekondë duke specifikuar 6 numra si parametra. Nëse përdoren vetëm 3 numra, atëherë orët, minutat dhe sekondat do të vendosen në 0 (fillimi i ditës). Për shembull, duhet të zgjedhim dokumentet për 10 ditët e para të janarit 2018 në kërkesë:

ZGJIDHni faturën në llogarinë rrjedhëse. Lidhni AS Lidhje NGA Dokumenti. Pranimi në llogarinë rrjedhëse AS Faturë në llogarinë rrjedhëse WHERE faturë në llogarinë rrjedhëse. Data MES DATETIME(2018, 1, 1, 0, 0, 0) DHE DATETIME(2018, 10, 23, 59, 59)

Në një pyetje në gjuhën e integruar 1C, jo vetëm që mund të zgjidhni fusha të ndryshme dhe të merrni parametra. Ka shumë funksione që e bëjnë më të lehtë formatimin e datave për një detyrë specifike. Nëse shpesh punoni me data në një pyetje, atëherë duhet të dini këto komanda:

  • FILLIMI I PERIUDHËS. Parametrat specifikojnë datën dhe periudhën kohore në kontekstin e së cilës është e nevojshme të merret fillimi i datës. Përdoret për të kthyer një datë në një format pa kohë. Për ta bërë këtë, duhet të vendosni parametrin e dytë - "DITA";
FILLIMI I PERIUDHËS(,) FILLIMI I PERIUDHËS (&Data, DITË) periudha>datë>
  • FUNDIMI I PERIUDHËS. Një komandë e ngjashme që kthen datën e fundit për sa i përket njësive të specifikuara në parametrat;
  • ADDKDATE. Ju lejon të merrni një datë që është më e madhe për një numër të caktuar të njësive kohore të specifikuara. Parametrat e funksionit përfshijnë datën, njësinë e kohës dhe numrin;
ADDKDATE(,) ADDKDATE(&Data, DITA, 10) sasia>lloji>data>
  • NDRYSHON. Merr diferencën midis datave në njësitë e specifikuara;
DIFFERENCEDATE(,) DIFFERENCEDATE(&Data1, &Data2, DAY) type>data2>data1>
  • DITË TË JAVËS. Rikthen numrin serial të një prej ditëve të javës.

Duke përdorur saktë këto funksione, zhvilluesi mund të zgjidhë probleme jo të parëndësishme. Për shembull, marrja e emrit të ditës së javës së datës aktuale në një kërkesë si varg:

ZGJIDH KURËN E JAVËS(&Data Aktuale) = 1 PASTAJ "E Hënë" E HËNË DITË(&Data Aktuale) = 2 PAS "E martë" E PARË E JAVËS (&Data Aktuale) = 3 PAS "E Mërkurë" E HËNË DITË(&E HënëData DITË E WEQËT"Data. (&Data Aktuale) = 5 PASTAJ "E Premte" E PARA E JAVE (&Data Aktuale) = 6 PAS "E shtune" TJETER "E diel" FUND

Konvertimi i llojeve në një pyetje 1C nga një numër ose varg në një datë është një detyrë intensive e mundimshme. Ju mund të merrni një datë nga numrat duke përdorur funksionin DATETIME, nga një varg - duke kombinuar funksionin SUBSTRING dhe ndërtimin SELECT WHEN THEN ELSE. Bazuar në këtë, zhvilluesit preferojnë të marrin datën nga llojet e tjera në modul dhe ta kalojnë atë në kërkesë duke përdorur një parametër. Fatkeqësisht, kjo nuk është gjithmonë e realizueshme, kështu që duhet të ndryshoni formatin e datës në kërkesë.

Është e mundur të specifikoni datën në një kërkesë 1C si një parametër për të marrë të dhëna nga tabelat e regjistrave virtualë. Ky rol mund të përdorë gjithashtu të gjitha funksionet e mësipërme. Por këtu është e rëndësishme të mos lejoni datë bosh në një kërkesë 1C mund të ndikojë në rezultatin përfundimtar të ekzekutimit të kodit, kështu që duhet të bëhet një kontroll.

Shumë shpesh në pyetjet 1C duhet të punoni me data. Sidomos kur kërkesa u bëhet objekteve të meta të dhënave që përmbajnë informacion periodik. Si rregull, këto janë regjistra (informacion, akumulim, llogaritje, kontabilitet). Le të shohim funksionet më të përdorura të gjuhës së pyetjeve 1C për të punuar me datat. Ne do të ndërtojmë shembuj bazuar në regjistrin e informacionit PunonjësitOrganizatat Versioni 2.5 i konfigurimeve ZUP.

  • DATA KOHA

    Ju lejon të merrni një datë në një kërkesë (me ose pa kohë) duke specifikuar vitin, muajin, ditën, orën, minutën, sekondën.
    Sintaksë:
    DATETIME (viti, muaji, dita, ora, minuta, sekonda)
    Zakonisht ora, minuta dhe sekonda nuk tregohen. Le të japim një mini shembull. Futni tekstin e mëposhtëm në Konsolën e pyetjeve:

    ZGJIDH DATËN KOHA (2016, 1, 1)

    Si rezultat i ekzekutimit të kërkesës, marrim datën - 01/01/2016
    Në fakt, është e vështirë të imagjinohet një situatë në të cilën data do të tregohej në këtë mënyrë në një kërkesë. Në fund të fundit, kur duhet të specifikoni një periudhë, përdoren parametrat. Por ka një rast kur ky funksion ka një vlerë të veçantë. Kjo është kur duhet të tregojmë një datë të zbrazët në fushat ose në kushtet e kërkesës. Më lejoni t'ju kujtoj se për gjuhën 1C një datë boshe ka formën - 0001.01.01. Kështu, për të marrë një datë të zbrazët në një kërkesë, thjesht specifikoni DATETIME (1, 1, 1). Si shembull, le të zgjedhim nga regjistri i informacionit PunonjësitOrganizatat shënimet që nuk plotësohen Periudha e Përfundimit:

    SELECT Punonjësit Organizativ.Periudha, Punonjësit Organizativ.Punonjësit, Punonjësve Organizativ.Pozicioni, Punonjësve Organizativ.Divizioni i Organizatës NGA Regjistri Informacion.Punonjësit e Organizatës AS Punonjësit Organizativ WHERE Punonjësit Organizativ.Periudha e përfundimit = DATETIME(1,1)

  • FILLIMI I PERIUDHËS

    Për datën e caktuar kthen fillimin e periudhës që hyn.
    Sintaksë:
    FILLIMI I PERIUDHËS (Data, Lloji i Periudhës)
    PeriodType mund të marrë vlerat e mëposhtme: MINUTA, ORË, DITA, JAVA, MUAJ, CEREKU, VITI, DEKATË, GISË VITI
    Në panelin e pyetjeve, shkruani:

    ZGJIDH FILLIMIN E PERIUDHËS (DATA KOHA (2016, 1, 15), MUAJ)

    Kërkesa do të kthehet - 01/01/2016
    Dhe tani një shembull. Siç e dini, periodiciteti i regjistrit PunonjësitOrganizatat një ditë. Le të krijojmë një pyetje në të cilën data e fillimit të muajit do të shfaqet në vend të periudhës aktuale të regjistrimit.

    ZGJIDH FILLIMIN E PERIUDHËS (Punonjësit e Organizatave. Periudha, MUAJI) AS Fillimi i muajit, Punonjësit e Organizatave. Punonjësit, Punonjësit e Organizatave.Pozicioni, Punonjësit e Organizatave.Ndarja e Organizatës NGA Informacioni i Regjistrit. Punonjësit e Organizatave AS Punonjësit e Organizatave

  • FUNDIMI I PERIUDHËS

    Sintaksa është e njëjtë si për fillimin e periudhës. Dhe siç nënkupton emri, ai kthen fundin e periudhës sipas datës dhe llojit të periudhës. Ne nuk do ta konsiderojmë atë në detaje. Le të kufizohemi në një mini shembull.
    Kërkesë:

    ZGJIDH FUNDIN E PERIUDHËS (DATA KOHA (2016, 1, 15), MUAJ)

    Kthimi 31.01.2016 23:59:59
    Siç mund ta shihni, vlera kthehet saktë në të dytën.

  • ADDKDATE

    Shton numrin e caktuar të intervaleve kohore në datë.
    Sintaksë:
    ADDKDATE (Data, lloji i periudhës, sasia)
    PeriodType merr të njëjtat vlera si për funksionin FILLIMI I PERIUDHËS
    Për shembull, le të zgjedhim datën e shkurtit:

    ZGJIDH SHTO DATËN(DATETIME(2016, 2, 15), MUAJ, 2)

    Marrim datën 15.04.2016 0:00:00 Pavarësisht se shkurti është një muaj i shkurtër, dita e datës së marrë është e njëjtë me atë origjinale. Është shumë e përshtatshme që nuk duhet të mendoni për numrin e ditëve në muaj.
    Sasia mund të jetë edhe negative. Pastaj intervali llogaritet në drejtim të kundërt.

  • NDRYSHON

    Llogaritni diferencën midis dy datave në njësitë e specifikuara.
    Sintaksë:
    DIFFERENCA E DATEVE (Data e fillimit, Data e përfundimit, Lloji i periudhës)
    Lloji i periudhës mund të marrë vlerat e mëposhtme: E DYTË, MINUTE, ORË, DITA, MUAJ, CEREKU, VITI
    Për shembull:

    ZGJIDH NDRYSHIMIN (DATETIME(2016, 2, 15), DATETIME (2016, 3, 1), DITA)

    kthen 15

Këtu kemi shqyrtuar funksionet më të përdorura të gjuhës së pyetjeve 1C. Pjesa tjetër përdoret mjaft rrallë. Nëse është e nevojshme, shembuj të punës me ta mund të gjenden në ndihmën e integruar në platformën 1C.



gabim: Përmbajtja është e mbrojtur!!