Obțineți data curentă 1s 8.3

19.11.2019 Sfat

Tipul „Date” din 1C este unul dintre cele 4 tipuri principale de date, împreună cu număr, șir și boolean. Datele sunt omniprezente în configurații - este imposibil să evitați lucrul cu acest tip de date în timpul dezvoltării. Prin urmare, este mai bine să începeți să scrieți interogări înțelegând deja cum să procesați datele, ce opțiuni există pentru a lucra cu acestea și cum sunt stocate. Să ne uităm la exemple cu toate nuanțele de scriere a interogărilor cu date diferite.

Exemple de lucru cu date în interogări 1C

În primul rând, trebuie să introduceți data în cerere în formatul cerut- cu sau fără timp. Există mai multe moduri de a finaliza această sarcină:

  1. Treceți prin parametru. Puteți obține numai data curentă a sesiunii folosind această metodă;
  2. Obțineți data în interogare din câmpul de selecție;
  3. Convertiți din valori numerice utilizând funcția DATETIME().

Cea mai comună sarcină atunci când lucrați cu documente este verificarea unei date goale într-o solicitare 1C. În acest caz, este mai ușor să compari o variabilă sau un câmp cu o dată goală, care se obține folosind funcția DATETIME(1,1,1):

DATETIME (1, 1, 1)

Folosind o comandă similară, puteți obține o dată și o oră arbitrară într-o solicitare. Mai mult, ele pot fi specificate cu o precizie de până la o secundă prin specificarea a 6 numere ca parametri. Dacă sunt folosite doar 3 numere, atunci orele, minutele și secundele vor fi setate la 0 (începutul zilei). De exemplu, trebuie să selectăm documente pentru primele 10 zile ale lunii ianuarie 2018 în cerere:

SELECTAȚI Chitanța la contul curent. Conectați AS Link FROM Document. Chitanța la contul curent AS Chitanța la contul curent WHERE Chitanța la contul curent. Data BETWEEN DATETIME(2018, 1, 1, 0, 0, 0) AND DATETIME(2018, 1, 10, 23, 59, 59)

Într-o interogare în limbajul 1C încorporat, nu puteți doar să selectați diverse câmpuri și să primiți parametri. Există multe funcții care facilitează formatarea datelor pentru o anumită sarcină. Dacă lucrați adesea cu date într-o interogare, atunci ar trebui să cunoașteți aceste comenzi:

  • ÎNCEPUT DE PERIOADA. Parametrii indică data și perioada de timp în contextul cărora este necesar să se obțină începutul datei. Folosit pentru a converti o dată într-un format atemporal. Pentru a face acest lucru, trebuie să setați al doilea parametru - „ZIUA”;
START OF PERIOD(,) START OF PERIOD(&Data, ZI) perioada>data>
  • SFÂRȘIT DE PERIOADA. O comandă similară care returnează ultima dată în termeni de unități specificate în parametri;
  • ADDKDATE. Vă permite să obțineți o dată mai mare cu un număr specificat de unități de timp specificate. Parametrii funcției includ data, unitatea de timp și numărul;
ADDKDATE(,) ADDKDATE(&Data, DAY, 10) cantitate>tip>data>
  • DATA DIFERENTATA. Obține diferența dintre date în unitățile specificate;
DATA DIFERENTĂ (,) DATA DIFERENTĂ (&Data1, &Data2, ZI) tip>data2>data1>
  • ZI A SĂPTĂMÂNII. Returnează numărul de serie al uneia dintre zilele săptămânii.

Folosind corect aceste funcții, dezvoltatorul poate rezolva probleme destul de nebanale. De exemplu, obținerea numelui zilei săptămânii datei curente într-o solicitare ca șir:

SELECTAȚI CÂND ZIUL SĂPTĂMÂNII(&CurrentDate) = 1 APOI „Luni” WHENDDAYDAY(&CurrentDate) = 2 UP „Marți” WHENDDAY OF THE WEEK(&CurrentDate) = 3 UP „Miercuri” WHENDDAYDAY(&CurrentDate) = WHENDDAY”THEWEEKS” (&CurrentDate) = 5 APOI „Vineri” CÂND ZIUA SĂPTĂMÂNII(&CurrentDate) = 6 APOI „Sâmbătă” ELSE „Duminică” Sfârșitul

Convertirea tipurilor într-o interogare 1C dintr-un număr sau șir într-o dată este o sarcină care necesită multă muncă. Puteți obține o dată din numere folosind funcția DATETIME, dintr-un șir - combinând funcția SUBSTRING și construcția SELECT WHEN THEN ELSE. Pe baza acestui lucru, dezvoltatorii preferă să obțină data de la alte tipuri din modul și să o transmită cererii folosind un parametru. Din păcate, acest lucru nu este întotdeauna fezabil, așa că trebuie să modificați formatul datei din cerere.

Este posibil să specificați data într-o cerere 1C ca parametru pentru obținerea datelor din tabele de registru virtual. Acest rol poate folosi și toate funcțiile de mai sus. Dar aici este important să nu permiteți unei date goale dintr-o cerere 1C să afecteze rezultatul final al executării codului, așa că trebuie făcută o verificare.

Destul de des este nevoie să lucrați cu variabile de tip „Date”. În acest articol ne vom uita la tehnicile de bază - trecerea datei curente, verificarea valoare goală, dată arbitrară.

Când scrieți interogări, de multe ori trebuie să comparați datele cu data curentă. Limbajul 1C încorporat are funcția CurrentDate(). Vă permite să determinați ora curentăși data de pe computer. Pentru a efectua operațiuni cu data curentă, trebuie să treceți valoarea acestei funcții ca parametru la cerere.

Mai jos este o interogare care selectează toate fișierele atașate rapoartelor de cheltuieli cu o dată de creare până în prezent:

ExampleRequest = Solicitare nouă;
Exemplu Request.Text = "
|SELECT
| AdvanceReportAttachedFiles.Link
|DIN
| Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
|UNDE
| AdvanceReportAttachedFiles.Date< &ТекДата»;
Exemplu Request.SetParameter("CurrentDate", CurrentDate());

Data personalizată

Funcția discutată mai sus vă permite să comparați și, prin urmare, să faceți o selecție pentru orice perioadă. Această metodă vă permite să specificați o selecție strictă în cerere fără a utiliza parametri suplimentari.

Vă rugăm să rețineți că atunci când utilizați această funcție în exemplul de mai sus, am trecut doar trei numere (an, lună, zi) ca parametri de intrare. Ultimele trei (oră, minut, secundă) sunt opționale și, dacă lipsesc, sunt înlocuite cu „0”, adică începutul zilei.

În acest exemplu Vor fi primite toate dosarele atașate rapoartelor de cheltuieli până la sfârșitul anului trecut 2016. În acest sens, vom indica ora, minutul și secunda pentru a compara punctul de timp „31 decembrie 2016 23:59:59”.

ALEGE
AdvanceReportAttachedFiles.Link
DIN
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
UNDE
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Data goală

Cel mai simplu mod de a verifica o variabilă pentru a vedea dacă conține o dată goală este comparație obișnuită. În acest exemplu, vom folosi o interogare pentru a selecta toate chitanțele Bani la conturile la care data de intrare nu este completată.

Tip: Număr; Data de; boolean. Valoarea care trebuie formatată.<ФорматнаяСтрока>(opțional) Tip: șir. Un șir de format este o valoare de șir care include opțiuni de formatare. Opțiunile de formatare sunt listate separate prin simbolul „;”. Prezența unui parametru înseamnă că formatarea diferă de cea standard. Dacă parametrul nu este specificat, atunci acesta este aplicat formatare standard, care corespunde practic conversiei unei valori într-un șir. Cu toate acestea, pentru valorile de tip Număr și Data, valoarea implicită (0 și, respectiv, 01/01/0001 00:00:00) va returna un șir gol. Fiecare parametru este specificat de numele parametrului, simbolul „=" și valoarea parametrului. Valoarea parametrului poate fi specificată în format simplu sau ghilimele duble. Acest lucru este necesar dacă valoarea parametrului conține caractere utilizate în sintaxa șirurilor de format. Caracterele arbitrare pot fi specificate în interiorul valorii parametrului, care va fi afișat așa cum este la generarea șirului rezultat. În acest fel, de exemplu, puteți specifica separatorii de oră, minut și secundă atunci când formatați ora. Dacă aceste caractere se potrivesc cu valorile șirurilor de format, ele trebuie să fie incluse între ghilimele simple. Numele și valorile parametrilor șirului de format: L (L) - numele limbii, țara pentru care se va efectua formatarea standard. Numele de limbi disponibile sunt situate după descrierea șirului de format. ND - numărul total de zecimale afișate atât pentru părțile întregi, cât și pentru părțile fracționale. Numărul original este rotunjit în conformitate cu regulile de rotunjire Okr15as20. Dacă acest parametru este specificat, atunci pentru a afișa partea fracțională a unui număr, este necesar să specificați parametrul NPV, altfel partea fracțională nu va fi afișată. NFD - numărul de zecimale din partea fracțională. Numărul original este rotunjit în conformitate cu regulile de rotunjire Okr15as20. ChS (NS) - deplasarea cifrelor: pozitiv - împărțire, negativ - înmulțire. Cu alte cuvinte, aceasta înseamnă că numărul inițial va fi înmulțit sau împărțit cu 10*C, unde C este valoarea absolută a parametrului. NDS este un simbol care separă părțile întregi și fracționale. CHRG (NGS) este un simbol separator de grup pentru o parte întreagă a unui număr. Dacă utilizați un șir gol ca delimitator, atunci delimitatorul va fi caracterul spatiu de nerupere. NZ (NZ) este un șir care reprezintă valoarea zero a unui număr. Dacă nu este specificat, atunci este reprezentat ca un șir gol. Dacă este specificat „CHN=", atunci sub forma „0”. Nu este utilizat pentru câmpurile de introducere numerică. CHN (NLZ) - dacă ar trebui să apară zerouri de început. Valoarea acestui parametru nu este specificată; prezența parametrului în sine determină ieșirea zerourilor de început. CHG (NG) - ordinea grupării cifrelor unui număr. Valorile sunt numere, separate prin virgule, indicând numărul de cifre grupate de la dreapta la stânga. Doar primele două numere au sens. Prima dintre acestea indică gruparea primară, adică cea care va fi folosită pentru cifrele cele mai puțin semnificative ale părții întregi a numărului. Dacă al doilea număr nu este specificat, vor fi grupate doar cifrele cele mai puțin semnificative. Dacă 0 este specificat ca al doilea număr, atunci pentru toate cifrele părții întregi a numărului se va aplica valoarea specificată pentru gruparea primară. Dacă o altă valoare decât 0 este utilizată ca al doilea număr, atunci această valoare va fi utilizată pentru a grupa toate cifrele, cu excepția celor mai puțin semnificative deja grupate. CHO (NN) - performanță numere negative. 0 (0) — un șir ca „(1,1)”; 1 (1) — un șir ca „-1,1”; 2 (2) — un șir de forma „- 1,1”; 3 (3) — un șir de forma „1,1-“; 4 (4) — un șir de forma „1,1 -“. DF (DF) - format de dată. d (d) — ziua lunii (în cifre) fără zero înainte; dd (dd) — ziua lunii (în cifre) cu zero la început; ddd (ddd) - nume scurt zi a săptămânii *); dddd (dddd) - numele complet al zilei săptămânii *); М (M) — numărul lunii (în cifre) fără zero înainte; MM (MM) - numărul lunii (în cifre) cu zero înainte; MMM (MMM) - numele scurt al lunii *); MMMM (MMMM) - numele complet al lunii *); k (q) - numărul trimestrului din an; g (y) — numărul anului fără secol și zero înainte; yy (yy) - numărul anului fără un secol cu ​​zero la început; aaaa (aaaa) - numărul anului cu secolul; h (h) — oră în versiunea de 12 ore fără zerouri de început; hh (hh) — oră în versiunea de 12 ore cu zero la început; H (H) — oră în format de 24 de ore fără zerouri de început; HH (HH) — oră în modul de 24 de ore cu un zero la început; m (m) — minut fără zero înainte; mm (mm) — minut cu zero înainte; s (s) — secundă fără zero înainte; ss (ss) — secunda cu zero înainte; bb (tt) - afișați jumătate de zi AM/PM (valid numai pentru limbile de configurare care acceptă opțiunea de afișare a orei de 12 ore). Notă: *) - nu este utilizat pentru șirul de format al câmpului de introducere a datei. DLF este un format de dată local. Specifică opțiunea de afișare a părților date. D (D) - data (în cifre); DD (DD) - dată lungă (lună în cuvinte); B (T) - normă întreagă, data poate fi combinată cu ora; DT - data ora. Exemplu: expresia Format('20051120140323',"DLF=DDV") are valoarea "20 noiembrie 2005 14:03:23". Important! Ordinea opțiunilor șirurilor de format pentru DLF<дата + время>(DV sau DDV) nu poate fi schimbat. DP (DE) - un șir care reprezintă o dată goală (de exemplu, Format('00010101000000' ,"DP=""empty date""") va returna șirul "empty date"). BL (BF) este un șir care reprezintă valoarea logică False. BI (BT) este un șir care reprezintă valoarea logică Adevărat. Notă. Utilizarea parametrilor pentru câmpul de intrare: parametrul DP (DE) nu este utilizat; parametrul DLF este utilizat numai cu valorile D (D), B (T) și DV (DT). Valoare returnată: Tip: șir. Șirul rezultat din formatarea valorii transmise. Descriere: generează o reprezentare ușor de citit a valorilor. Util pentru utilizare în rapoarte și alte afișări vizuale de valori. Disponibilitate: Client slab, client web, server, client gros, îmbinare exterioară , aplicație mobilă (client), aplicație mobilă (server). Lista limbilor: af Afrikaans af_NA (af_NA) Afrikaans (Namibia) af_ZA Afrikaans (Africa de Sud) am Amharic am_ET Amharic (Etiopia) ar Arabă ar_AE Arabă (Emiratele Arabe Unite) ar_BH Arabă (Bahrain) ar_DZ Arabă (Algeria) ar_EG Arabă (Egypt) ) ar_IQ arabă (Irak) ar_JO arabă (Iordania) ar_KW arabă (Kuweit) ar_LB arabă (Liban) ar_LY arabă (Libia) ar_MA arabă (Maroc) ar_OM arabă (Oman) ar_QA arabă (Qatar) ar_SA arabă (Arabia Saudită) ar_SD arabă ( Sudan ) ar_SY Arabic (Siria) ar_TN Arabic (Tunisia) ar_YE Arabic (Yemen) as Assamese as_IN Assamese (India) az Azzer az_AZ Azerbaidjan (Azerbaidjan) az_Cyrl Azerbaidjan (chirilic) az_Cyrl_AZ Azerbaidjan (chirilic, Azerbaidjan) A_Latinz azerbaigian (Chirilic, Azerbaidjan) Azerbaidjan ( Latină, Azerbaidjan) be Belarusian be_BY Bieloruză (Belarus) bg Bulgară bg_BG Bulgară (Bulgaria) bn Bengali bn_IN Bengali (India) ca Catalană ca_ES Catalană (Spania) cs Cehă cs_CZ Cehă (Republica Cehă) cy Welsh cy_GB Welsh (Regatul Unit) da daneză da_DK daneză (Danemarca) de germană de_AT germană (Austria) de_BE germană (Belgia) de_CH germană (Elveția) de_DE germană (Germania) de_LI (de_LI) germană (Liechtenstein) de_LU germană (Luxemburg) el greacă el_CY (el_CY) greacă ( Cipru) el_GR Greek (Greece) ro English en_AU English (Australia) en_BE English (Belgia) en_BW English (Botswana) en_BZ (en_BZ) English (Belize) en_CA English (Canada) en_GB English (UK) en_HK English (Hong Kong, (Special) Administrative Region) , China)) en_IE Engleză (Irlanda) en_IN Engleză (India) en_JM (en_JM) Engleză (Jamaica) en_MH (en_MH) Engleză (Insulele Marshall) en_MT Engleză (Malta) en_NA (en_NA) Engleză (Namibia) en_NZ Engleză ( Noua Zeelandă) en_PH Engleză (Filipine) en_PK Engleză (Pakistan) en_SG Engleză (Singapore) en_TT (en_TT) Engleză (Trinidad și Tobago) en_US Engleză (Statele Unite ale Americii) en_VI Engleză (Insulele Virgine SUA) en_ZA Engleză (Africa de Sud) en_ZW Engleză (Zimbabwe) es Spaniolă es_AR Spaniolă (Argentina) es_BO Spaniolă (Bolivia) es_CL Spaniolă (Chile) es_CO Spaniolă (Colombia) es_CR Spaniolă (Costa Rica) es_DO Spaniolă (Republica Dominicană) es_EC Spaniolă (Ecuador) es_ES Spaniolă (Spania) es_GT Spaniolă (Guatemala) es_HN Spaniolă (Honduras) es_MX Spaniolă (Mexic) es_NI Spaniolă (Nicaragua) es_PA Spaniolă (Panama) es_PE Spaniolă (Peru) es_PR Spaniolă (Puerto Rico) es_PY Spaniolă (Paraguay) es_SV Spaniolă (El Salvador) es_US Spaniolă (Statele Unite) of America) es_ UY Spaniolă (Uruguay) es_VE Spaniolă (Venezuela) et Estonă et_EE Estonă (Estonia) eu Bască eu_ES Bască (Spania) fa Persană fa_AF Persană (Afganistan) fa_IR Persană (Iran) fi Finlandeză fi_FI Finlandeză (Finlanda) fo Feroeză fo_FO Faroese (Insulele Feroe) fr Franceză fr_BE Franceză (Belgia) fr_CA Franceză (Canada) fr_CH Franceză (Elveția) fr_FR Franceză (Franța) fr_LU Franceză (Luxemburg) fr_MC (fr_MC) Franceză (Monaco) fr_SN (fr_SN) Franceză (Senegal) ga Irlandeză ga_IE Irish (Irlanda) gl Galician gl_ES, Galician (Spania) gu Guarati gu_IN Guarati (India) he Hebrew he_IL Hebrew (Israel) hi Hindi hi_IN Hindi (India) hr Croată hr_HR Croată (Croația) hu Maghiară hu_HU Maghiară (Ungaria) hy Armenian hy_AM Armenian (Ar menia) hy_AM_REVISED Armenian (Armenia, REVISED) id Indonezian id_ID Indonezian (Indonezia) este islandez is_IS Icelandic (Islanda) it Italian it_CH, Italian (Elveția) it_IT Italian (Italia) ja Japoneză ja_JP Japoneză (Japonia) ka Georgian ka_GE Georgiană (Georgia) kk Kazahă kk_KZ Kazahstan (Kazahstan) kl Groenlandeză kl_GL Groenlandeză (Groenlanda) kn Kannada kn_IN Kannada (India) ko Coreeană ko_KR Coreeană ( Coreea de Sud ) kok Konkani kok_IN Konkani (India) ky Kirghiz ky_KY Kârgâz (Kirgâzstan) lt Lituaniană lt_LT Lituaniană (Lituania) lv Letonă lv_LV Letonă (Letonia) mk Macedoneană mk_MK Macedoneană (Macedonia) m Malayal Maraamthi (Macedonia) ml Malayal Maraamthi (Macedonia) ml Malayal Maraamthi (India) ) ms Malay ms_BN Malay (Brunei) ms_MY Malay (Malezia) mt Maltese mt_MT Malteză (Malta) nb Norvegiană Bokmål nb_NO Norvegiană Bokmål (Norvegia) nl Olandeză nl_BE Olandeză (Belgia) nl_NL Olandeză (Olanda) nn Norvegiană Nynorsk (Norvegia) Nh_NO Norvegiană Norvegiană (Norvegia) ) om Oromo (Afan) om_ET Oromo (Afan) (Etiopia) om_KE Oromo (Afan) (Kenya) sau Oriya or_IN Oriya (India) pa Punjabi pa_IN Punjabi (India) pl poloneză pl_PL poloneză (Polonia) ps Pashto (Pushto) ps_AF Pashto (Pushto ) (Afganistan) pt Portugheză pt_BR Portugheză (Brazilia) pt_PT Portugheză (Portugalia) ro Română ro_RO Română (România) ru Rusă ru_RU Rusă (Rusia) ru_UA Rusă (Ucraina) sk Slovacă sk_SK Slovacă (Slovacia) sl Slovenă sl_SI Slovenă (Slov) so Somalia so_DJ Somalia (Djibouti) so_ET Somalia (Etiopia) so_KE Somalia (Kenia) so_SO Somalia (Somalia) sq Albanez sq_AL Albanez (Albania) sr Serb sr_BA (sr_BA) Sârbă (Bosnia și Herțegovina) Sârbă (Bosnia și Herțegovina) Muntenegru (Bosnia și Herțegovina) Muntenegru S. Sârbă (chirilă) sr_Cyrl_BA (sr_Cyrl_BA) Sârbă (chirilă, Bosnia și Herțegovina) sr_Cyrl_CS Sârbă (chirilă, Serbia și Muntenegru) sr_Cyrl_ME (sr_Cyrl_ME) Sârbă (Cyrl_ME) Sârbă (Cyrl_Cyrl_ME) Sârbă (Cyrl_Cyrl_RS_Muntenegru) ) Sârbă (chirilic, Serbia) sr_Latn Sârbă (latină) sr_Latn_BA ( sr_Latn_BA) Sârbă (latină, Bosnia și Herțegovina) sr_Latn_CS Sârbă (latina, Serbia și Muntenegru) sr_Latn_ME (sr_Latn_ME) Sârbă (latină, Muntenegru) sr_Latn_RS (sr_ME) Sârbă (Latina, Serbia și Muntenegru) (Muntenegru) sr_RS (sr_RS ) Sârbă (Serbia) sv suedeză sv_FI suedeză (Finlanda) sv_SE suedeză (Suedia) sw Swahili sw_KE Swahili (swahili) sw_TZ Swahili (Tanzania) ta Tamil ta_IN Tamil (India) te Telugu te_IN Telugu Thai (India) TH Thai Thai (India) (Thailanda) ti Tigrinya ti_ER Tigrinia (Eritreea) ti_ET Tigrinia (Etiopia) tr Turkish tr_TR Turkish (Turcia) uk Ukrainian uk_UA Ukrainian (Ucraina) ur Urdu ur_PK Urdu (Pakistan) uz Uzbek uz_Cyrl Uzbek (chirilic) uz_Cyrl_UZil Uzbek (Uz_Cyrl_UZil) ) uz_Latn Uzbek ( latină) uz_Latn_UZ Uzbek (latină, Uzbekistan) uz_UZ Uzbek (Uzbekistan) vi vietnameză vi_VN vietnameză (Vietnam) zh chineză zh_CN chineză (China) zh_Hans chineză (Hans) zh_Hans_CN chineză (Hans) zh_Hans_CN Chineză (Hans_CN) chineză (Hans_CN) ) zh_Hant China skiy ( Hant) zh_Hant_HK Chineză (Hant, Hong Kong (Regiune special administrativă, China)) zh_Hant_MO Chineză (Hant, Macao (Regiune special administrativă, China)) zh_Hant_TW Chineză (Hant, Taiwan) zh_HK Chineză (Hong Kong) Regiune administrativă, China) Administrație, China)) zh_MO Chineză (Macau (Regiune administrativă specială, China)) zh_SG Chineză (Singapor) zh_TW Chineză (Taiwan)