Valoarea datei goale la cerere 1c 8.3. cu verificarea unei valori goale. Exemple

Toate documentele care există în configurații 1c și, prin urmare, practic toate registrele trebuie să aibă cel puțin o recuzită cu tipul de dată, motiv pentru care fiecare dezvoltator trebuie să știe și să înțeleagă:

  • Cum se transformă alte tipuri de parametri la tipul în cauză;
  • Cum să determinați data goală în cererea 1c;
  • Care este diferența dintre data și limita de timp.

Pentru aceste întrebări vom încerca să răspundem la articolul nostru.

Care este data și cum să o identificați

Deoarece, pentru adoptarea celor mai multe decizii manageriale și păstrarea contabilității, precizia timpului care depășește 1 secundă, dezvoltatorii de platformă 1C au decis că această valoare este minimul maxim în formatul de dată. Astfel, fiecare recuzită care descrie timpul evenimentului în program trebuie să conțină:

  • An când a avut loc un eveniment;
  • Luna acestui eveniment;
  • Zi.

Indicați opțional: oră, minut și al doilea. Dacă acești trei parametri sunt omisă și nu conditii suplimentareProgramul stabilește automat ora la începutul zilei.

Formatele de date existente au o diferență semnificativă:

  1. În Rusia, suntem obișnuiți cu primul loc pentru a pune ziua, atunci există o lună de evenimente, în cursul anului;
  2. Rezidenții americani încep o dată de la lună;
  3. Cehii, stalpi și sloveni scriu perioada în format "Anul zilei".

Acesta este ultimul format care utilizează platforma 1c.

Conversie până în prezent

Pentru a obține un parametru cu tipul de dată de la mai multe valori sau de la șir, codul specificat în fig. unu

După cum se poate observa din figura de mai sus, este posibil să se determine data atât cu ajutorul unei linii, cât și cu împărțirea acestei linii la părțile compozite cu un punct și virgulă, rezultatul nu va fi schimbat.

Este important să se înțeleagă că anul de dată ar trebui să conțină patru cifre, inclusiv mileniul și un secol de evenimente, lună, zi, ore și secunde - trebuie să aibă o lungime de două simboluri, inclusiv zerouri de conducere.

Numărătoarea inversă B. programul vine De la începutul zilei de la 1 ianuarie 0001. Pentru codul de mai sus, această valoare poate fi definită de una din cele două căi (figura 2).

Smochin. 2.

În cea de-a doua linie am coborât ceasurile, minutele și secundele evenimentului, care nu au afectat eficiența codului nostru.

Caracteristicile utilizării datei în interogări 1c

Pentru majoritatea tipurilor de date utilizate de platforma 1C, există valori vid predefinite. Pentru numere, acesta este 0, pentru referințe, puteți determina valoarea rolei goale (), pentru data se presupune că valoarea goală este data de începere, este cu ea că este necesar să comparați detaliile Tipul corespunzător Când sunt necesare parametrii de cerere.

Este important să se înțeleagă că, chiar dacă nu este specificată valoarea formularului cu tipul considerat, nu sunt specificate cifre, adică fereastra are forma (fig.3), acest lucru nu înseamnă că nimic nu este specificate în acesta, comparația acestui parametru cu un șir gol nu va trece.

Smochin. 3.

După ce am primit o dată goală, îl putem specifica ca parametru la cererea noastră, adică folosim designul (figura 4)

Cu toate acestea, există momente când verificarea este mai bine să cheltuiți în textul interogării fără a trece o dată goală ca parametru. Pentru a face acest lucru, în codul de interogare, puteți introduce starea corespunzătoare (figura 5) și utilizați funcția de interogare DataRime ().

Smochin. cinci

În textul dat, am redus zerourile de frunte până în anul, luni și zi, precum și nu am indicat orele, minute și secunde și programul, ceea ce se numește, a fost îngropată această ipoteză.

Data și termenul limită

Un alt fapt interesant cu privire la raportul dintre cereri și date este utilizarea conceptului de "moment de timp" atunci când accesează diverse tabele de bază de date.

Precizia "la milisecunde", specificată în documentația tehnică, atunci când descrie un tip primitiv, data este mai strălucitoare decât toate atunci când se selectează înregistrări din tabelul virtual al registrului de acumulare: dacă registrul de acumulare este în plus față de tabelul de cifră de afaceri, Există tabele și tabele reziduale, eșantionul pe acesta pentru un anumit timp poate da rezultate diferite.

Pentru a înțelege cum și de ce se întâmplă, luați în considerare un exemplu simplu:

  1. Până la ora 12:00, 31 minute 36 de secunde din documentul de implementare a resturilor în conformitate cu nomenclatorul zahărului a fost de 30 kg;
  2. Documentul de la ora specificat a fost scris de 10 kg;
  3. Raportul generat pe data documentului timp de 12 ore 31 minute 36 secunde pe tabelul reziduului va afișa reziduul 30 kg;
  4. Același raport privind tabelul de feuri reziduale, în același timp, va arăta soldul de 20 kg.

Care este motivul pentru acest comportament și cum să-l eviți?

Problema este că tabelul de reziduuri este dat de un segment deschis, adică mișcările efectuate în momentul formării raportului nu sunt luate în considerare, adică timpul necesar la începutul specificat în al doilea parametru. În același timp, pentru masa de cotitură și pentru masa reziduală, limitele limitei de timp sunt luate în considerare, adică timpul este luat la sfârșitul secțiunii specificate.

Rezultatele din această situație sunt mai multe:

  1. Când utilizați tabelul balanței, specificați momentul de timp pentru o secundă mai mare decât cel specificat;
  2. Utilizați numai tabelul de reziduuri (nu cea mai optimă opțiune în ceea ce privește performanța);
  3. Utilizați conceptul de frontieră.

Ultima opțiune poate fi trimisă prin codul indicat în fig. 6.

În primul parametru al obiectului nostru, specificăm data la care doriți să formați un raport, al doilea parametru determină tipul de frontieră. Deoarece este important pentru noi că mișcările la o dată specificată sunt incluse în eșantion. Trebuie să stabilim acest parametru la poziția "inclusiv".

În cursul lucrului cu cererile, orice programator trebuie să interacționeze oricum cu valorile goale. Ce înțelegem sub o valoare goală?

O valoare goală nu este nici o valoare sau valoare implicită pentru tipul de date. Cu tipuri primitive, totul este destul de simplu: valoarea implicită este o anumită valoare inițială care servește ca punct de referință.

Tipuri de valori goale

Luați în considerare tipurile de valori goale care pot satisface sau trebuie solicitate.

  • Pentru un tip de număr - o valoare goală este zero - 0.
  • Pentru un tip de șir - o linie goală - "".
  • Pentru tipul de date - primul Ianuarie din primul an - 01.01.0001 00:00:00. Este de la această dată o numărătoarea inversă de 1c. *
  • Pentru tipul de boolean - valoare implicită, din punct de vedere tehnic, este o minciună, dar logic ambele tipuri de tip sunt umplute. Prin urmare, luarea unei decizii privind valoarea goală a falsă sau nu, se bazează pe logica unui anumit algoritm.

* Aveți grijă, afară de 1c diferite sisteme Notă Date cu puncte de referință diferite.

Valoarea lipsă în sensul complet corespunde numai tipului NUL. Acest tip conține doar o singură valoare care denotă absența valorii.

Cum ar fi tastatul Nedefinit De asemenea, conține o singură valoare, dar nu înseamnă niciun text, ci numai incapacitatea de a determina valoarea implicită pentru tip. Este pe o perioadă nedeterminată valoarea implicită pentru compozit, inclusiv nu definită în mod explicit, tipuri. De exemplu, valoarea în Șir nou Tabele de valori din coloana pentru care tipul nu este definit în mod specific.

ASA DE referinţă Tipurile sunt mult mai puțină incertitudine. Toate tipurile de referință oferă o valoare goală. Valoarea goală este aceeași referință cu tipul de date, dar fără un identificator unic al unei anumite valori. Datorită acestui fapt, putem gestiona o referință goală ca și cu obiceiul și să aplicăm toate metodele prevăzute de platformă, lucrând cu ea ca o valoare completă.

Lucrul cu valori goale în cerere

Indiferent dacă trebuie să introduceți în mod explicit o valoare goală în rezultatul rezultat sau să comparați valorile existente cu acesta, trebuie să știți cum să descrieți valorile goale în interogare.

Tipuri Număr, rând, boolevo Descrie în interogare ca în limba încorporată:

Alegeți 0 ca o înconjurătoare, "Bună ziua" ca exemplu, adevărul ca o companie

Este incert, fiind în esență un tip primitiv, este descris în același mod:

Alegeți o petrecere. Perioada din registru. Partidul ca parte în care resturile. Puncte de document \u003d incert

Valorile de referință goale sunt definite un pic mai complicat. Toate obiectele de referință au o valoare de serviciu predeterminată a rolei goale. Datorită acestui fapt, este posibil să alegeți o legătură goală într-un singur mod - prin funcție de valoare:

Selectați valoarea(Director. Namerenclatură. Badding) ca o nomenclatura goală

Oportunitățile de lucru cu valorile nulă sunt oarecum mai bogate. Ca și alte tipuri primitive, Null este descris în același mod ca în limba încorporată. În plus, un operator special are o nulă și funcția isNull.

  • Operatorul este NULL vă permite să creați expresie logică Comparând valoarea selectată cu valoarea nulă.
  • Funcția Hasnull returnează primul argument dacă nu este egal cu Null, și al doilea argument în cazul opus.

Expresiile care determină valorile goale pot fi utilizate în orice secțiune a cererii de susținere a expresiilor. De exemplu, puteți adăuga o legătură goală la selectarea sau verificarea pe nulă în condiție.

Exemple practice

Folosind valoarea funcției

Alegeți bunuri. Link ca nomenclatură, bunuri. Link \u003d valoare (director. Namelettură. Alimentare) ca etcolkapy de la vttovars

Utilizarea operatorului este nulă

Alegeți bunurile. Link ca nomenclatură, bunuri. Link există nul ca un etchilkapos al tomovarului ca TT

Null cu conexiune stângă sau completă

Verificați null.

Un exemplu demonstrează o situație practică frecventă atunci când cu conexiunea stângă, pentru prima masă nu este conformitatea în al doilea. În acest caz, toate câmpurile din al doilea tabel vor fi egale cu NULL.

Alegeți SWD-uri. Link ca nomenclatură, reziduuri. Notebook ca o cantitate, reziduuri. Business de afaceri care mănâncă nul ca un networker de la VTO Conectarea la stânga Registring. Townsnasclands. Lipsii ca resturi de VTTOGARS.LINK \u003d reziduuri. Namerenclatura

Prelucrarea valorii null

Modificarea cererii anterioare de demonstrație a tehnicii frecvent întâlnite pentru a obține orice valori implicite, în loc să lipsească. În acest exemplu folosind fUNCȚII ARENULLValoarea reziduului lipsă este înlocuită, pe corectă logic 0.

Alegeți SWD-uri. Link ca nomenclatură, Isnull (reziduuri. Nality Business, 0) ca un număr de VTTTOGAR ca un vt Conectarea la stânga Registring. Townsnasclands. Lipsii ca resturi de VTTOGARS.LINK \u003d reziduuri. Namerenclatura

Ca parte a acestui articol, am revizuit diferite tipuri de valori goale și proprietățile acestora, studiați modalități de determinare tipuri diferite Valorile goale în interogări, iar în partea practică au fost convinși de ușurința utilizării materialului considerat.

Când lucrați cu datele 1C, părțile tipice de comandă - an, lună, zi, oră, minute, secunde. În același timp, ore, minute, secunde pot fi sărite.

Când creați o dată de la linie ("Aduceți la dată"), puteți specifica într-un format localizat (zi. Ore ușoară: minute: secunde), dar numai complet.

De exemplu:
// Lucrul cu datele 1c - convertiți o dată în 1c de la părți - an, lună, zi (plus nu este nevoie de timp)
Data \u003d data (2012.10,30); // Fără timp
Data \u003d data (2012.10,30,12.00.00); //cu timpul

// Lucrați cu datele 1c - Conversia o dată în 1c de la un șir, diferite moduri
Data \u003d data ("20121030"); // An lună zi
Data \u003d Data ("10/30/2012 12:00:00"); // format localizat, doar complet

// Lucrați cu datele 1C - Valorile datei Notă fără a aduce direct
Data \u003d "20121030"; // Fără timp
Data \u003d "20121030120000"; //cu timpul

Lucrați cu datele 1C - Data goală 1c

Pentru a verifica data 1c pentru plinătate - este comparată cu "data goală". Dacă există detalii în directorul solicitant cu tipul de tip, dacă utilizatorul nu a completat acest câmp, atunci valoarea sa va fi, de asemenea, "dată goală".

"Data goală" este 01.01.0001 00:00:00.

De exemplu:
Damned \u003d "00010101000000";
Dacă aveți nevoie \u003d "00010101000000" atunci
Raport ("Nu ați completat o dată foarte necesară");
Încheiat;

Lucrați cu datele 1c - Data în detalii (directoare, documente etc.)

Când specificați tipul de recuzită, puteți specifica utilizând:

  • Doar data (timpul este întotdeauna egal cu 00:00:00)
  • Numai timpul (data este întotdeauna egală cu 01.01.0001)
  • Data si ora

Obținerea unei date

Pentru a obține data și ora, este utilizată funcția 1C ().

Este un loc foarte important - unde se numește această funcție - pe client sau pe server. Pentru detalii, consultați subiectul "Modul de performanță / execuție". Se întâmplă adesea că pe mașinile client, timpul este ușor diferit, deci încercați să utilizați ora serverului peste tot - chiar dacă este instalat pe server, nu este adevărat, atunci cel puțin toți clienții vor avea același timp incorect.

Pentru a obține data serverului (data stabilită sistem de operare Server Computer), de obicei în configurații creați un modul comun cu caseta de selectare "Server" din proprietăți și creează o funcție
// funcția este situată într-un modul comun, de exemplu, cu numele confruntărilor de server
// în proprietăți modul general. Instalat caseta de selectare "Server" și nu a fost instalat caseta de selectare "client"
Funcție FunatServer () Export
Returnarea admiterii curente ();
Endfunction

// Apelarea acestei funcții pentru utilizarea de la un alt modul pare a fi așa
Document Obiect. DATA \u003d confruntări ale serverului. Fotografosever (); // MIMODUL. IMAFNICES ()

De asemenea, în client slab Direct în funcțiile modulelor sunt indicate acolo unde va fi executat:

Începeți și sfârșitul zilei

Pentru data "10/30/2012":

  • data de începere a zilei arată ca "10/30/2012 00:00:00"
  • data sfârșitului zilei arată ca "30.10.2012 23:59:59"

Folosit în rapoarte și interogări care necesită date pentru perioada zilei, luna, anul.

Deci, de exemplu, perioada de la 01/01/2012 00:00:00 la "01/31/2012 00:00" este incorectă, deoarece nu include o zi a lunii (dar include o secundă din Ultima zi a lunii).

Lucrul cu datele 1c - Compararea datelor

Data conține data și ora. La compararea datelor (cu excepția timpului), acestea duc, de obicei, la începutul zilei (luna, anul).

De exemplu:
Data1 \u003d Data ("10/30/2012 12:00:00");
Dacă start (data1) \u003d porniți (Datele Roll. Date) Apoi
Raport ("documentul introdus ca dată");
Încheiat;

Doar în caz, un exemplu de comparație a datei în perioada:
Dacă un document Roll. Date\u003e \u003d origine (CurrentData ()) și
Document Roll. Date.

Lucrul cu datele 1C - Modificarea datei

Data este numărul de secunde. Dacă vrem să nu știm dacă o dată este mai diferită - dar cât de mult, avem diferența în câteva secunde.

De exemplu:
Programare \u003d Datele curente () - retroter (date curente ());
Raport ("de la începutul zilei", linia (Shiplade) + "secunde");
Raport ("de la începutul zilei" + linia (nava / 60) + "minute");
Raport ("de la începutul zilei" + linia (navă / 60/60) + "ore");

De asemenea, putem schimba data, la schimbarea, adăugăm sau scoatem numărul de secunde:
Începutul anului \u003d Start (curent);

Pornind Streetoday \u003d Ottoman (Start Woman - 1); // eliminați un al doilea "ieri" și luați începutul zilei de la "Ieri"

Începând cu anul străzii \u003d începutul anului - 24 * 60 * 60; // altă modalitate - Luați 24 de ore - 24 (ore) * 60 (sa dovedit a fi procesul-verbal) * 60 (secunde)

Lucrul cu datele 1c - momentul timpului

Momentul de timp este o reprezentare a datei prelungite aplicabile documentelor (și în conformitate cu registrele).

Este necesar să comparați momentul documentelor dacă data și ora documentelor sunt aceleași. În consecință, acesta poate fi utilizat la selectarea în interogări.

Momentul de timp poate fi obținut din document în următoarele moduri:
// Metoda 1.
MOUDIWIREMIRDISCOUMENT \u003d Rolul de documente. Imetrii ();

De asemenea, puteți compara data timpului cu data / ora:
Momenyworneytalon \u003d Ora nouă (retribuție (TATT curent ());
Dacă un document ROLL.Momenartiy (). Comparați (Momentwornyetalon) \u003d -1 atunci
Raport ("documentul introdus mai devreme decât astăzi");
Încheiat;
// Dacă documentul este introdus de data de astăzi la ora 00:00:00, este încă introdus - astăzi

Lucrul cu datele 1C - formatarea datei

Cu o parte destul de mare, este nevoie să lucrați cu variabile de tip "Data". În acest articol, vom analiza principalele tehnici - transmiterea datei curente, verificarea unei valori goale, o dată arbitrară.

La scrierea cererilor, este adesea necesară compararea datelor cu data curentă. În limba încorporată 1c există un flux de flux (). Vă permite să determinați ora și data curentă pe computer. Pentru activitatea operațiunilor cu data curentă, trebuie să transmiteți solicitarea valorii acestei funcții ca parametru.

Mai jos este o cerere care selectează toate fișierele atașate la rapoartele Advance de la data creării în prezent:

Exemplu \u003d o nouă cerere;
Suferință. White \u003d "
| Selectați
| AdvanceTuppprage Fișier de sunet. Link
| Este.
| Manual. Apendice Failyefilefut-Fileflyls.
| Unde.
| AdvanceTuppucuraj File. Date.< &ТекДата»;
Aplicarea parametrului de instalare ("tekdata", actualdat ());

Data arbitrară

Funcția de mai sus vă permite să comparați și, prin urmare, să produceți selecție în orice perioadă. Această metodă vă permite să specificați selecția dificilă în interogare fără a utiliza parametri suplimentari.

Rețineți că utilizând această caracteristică în exemplul de mai sus, am trecut ca parametri de intrare doar trei numere (an, lună, zi). Ultimele trei (oră, minut, al doilea) nu sunt obligatorii și în absența înlocuirii cu "0", adică începutul zilei.

În acest exemplu Toate dosarele atașate la rapoartele Advance vor fi primite până la sfârșitul anului 2016. În acest sens, vom îndrepta ora, minutul și al doilea pentru a compara timpul "31 decembrie 2016 23:59:59".

ALEGE
AdvanceTuppprage Fișier de sunet. Link
DE
Manual. OfficeThisfileyfiles ca avans
UNDE
AdvanceTuppucuraj File. Date.< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Data goală

Conduceți variabila pentru a verifica dacă conține data neplăcută în sine cea mai simplă comparație. În acest exemplu, folosim cererea, alegeți toate încasările de numerar pe P / C, care nu au finalizat data de intrare.