Prazna vrijednost datuma u zahtjevu 1c 8.3. s provjerom prazne vrijednosti. Primjeri

Svi dokumenti koji postoje u 1C konfiguracijama, te, dakle, i praktički svi registri moraju imati najmanje jedan rekvizite s vrstom datuma, zbog čega svaki developer treba znati i razumjeti:

  • Kako transformirati druge vrste parametara na vrstu razmatranja;
  • Kako odrediti prazan datum u zahtjevu 1c;
  • Koja je razlika između datuma i ograničenja vremena.

Za ova pitanja pokušat ćemo odgovoriti na naš članak.

Koji je datum i kako ga identificirati

Budući da, za usvajanje većine upravljačkih odluka i vođenje računovodstva, točnost vremena premašuje 1 sekundu, 1C platforme programeri su odlučili da je ta vrijednost maksimalni minimum u formatu datuma. Dakle, svaki rekviziti opisuje vrijeme događaja u programu mora sadržavati:

  • Godine kada se dogodio događaj;
  • Mjesec ovog događaja;
  • Dan.

Izborno navedite: sat, minutu i drugo. Ako su ta tri parametra izostavljena i ne dodatni uvjetiProgram automatski postavlja vrijeme na početku dana.

Svjetske formate postojećih datuma imaju značajnu razliku:

  1. U Rusiji smo navikli na prvo mjesto kako bi se stavio dan, a zatim postoji mjesec dana događanja, na kraju godine;
  2. Stanovnici SAD-a počinju datum iz mjeseca;
  3. Česi, polovi i Slovenci zapisuju razdoblje u obliku "Godina - mjesec dana".

To je posljednji format koji koristi 1C platformu.

Pretvorbe

Da bi se dobio parametar s vrstom datuma od nekoliko vrijednosti ili s niza, kôd naveden na Sl. jedan

Kao što se može vidjeti iz gore navedene brojke, moguće je odrediti datum uz pomoć jedne linije, a uz podjelu ove linije do kompozitnih dijelova s \u200b\u200bpolukolonom, rezultat se neće mijenjati.

Važno je shvatiti da će godina datuma sadržavati četiri znamenke, uključujući tisućljeće i stoljeće događanja, mjesec, dan, sati i sekundi - mora imati duljinu dvaju simbola, uključujući vodeće nule.

Odbrojavanje B. program dolazi Od početka dana 1. siječnja 0001. Za gore navedeni kôd ova vrijednost se može definirati jednim od dva načina (sl. 2).

Sl. 2.

U drugoj liniji smo spustili satove, minute i sekunde događaja, koji nisu utjecali na učinkovitost našeg koda.

Značajke korištenja datuma upita 1c

Za većinu vrsta podataka koje koristi 1C platforma, postoje unaprijed definirane vrijednosti praznine. Za brojeve, to je 0, za reference, možete odrediti vrijednost praznog rola (), za datum kada se pretpostavlja da je prazna vrijednost datum početka, to je s njom da je potrebno usporediti pojedinosti o odgovarajući tip kada su potrebni parametri zahtjeva.

Važno je shvatiti da čak i ako se ne navede vrijednost oblika obrasca s razmatranim tipom, ne navedene znamenke, to jest, prozor ima oblik (slika 3), to ne znači da ništa nije U njoj je navedeno, usporedba ovog parametra s praznim nizom neće proći.

Sl. 3.

Nakon što je primio prazan datum, možemo je odrediti kao parametar na naš zahtjev, odnosno koristiti dizajn (sl. 4)

Međutim, postoje puta kada je ček bolji potrošiti unutar teksta upita bez prenošenja praznog datuma kao parametra. Da biste to učinili, u kôdu upita, možete unijeti odgovarajuće stanje (sl. 5) i koristiti funkciju Datarime Query ().

Sl. pet

U danom tekstu zahtjeva smanjili smo vodeće nule do godine, mjeseci i dana, kao i nisu ukazivali na vrijeme, minute i sekunde i program, što se zove, pokopana je ta pretpostavka.

Datum i vremensko ograničenje

Još jedna zanimljiva činjenica u pogledu omjera zahtjeva i datuma je korištenje koncepta "trenutka vremena" prilikom pristupa raznim tablicama baze podataka.

Točnost "do milisekundi", specificirana u tehničkoj dokumentaciji, kada opisuje primitivnu vrstu, datum je svjetliji od svih pri odabiru zapisa iz virtualne tablice Registra akumulacije: ako je registar akumulacije uz prometnu tablicu, Postoje tablice i zaostale stolovi, uzorak na njemu određeno vrijeme može dati različite rezultate.

Da biste razumjeli kako i zašto se to događa, razmislite o jednostavnom primjeru:

  1. Do 12:00, 31 minute 36 sekundi dokumenta provedbe ostataka prema nomenklaturi šećera bilo je 30 kg;
  2. Dokument u određeno vrijeme otpisano je 10 kg;
  3. Izvješće generira na datum dokumenta za 12 sati 31 minute 36 sekundi na tablici ostatka pokazat će ostatku 30 kg;
  4. Isto izvješće o tablici rezidualnih blagovaonica u isto vrijeme pokazat će ravnotežu od 20 kg.

Koji je razlog za to ponašanje i kako ga izbjeći?

Problem je u tome što tablica ostatka daje otvoreni segment, tj. Upravo se pokreti provedeni u vrijeme stvaranja izvješća ne uzimaju u obzir, to jest, vrijeme se odvodi na početak navedeno u drugi parametar. U isto vrijeme, za tablicu za skretanje i za ostatak stola, granice granice vremena se uzimaju u obzir, odnosno, vrijeme se uzima na kraju navedenog drugog.

Izlazi iz ove situacije su nekoliko:

  1. Kada koristite tablicu bilance, navedite trenutak za 1 sekundu veći od navedenog;
  2. Koristiti samo tablicu reziduala (ne najuptimalniju opciju u smislu performansi);
  3. Koristite koncept granice.

Potonja opcija može se podnijeti kod označenog na Sl. 6.

U prvom parametru našeg objekta navodemo datum na koji želite formirati izvješće, drugi parametar određuje vrstu granice. Budući da je važno za nas da su pokreti na određeni datum uključeni u uzorak. Moramo postaviti ovaj parametar na položaj "uključujući" položaj.

Tijekom rada s zahtjevima bilo koji programer mora interakciju s praznim vrijednostima. Što razumijemo pod praznom vrijednošću?

Prazna vrijednost nije vrijednost ili zadana vrijednost za vrstu podataka. Uz primitivne vrste, sve je vrlo jednostavno: zadana vrijednost je određena početna vrijednost koja služi kao referentna točka.

Vrste praznih vrijednosti

Razmotrite vrste praznih vrijednosti koje mogu zadovoljiti ili trebaju biti zatražene.

  • Za vrstu broja - prazna vrijednost je nula - 0.
  • Za vrstu niza - prazna linija - "".
  • Za tip datuma - prvi siječanj prve godine - 01.01.0001 00:00:00. Od tog datuma odbrojavanje od 1c. *
  • Za vrstu boolean - zadana vrijednost, tehnički je laž, ali su logički obje vrste tipa popunjeni. Stoga donošenje odluke o praznoj vrijednosti lažnih ili ne, temelji se na logici određenog algoritma.

* Budite oprezni, od 1c postoji različiti sustavi Napomena Datumi s različitim referentnim točkama.

Nedostata vrijednost u punom smislu odgovara samo tipu Null. Ovaj tip sadrži samo jednu vrijednost koja označava odsutnost vrijednosti.

Kao što je tip Nedefiniran Također sadrži samo jednu vrijednost, ali ne znači nikakav podatak, već samo nemogućnost određivanja zadane vrijednosti za vrstu. To je na neodređeno vrijeme zadana vrijednost za kompozit, uključujući i ne definirane eksplicitno, vrste. Na primjer, vrijednost u novi niz Stolovi vrijednosti u stupcu za koje tip nije posebno definiran.

TAKO referenca Vrste su mnogo manje neizvjesnosti. Sve referentne vrste pružaju praznu vrijednost. Prazna vrijednost je ista referenca s vrstom podataka, ali bez jedinstvenog identifikatora određene vrijednosti. Zahvaljujući tome, možemo podnijeti praznu referencu kao i kod uobičajenih i primijeniti sve metode predviđene platformom, radeći s njom kao punu vrijednost.

Rad s praznim vrijednostima na zahtjev

Bez obzira na to trebate li izričito unijeti praznu vrijednost u rezultat rezultata ili usporediti postojeće vrijednosti s njom, morate znati kako opisati prazne vrijednosti u upitu.

Vrste Broj, red, Boolevo Opisuje u upit kao u ugrađenom jeziku:

Odaberite 0 kao okružen, "Hello World" kao primjer, istina kao ohrabrujuće

Nesigurno je, bitno primitivni tip, opisan je na isti način:

Odaberite stranku. Razdoblje iz registra. Stranka kao stranka u kojoj ostaci. Točke dokumenta \u003d nesigurno

Prazne referentne vrijednosti definirane su malo složenije. Svi referentni objekti imaju unaprijed određenu vrijednost usluge praznog rola. Zbog toga je moguće odabrati praznu vezu na jedan način - kroz funkciju vrijednosti:

Odaberite vrijednost(Imenik. Namerenclature. Badding) kao prazna nomenklatura

Mogućnosti za rad s null vrijednostima su nešto bogatije. Kao i druge primitivne vrste, null je opisan na isti način kao iu ugrađenom jeziku. Osim toga, poseban operator ima nulu i funkciju isnufu.

  • Operater je null omogućuje stvaranje logičan izraz Uspoređujući odabranu vrijednost s nultom vrijednosti.
  • Funkcija hasenull vraća prvi argument ako nije jednak nulu, a drugi argument u suprotnom slučaju.

Izrazi koji određuju prazne vrijednosti mogu se koristiti u svim dijelovima zahtjeva za potpornim izrazima. Na primjer, možete dodati praznu vezu na odabranu ili provjeriti NULL u stanju.

Praktični primjeri

Korištenje vrijednosti funkcije

Odaberite robu. Veza kao nomenklatura, roba. Link \u003d vrijednost (direktorij. Nameleture. Napajanje) kao echolkapy iz VTTovara

Korištenje operatera je nula

Odaberite robu. Veza kao nomenklatura, roba. Link je nula kao etchilkapus twevary kao TT

Null s lijevom ili punom vezom

Provjerite null

Primjer pokazuje čestu praktičnu situaciju kada s lijevom priključkom, za prvu tablicu nije usklađenost u drugoj. U ovom slučaju sva polja drugog stola bit će jednaka nulu.

Odaberite SWDS. Veza kao nomenklatura, ostataka. Prijenosno računalo kao količina, ostaci. Natt dno. Lijeva veza Registracija. Townsnasclands. Logate kao ostaci VTtovaras.link \u003d ostaci. Namerenclature

Obrada null vrijednosti

Modifikacija prethodnog zahtjeva za demonstraciju često naišla na tehniku \u200b\u200bza dobivanje svih zadanih vrijednosti, umjesto da nedostaje. U ovom primjeru funkcionira arenfilVrijednost nestalog ostatka zamijenjen je, na logično točan 0.

Odaberite SWDS. Veza kao nomenklatura, isnufu (ostaci. Poslovno poslovanje, 0) kao broj VTTovara kao VT Lijeva veza Registracija. Townsnasclands. Logate kao ostaci VTtovaras.link \u003d ostaci. Namerenclature

Kao dio ovog članka pregledali smo različite vrste praznih vrijednosti i njihovih svojstava, proučavanih načina za određivanje različiti tipovi Prazne vrijednosti u upitima iu praktičnom dijelu bili su uvjereni u jednostavnost korištenja razmatranog materijala.

Kada radite s datumima 1c, tipičnim redoslijedom - godina, mjesec, dan, sat, minute, sekunde. U isto vrijeme, sati, minute, sekunde se može preskočiti.

Prilikom izrade datuma iz linije ("dovođenje na datum"), možete odrediti u lokaliziranom formatu (dan. Lako vrijeme: minute: sekunde), ali samo potpuno.

Na primjer:
// Rad s datumima 1c - Pretvori datum u 1c iz dijelova - godina, mjesec, dan (plus to nije potrebno vrijeme)
Datum \u003d datum (2012.10,30); // bez vremena
Datum \u003d datum (2012.10,30,12,00,00); //s vremenom

// Rad s datumom 1c - Pretvori datum u 1 ° C od niza, različite načine
Datum \u003d datum ("20121030"); // godina, mjesec, dan
Datum \u003d datum ("10/30/2012 12:00:00"); // lokalizirani format, samo potpuno

// Rad s datumima 1c - Vrijednosti datuma bilješke bez izravnog dovođenja
Datum \u003d "20121030"; // bez vremena
Datum \u003d "20121030120000"; //s vremenom

Rad s datumima 1c - prazan datum 1c

Da biste provjerili datum 1c za punoću - uspoređuje se s "praznim datumom". Ako postoji detaljni detalji u zahtjevnom direktoriju s vrstom tipa, ako korisnik nije ispunio ovo polje, njegova vrijednost će također biti "prazan datum".

"Prazan datum" je 01.01.0001 00:00:00.

Na primjer:
Prokleto \u003d "0001010100000000";
Ako trebate \u003d "0001010100000000" onda
Izvješće ("Niste ispunili neophodni datum");
Završeno;

Rad s datumom 1c - datum u detalje (direktorije, dokumenti itd.)

Prilikom određivanja vrste podupiranja možete odrediti pomoću:

  • Samo datum (vrijeme je uvijek jednak 00:00:00)
  • Samo vrijeme (datum je uvijek jednak 01.01.0001)
  • Datum i vrijeme

Dobivanje datuma

Da biste dobili datum i vrijeme, koristi se funkcija 1c ().

Vrlo je važno mjesto - gdje se ova funkcija zove - na klijentu ili na poslužitelju. Pojedinosti potražite u odjeljku Teme "način rada / izvršenja". Često se događa da na klijentskim strojevima vrijeme je malo drugačije, pa pokušavate koristiti vrijeme poslužitelja svugdje - čak i ako je instaliran na poslužitelju, to nije istina, a zatim će barem svi kupci imati isto netočno vrijeme.

Da biste dobili datum poslužitelja (datum postavljen operacijski sustav Računalo poslužitelja), obično u konfiguracijama stvaraju zajednički modul s oznakom "poslužitelj" u svojstvima i stvara funkciju
// Funkcija se nalazi u zajedničkom modulu, na primjer, s nazivom konfunkcije poslužitelja
// u svojstvima opći modul Instaliran potvrdni okvir "poslužitelj" i nije instaliran potvrdni okvir "klijent"
Funkcija Funatresver () Izvoz
Povratak trenutnog prijema ();
Kraj

// pozivajući ovu funkciju za uporabu iz drugog modula izgleda ovako
Predmet dokumenta. Podaci \u003d konfunkcije poslužitelja. // mimodule. Imafonicije ()

također u tanak klijent Izravno u funkcijama modula su naznačeni tamo gdje će se izvršiti:

Početak i kraj dana

Za datum "10/30/2012":

  • datum početka dana izgleda kao "10/30/2012 00:00:00"
  • datum kraja dana izgleda kao "30.10.2012 23:59:59"

U izvješćima i upitima koje zahtijevaju podatke za razdoblje - dan, mjesec, godina.

Tako, na primjer, razdoblje od 01/01/2012 00:00:00 na "01/31/2012 00:00:00" je netočan, jer ne uključuje jedan dan u mjesecu (ali uključuje jednu sekundu posljednji dan u mjesecu).

Rad s datumima 1c - usporedba datuma

Datum sadrži datum i vrijeme. Kada uspoređujete datume (isključujući vrijeme), obično vode do početka dana (mjesec, godina).

Na primjer:
Datum1 \u003d datum ("10/30/2012 12:00:00");
Ako je početak (datum1) \u003d početak (dokument roll. Podatke) tada
Izvješće ("dokument uveden kao datum");
Završeno;

Samo u slučaju, primjer usporedbe datuma u razdoblju:
Ako dokument roll. Data\u003e \u003d Podrijetlo (CurrentData ()) i
Roll dokumenta. Podatke.

Rad s datumom 1c - Datum promjene

Datum je broj sekundi. Ako želimo ne samo da znamo je li jedan datum više drugačiji - ali koliko i više, dobivamo razliku u sekundi.

Na primjer:
Raspored \u003d Aktualni podaci () - Retroper (tekući podaci ());
Izvješće ("od početka dana" + linija (brodogradnja) + "sekunde");
Izvješće ("od početka dana" + linije (brod / 60) + "minuta");
Izvješće ("od početka dana" + linije (brod / 60/60) + "sati");

Također možemo promijeniti datum, kada se mijenjamo, dodajemo ili oduzimamo broj sekundi:
Početak godine \u003d početak (struja);

Početak StreetDoday \u003d Otoman (start žena - 1); // uklonite drugo - izradu "jučer" i odvojite početak dana od "jučer"

Početna godina ulice \u003d početak godine - 24 * 60 * 60; // drugi način - potrebno je 24 sata - 24 (sati) * 60 (ispostavilo se da su minuta) * 60 (sekundi)

Rad s datumima 1c - trenutak vremena

Trenutak vremena je produženi datumplet koji se primjenjuje na dokumente (i prema registrima).

Potrebno je usporediti vrijeme dokumenata ako je datum i vrijeme dokumenata isti. Prema tome, može se koristiti pri odabiru upita.

Trenutak vremena može se dobiti iz dokumenta na sljedeće načine:
// Metoda 1
MompwiresMirdissismisment \u003d Roll dokumenta. Imometteri ();

Također možete usporediti datum vremena s datumom / vrijeme:
Momptworneytalon \u003d novo vrijeme (odmazd (trenutno tutt ());
Ako je dokument roll.momenartiy (). Usporedite (Mostwornyetalon) \u003d -1
Izvješće ("dokument uveden ranije nego danas");
Završeno;
// Ako dokument unese današnji datum u 00:00:00, i danas se uvodi - danas

Rad s datumom 1c - datum formatiranje

S prilično dijelom postoji potreba za radom s varijablama tipa "datum". U ovom članku ćemo pogledati glavne tehnike - prijenos trenutnog datuma, provjeravanje prazne vrijednosti, proizvoljnog datuma.

Prilikom pisanja zahtjeva često je potrebno usporediti podatke s trenutnim datumom. U ugrađenom 1C jeziku postoji protok protoka (). To vam omogućuje da odredite trenutno vrijeme i datum na računalu. Za rad operacija s trenutnim datumom morate poslati na zahtjev vrijednost ove funkcije kao parametra.

U nastavku se nalazi zahtjev koji odabire sve datoteke priključene na unaprijed izvještaje od datuma stvaranja do danas:

Primjer \u003d novi zahtjev;
Sufroduction. White \u003d "
| Odaberite
| AdvanceTupPrage Sound datoteka. Link
| Je
| Priručnik. Dodatni Failyefilefut-fileflyls.
Gdje
| AdvanceTupParGrageinat datoteku. Podaci.< &ТекДата»;
Izvršenje. Parametar instalacije ("Tekdata", CurrentDAT ());

Proizvoljni datum

Navedena funkcija omogućuje vam da usporedite i stoga proizvode odabir u bilo kojem razdoblju. Ova metoda vam omogućuje da navedete tvrdi odabir u upitu bez upotrebe dodatnih parametara.

Imajte na umu da koristite ovu značajku u gornjem primjeru, prošli smo kao ulazni parametri samo tri broja (godina, mjesec, dan). Posljednja tri (sat, minutni, drugi) nisu obvezni i u odsustvu zamjenjuje "0", to jest, početak dana.

Unutar ovim primjerom Sve datoteke priložene na unaprijed izvješća bit će primljene do kraja prošlog 2016. godine. U tom smislu, mi ćemo pokazati sat, minutu i drugi da usporedite vrijeme "31. prosinca 2016. 23:59:59."

Odabrati
AdvanceTupPrage Sound datoteka. Link
OD
Priručnik. OfficeThethileyfiles kao napredak
GDJE
AdvanceTupParGrageinat datoteku. Podaci.< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Prazan datum

Provedite varijablu kako biste provjerili ima li samo po sebi nepopulirani datum najjednostavnije usporedbe. U ovom primjeru, mi, koristemo zahtjev, odaberite sve novčane primitke na P / C, koji nisu dovršili dolazni datum.