Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • 1c operatori logici. Operații logice (întreprindere 1c)

1c operatori logici. Operații logice (întreprindere 1c)

Acest articol este un fel de răspuns la publicația „De ce 1C este rău și de ce programatorii 1C sunt atât de displacuți”. Fac programare 1C de mulți ani și vreau să spun că oamenii ne privesc cu depărtare tocmai din cauza unor astfel de autori de articole. Să ne ocupăm de ceea ce avem acum în ordine.

Platformă

Avem o platformă și configurații scrise pentru ea.

Actualizarea platformei aduce funcționalități suplimentare, elimină o serie de erori și, în mod natural, aduce unele. Practic, după părerea mea personală, să vă văitați de faptul că, după actualizarea platformei, munca în birou s-a oprit nu este corect. În primul rând, copiile de rezervă ale bazelor de date înainte de actualizare ar trebui să vă scutească de problemele cu bazele de date. Ei bine, nimeni nu a anulat oportunitatea de a reveni la vechea platformă. Este ca și cum ai da vina pe Microsoft sau pe autorii de software gratuit pentru faptul că, după lansarea patch-ului/actualizării, totul a mers, iar ideea de a face o copie a datelor nu ți-a trecut prin cap. Da, acum există probleme cu cheile software. Dar puteți folosi hardware (sunt puțin mai scumpe), sau pe durata lucrărilor de întreținere pentru a restabili capacitatea de lucru a biroului, puteți instala patch-uri non-ortodocși care vor ajuta temporar la rezolvarea problemei cu lipsa/inoperabilitatea cheii. . Munca unui birou de 30-40 de persoane este mai importantă.

Configurații

Aici criticii pot hoinări, dar haideți să o luăm în ordine.

Să presupunem că avem o organizație comercială obișnuită și funcționalitatea configurației „Trade Management 10.3 / 11” este suficientă pentru noi.

Aici avem două opțiuni pentru utilizarea acestui produs software:

1. Utilizați numai funcționalitatea de bază și fiți actualizat lunar atunci când sunt lansate versiuni noi ale configurației.
2. Nu actualizați deloc și, dacă este necesar, adăugați funcționalitatea de care avem nevoie.

De fapt, a doua opțiune este cea mai folosită. Configurația este setată, ajustată și pe toată durata de viață a organizației, practic nu este actualizată. Maximum - formularele tipărite sunt editate conform reglementărilor. Practic asta este. De ce este în mod constant chinuit și transferul modificărilor de la lansare la lansare nu este clar.

Desigur, puteți argumenta și spune că organizația are, de exemplu, contabilitate. Luați în considerare și această opțiune.

Departamentul de contabilitate trebuie actualizat în mod constant din cauza schimbărilor în legislație, a ratelor de impozitare și a fondurilor de pensii și a altor eforturi zilnice ale contabililor.

Pentru a transfera date între comerț și contabilitate, se folosesc de obicei reguli de schimb. Acesta este un fel de regulă scrisă în xml care descrie ce obiecte de date sunt descărcate, cum sunt încărcate; de asemenea, puteți specifica procesarea suplimentară înainte, după, în momentul încărcării/descărcării. Dacă configurația noastră comercială este neschimbată, atunci nu atingem regulile de descărcare (cu rare excepții, dacă brusc au apărut modificări fundamentale). Nici regulile de încărcare nu le vom schimba des. Faptul de primire/vânzare a mărfurilor va fi întotdeauna transferat. Dar procedura de calcul a taxelor și a altor lucruri va fi deja calculată în departamentul de contabilitate actualizat și acest lucru nu va afecta în niciun fel configurația tranzacționării.

Mi se pare o prostie să reamintesc, dar tot îndrăznesc. Merită întotdeauna să faceți copii de siguranță înainte de actualizări și modificări. Ei bine, trebuie să recunoașteți, este o prostie să vă văitați că, după actualizare, totul s-a stricat și toată compania este mizată. pentru că nu există nicio modalitate de a vinde, de a scrie sau de a suna. Toate contactele, conturile și informațiile din baza de date.

Utilizarea 1C în diverse domenii de afaceri

Da, 1C este un monopolist pe piața de software concepută pentru a automatiza contabilitatea și livrarea situațiilor financiare.

Dacă vorbim de segmentul de afaceri mici, atunci pentru contabilitate în majoritatea companiilor, puteți folosi aproape orice program care este puțin mai complicat decât tabelele pivot din Excel. Contabilitate bunuri/servicii la bucata, contabilitate debite/creditori, contabilitate salarii. Trimiterea rapoartelor este posibilă prin programe terțe, în care cifrele finale sunt pur și simplu introduse.
Dacă afacerea este mai mare, atunci concurenții 1C sunt Navision, Oracle, în exemple foarte mari este SAP.

Dar aici ne confruntăm cu o altă specificitate. Legislația noastră se schimbă destul de des. Iar cei străini, dacă sunt deja implicați în menținerea relevanței produselor lor software, nu țin întotdeauna pasul cu schimbările. Deoarece numărul de implementări ale „programelor NU 1C” este mic, costul de proprietate devine ridicat. Este dificil să găsești un specialist care să actualizeze rapid (în funcție de disponibilitatea unei actualizări) sau să personalizeze / configura un produs software existent.

1C are avantaje incontestabile prin conectarea echipamentelor comerciale (cântare, scanere, terminale, tablouri de bord). Mai mult, în configurațiile standard, acest lucru se face la nivel de utilizator. Vom adăuga posibilitatea de a conecta procesoare externe și formulare imprimabile pentru a extinde funcționalitatea, a primi rapoarte suplimentare fără a face modificări în configurație. Drept urmare, dacă îl abordați corect, atunci nu are rost să intrați „în interiorul” configurației.

Un alt lucru este că este mai ușor și mai ieftin să introduceți o cârjă, care va cădea după actualizare și să puneți clientul pe ac. Apoi udă constant 1C și spune că așa de des îl eliberează și cu aceeași frecvență vin la client și ia niște bani de la el.

Mi se pare că principalul motiv pentru atitudinea negativă față de 1C este că codul este open source. Nimeni nu a văzut cum a fost scris Word sau Navision și nimeni nu s-ar duce acolo să-și adauge butoanele, care vor acționa complet diferit de ceea ce intenționau dezvoltatorii. Este o prostie să scriu că totul este actualizat, chiar și ceea ce nu folosesc. Nu actualizați modulul care este responsabil pentru marcajele din browser, nu îl folosesc. Sau anteturile și subsolurile din Word nu sunt deloc necesare, eliminați-le din actualizare. Dacă nu vă place, nu actualizați sau citiți ce s-a schimbat la actualizare.

Voi adăuga pe cont propriu că nu sunt un reprezentant al firmelor francizate sau un partener. Sunt angajat în automatizarea contabilității pentru 1C de mai bine de 7 ani. Dacă este interesant, vă pot spune mai detaliat despre complexitățile contabilității în realitățile timpului nostru.

Atenţie! Aceasta este o versiune introductivă a lecției, ale cărei materiale pot fi incomplete.

Conectați-vă ca student

Conectați-vă ca student pentru a accesa materialele școlare

Limbajul de programare intern 1C 8.3 pentru programatori începători: expresii logice simple în 1C

În ultima lecție, am învățat cum să dăm nume și să le introducem valorile de la utilizator.

Câștigă putere și răbdare. Lecțiile #5 și #6 vor fi dificile, dar foarte importante pentru înțelegerea ulterioară a programării în 1C. Prin urmare, dacă măcar ceva rămâne de neînțeles sau nu este dezvăluit - recitiți, meditați, puneți întrebări.

Expresii booleene simple

Astăzi, la tipurile de date deja studiate (șir, număr și dată) vom adăuga încă unul - logic tip de. Poate lua doar două valori: Adevărat sau Minciună.

Valoare booleană ( Adevărat sau Minciună) este rezultatul unei expresii logice.

O expresie booleană este o expresie construită folosind operații de comparare. Puteți compara numere, date, șiruri și alte date. Citiți o versiune introductivă a lecției, sunt găsite lecții complete. Putem spune despre o expresie logică că este adevărată ( Adevărat) sau incorect ( Minciună).

Operațiile de comparare sunt după cum urmează:

Cred că este intuitiv clar ce înseamnă fiecare dintre operațiuni.

Citiți, de exemplu, așa:

  • 1 = 1 ("unu este unul").
  • 4 <>5 ("patru nu este egal cu cinci")
  • 3> 1 („trei este mai mult decât unul”).

Vă atrag atenția asupra faptului că cele trei exemple de expresii logice enumerate iau valoarea Adevărat deoarece toate sunt corecte.

Să luăm un exemplu:

Sarcina numărul 14. Specificați pentru fiecare expresie booleană rezultatul acesteia - Adevărat sau Minciună.

  1. Venus = Jupiter
  2. "Venus"<>"Jupiter"
  3. 123 = 321
  4. 123 < 321
  5. 123 <= 321
  6. 123 <= 123
  7. "20000101" <> "20140101"
  8. "20000101" = "20000101"
  9. "20140101" > "20120101"
  10. 25 + 25 = 50
  11. 2 * (10 + 10) > 50
  12. „Yuri” + „Gagarin” = „Yuri Gagarin”

Încercați să răspundeți singur la toate întrebările. Citiți o versiune introductivă a lecției, sunt găsite lecții complete. Apoi verificați răspunsurile de mai jos și încercați să vă dați seama dacă ați greșit undeva.

  1. „Venus” = „Jupiter” ( Minciună, șirurile nu sunt egale între ele, dar expresia afirmă că sunt egale).
  2. "Venus"<>"Jupiter" ( Adevărat, șirurile nu sunt egale între ele, așa cum se precizează în expresie).
  3. 123 = 321 (Minciună, deoarece numerele nu sunt egale între ele, dar expresia afirmă că sunt egale).
  4. 123 < 321 (Adevărat, deoarece 123 este mai mic decât 321, după cum afirmă expresia).
  5. 123 <= 321 (Adevărat, deoarece 123 este mai mic decât 321, iar această afirmație este adevărată dacă numărul din stânga este mai mic sau egal cu cel din dreapta).
  6. 123 <= 123 (Adevărat, deoarece 123 este egal cu 123, iar această afirmație este adevărată dacă numărul din stânga este mai mic sau egal cu cel din dreapta).
  7. "20000101" <> "20140101" (Adevărat, întrucât data din stânga 01/01/2000 nu este egală cu 01/01/2014, așa cum se menționează în expresie).
  8. "20000101" = "20000101" (Adevărat, întrucât data din stânga 01/01/2000 este egală cu 01/01/2000, după cum se precizează în expresie).
  9. "20140101" > "20120101" (Adevărat, din moment ce 1 ianuarie 2014 este mai mare decât 1 ianuarie 2012, după cum se precizează în expresie).
  10. 25 + 25 = 50 (Adevărat, deoarece 25 plus 25 este într-adevăr egal cu cincizeci, după cum spune expresia).
  11. 2 * (10 + 10) > 50 (Minciună, deoarece rezultatul expresiei din stânga este 40 și 40 este mai mic decât 50, deși enunțul spune altceva).
  12. „Yuri” + „Gagarin” = „Yuri Gagarin” ( Adevărat, deoarece suma liniilor „Yuri” și „Gagarin” formează o singură linie „Yuri Gagarin”, care este egală cu linia din dreapta, așa cum se precizează în expresie).

Să-l facem să contezeun calculator

Dar, ce considerăm noi înșine „adevărat” sau „fals”? La urma urmei, avem un computer la îndemână! Să-i atribuim această sarcină și, în același timp, să ne verificăm.

De exemplu, să verificăm expresia 2 * (10 + 10)> 50.
Pentru a face acest lucru, vom scrie următorul program:

Raport (2 * (10 + 10)> 50);

Dacă îl rulăm, computerul va returna „Nu”, ceea ce înseamnă că rezultatul este Minciună.

Cum a calculat el această expresie?

  1. Computerul a văzut comanda Raport.
  2. M-am uitat la ce fel de parametru îi transmitem acestei comenzi.
  3. Am văzut că expresia booleană 2 * (10 + 10)> 50 a fost specificată ca parametru.
  4. A început să calculeze rezultatul unei expresii logice.
  5. Am văzut că expresia constă din partea stângă 2 * (10 + 10), partea dreaptă 50 și un semn mai mare între ele.
  6. Am numărat rezultatul din partea stângă și am găsit că este patruzeci.
  7. M-am uitat din nou la expresia, doar într-o formă simplificată 40> 50, iar din moment ce 40, desigur, este mai mic de 50, a tipărit „Nu”.

Sarcina numărul 15. Evaluați pe computer toate exemplele de expresii booleene din sarcina anterioară.

De exemplu, expresia Venus = Jupiter, a cărui valoare, după cum am aflat, este Minciună.

Raport („Venus” = „Jupiter”);

La pornire, computerul afișează valoarea „Nu”, ceea ce înseamnă: rezultatul este într-adevăr egal Minciunăși ne-am dat seama perfect noi înșine.

Soluție de referință. Mai întâi, scriem singuri codul, îl verificăm pe computer (ca toate exemplele de programe din lecții), abia apoi verificăm












1. Introducere

Limbajul programului 1C este structural-obiect. Acest limbaj poate fi numit ca un limbaj intermediar între limbaje de nivel înalt și limbaje de scripting, cum ar fi VBA.
În esență, aplicația 1C funcționează ca și cum ar fi cu două module. Primul modul este miezul sau motorul. De fapt, este un compilator care traduce codul, precum și descrierea formelor tipărite și grafice pe un ecran sau imprimantă. Al doilea modul este baza de date cu care funcționează primul modul. Ambele module sunt interconectate și nu pot funcționa independent. Al doilea modul este responsabil de accesarea bazei de date, precum și de manipularea informațiilor din baza de date.
În versiunea 7.7 1C, există 1 mecanism încorporat pentru accesarea bazelor de date și un mecanism care utilizează o interfață externă pentru accesarea bazelor de date.
Primul mecanism este accesul la baza de date în format dbf (de fapt, accesul nu la baza de date, ci la fiecare fișier individual). Versiunea de dbf utilizată este DBASE II, cu limitările și neajunsurile corespunzătoare acestei versiuni vechi.
Al doilea mecanism este accesul la o bază de date în format MS SQL Server folosind o conexiune ODBC (așa-numitul furnizor ODBC de acces la MS SQL Server), care este furnizată cu MS SQL Server. Inițial, versiunea 7.7 a fost dezvoltată pentru SQL Server 6.5 (sau mai degrabă, a fost versiunea rafinată 7.5, care a funcționat pe versiunile anterioare ale SQL Server). La momentul scrierii acestui articol, versiunea actuală 1C (rel 7.70.027) acceptă versiunile SQL Server 6.5, 7.0. SQL2000, nu există informații despre suportul pentru SQL 2005. Dar autorul a efectuat un test pentru a se conecta la SQL Server 2005 versiunea 7.70.027 și testul a eșuat. Acestea. putem presupune că versiunea 27 nu acceptă oficial SQL Server 2005 (dar puteți citi această problemă aici :).
Pentru a înțelege cum funcționează 1C, să luăm în considerare modul în care 1C stochează și cum lansează codul pentru execuție. Tot codul 1C este localizat fizic fie în fișierul 1Cv7.md, fie în rapoarte de procesare externe (* .ert) (este posibil să se încarce module și din fișiere externe, dar acesta este un caz special și nu va fi luat în considerare). Codul este rulat pentru execuție în etape. Aceasta înseamnă că codul este compilat și rulat pentru execuție după cum este necesar (sau mai degrabă, atunci când accesați un obiect sau forma unui obiect). Singura excepție este modulul global, compilarea acestuia va avea loc în momentul lansării 1C (mai precis, după inițializarea bazei de date). Restul modulelor nu sunt compilate la momentul lansării 1C, ci sunt copiate doar la accesarea acestui modul printr-un formular sau obiect. Acest lucru duce la faptul că sintaxa de control trebuie verificată de unul singur, sau trebuie să se uite la erorile de sintaxă în momentul în care aplicația rulează.

2. Structura obiectului lui 1C

În mod logic, codul 1C este stocat în module (un modul în înțelegerea limbajului 1C este un cod care este lansat pentru execuție). În 1C, toate modulele pot fi împărțite în 3 mari categorii: 1 - modul global, module de obiecte 1C, module de procesare și raportare. Din punctul de vedere al 1C, un obiect este înțeles ca o parte a setului general de entități care se află într-o anumită bază de date, care au aceleași proprietăți, au același set de metode și îndeplinesc același tip de funcții cu informații sau cu o bază de date. Trebuie remarcat faptul că nu toate obiectele 1C au module, dar, în același timp, unele obiecte au mai mult de un modul. Modulele se leagă de obicei la formulare. Din punctul de vedere al lui 1C, un formular este o fereastră cu un set de atribute și detalii. Nu toate obiectele au forme proprii, în același timp, unele obiecte au forme multiple. Aceasta este de obicei forma unui anumit element sau forma unei liste de elemente.
Trebuie remarcat faptul că 1C funcționează cu o bază de date, în timp ce unele obiecte nu sunt stocate în baza de date.
Acestea. prima clasificare a obiectelor se poate baza pe dacă informațiile despre obiecte sunt stocate în baza de date sau nu în baza de date, să numim primul tip de obiecte Informaționale, iar al doilea tip - Neinformațional. Toate obiectele informaționale sunt stocate în baza de date, în unul sau mai multe tabele. Lucrul cu obiecte informaționale presupune întotdeauna poziționarea la o anumită înregistrare din tabel care identifică obiectul. Aceasta înseamnă că pentru a accesa un astfel de obiect, trebuie să mergi cumva la înregistrarea necesară din baza de date. De obicei, pentru o astfel de tranziție, se folosesc metode 1C.
O caracteristică foarte bună a 1C este că unele dintre obiectele nou create pot fi de tipul unui obiect existent. Astfel de obiecte se numesc tipare. Acele tipuri care nu generează date pentru obiectele nou create sunt non-tip. Toate obiectele care formează tipuri sunt informaționale, adică. sunt stocate în baza de date. În înțelegerea lui 1C, obiectele care formează tipuri sunt obiecte agregate.
În același timp, în 1C există tipuri de bază care există independent de obiectele create. Aceste tipuri sunt stocate și în baza de date, dar aceste date nu sunt obiecte din punctul de vedere al 1C, ci sunt atribute ale obiectelor informaționale.
De asemenea, o clasificare importantă a obiectelor este tipificarea acestora după criteriile după care sunt împărțite chiar în descrierea bazei de date. Aceste obiecte sunt:
  • constante.
  • Carti de referinta.
  • Documentele.
  • Jurnalele de documente.
  • Enumerări.
  • Rapoarte.
  • Prelucrare.
  • Planuri de conturi.
  • Tipuri de subkonto.
  • Operațiune.
  • Cablaj.
  • Registrele.
  • Jurnalele de calcul.
  • Tipuri de calcule.
  • Grupuri de calcul.
  • Calendare.
În plus, există obiecte netipizate care nu sunt informaționale și nu sunt prezente în arborele de setări de configurare:
  • Text.
  • XBase.
  • Rezultate contabile.
  • Cablajul corect.
  • Regula de recalculare.
  • Urmare.
  • Periodic.
  • Lista de valori.
  • Tabelul Valorilor.
  • Masa.
  • Anchetă.
  • Imagine.
  • FS (sistem de fișiere).
Aproape toate tipurile de obiecte enumerate pot fi accesate în module prin funcția de creare a obiectelor CreateObject (). Structura generală a clasificărilor de obiecte descrise poate fi reprezentată sub forma următoarei matrice:
Tipuri de obiecte informație Formarea tipului CreateObject () Disponibilitatea modulelor
constante
Directoare + + + +
Documentele + + + +
Jurnalele de documente +
Enumerări +
Rapoarte +
Prelucrare +
Diagrame de cont + + + +
Tipuri de subconto +
Operațiune + + +
Cablaj + +
Registrele +
Jurnalele de calcul + +
Tipuri de calcul + +
Grupuri de așezări
Calendare +
Text +
XBase +
Rezultate contabile +
Cablajul corect + +
Regula de recalculare +
Urmare + +
Periodic +
Lista de valori +
Tabelul Valorilor +
masa +
Anchetă +
Imagine +
FS (sistem de fișiere) +
Număr +
Linia +
Data +

3. Limba 1C. Modularitate

După cum sa menționat deja, tot textul codului programului este împărțit în module.
În general, modulele pot fi structurate astfel:
Baza de date separată
Modul global.
Module de director.
Modulele Formelor listelor de directoare.
Modulul element director.
Modul de grup de director
Module de documente.
Modulul formular document.
Modul document.
Module de jurnal de documente.
Modul pentru formarea jurnalelor de documente.
Modulele planului de conturi.
Modul formular factură.
Module de formulare de liste de planuri de conturi.
Module de operare.
Modul de operare.
Module de forme de liste de operațiuni.
Module de cablare.
Module ale formelor listelor jurnalelor de tranzacții.
Module de jurnal de calcul.
Module de formulare pentru liste de jurnale de calcul.
Module de tip calcul.
Module de calcul.
Module de raportare.
Modulul formular de raportare.
Module de procesare.
Modul de procesare a formularelor.
Acestea. într-o singură bază, numai modulul global este disponibil din fiecare modul al obiectului. Toate celelalte module sunt izolate și interconectarea lor fără referire la un anumit obiect poziționat este imposibilă. Dar, în același timp, atributele (și unele dintre metodele care sunt definite ca funcții de sistem) de nivel superior sunt disponibile din fiecare modul. Trebuie remarcat faptul că funcțiile și procedurile definite de utilizator scrise nu sunt metode ale obiectelor și nu pot fi numite ca metode.
Nivelul de izolare al atributelor și variabilelor merge de jos în sus. Deci variabilele modulului global sunt disponibile în toate modulele, la fel și funcțiile și procedurile modulului global. În același timp, atributele obiectelor sunt disponibile în toate modulele acestor obiecte, dar metodele sunt împărțite în cele care sunt disponibile și nu sunt disponibile.

4. Poziția generală a modulelor de scriere

Semantica limbajului 1C este astfel încât întregul text al modulului este împărțit în operatori și comentarii. Sfârșitul operatorului este caracterul „;”. Operatorii sunt formați din expresii.

4.1 Comentarii

Comentariile din 1C sunt doar rând cu linie (nu există comentarii bloc cu bloc). un comentariu începe cu două caractere „//” și se termină cu un caracter de sfârșit de linie (adică până la sfârșitul rândului).

4.2. Nume variabile, proceduri și funcții

Numele unei variabile, proceduri definite de utilizator sau funcție poate fi orice succesiune de litere, numere și litere de subliniere „_” care începe cu o literă sau liniuță de subliniere „_”. Numele nou create nu trebuie să se potrivească cu cuvintele rezervate limbii sau cu numele procedurilor și funcțiilor existente disponibile la momentul execuției. Recunoașterea numelor de variabile, proceduri și funcții se realizează fără a ține seama de majuscule și minuscule.

4.3. Cuvinte rezervate

Următoarele Cuvinte cheie sunt rezervate și nu pot fi utilizate ca nume de variabile generate și proceduri și funcții declarate. În această variantă a limbii, fiecare dintre cuvintele cheie are două reprezentări - rusă și engleză. Reprezentarea engleză este tradițională pentru limbajele de programare. Cuvintele cheie din reprezentările rusă și engleză pot fi amestecate liber într-un singur text sursă. Cuvintele cheie nu fac distincție între majuscule și minuscule. Mai jos este o listă de cuvinte cheie în ambele opțiuni de prezentare.

Altfel, dacă

Str Lungime

Încheiați dacă

Context

Continua

Avorta

Sfârșitul procedurii

EndFunction

Un avertisment

Sfârșitul ciclului

Procedură

4.4. Structura modulului de program

Structura modulului software poate fi împărțită în următoarele secțiuni:

  • secțiunea definiție variabilă;
  • secțiunea de proceduri și funcții;
  • secțiunea programului principal.

Oricare dintre secțiuni poate lipsi dintr-un anumit modul de program.

Secțiunea definiție variabilă este plasat de la începutul textului modulului până la prima instrucțiune Procedură sau instrucțiune Funcție sau orice instrucțiune executabilă. Această secțiune poate conține numai declarații de variabile Var.

Sectiunea de proceduri si functii este plasat de la prima instrucțiune a unei instrucțiuni Procedure sau Function la orice instrucțiune executabilă din afara corpului unei proceduri sau instrucțiuni de funcție.

Secțiunea principală a programului este plasat de la prima instrucțiune executabilă în afara corpului de proceduri sau funcții până la sfârșitul modulului. Această secțiune poate conține numai instrucțiuni executabile. Secțiunea programului principal este executată în momentul în care modulul este lansat pentru execuție (vezi „Tipuri de module de program”). De obicei, în secțiunea programului principal, are sens să plasați instrucțiuni de inițializare a variabilelor cu orice valori specifice care trebuie trecute înainte de primul apel al oricăreia dintre procedurile sau funcțiile modulului.

5. Format de descriere a deversiunilor și conversii de tip

După cum sa menționat deja, semantica limbajului 1C este de așa natură încât expresiile sunt componenta principală a operatorilor. Expresiile, la rândul lor, constau din numere, șiruri sau valori de dată, operatori de limbaj încorporați, atribute și funcții asociate cu simboluri ale operațiilor aritmetice.

5.1 Tipuri de date în expresii și formatul acestora.

Să aruncăm o privire mai atentă la elementele expresiilor și la operațiile aritmetice folosite pentru a lucra cu ele.

Numerele

Numerele sunt scrise în cifre de la 0 la 9; dacă este necesar să scrieți un număr fracționar, partea întreagă este separată de partea fracțională printr-un punct „.”.
De exemplu:
45 este un număr întreg pozitiv
-12 este un număr întreg negativ
16,67 este un număr fracționar pozitiv.

Pentru a lucra cu numere, puteți utiliza operațiile aritmetice furnizate (vezi mai jos).

Datele

Datele sunt scrise ca o secvență de caractere în acest format:
„ZZ.LL.AA”
sau
„ZZ.LL.AAAA”,
Unde:
DD este ziua lunii. Trebuie scris în două cifre: dacă ziua lunii este mai mică de 9, se pune în față 0, de exemplu „02”;
MM - numărul lunii, scris tot cu două cifre;
YY (AAAA) - an, poate fi scris cu două sau patru cifre.

De exemplu: „01.01.2007”

Vă rugăm să rețineți că datele sunt indicate doar între ghilimele simple. Cu o astfel de înregistrare, secvența cu un simbol precum „01.01.2007” va fi percepută și procesată de sistemul 1C: Enterprise ca o dată, și nu ca o secvență de caractere „reprezentând” data. De ce este important acest lucru - vă vom spune mai jos.

În plus față de anumite date, există și „data goală” în limbajul încorporat. O dată goală este specificată de secvența „00.00.00”. De obicei, o dată goală este folosită pentru comparație. De asemenea, puteți obține o dată goală folosind metoda de conversie Data (0).

Notă.

Nu există niciun tip de oră în 1C, la fel cum nu există un tip de date și oră.

Valori șiruri

Valorile șirurilor sunt secvențe de caractere cuprinse între ghilimele duble sau simple. Exemplu: „Exemplu de șir”.

Dacă trebuie să specificați ghilimele într-o valoare șir, ar trebui să utilizați 2 ghilimele la rând. De exemplu, atunci când scrieți conținutul unei operații într-o formulă, o valoare șir a formei

„Șir de exemplu "" șir între ghilimele "" "

va forma un șir în conținutul operației

Exemplu de șir "șir ghilimeleu"

În exemplul considerat, într-o valoare șir:
primul ghilimele este ghilimelele de deschidere ale valorii șirului ca întreg;
2 ghilimele la rând sunt ghilimele de deschidere și în șirul rezultat sunt înlocuite cu un ghilimele;
3 ghilimele la rând este un grup format din: 2 ghilimele - ghilimelele de închidere, care sunt înlocuite cu un ghilimele în șirul rezultat și un ghilimele - ghilimelele de închidere ale valorii șirului ca întreg.

După cum arată practica, din anumite motive, indicarea ghilimelelor în valorile șirului cauzează unele dificultăți. Deși nu este nimic complicat în acest sens, trebuie doar să rețineți o regulă simplă: primele și ultimele ghilimele sunt câte un caracter, iar toate ghilimelele din interiorul lor sunt câte două caractere.

Valorile șirurilor au conceptul de „șir gol”. Un șir gol este specificat printr-o pereche de ghilimele: „”. Un șir gol are toate proprietățile unei valori „normale”, dar nu are lungime.

5.2. Operatii aritmetice

Acum să luăm în considerare operațiile aritmetice utilizate în limbajul 1C (Op - „operand”):

Cu toate acestea, utilizarea operațiilor aritmetice are anumite particularități, în funcție de tipurile de operanzi.

CU valori numerice toate operațiile aritmetice de mai sus pot fi utilizate, cu puține sau fără limitări.

Pentru valori de șir este permisă doar operația „+”, care în acest caz se numește operație concatenări (alăturarea). Această operație concatenează o valoare șir la alta.

De exemplu, rezultatul expresiei:

„Exemplu de rând” + „Ianuarie 2007”

va fi o linie

Exemplu de șir ianuarie 2007

Rețineți că valorile șirurilor sunt concatenate între ele fără modificare - lungimea valorii șirului rezultată este egală cu suma lungimilor valorilor șirurilor concatenate. Pentru ca rezultatul operației de concatenare să fie un șir „lizibil”, nu trebuie să uitați de spațiile de sfârșit și de început în șirurile unite, așa cum se face, de exemplu, în linia „Exemplu șir”.

Operația de concatenare poate concatena mai mult de două valori de șir în același timp. De exemplu, următoarea expresie este valabilă:

"Ivanov" + "" + "Ivan" + "" + "Ivanovici"

Rezultatul va fi linia

Ivanov Ivan Ivanovici

Pentru valori de tip „data” Operațiile de adunare și scădere sunt permise, dar regulile de utilizare a acestor operații sunt puțin mai complexe decât pentru numere și șiruri.

Puteți adăuga un număr la dată, de exemplu:

"02.08.2000"+2

iar rezultatul expresiei va fi o dată ulterioară primului termen cu numărul de zile egal cu cel de-al doilea termen. În acest caz, rezultatul va fi 08/04/2000 sau 4 august 2000.

"02.03.2000"-2

în acest caz, obținem o dată mai devreme decât data diminuată. De remarcat că la o astfel de creștere sau scădere a datelor se realizează tranziția corectă între luni și ani, adică se ia în considerare numărul de zile dintr-o lună, anii bisecți și așa mai departe. În exemplul nostru, rezultatul expresiei nu va fi, desigur, 00.03.2000, ci 29 iulie 2000 - 29 februarie 2000.

"02.10.2000" - "02.08.2000"

în acest caz, rezultatul va fi numărul de zile dintre scădere și scădere.

După cum ați observat evident, spre deosebire de operațiile pe numere și șiruri, atunci când se operează pe date, tipul rezultatului expresiei diferă de tipul operanzilor. Acest lucru trebuie avut în vedere atunci când scrieți formule: dacă scrieți o expresie ca cea de mai sus într-o formulă pentru a calcula data tranzacției, cel mai probabil vom primi un mesaj de eroare.

"02.08.2000" + "02.10.2000"

și nici măcar nu vom primi un mesaj de eroare, dar rezultatul unei astfel de expresii nu are sens fizic.

Pentru a avea o idee mai generală despre expresii, trebuie spus că nu numai anumite numere, șiruri sau date pot acționa ca operanzi ai operațiilor aritmetice, ci și expresii care se evaluează în numere, șiruri de caractere sau date.

De exemplu, în expresia

„Amortizare pentru” + Format (Data de lucru (), „D LMMAAAA”)

al doilea operand este expresie, care va avea ca rezultat o valoare șir reprezentând luna în cuvinte și anul datei de lucru.

5.3. Conversie automată a tipului

În general, operanzii unei expresii trebuie să fie de același tip sau tipuri determinate de regulile expresiei. De exemplu, numerele ar trebui adăugate la numere, șiruri de caractere ar trebui adăugate la șiruri, dar puteți scădea atât o dată, cât și un număr dintr-o dată.

În procesul de construire a expresiilor, poate fi necesar să se convertească tipurile de date ale operanzilor individuali ai expresiilor în conformitate cu regulile. Pentru aceasta, există funcții special concepute pentru aceasta în limbajul încorporat. Să dăm ca exemplu expresia deja familiară nouă:

„Amortizare pentru” + Format (Data de lucru (), „D LMMAAAA”)

În această expresie, al doilea operand WorkingDate (), care este de tip „date”, este convertit la tipul „șir” folosind funcția Format ().

Cu toate acestea, sistemul 1C: Enterprise, înainte de a evalua expresiile, „este capabil” să convertească automat operanzi de diferite tipuri în același tip, ghidat de reguli de conversie de tip.

Următoarele reguli de conversie sunt definite pentru tipurile de bază:

Număr -> șir

Dacă numărul nu are setări de format, atunci reprezentarea lui șir este reprezentarea completă a numărului în format fix.

Data -> șir

Data convertită în tip șir are forma DD.MM.AA, unde YY reprezintă două cifre ale anului, MM este denumirea numerică a lunii (01, ..., 12), DD este ziua lunii.

Șir -> Număr

Șirul este convertit într-un număr cât mai lung posibil. Numărul rezultat este considerat rezultatul conversiei. (De exemplu, șirul „1.22 Glass” va fi convertit în 1.22). Dacă nu există nimic la începutul liniei care să poată fi interpretat ca număr, atunci rezultatul este 0.

Data -> Data

Rezultatul acestei conversii este reprezentarea numerică a datei.

Șir -> Data

Dacă începutul liniei conține ceva care poate fi interpretat ca o reprezentare în șir a datei sub forma DD.MM.YY, unde YY reprezintă două cifre ale anului, MM este denumirea numerică a lunii (01, .. ., 12), DD este luna zilei, se va efectua conversia corespunzătoare. În caz contrar, valoarea datei va fi nulă.

Număr -> Data

Se face o încercare de a lua partea întreagă a Numărului și de a o interpreta ca o reprezentare numerică a datei. Dacă numărul este negativ, totalul este data zero.

Deci, în primul rând, trebuie amintit că tipul rezultatului unei expresii este determinat de tipul primului operand al expresiei respective... Ceilalți operanzi sunt forțați la tipul primului operand. Cunoscând această regulă, puteți atât să preziceți tipul rezultatului expresiei în ansamblu, cât și să controlați tipul rezultatului.

De exemplu, rezultatul expresiei

2+ „A”

va fi numărul 2, deoarece primul operand al expresiei are un tip numeric, iar al doilea operand, în conformitate cu regula de conversie a tipului, a devenit egal cu 0.

Cu toate acestea, merită să schimbați puțin expresia scriind-o astfel:

"" + 2+ "A"

cum se va schimba radical rezultatul său: rezultatul expresiei va fi șirul „2A”.

De ce s-a întâmplat? Mai sus am vorbit despre conceptul de „șir gol”, care are toate proprietățile unei valori șir, inclusiv de tipul „șir”. În exemplul nostru, șirul gol este primul operand al expresiei, iar la evaluarea expresiei, toți operanzii săi au fost convertiți la tipul „șir” în conformitate cu regulile de conversie a tipului.

Încă un exemplu. Mai sus am subliniat că o valoare de tip „date” este specificată printr-un șir de caractere între ghilimele simple, iar aceeași secvență de caractere, dar deja între ghilimele duble, este un șir. Acum vom ilustra acest lucru cu exemple.

După cum am spus deja, rezultatul expresiei „08/02/2000” +2 va fi data 04/08/2000. Dar, specificând primul operand între ghilimele duble:

"02.08.2000"+2

obținem un rezultat complet diferit - linia „08/02/20002”.

Să rezumam. Puteți controla tipul rezultatului întregii expresii setând primul operand la o valoare goală de tipul corespunzător. Avantajul acestei metode este că o valoare goală nu modifică rezultatul expresiei. De exemplu, punând 0 la începutul expresiei:

0+ "23"+45

ca rezultat obținem numărul 68, deoarece expresia în ansamblu are tipul „număr”, iar șirul de caractere, în conformitate cu regulile de conversie a tipului, a fost convertit cu succes la numărul 45.

Aici este potrivit să ne amintim și data goală. Care va fi rezultatul expresiei „00.00.00” + 2+ „02.08.2000”? Desigur, data este 08/04/2000 (4 august 2000), deoarece primul operand al expresiei era o valoare de tip „data”.

În schimb, eliminarea datei goale

2+"02.08.2000"

ca rezultat, obținem 2451761 - acesta este numărul de zile de la data zero până la 2 august 2000, plus încă 2 zile.

5.4. Operatori booleeni de comparare

În 1C, există astfel de expresii logice pentru tipurile de date de bază.

> Mai multe

< Меньше

<>Nu este egal

Aceste expresii booleene pot fi aplicate tuturor celor trei tipuri de date de bază.

În raport cu tipul de date numerice, nu există probleme, se compară numărul standard (întreg sau fracționar).

Pentru valorile șir, comparația se face cu așa-numitele „coduri de scanare” ale acestora (în înțelegerea 1C, un astfel de cod poate fi obținut folosind metoda CodeCymb ()). Comparația se face personaj cu caracter. Deci, dacă sunt comparate șiruri de lungime egală, atunci codurile caracterelor corespunzătoare sunt comparate secvenţial. Comparația are loc până la prima inegalitate din șir (dacă șirul conține mai mult de un caracter). Dacă sunt comparate șiruri de lungimi diferite, valorile lipsă din operator sunt completate cu caractere șir goale (nu cu un caracter spațiu (Cod = 32)). Acestea. valoarea spațiului (CodeCharacter (32)) este mai mare decât valoarea șirului gol.

Pentru tipuri, data este comparată cu data în sine (dar este posibil ca 1C să convertească data într-un număr egal cu numărul de zile de la Data (0) înainte de comparare).

6. Probleme de rotunjire

Atunci când efectuează contabilitate automatizată, utilizatorii întâmpină adesea așa-numitele „probleme de rotunjire” - situații în care, din cauza rotunjirii diferitelor valori calculate, precum prețul de cost, orice taxă, în diferite etape ale calculelor, în rezultatele finale apar „copeici de înghețare”. ...

De exemplu, o situație ca aceasta:
Există 16 unități de mărfuri la un preț (inclusiv TVA) 110,50 UAH.
- costul total este de 110,50 * 16 = 1768 UAH.
- TVA (la cota de 20%, inclusiv) este 1768 * 20/120 = 294,67 UAH.

Dacă acum acest produs se vinde „la bucată” fără nicio taxă suplimentară, TVA-ul va fi diferit:
- TVA pentru o unitate de marfă va fi 110,50 * 20/120 = 18,42 UAH.
- TVA pentru toate cele 16 unități va fi de 18,42 * 16 = 294,72 UAH.

Diferența de TVA între încasările „de grup” și vânzările „bucata” este de 5 copeici. Neavând valoare adăugată, datoram bugetului 5 copeici sub forma unui impozit pe acesta.

Rețineți că atunci când au ajuns mărfurile, nu am putut număra TVA „la bucată” - calculând valoarea taxei în costul unei unități de mărfuri și înmulțind cu cantitatea de bunuri. În acest caz, pot exista pierderi și mai mari prin rotunjire. De exemplu, dacă prețul unei unități dintr-un produs este de 3 copeici, atunci care este TVA-ul?

Atunci când apar astfel de „rezultate de rotunjire”, trebuie amintit că problema nu este în program, nu în formulele de calcul, ci în acuratețea și rigoarea mai mare (comparativă cu contabilitatea „manuală”) a regulilor de calcul. Păstrând o contabilitate manuală, un contabil își permite adesea să ajusteze rezultatul calculului, ascunzând acești „kopeci” în calculele intermediare.

În configurațiile tipice 1C: Enterprise, acolo unde este posibil, astfel de situații sunt luate în considerare și gestionate corect. De exemplu, dacă sunt valorificate 3 unități de mărfuri cu o valoare totală de 1 grivne, atunci primele două unități vor fi anulate la prețul de cost de 33 de copeici, iar ultima - 34 de copeici. Dar nu toate cazurile de rotunjire pot fi luate în considerare în algoritmi, inclusiv exemplul de mai sus cu cinci copeici de TVA nu pot fi procesate corect în program.
În unele cazuri, astfel de erori pot fi evitate prin atribuirea unui preț „potrivit” pentru mărfuri, astfel încât TVA-ul să fie calculat din acesta complet, fără rest. Dar această regulă se aplică numai prețurilor de vânzare - prețurile de cumpărare nu trebuie selectate. În alte cazuri, utilizatorii programului trebuie să analizeze de unde provin „banuții agățați” și să decidă ce să facă cu ei.

7. Limitări ale sistemului V77

Data
Data - funcționează corect în intervalul de date de la 01.01.0000 la 31.12.9999
Data (0) corespunde la 1721061 zile de la 01.01.0000
Când încercați să mergeți la datele minus - 31.12.0001, sistemul nu funcționează corect, deoarece funcționează de la data 0, adică: Data ("01.01.0000") - 1 = 00.01.00. Funcția de format pentru astfel de date nu funcționează deloc.

Număr
numărul maxim de valori = 64 (64 de caractere).

Linia
Număr maxim de valori = limitat de memoria fizică liberă (fără fișier de paginare), se presupune că nu poate exista mai mult de 2 ^ 32-1 caractere.

Document
Document - pot fi create 9999 tipuri de documente.
Un document poate avea și poate funcționa corect cu cel mult 9999 de linii.
Lungimea maximă a codului este de 20, adică teoretic se pot crea un total de (27 + 33 + 10) ^ 20 de documente (70 ^ 20 = 7,9792266297612001e + 36).
Nu mai poate exista în sistem (lungimea codului ID în jurnal = 9), practic lungimea ID-ului este de 6 caractere (3 pe URIB) 36 ^ 6 = 2176782336 documente.
Numărul de documente introduse cu același timp este limitat la 36 ^ 4 = 1679616

De regulă, învățarea oricărui limbaj de programare începe cu un exemplu de scriere a primului cel mai simplu program („Bună lume!”). Acest lucru se face pentru a arăta în mod clar cum să lucrați cu construcții sintactice de bază. Nu vom face o excepție de la acest mod general acceptat de prezentare a materialului atunci când explorăm un nou mediu de dezvoltare și, prin urmare, primul nostru articol ar trebui să fie privit în aceeași ordine de idei. În acesta vom analiza în detaliu răspunsurile la următoarele întrebări referitoare la programarea pe platforma 1C: Enterprise 8:

  • Unde și cu ce ajutor pentru a scrie codul programului în limbajul 1C încorporat?
  • Ce sunt modulele software, care sunt regulile de lucru cu ele?
  • Ce este o variabilă, cum se lucrează cu ea, cum și unde să o declare?
  • Ce comparație, alocare și operatori condiționali există și cum îi aplicați?
  • Operațiuni booleene - ce sunt și cum să lucrezi cu ele?
  • De ce sunt buclele și cum să le folosești?

Articolul va fi util tuturor celor care nu sunt încă familiarizați cu dezvoltarea pe platforma 1C: Enterprise 8, dar doresc să învețe cum să programeze pe 1C.

Aplicabilitate

Materialul este relevant pentru platforma 1C: Enterprise 8, ediția 8.2. și 8.3.

Variabile și operatori

În acest articol începem să studiem limbajul încorporat 1C: Enterprise 8. Codul executabil este conținut în modulele programului.

Există un număr mare de module care sunt concepute pentru a gestiona diverse evenimente.

Deci, autentificarea utilizatorului la sistem este procesată într-un singur modul, iar procesarea clicului utilizatorului pe un anumit buton este procesată într-unul complet diferit.

Astfel, fiecare modul descrie comportamentul configurației la un anumit punct. Modulul conține, în primul rând, o secțiune care descrie variabile. Acestea. putem declara unele variabile în modul.

Ulterior pot fi utilizate în procedurile și funcțiile acestui modul. Dacă o variabilă este definită cu cuvântul cheie Export, atunci aceasta va fi disponibilă în afara acestui modul. Un exemplu de linie de declarare a variabilei:

Schimbare Depozit, Divizie, Magazin Export;

După declararea variabilelor, există o secțiune de proceduri și funcții.

În spatele lor se află secțiunea programului principal, care va fi executată în momentul accesării acestui modul.

De exemplu, în secțiunea programului principal, puteți inițializa variabile, adică. atribuiți-le câteva valori inițiale:

Stare = 1;
NewExpression = 2;
Rezultat = 3;

Un modul poate fi gândit ca o combinație de diferiți operatori care efectuează diferite acțiuni de care avem nevoie.

Separatorul de operator este caracterul „;” (punct şi virgulă). Acest personaj este sfârșitul afirmației. Acestea. operatorul poate fi scris astfel:

Rezultat = 100X200
+400
-600;

Nu contează pe câte linii se află operatorul.

Desigur, mai des este mai convenabil și mai clar să plasați un operator pe o linie, dar uneori operatorii sunt destul de lungi (numărul de linii poate ajunge în mod rezonabil la câteva zeci).

Punctul și virgulă poate fi omis în declarația finală a unui construct dat, de exemplu, o procedură. Acestea. următorul cod va funcționa:

Procedura CalculateValues ​​​​()

InitialValue = 100;
IntermediateValue = InitialValue / 5;
TotalValue = InitialValue + IntermediateValue

Sfârșitul procedurii

Cu toate acestea, este mai bine să folosiți punct și virgulă în declarația de sfârșit. Este posibil ca în timp, construcția să fie continuată, iar declarația finală să nu mai fie definitivă. Va trebui să monitorizăm în mod specific această situație.

Variabilele sunt concepute pentru a stoca unele valori de orice tip de date. Sunt utilizate pentru stocarea intermediară a informațiilor în vederea procesării.

În aproape orice modul de program care efectuează o anumită acțiune, există diverse variabile. Tastarea variabilelor după valori în Platforma 1C: Enterprise 8 este soft.

De exemplu, o variabilă poate conține o valoare a unui tip de date și câteva rânduri mai târziu - un alt tip:

Creat = Fals;
Creat = Adevărat;
Creat = 100;

În primii doi operatori valoarea variabilelor este booleană, iar în al treilea este schimbată într-o valoare numerică. Acestea. tastarea depinde de valoarea care este atribuită unei variabile date.
Variabilele pot fi descrise în două moduri:

  • mod implicit (mentiunea din partea stângă a operatorului de atribuire descrie variabila dată, nu există o descriere preliminară a variabilei cu cuvântul Var, adică nu există o secțiune specială pentru descrierea variabilelor);
  • descrierea explicită a variabilelor (Variable ControlData;). Declarația explicită a variabilelor este utilizată, de exemplu, dacă este de așteptat transferul ulterior al acestei variabile într-o funcție.

Pentru numele variabilelor se folosește descrierea clasică a identificatorului. Identificatorul este format din litere, cifre și liniuțe de subliniere. Identificatorul trebuie să înceapă fie cu o literă, fie cu un caracter de subliniere.

În acest caz, numele variabilei ar trebui să reflecte semnificația acestei variabile. Numele variabilelor cu o singură literă (cum ar fi A, B, C) sunt exemple proaste. Ele nu reflectă natura variabilelor.

Exemple de nume corecte de variabile: Counter (variabilă crescătoare pentru o buclă), Counterparty. Dacă un nume de variabilă conține mai multe cuvinte, atunci fiecare cuvânt nou, pentru claritate, ar trebui să înceapă cu o literă mare.

Cuvintele rezervate precum Procedură, Funcție, Buclă, Sfârșitul buclei etc. nu pot fi folosite în numele variabilelor. (aceste construcții sunt evidențiate cu roșu în modulul programului).

Cuvintele rezervate sunt operatori de limbă încorporați și există destul de mulți dintre ei. Toate sunt prezentate în Asistent de sintaxă.

Trebuie remarcat faptul că tipurile de date nu sunt cuvinte rezervate (de exemplu, Array, Boolean, True, False). Sistemul va accepta corect astfel de nume de variabile.

Pentru scrierea codului programului, cazul nu contează. De exemplu, cuvântul Procedură poate fi scris atât cu majuscule, cât și cu litere mici. În plus, literele mari și mici pot fi alternate în cadrul unui cuvânt.

Nu contează pentru Platformă. Cu toate acestea, conform regulilor bunei forme, începutul unui cuvânt trebuie scris cu majuscule, toate celelalte litere cu litere mici.

Despre limbaj. Puteți folosi atât rusă, cât și engleză și o combinație de două limbi. Dacă este convenabil pentru cineva, puteți folosi în siguranță engleza pentru a scrie codul programului, precum și pentru a combina rusă și engleză. Acest lucru nu este important pentru Platformă.

Multe nume în engleză sunt greu de reținut. Când utilizați o combinație de două limbi, lizibilitatea codului programului se deteriorează.

Operații booleene

Operatorii de comparație folosesc adesea logica booleană care returnează True sau False.

De exemplu, în operatorul condiționat puteți compara: Dacă Eveniment = Vânzare Atunci algoritmul va urma o ramură (adică, dacă valoarea este True), o altă ramură a algoritmului este executată de condiția Fals.

Condițiile pot fi destul de complexe, pot fi combinate și se aplică următorii operatori: AND, OR și NOT. Deci, pentru operatorul AND:

Truth And Truth = Adevăr;
Adevărat și fals = fals;
Lies And Truth = Minciuni;
Lies AND Lies = Minciuni.

Pentru operatorul OR este suficient ca unul dintre operanzi să fie True, atunci valoarea combinației va fi True. Valoarea este False numai atunci când ambii operanzi sunt False.

Operatorul NU inversează pur și simplu valoarea curentă (fals la adevărat, adevărat la fals).

Folosind o combinație a acestor operatori, puteți construi condiții destul de complexe. Când construiți declarații condiționale complexe, luați în considerare precedența.

Operatorul NOT are cea mai mare prioritate, urmat de operatorul AND, urmat de operatorul OR. Ceea ce este între paranteze are cea mai mare prioritate și este executat primul.

De exemplu, să acordăm prioritate (secvența de execuție) pentru operațiile din expresia de mai sus:

NU (Condiția1 SAU Condiția2) ȘI Condiția3 SAU Condiția4
1.Rezultat1 = (Condiție1 SAU Condiție2);
2. Rezultat2 = NU Rezultatul1;
3. Rezultat3 = Rezultat2 ȘI Condiția1;
4. Rezultat = Rezultat3 SAU Condiție4;

Există o regulă de conversie:

NU (Condiția1 SAU Condiția2) = NU Condiția1 ȘI NU Condiția2.

Cu toate acestea, nu trebuie să ne străduim întotdeauna să simplificăm expresia, deoarece adesea, în mod logic, expresia extinsă este mai ușor de citit.

Operator de atribuire

Operatorul de atribuire nu trebuie confundat cu egalitatea, chiar dacă au aceeași ortografie.

Principiul operatorului de atribuire este astfel încât valorii din stânga (variabilei din partea stângă) i se atribuie valoarea care se află în dreapta semnului egal. Să ne uităm la un exemplu:

Variabila1 = Variabila2 = Variabila3;

Variabilei1 i se atribuie o valoare de egalitate din logica booleană, adică. Adevărat dacă Variabila2 = Variabila3 sau Fals în caz contrar.

Când testați poziția unui programator începător, sarcina este adesea folosită: să schimbați valorile a două variabile pe alocuri.

Această problemă este rezolvată folosind operatorul de atribuire și are două soluții.

Soluția # 1 folosind o variabilă temporară:
TemporaryVariable = Variabila1;
Variabila1 = Variabila2;
Variabila2 = Variabila temporara;

Soluția # 2:
Variabila1 = Variabila1 + Variabila2;
Variabila2 = Variabila1 - Variabila2;
Variabila1 = Variabila1 - Variabila2;

Operator condiționat

Există un astfel de operator Dacă, după care este necesar să se descrie o anumită condiție (condiția în sine poate fi destul de mare). Condiția este urmată de cuvântul Apoi și de operatorii executați.

Acesta poate fi urmat de cuvântul cheie Else și de o serie de alți operatori. Dacă există mai multe condiții diferite, puteți utiliza o serie de cuvinte cheie Altfel, dacă(vezi exemplul de mai jos). Întreaga construcție trebuie să se încheie cu un cuvânt cheie Încheiați dacă urmată de punct și virgulă.

Pe lângă condițiile simple și multiple, există o formă prescurtată a operatorului condiționat:? (Condiție, Expresie1, Expresie2);

Dacă condiția este adevărată, atunci Expresia1, in caz contrar - Expresia 2... Exemplu de cod: DearProduct =? (Product.Price> 100000, True, False);

În practică, în loc de comparare înregistrări cu valoare Adevărat (Minciună) tip:

Dacă variabilă = adevărat, atunci
și
Dacă variabilă = fals, atunci

înregistrările echivalente sunt de fapt utilizate:

Dacă variabil, atunci
și
Dacă NU este variabil, atunci

Operatori ciclici

Pentru orice tip de ciclu, este necesar să indicați în mod explicit sfârșitul acestui ciclu folosind cuvântul cheie Sfârșitul ciclului... Există mai multe tipuri de bucle.

Ciclu peste tejghea- un ciclu cu un număr fix de repetări. Condiția de ieșire din ciclu este depășirea valorii limită. Un exemplu de utilizare pentru calcularea valorii lui A!

A = 5;
Factorial = 1;
Pentru Counter = 1 By A Cycle
Factorial = Factorial * Contor;
Sfârșitul ciclului;

Buclă condiționată- se execută atâta timp cât condiția ciclului dat este adevărată. Exemplu:

Suma rămasă = 1000;
Pret produs suplimentar = 243;
Cantitate = 0;
În timp ce RemainderSum> 0 Cycle
Cantitate = Cantitate + 1;
Sumă Sold = Sumă Sold - Cantitate * Preț suplimentar pentru produs;
Prețul produsului suplimentar = Prețul produsului suplimentar * 0,8;
Sfârșitul ciclului
Cantitate = Cantitate-1;

Acest ciclu calculează câte unități dintr-un produs pot fi cumpărate pentru o anumită sumă (1000 de ruble) dacă, după cumpărarea fiecărei unități a unui produs, prețul său anterior este înmulțit cu un factor de 0,8. Prețul inițial al produsului este de 243 de ruble.

Un exemplu de eroare la utilizarea acestui tip de buclă pentru începători este o buclă eternă, când inițial condiția buclei este adevărată, dar în interiorul buclei în sine nu se schimbă în niciun fel.

Buclă prin colecții (un alt nume pentru fiecare).

Platforma are un număr destul de mare de colecții (acestea sunt containere care conțin elemente de un anumit tip).

Puteți traversa elementele unei colecții folosind un tip special de buclă.

De exemplu, există o matrice de numere, trebuie să calculați suma tuturor elementelor matricei:

Suma = 0;
Pentru fiecare articol din bucla Array
Suma = Suma + Element;
Sfârșitul ciclului;

Există operatori speciali pentru bucle: Continuași Avorta.

Dacă la un moment dat în ciclu, execuția altor operatori ai acestei iterații devine lipsită de sens, atunci pentru a reveni la începutul ciclului și a organiza următoarea sa iterație, operatorul Continua.

Operator Avorta vă permite să opriți execuția buclei chiar dacă condiția buclei este adevărată.

Aceasta încheie prima noastră cunoștință cu dezvoltarea limbajului intern 1C.

Ce zici de Hello World? Nu am scris-o încă, nu-i așa? Da, dar nimic nu te împiedică să o faci singur, pentru că cunoștințele sunt DEJA suficiente. Ei bine, dacă nu merge, atunci poți să te uiți aici.

Forumul ucrainean 1C: totul despre 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7 _ Sistemul de compunere a datelor _ Limbajul de exprimare al sistemului de compunere a datelor

Conţinut
1 Limbajul de exprimare al sistemului de compunere a datelor
2 Literale
2.1 șir
2.2 Număr
2.3 Data
2.4 Boolean
2.5 Valoare
3 Operații asupra numerelor
3.1 Unare -
3.2 Unar +
3.3 Binar -
3.4 Binar +
3.5 Opera de artă
3.6 Diviziunea
3.7 Restul
4 Operații pe șiruri
4.1 Concatenare (binar +)
4.2 Similar
5 Operații de comparare
5.1 Egal
5.2 Nu este egal
5.3 Mai puțin
5.4 Mai mult
5.5 Mai mic sau egal
5.6 Mai mare sau egal
5.7 Pasul B
5.8 Operația de verificare a existenței unei valori într-un set de date
5.9 Operațiunea de verificare a unei valori pentru NULL
5.10 Operația de verificare a unei valori pentru inegalitatea NULL
6 Operații logice
6.1 Operarea NU
6.2 Operarea ŞI
6.3 Operarea SAU
7 Funcții agregate
7.1 Suma
7.2 Cantitatea
7.3 Numărul de diferite
7.4 Maxim
7,5 Minimum
7,6 Medie
8 Alte operațiuni
8.1 Operațiunea SELECT
9 Reguli pentru compararea a două valori
10 Lucrul cu NULL
11 Priorități ale operațiunilor
12 Funcțiile limbajului de expresie ale sistemului de compunere a datelor
12.1 Calculați
12.2 Nivel
12.3 Număr după comandă
12.4 NumberOrderInGroup
12.5 Format
12.6 Începutul perioadei
12.7 Sfârșitul Perioadei
12.8 Adăugați la dată
12.9 Diferența de dată
12.10 Subșir
12.11 Lungimea liniei
12.12 Anul
12.13 Trimestru
12.14 luna
12.15 Ziua anului
12.16 Ziua
12.17 Săptămâna
12.18 Ziua săptămânii
Ora 12.19
12.20 minute
12.21 Al doilea
12.22 Express
12.23 Da Null
12.24 Funcţiile modulelor comune

Limbajul de expresie al sistemului de compunere a datelor

Limbajul de expresie al sistemului de compunere a datelor este conceput pentru a scrie expresii utilizate în diferite părți ale sistemului.

Expresiile sunt utilizate în următoarele subsisteme:

  • schema de compunere a datelor - pentru descrierea câmpurilor calculate, a câmpurilor totale, a expresiilor de relație etc.
  • setări de compoziție a datelor - pentru descrierea expresiilor de câmp personalizate;
  • șablon de compoziție a datelor - pentru descrierea expresiilor de relații ale setului de date, descrierea parametrilor șablonului etc.

Literale

Expresiile pot conține literale. Literale de următoarele tipuri sunt posibile:

  • Linia;
  • Număr;
  • Data;
  • boolean.

Linia

Un literal șir este scris în caractere „” „, de exemplu:

„Literal șir”


Dacă trebuie să utilizați caracterul "" "în interiorul unui șir literal, ar trebui să utilizați două astfel de caractere.

De exemplu:

„Literal“ „între ghilimele“ „“

Număr

Numărul se scrie fără spații, în format zecimal. Partea fracțională este separată prin simbolul „.” De exemplu:

Data

Literalul de dată este scris folosind literalul cheie DATETIME. După acest cuvânt cheie, între paranteze, separate prin virgule, sunt enumerate anul, luna, ziua, orele, minutele, secundele. Ora este opțională.

De exemplu:
DATA (1975, 1, 06) - 6 ianuarie 1975
DATA ORA (2006, 12, 2, 23, 56, 57) - 2 decembrie 2006, 23 ore 56 minute 57 secunde, 23 ore 56 minute 57 secunde

boolean

Valorile booleene pot fi scrise folosind literalele True, False.

Sens

Pentru a specifica literali de alte tipuri (enumerări de sistem, date predefinite), este folosit cuvântul cheie Value, urmat de numele literal din paranteze.
Valoare (Tip de cont. Activ)

Operații pe numere

unar -

Această operațiune are scopul de a inversa semnul unui număr. De exemplu:
-Vânzări.Cantitate

Unar +

Această operație nu efectuează nicio acțiune asupra numărului. De exemplu:
+ Vânzări.Cantitate

binar -

Această operație este concepută pentru a calcula diferența dintre două numere. De exemplu:
Solduri și cifre de afaceri. Sold inițial - Solduri și cifre de afaceri. Sold final
Solduri SI Cifra de afaceri.Sold initial - 100
400 – 357

Binar +

Această operație este concepută pentru a calcula suma a două numere. De exemplu:
Solduri și cifre de afaceri. Sold inițial + Solduri și cifre de afaceri
Solduri SI Cifra de afaceri.Sold initial + 100
400 + 357

Muncă

Această operație este concepută pentru a calcula produsul a două numere. De exemplu:
Nomenclator.Preț * 1.2
2 * 3.14

Divizia

Această operație are scopul de a obține rezultatul împărțirii unui operand la altul. De exemplu:
Nomenclator.Preţ / 1.2
2 / 3.14

Restul diviziei

Această operație are scopul de a obține restul împărțirii unui operand la altul. De exemplu:
Nomenclatură.Preţ% 1.2
2 % 3.14

Operații cu șiruri

Concatenare (binar +)

Această operațiune este menită să concateneze două șiruri. De exemplu:
Nomenclatură.Articol + „:” + Nomenclatură.Nume

Ca

Această operație verifică dacă șirul se potrivește cu modelul trecut.

Valoarea operatorului LIKE este TRUE dacă valoarea<Выражения>se potrivește cu modelul, iar FALSE în caz contrar.

Următoarele personaje în<Строке_шаблона>are sens în afară de caracterul de linie următoare:

  • % - procent: o secvență care conține zero sau mai multe caractere arbitrare;
  • _ - subliniere: un caracter arbitrar;
  • […] - unul sau mai multe caractere între paranteze drepte: un caracter, oricare dintre cele enumerate între paranteze drepte. Enumerarea poate conține intervale, de exemplu, a-z, adică un caracter arbitrar inclus în interval, inclusiv capetele intervalului;
  • [^…] - între paranteze pătrate o pictogramă de negație urmată de unul sau mai multe caractere: orice caracter cu excepția celor enumerate după pictograma de negație;

Orice alt simbol înseamnă el însuși și nu are nicio semnificație suplimentară. Dacă este necesar să scrieți unul dintre caracterele enumerate ca dvs., atunci acesta trebuie să fie precedat de<Спецсимвол>specificat după cuvântul cheie ESCAPE.

De exemplu, șablonul
„% ABC [abvg] \ _ abc%” SYMBOL SPECIAL „\”

înseamnă un subșir format dintr-o succesiune de caractere: litera A; literele B; literele B; o cifră; una dintre literele a, b, c sau d; caracter de subliniere; literele a; literele b; literele c. Mai mult, această secvență poate fi localizată pornind de la o poziție arbitrară în linie.

Operatii de comparatie

Egal

Această operație are scopul de a compara doi operanzi pentru egalitate. De exemplu:
Sales.Contractor = Sales.NomenclatureMainSupplier

Nu este egal

Această operație are scopul de a compara doi operanzi pentru inegalitate. De exemplu:
Vânzări.Vânzări Contractor.NomenclaturăMainSupplier

Mai mica

Această operație are scopul de a verifica dacă primul operand este mai mic decât al doilea. De exemplu:
VânzăriCurrent.Suma

Mai mult

Această operație are scopul de a verifica dacă primul operand este mai mare decât al doilea. De exemplu:
SalesCurrent.Total> SalesPast.Amount

Mai mic sau egal cu

Această operație are scopul de a verifica dacă primul operand este mai mic sau egal cu al doilea. De exemplu:
VânzăriCurrent.Suma

Mai mult sau egal

Această operație are scopul de a verifica dacă primul operand este mai mare sau egal cu al doilea. De exemplu:
SalesCurrent.Amount> = SalesPast.Amount

Operațiunea B

Această operație verifică prezența unei valori în lista de valori transmisă. Rezultatul operației va fi True dacă valoarea este găsită sau False în caz contrar. De exemplu:
Elementul B (& elementul 1 și articolul 2)

Operația de verificare a existenței unei valori într-un set de date

Operația verifică existența unei valori în setul de date specificat. Setul de date de validare trebuie să conțină un câmp. De exemplu:
Vânzări Contrapărți către contrapărți

Operație de verificare a unei valori pentru NULL

Această operație returnează True dacă valoarea este NULL. De exemplu:
Vânzări.Contractantul ESTE NUL

Operația de verificare a unei valori pentru inegalitatea NULL

Această operație returnează True dacă valoarea nu este NULL. De exemplu:
Vânzări.Contractantul NU ESTE NUL

Operații logice

Operațiile logice iau expresii booleene ca operanzi.

Operațiunea NU

Operația NU returnează True dacă operandul său este False și False dacă operandul său este True. De exemplu:
NOT Document.Consignee = Document.Shipper

Operațiunea ȘI

Operatorul AND returnează True dacă ambii operanzi sunt True și False dacă unul dintre operanzi este False. De exemplu:
Document.Consignee = Document.Shipper AND Document.Consignee = & Contraparte

SAU operare

Operația SAU returnează True dacă unul dintre operanzi este True și False dacă ambii operanzi sunt False. De exemplu:
Document.Consignee = Document.Carrier SAU Document.Consignee = & Contraparte

Funcții agregate

Funcțiile agregate efectuează anumite acțiuni asupra unui set de date.

Sumă

Funcția de agregare Sum calculează suma valorilor expresiei transmise acesteia ca argument pentru toate înregistrările de detalii. De exemplu:
Sumă (Vânzări.Suma Cifra de afaceri)

Cantitate

Funcția Count calculează numărul de valori non-nule. De exemplu:
Cantitate (Vânzări. Antreprenor)

Număr de diferite

Această funcție calculează numărul de valori distincte. De exemplu:
Cantitate (Vânzări diverse. Antreprenor)

Maxim

Funcția primește valoarea maximă. De exemplu:
Maxim (Solduri.Cantitate)

Minim

Funcția primește valoarea minimă. De exemplu:
Minim (Solduri.Cantitate)

Media

Funcția primește media valorilor non-NULL. De exemplu:
Medie (Solduri. Sumă)

Alte operațiuni

Operațiunea SELECT

Operation Select este conceput pentru a selecta una dintre mai multe valori atunci când sunt îndeplinite anumite condiții. De exemplu:
Alegere Când Sumă> 1000 Apoi Sumă Altfel 0 Sfârșit

Reguli pentru compararea a două valori

Dacă tipurile de valori comparate diferă unele de altele, atunci relația dintre valori este determinată în funcție de prioritatea tipurilor:
NULL (cel mai mic);
boolean;
Număr;
Data;
Linia;
Tipuri de referință

Relațiile dintre diferitele tipuri de referință sunt determinate pe baza numerelor de referință ale tabelelor corespunzătoare unui anumit tip.

Dacă tipurile de date se potrivesc, atunci valorile sunt comparate conform următoarelor reguli:
Tipul boolean are o valoare TRUE mai mare decât valoarea FALSE;
tipul Număr are regulile obișnuite de comparare pentru numere;
tipul Date are date anterioare mai mici decât cele ulterioare;
pentru tipul String - comparații de șiruri în conformitate cu caracteristicile naționale stabilite ale bazei de date;
tipurile de referință sunt comparate pe baza valorilor lor (numerele de înregistrare etc.).

Lucrul cu valori NULL

Orice operație în care valoarea unuia dintre operanzi este NULL va avea ca rezultat NULL.

Exista si exceptii:
operația AND va returna NULL numai dacă niciunul dintre operanzi nu este fals;
operația SAU va returna NULL numai dacă niciunul dintre operanzi nu este adevărat.

Priorități operaționale

Operațiunile au următoarele priorități (prima linie are cea mai mică prioritate):
SAU;
ȘI;
NU;
B ESTE NUL NU ESTE NUL;
=, <>, <=, <, >=, >;
binar +, binar -;
*, /, %;
Unar +, unar -.

Funcțiile limbajului de expresie ale sistemului de compunere a datelor

calculati

Funcția Calculate este concepută pentru a evalua o expresie în contextul unei grupări. Funcția are următorii parametri:
Expresie. Tastați șir. Conține o expresie calculată;
Gruparea. Tastați șir. Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă linia GeneralTotal este folosită ca nume de grupare, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul se va efectua în contextul grupării părinte cu același nume. De exemplu:
Sumă (Vânzări.Suma Cifra de afaceri) / Calculați („Suma (Vânzări.Suma Cifra de afaceri)”, „TotalTotal”)

În acest exemplu, rezultatul va fi raportul dintre suma pentru câmpul Sales.SumTurnover din înregistrarea de grupare și valoarea aceluiași câmp în întregul aspect.

Nivel

Funcția este menită să obțină nivelul curent de înregistrare.

Exemplu:
Nivel()

NumărComandă

Obțineți următorul număr de ordine.

Exemplu:
NumărComandă ()

NumberOrderInGroup

Returnează următorul număr secvenţial din gruparea curentă.

Exemplu:
NumberOrderInGrouping ()

Format

Obțineți șirul formatat al valorii transmise.

Șirul de format este setat în conformitate cu șirul de format 1C: Enterprise.

Opțiuni:
Sens;
Formatați șirul.

Exemplu:
Format (Facturi.SumDoc, „NPT = 2”)

Începutul perioadei

Opțiuni:

    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumătate de an.

Exemplu:
Începutul perioadei (DateTime (2002, 10, 12, 10, 15, 34), „Lună”)

Rezultat:

01.10.2002 0:00:00

Sfârșitul perioadei

Funcția este concepută pentru a extrage o anumită dată dintr-o dată dată.

Opțiuni:

  • Data. Tastați Data. Data specificată;
  • Tipul perioadei. Tastați șir. Conține una dintre valorile:
    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumătate de an.

Exemplu:
EndPeriod (DateTime (2002, 10, 12, 10, 15, 34), „Săptămâna”)

Rezultat:

13.10.2002 23:59:59

Adăugați la data

Funcția este destinată să adauge o anumită valoare datei.

Opțiuni:

  • Tip de mărire. Tastați șir. Conține una dintre valorile:
    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumătate de an.
Valoare - cu cât ar trebui mărită data. Număr de tip. Partea fracționată este ignorată.

Exemplu:
Adăugați la dată (DateTime (2002, 10, 12, 10, 15, 34), „Lună”, 1)

Rezultat:

12.11.2002 10:15:34

Diferența de dată

Funcția este concepută pentru a obține diferența dintre două date.

Opțiuni:

  • Expresie. Tastați Data. data originală;
  • Expresie. Tastați Data. Data scăzută;
  • Tip de diferență. Tastați șir. Conține una dintre valorile:
    • Al doilea;
    • Minut;
    • Zi;
    • Lună;
    • Sfert;

Exemplu:
DIFERENTA (DATA ORA (2002, 10, 12, 10, 15, 34),
DATA (2002, 10, 14, 9, 18, 06), „ZIUA”)

Rezultat:

Subșir

Această funcție este concepută pentru a extrage un subșir dintr-un șir.

Opțiuni:

  • Linia. Tastați șir. Șirul din care se extrage subșirul;
  • Poziţie. Număr de tip. Poziția caracterului din care începe subșirul care urmează să fie extras din șir;
  • Lungime. Număr de tip. Lungimea subșirului de selectat.

Exemplu:
SUBSTRAT (Contractanti.Adresa, 1, 4)

Lungimea liniei

Funcția este concepută pentru a determina lungimea unui șir.

Parametru:
Linia. Tastați șir. Șirul care trebuie specificat în lungime.

Exemplu:
Șir (Conturi.Adresă)

Această funcție este concepută pentru a extrage un an dintr-o valoare de tipul Date.

Parametru:
Data. Tastați Data. Data până la care este determinat anul.

AN (Data facturii)

Sfert

Această funcție are scopul de a extrage un sfert de număr dintr-o valoare de tip Date. Numărul sfert este în mod normal în intervalul de la 1 la 4.

Parametru
Data. Tastați Data. Data până la care se stabilește trimestrul

TRIMESTRE (Data expedierii)

Lună

Această funcție are scopul de a extrage numărul lunii dintr-o valoare de tipul Date. Numărul lunii este în mod normal în intervalul de la 1 la 12.
Data. Tastați Data. Data până la care se stabilește luna.
LUNA (Data facturii)

Ziua Anului

Această funcție este concepută pentru a obține ziua anului dintr-o valoare de tip Date. Ziua anului este în mod normal în intervalul de la 1 la 365 (366).
Data. Tastați Data. Data până la care se stabilește ziua anului.
ZIUA ANULUI (Data facturii)

Zi

Această funcție este destinată să obțină ziua lunii dintr-o valoare de tip Date. Ziua lunii este în mod normal între 1 și 31.
Data. Tastați Data. Data până la care se stabilește ziua lunii.
ZI (Data facturii)

O săptămână

Această funcție are scopul de a obține numărul săptămânii din an dintr-o valoare de tip Date. Săptămânile anului sunt numerotate începând cu 1.
Data. Tastați Data. Data după care sunt determinate numerele săptămânii.
SĂPTĂMÂNĂ (Data facturii)

Zi a săptămânii

Această funcție este destinată să obțină ziua săptămânii dintr-o valoare de tip Date. Ziua săptămânii este în mod normal între 1 (luni) și 7 (duminică).
Data. Tastați Data. Data după care este determinată ziua săptămânii.
ZIUA SĂPTĂMÂNII (Data facturii)

Această funcție este concepută pentru a obține ora din zi dintr-o valoare de tip Data. Ora zilei variază de la 0 la 23.
Data. Tastați Data. Data după care este determinată ora zilei.
ORA (Data expedierii)

Minut

Această funcție este destinată să obțină minutul unei ore dintr-o valoare de tip Date. Minutul orei variază de la 0 la 59.
Data. Tastați Data. Data după care este determinat minutul orei.
MINUT (Data facturii)

Al doilea

Această funcție este destinată să obțină o secundă dintr-un minut dintr-o valoare de tip Date. Secunda dintr-un minut variază de la 0 la 59.
Data. Tastați Data. Data după care sunt determinate secundele minutei.
AL DOILEA (Data facturii)

Expres

Această funcție are scopul de a extrage un tip dintr-o expresie care poate conține un tip complex. Dacă expresia conține un alt tip decât cel cerut, va fi returnată o valoare NULL.

Opțiuni:
Expresia care trebuie convertită;
Indicație tip. Tastați șir. Conține un șir de tip. De exemplu, „Număr”, „Șir”, etc. Pe lângă tipurile primitive, acest șir poate conține numele tabelului. În acest caz, se va încerca să se exprime la o referire la tabelul specificat.

Exemplu:
Express (Data.Props1, „Număr (10.3)”)

Da Null

Această funcție returnează valoarea celui de-al doilea parametru dacă valoarea primului parametru este NULL.

În caz contrar, va fi returnată valoarea primului parametru.

Exemplu:
YesNULL (Suma (Vânzări.Suma Cifra de afaceri), 0)

Funcții comune ale modulului

O expresie a motorului de compoziție de date poate conține apeluri la funcții ale modulelor de configurare comune globale. Nu este necesară nicio sintaxă suplimentară pentru a apela astfel de funcții.

Exemplu:
Nume prescurtat (Documents.Link, Documents.Date, Documents.Number)

În acest exemplu, funcția „AbreviatedName” va fi apelată din modulul de configurare generală.

Rețineți că utilizarea funcțiilor modulelor comune este permisă numai atunci când este specificat parametrul corespunzător al procesorului de compoziție a datelor.

În plus, funcțiile modulelor comune nu pot fi utilizate în expresii de câmp personalizate.

Php? Http: //wiki.kint.ru/index.php/Data_System_Expression_Language_ (1Cv82) # .D0.9A.D0.BE.D0.BD.D0.B5.D1.86.D0.9F.D0.B5. D1.80.D0.B8.D0.BE.D0.B4.D0.B0

Forumul ucrainean 1C: totul despre 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7
http: // site-ul

Top articole similare