1c poređenje datuma u zahtjevu. Kako navesti prazan datum u zahtjevu? Pretvori u datum

Često postoji potreba za radom sa varijablama tipa „Datum“. U ovom članku ćemo pogledati osnovne tehnike - prenošenje tekućeg datuma, provjeru prazne vrijednosti, proizvoljan datum.

Kada pišete upite, često morate da uporedite podatke sa trenutnim datumom. Ugrađeni 1C jezik ima funkciju CurrentDate(). Omogućava vam da odredite trenutno vrijeme i datum na vašem računaru. Da biste izvršili operacije s trenutnim datumom, morate proslijediti vrijednost ove funkcije kao parametar zahtjevu.

Ispod je upit koji odabire sve datoteke priložene izvještajima o troškovima s datumom kreiranja do sada:

ExampleRequest = Novi zahtjev;
Primjer Request.Text = "
|ODABIR
| AdvanceReportAttachedFiles.Link
|OD
| Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
|WHERE
| AdvanceReportAttachedFiles.Date< &ТекДата»;
Primjer Request.SetParameter("CurrentDate", CurrentDate());

Prilagođeni datum

Funkcija o kojoj smo gore govorili omogućava vam da uporedite i, prema tome, napravite izbor za bilo koji period. Ova metoda vam omogućava da navedete strogu selekciju u zahtjevu bez korištenja dodatnih parametara.

Imajte na umu da smo prilikom korištenja ove funkcije u gornjem primjeru proslijedili samo tri broja (godina, mjesec, dan) kao ulazne parametre. Posljednja tri (sat, minuta, sekunda) su opciona i, ako ih nema, zamjenjuju se sa "0", odnosno početkom dana.

Ovaj primjer će dohvatiti sve datoteke priložene izvještajima o troškovima do kraja prošle 2016. godine. U tom smislu, naznačićemo sat, minut i sekundu za poređenje vremenske tačke „31. decembar 2016. 23:59:59“.

ODABIR
AdvanceReportAttachedFiles.Link
OD
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
GDJE
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Prazan datum

Najlakši način da provjerite varijablu da vidite sadrži li prazan datum je korištenje jednostavnog poređenja. U ovom primjeru, pomoću upita, izabraćemo sve novčane primitke na račun za koje nije popunjen ulazni datum.

43
NULL – nedostajuće vrijednosti. Ne treba se brkati sa nultom vrednošću! NULL nije broj, nije jednak razmaku, praznoj referenci ili nedefiniranom. NULL je vrijednost za formiranje tipa, tj. postoji tip NULL i jedna vrijednost ovog tipa. NULL... 26
Za generiranje i izvršavanje upita prema tablicama baze podataka u 1C platformi koristi se poseban objekt programskog jezika Query. Ovaj objekt se kreira pozivanjem konstrukcije New Request. Pogodan zahtjev... 18
Članak daje korisne tehnike za rad sa 1C v.8.2 upitima, kao i informacije koje nisu toliko poznate o jeziku upita. Ne pokušavam da dam Puni opis jezik upita, ali samo želim da se zadržim na... 13
LIKE - Operator za provjeru sličnosti niza sa uzorkom. Analog LIKE-a u SQL-u. Operator SIMILAR vam omogućava da uporedite vrijednost izraza navedenog lijevo od njega sa nizom uzorka koji je specificiran desno. Značenje izraza...

Tip "Datum" u 1C je jedan od 4 glavna tipa podataka zajedno sa brojem, stringom i Booleanom. Datumi su sveprisutni u konfiguracijama – nemoguće je izbjeći rad s ovim tipom podataka tokom razvoja. Stoga je bolje početi pisati upite već razumijevajući kako obraditi datume, koje opcije postoje za rad s njima i kako se pohranjuju. Pogledajmo primjere svih nijansi pisanja upita s različitim datumima.

Primjeri rada s datumima u 1C upitima

Prije svega, potrebno je da dobijete datum u zahtjevu u traženom formatu - sa ili bez vremena. Postoji nekoliko načina za postizanje ovog zadatka:

  1. Prolaz preko parametra. Možete dobiti samo trenutni datum sesije koristeći ovaj metod;
  2. Dobijte datum u upitu iz polja za odabir;
  3. Pretvorite iz numeričkih vrijednosti pomoću funkcije DATETIME().

Najčešći zadatak pri radu s dokumentima je provjera praznog datuma u 1C zahtjevu. U ovom slučaju, najlakše je usporediti varijablu ili polje s praznim datumom, koji se dobiva pomoću funkcije DATETIME(1,1,1):

DATUM VRIJEME (1, 1, 1)

Koristeći sličnu naredbu, možete dobiti proizvoljan datum i vrijeme u zahtjevu. Štaviše, oni se mogu specificirati sa tačnošću do sekunde navođenjem 6 brojeva kao parametara. Ako se koriste samo 3 broja, tada će se sati, minute i sekunde postaviti na 0 (početak dana). Na primjer, u zahtjevu trebamo odabrati dokumente za prvih 10 dana januara 2018. godine:

ODABERITE Priznanicu na tekući račun. Vezite KAO vezu sa dokumenta. Priznanicu na tekući račun KAO priznanicu na tekući račun GDJE Priznanicu na tekući račun. Datum IZMEĐU DATETIME(2018, 1, 1, 0, 0, 0) I DATETIME(2018, 1, 10, 23, 59, 59)

U upitu na ugrađenom 1C jeziku ne možete samo odabrati različita polja i primati parametre. Postoje mnoge funkcije koje olakšavaju formatiranje datuma za određeni zadatak. Ako često radite s datumima u upitu, trebali biste znati ove naredbe:

  • POČETAK RAZDOBLJA. Parametri određuju datum i vremenski period u čijem kontekstu je potrebno dobiti početak datuma. Koristi se za pretvaranje datuma u bezvremenski format. Da biste to učinili, potrebno je postaviti drugi parametar – “DAN”;
POČETAK RAZDOBLJA(,) POČETAK RAZDOBLJA(&Datum, DAN) period>datum>
  • KRAJ PERIOD. Slična komanda koja vraća posljednji datum u smislu jedinica navedenih u parametrima;
  • ADDKDATE. Omogućava vam da dobijete datum koji je veći za određeni broj specificiranih vremenskih jedinica. Parametri funkcije uključuju datum, vremensku jedinicu i broj;
ADDKDATE(,) ADDKDATE(&Datum, DAY, 10) količina>vrsta>datum>
  • DIFFERENCEDATE. Dobiva razliku između datuma u navedenim jedinicama;
DIFFERENCEDATE(,) DIFFERENCEDATE(&Datum1, &Date2, DAY) type>datum2>date1>
  • DAN U TJEDNU. Vraća serijski broj jednog od dana u sedmici.

Ispravnim korištenjem ovih funkcija programer može riješiti sasvim netrivijalne probleme. Na primjer, dobivanje imena dana u sedmici trenutnog datuma u zahtjevu kao niz:

ODABIRAJTE WHENDAY U SEDMU(&TrenutniDatum) = 1 ONDA "ponedeljak" WHENDAYDAY(&TrenutniDatum) = 2 ONDA "Utorak" WHENDAY U SEDMU(&TrenutniDatum) = 3 ONDA "Srijeda" WHENDAYDAY(&Trenutni WHENDAYDAT) "TRENUTNI WHENDAYDAT" (&TrenutniDatum) = 5 ONDA "petak" SRIJED U SJEDICI(&TrenutniDatum) = 6 ONDA "subota" OSTALO "nedjelja" KRAJ

Pretvaranje tipova u 1C upitu iz broja ili niza u datum je radno intenzivan zadatak. Možete dobiti datum iz brojeva koristeći funkciju DATETIME, iz niza - kombiniranjem funkcije SUBSTRING i konstrukcije SELECT WHEN THEN ELSE. Na osnovu toga, programeri preferiraju da dobiju datum od drugih tipova u modulu i proslede ga zahtevu koristeći parametar. Nažalost, to nije uvijek izvodljivo, pa morate promijeniti format datuma u zahtjevu.

Moguće je navesti datum u 1C zahtjevu kao parametar za dobivanje podataka iz virtualnih registarskih tablica. Ova uloga također može koristiti sve gore navedene funkcije. Ali ovdje je važno ne dozvoliti prazan datum u 1C zahtjevu može utjecati na konačni rezultat izvršenja koda, tako da se mora izvršiti provjera.

Vrlo često u 1C upitima morate raditi s datumima. Naročito kada se zahtjev upućuje objektima metapodataka koji sadrže periodične informacije. Po pravilu, to su registri (informacije, akumulacije, obračuni, računovodstvo). Pogledajmo najčešće korištene funkcije 1C jezika upita za rad s datumima. Napravit ćemo primjere na osnovu registra informacija EmployeesOrganizations ZUP konfiguracije verzija 2.5.

  • DATUM VRIJEME

    Omogućava vam da dobijete datum u zahtjevu (sa ili bez vremena) navodeći godinu, mjesec, dan, sat, minut, sekundu.
    sintaksa:
    DATETIME(godina, mjesec, dan, sat, minuta, sekunda)
    Obično sat, minuta i sekunda nisu naznačeni. Dajemo mini primjer. Unesite sljedeći tekst u Query Console:

    ODABIR DATUM VRIJEME(2016, 1, 1)

    Kao rezultat izvršenja zahtjeva dobijamo datum - 01.01.2016.
    Zapravo, teško je zamisliti situaciju u kojoj bi datum bio naveden na ovaj način u zahtjevu. Na kraju krajeva, kada treba da navedete period, koriste se parametri. Ali postoji slučaj kada je ova funkcija od posebne vrijednosti. Ovo je kada treba da navedemo prazan datum u poljima ili u uslovima zahteva. Da vas podsjetim da za jezik 1C prazan datum ima oblik - 0001.01.01. Dakle, da biste dobili prazan datum u zahtjevu, samo navedite DATETIME(1, 1, 1). Kao primjer, izaberimo iz registra informacija EmployeesOrganizations evidencije koje nisu popunjene Period završetka:

    ODABIR Organizacioni zaposleni.Period, Organizacijski zaposleni.Zaposleni, Organizacijski zaposlenici.Pozicija, Organizacijski zaposlenici.Organizacioni odsek IZ registra informacija.Organizacioni zaposleni AS Organizacijski zaposleni GDJE Organizacijski zaposlenici.Period završetka = DATETIME(1, 1, 1)

  • POČETAK RAZDOBLJA

    Za naveden datum vraća početak perioda u koji ulazi.
    sintaksa:
    POČETAK RAZDOBLJA (Datum, Vrsta perioda)
    PeriodType može imati sljedeće vrijednosti: MINUTA, SAT, DAN, SEDMICA, MJESEC, KVARTAL, GODINA, DECEDA, POLUGODINJE
    U konzoli upita unesite:

    ODABIR POČETAK RAZDOBLJA (DATUM VRIJEME (2016, 1, 15), MJESEC)

    Zahtjev će se vratiti - 01.01.2016
    A sada primjer. Kao što znate, periodičnost registra EmployeesOrganizations jednog dana. Kreirajmo upit u kojem će umjesto stvarnog perioda snimanja biti prikazan početni datum mjeseca.

    IZABERITE POČETAK RAZDOBLJA (Zaposleni u organizacijama. Period, MJESEC) KAO Početak mjeseca, Zaposleni u organizacijama. Zaposleni, Zaposleni u organizacijama. Položaj, Zaposleni u organizacijama. Podjela organizacije IZ Informacija registra. Zaposleni u organizacijama KAO Zaposleni u organizacijama

  • KRAJ PERIOD

    Sintaksa je ista kao i za početak perioda. I kao što naziv implicira, vraća kraj perioda prema datumu i tipu perioda. Nećemo to detaljno razmatrati. Ograničimo se na mini primjer.
    Zahtjev:

    ODABIR KRAJ PERIOD(DATUM VRIJEME(2016, 1, 15), MJESEC)

    Povratak 31.01.2016 23:59:59
    Kao što vidite, vrijednost se vraća točno na sekundu.

  • ADDKDATE

    Dodaje navedeni broj vremenskih intervala datumu.
    sintaksa:
    ADDKDATE(Datum, Vrsta perioda, količina)
    PeriodType uzima iste vrijednosti kao i za funkciju POČETAK RAZDOBLJA
    Na primjer, izaberimo datum u februaru:

    ODABIR DODATAK DATUM(DATETIME(2016, 2, 15), MJESEC, 2)

    Dobijamo datum 15.04.2016 0:00:00 Uprkos činjenici da je februar kratak mjesec, dan primljenog datuma je isti kao i prvobitni. Veoma je zgodno da ne morate razmišljati o broju dana u mjesecima.
    Količina također može biti negativna. Zatim se interval broji u suprotnom smjeru.

  • DIFFERENCEDATE

    Izračunajte razliku između dva datuma u navedenim jedinicama.
    sintaksa:
    DATUM RAZLIKA (datum početka, datum završetka, vrsta perioda)
    Tip perioda može imati sljedeće vrijednosti: DRUGA, MINUT, SAT, DAN, MJESEC, KVARTAL, GODINA
    Na primjer:

    ODABIR DATUM RAZLIKA(DATUM VRIJEME(2016, 2, 15), DATUM VRIJEME(2016, 3, 1), DAN

    vraća 15

Ovdje smo pregledali najčešće korištene funkcije 1C jezika upita. Ostalo se koristi prilično rijetko. Ako je potrebno, primjeri rada s njima mogu se pronaći u pomoći ugrađenoj u 1C platformu.



greška: Sadržaj je zaštićen!!