Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Vijesti
  • 1s logički operatori. Logičke operacije (1s preduzeće)

1s logički operatori. Logičke operacije (1s preduzeće)

Ovaj članak je svojevrsni odgovor na publikaciju "Zašto je 1C loš i zašto se 1C programeri toliko ne vole". Već dugi niz godina se bavim 1C programiranjem i želim reći da nas iskosa gledaju upravo zbog ovakvih autora članaka. Hajde da pogledamo šta sada imamo.

Platforma

Imamo platformu i konfiguracije napisane za nju.

Ažuriranje platforme donosi dodatnu funkcionalnost, uklanja brojne greške i prirodno donosi neke. U principu, po mom ličnom mišljenju, kukati o činjenici da je nakon ažuriranja platforme prestao rad u kancelariji nije u redu. Prvo, sigurnosne kopije baze podataka prije ažuriranja bi vas trebale spasiti od problema s bazama podataka. Pa niko nije otkazao priliku da se vrati na staru platformu. To je kao da krivite Microsoft ili autore slobodnog softvera za činjenicu da je nakon izdavanja zakrpe/ažuriranja sve krenulo naopako, a pomisao da napravite kopiju podataka nije vam pala na pamet. Da, sada postoje problemi sa softverskim ključevima. Ali možete koristiti one hardverske (malo su skuplje), ili možete instalirati nepravoslavne zakrpe za period održavanja kako biste kancelariju vratili u rad, što će privremeno pomoći u rješavanju problema s odsutnošću/nesposobnošću ključ. Važniji je rad kancelarije od 30-40 ljudi.

Konfiguracije

Ovdje ima gdje da lutaju kritičari, ali idemo redom.

Recimo da imamo običnu trgovinsku organizaciju i dovoljna nam je funkcionalnost Trade Management 10.3/11 konfiguracije.

Ovdje imamo dvije opcije za korištenje ovog softverskog proizvoda:

1. Koristite samo osnovnu funkcionalnost i ažurirajte mjesečno kada se objave nove verzije konfiguracije.
2. Uopšte nemojte ažurirati i po potrebi dodati funkcionalnost koja nam je potrebna.

Zapravo, najčešće se koristi druga opcija. Konfiguracija je postavljena, konfigurisana i kroz životni vijek organizacije praktički se ne ažurira. Maksimalno - štampani obrasci su korigovani u skladu sa propisima. To je u osnovi to. Zašto stalno patiti i prenositi promjene iz izdanja u izdanje nije jasno.

Naravno, može se prigovoriti i reći da organizacija ima, na primjer, računovodstvo. Hajde da razmotrimo ovu opciju.

Računovodstvo je potrebno stalno ažurirati zbog promjena u zakonskoj regulativi, stopama u poreznim i penzionim fondovima i ostalim svakodnevnim napornim radom računovođa.

Za prijenos podataka između trgovine i računovodstva obično se koriste pravila razmjene. Ovo je neka vrsta pravila napisanog u xml-u, koje opisuje koji se objekti podataka učitavaju, kako se učitavaju; također možete odrediti dodatnu obradu prije, poslije u vrijeme istovara/utovara. Ako je naša konfiguracija trgovanja nepromijenjena, onda ne diramo pravila uploada (uz rijetke izuzetke, ako je iznenada došlo do kardinalnih promjena). Nećemo često mijenjati ni pravila otpremanja. Činjenica prijema/prodaje robe uvijek će se prenositi. Ali procedura za obračun poreza i drugih stvari će se već obračunati u ažuriranom računovodstvu i to ni na koji način neće utjecati na konfiguraciju trgovanja.

Mislim da je glupo podsećati, ali ipak se usuđujem. Uvijek vrijedi napraviti sigurnosne kopije prije ažuriranja i promjena. Pa, morate priznati, glupo je kukati da se nakon ažuriranja sve pokvarilo i da je cijela kompanija vrijedna udjela. Jer ne postoji način da se proda, piše ili nazove. Svi kontakti, računi i informacije u bazi podataka.

Korištenje 1C u različitim poslovnim područjima

Da, kompanija 1C je monopolista na tržištu softvera dizajniranog za automatizaciju računovodstva i podnošenja finansijskih izvještaja.

Ako govorimo o segmentu malih preduzeća, onda za računovodstvo u većini kompanija možete koristiti gotovo svaki program koji je malo složeniji od pivot tablica u Excelu. Računovodstvo robe/usluga na komad, računovodstvo obaveza/dogovora, obračun plaća. Izvještavanje je moguće putem programa trećih strana, u koje se jednostavno unose konačne brojke.
Ako je posao veći, onda su 1C konkurenti Navision, Oracle, u vrlo velikim primjerima to je SAP.

Ali ovdje smo suočeni s još jednom specifičnošću. Naše zakonodavstvo se često mijenja. A ako su strane kompanije uključene u održavanje relevantnosti svojih softverskih proizvoda, one ne idu uvijek u korak s promjenama. Budući da je broj implementacija "NE 1C programa" mali, cijena vlasništva postaje visoka. Teško je pronaći stručnjaka koji može brzo ažurirati (u zavisnosti od dostupnosti ažuriranja) ili postaviti / konfigurirati postojeći softverski proizvod.

1C ima nesumnjive prednosti u povezivanju komercijalne opreme (vaga, skeneri, terminali, semafori). Štaviše, u standardnim konfiguracijama to se radi na nivou korisnika. Dodajmo mogućnost povezivanja eksterne obrade i štampanja obrazaca za proširenje funkcionalnosti, primanje dodatnih izvještaja bez izmjene konfiguracije. Kao rezultat toga, ako pristupite ispravno, onda nema smisla penjati se "unutar" konfiguracije.

Druga stvar je što je lakše i jeftinije postaviti štaku, koja će nakon nadogradnje otpasti i staviti klijenta na iglu. Onda stalno zalijevajte 1C i recite da ga tako često puštaju, i dolazite do klijenta istom frekvencijom i dobijate nešto novca od njega.

Čini mi se da je glavni razlog negativnog stava prema 1C taj što je kod otvoren. Niko nije vidio kako se piše Word ili Navision, i niko se neće popeti tamo da bi dodao vlastite gumbe, koji će djelovati potpuno drugačije od onoga što su programeri namjeravali. Glupo je pisati da je sve ažurirano, čak i ono što ne koristim. Nemojte ažurirati modul koji je odgovoran za oznake u pretraživaču, ja ga ne koristim. Ili zaglavlja i podnožja u Wordu uopće nisu potrebna, uklonite ih iz ažuriranja. Ako vam se ne sviđa, nemojte ga ažurirati ili prilikom ažuriranja pročitajte šta se promijenilo.

Od sebe ću dodati da nisam predstavnik firmi primaoca franšize niti partner. Automatizacijom računovodstva za 1C se bavim više od 7 godina. Ako ste zainteresovani, mogu vam reći više o zamršenostima računovodstva u stvarnosti našeg vremena.

Pažnja! Evo probne verzije lekcije, čiji materijali možda nisu potpuni.

Prijavite se kao student

Prijavite se kao učenik da pristupite školskom sadržaju

Interni programski jezik 1C 8.3 za programere početnike: jednostavni logički izrazi u 1C

U prošloj lekciji naučili smo kako da damo imena i unesemo njihove vrijednosti od korisnika.

Steknite snagu i strpljenje. Lekcije 5 i 6 će biti teške, ali vrlo važne za dalje razumijevanje programiranja u 1C. Stoga, ako barem nešto ostane nerazumljivo ili neotkriveno - pročitajte ponovo, razmislite, postavljajte pitanja.

Jednostavni logički izrazi

Danas ćemo već proučavanim tipovima podataka (string, broj i datum) dodati još jedan - logicno tip. Može uzeti samo dvije vrijednosti: Istinito ili Lazi.

Boolean vrijednost ( Istinito ili Lazi) je rezultat nekog logičkog izraza.

Logički izraz je izraz sastavljen korištenjem operacija poređenja. Možete upoređivati ​​brojeve, datume, nizove i druge podatke. Čitate probnu verziju lekcije, nalaze se pune lekcije. Za logički izraz se može reći da je istinit ( Istinito) ili lažno ( Lazi).

Operacije poređenja su sljedeće:

Mislim da je intuitivno jasno šta svaka od operacija znači.

To glasi, na primjer, ovako:

  • 1 = 1 ("jedan je jedan").
  • 4 <>5 ("četiri nije jednako pet")
  • 3 > 1 ("tri je veće od jedan").

Skrećem vam pažnju na činjenicu da tri navedena primjera logičkih izraza imaju vrijednost Istinito jer su svi tačni.

Pogledajmo primjer:

Zadatak broj 14. Navedite za svaki logički izraz njegov rezultat - Istinito ili Lazi.

  1. "Venera" = "Jupiter"
  2. "venera"<>"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. "Jurij" + "Gagarin" = "Jurij Gagarin"

Pokušajte sami odgovoriti na sva pitanja. Čitate probnu verziju lekcije, nalaze se pune lekcije. Zatim pogledajte odgovore u nastavku i pokušajte shvatiti jeste li negdje pogriješili.

  1. "Venera" = "Jupiter" ( Lazi, nizovi nisu međusobno jednaki, a izraz kaže da su jednaki).
  2. "venera"<>"Jupiter" ( Istinito, nizovi nisu jednaki jedan drugom, kao što je navedeno u izrazu).
  3. 123 = 321 (Lazi, pošto brojevi nisu međusobno jednaki, a izraz kaže da su jednaki).
  4. 123 < 321 (Istinito, pošto je 123 manje od 321, kao što je navedeno u izrazu).
  5. 123 <= 321 (Istinito, budući da je 123 manje od 321, a ova izjava je tačna ako je lijevi broj manji ili jednak desnom broju).
  6. 123 <= 123 (Istinito, budući da je 123 jednako 123, a ova izjava je tačna ako je lijevi broj manji ili jednak desnom).
  7. "20000101" <> "20140101" (Istinito, pošto lijevi datum 01/01/2000 nije jednak 01/01/2014, kao što je navedeno u izrazu).
  8. "20000101" = "20000101" (Istinito, pošto je lijevi datum 01/01/2000 01/01/2000, kao što je navedeno u izrazu).
  9. "20140101" > "20120101" (Istinito, budući da je prvi januar 2014. veći od prvog januara 2012. godine, kako je navedeno u izrazu).
  10. 25 + 25 = 50 (Istinito, pošto je 25 plus 25 zaista jednako pedeset, kao što je navedeno u izrazu).
  11. 2 * (10 + 10) > 50 (Lazi, pošto je rezultat lijevog izraza 40, a 40 manji od 50, iako izjava kaže drugačije).
  12. "Jurij" + "Gagarin" = "Jurij Gagarin" ( Istinito, pošto zbir nizova "Jurij" i "Gagarin" formira jedan niz "Jurij Gagarin", koji je jednak nizu sa desne strane, kao što je navedeno u izrazu).

Hajde da prebrojimokompjuter

Ali šta mi sami smatramo "istinitim" ili "lažnim". Na kraju krajeva, imamo kompjuter pri ruci! Povjerimo mu ovaj zadatak, a ujedno provjerimo sebe.

Na primjer, provjerimo izraz 2 * (10 + 10) > 50.
Da bismo to uradili, pišemo sledeći program:

Izvještaj(2 * (10 + 10) > 50) ;

Ako ga pokrenemo, kompjuter će dati "Ne", što znači - rezultat je Lazi.

Kako je izračunao ovaj izraz?

  1. Računar je vidio komandu Report.
  2. Pogledao sam koji parametar prosljeđujemo ovoj komandi.
  3. Vidio sam da je logički izraz 2 * (10 + 10) > 50 specificiran kao parametar.
  4. Počeo je izračunavati rezultat logičkog izraza.
  5. Vidio sam da se izraz sastoji od lijeve strane 2 * (10 + 10), desne strane 50 i znaka veće od između njih.
  6. Izbrojao sam rezultat lijeve strane i otkrio da je jednak četrdeset.
  7. Ponovo je pogledao izraz, samo u već pojednostavljenom obliku 40 > 50, a pošto je 40, naravno, manje od 50, zaključio je "Ne".

Zadatak broj 15. Izračunajte sve primjere logičkih izraza iz prethodnog zadatka na računaru.

Na primjer, izraz "Venera" = "Jupiter", čija je vrijednost, kako smo saznali, jednaka Lazi.

Izvještaj("Venera" = "Jupiter" ) ;

Računar prikazuje "Ne" kada se pokrene, što znači da je rezultat zaista Lazi i sami smo to sasvim ispravno izračunali.

Referentno rješenje. Prvo sami napišemo kod, provjeravamo ga na kompjuteru (kao i svi primjeri programa sa lekcija), tek onda provjerimo












1. Uvod

Jezik 1C programa je strukturno-objektni. Ovaj jezik se može nazvati srednjim jezikom između jezika visokog nivoa i skriptnih jezika kao što je VBA.
U svojoj srži, 1C aplikacija radi, takoreći, sa dva modula. Prvi modul je jezgro ili motor. U stvari, ovo je kompajler koji prevodi kod kao i opis štampanih i grafičkih formi na ekran ili štampač. Drugi modul je baza podataka sa kojom radi prvi modul. Oba modula su međusobno povezana i ne mogu raditi samostalno. Drugi modul je odgovoran za pristup bazi podataka, kao i za manipulaciju informacijama u bazi.
U 1C verziji 7.7 postoji 1 ugrađeni mehanizam za pristup bazi podataka i jedan mehanizam koji koristi vanjsko sučelje za pristup bazi podataka.
Prvi mehanizam je pristup bazi podataka u formatu dbf (zapravo, pristup nije bazi podataka, već svakom pojedinačnom fajlu). Verzija dbf-a u upotrebi je DBASE II, sa pripadajućim ograničenjima i nedostacima ove starije verzije.
Drugi mehanizam je pristup bazi podataka u MS SQL Server formatu pomoću ODBC veze (tzv. ODBC provajder pristupa MS SQL Serveru), koji se isporučuje uz MS SQL Server. U početku je verzija 7.7 razvijena pod SQL Serverom 6.5 (tačnije, razvijena je verzijom 7.5, koja je radila na ranijim verzijama SQL Servera). U vrijeme pisanja ovog teksta, trenutno izdanje 1C (relej 7.70.027) podržava verzije SQL Servera 6.5, 7.0. SQL2000, nema informacija o SQL 2005 podršci. Ali autor je izvršio test za povezivanje sa SQL Serverom 2005 izdanje 7.70.027 i test nije uspio. One. može se pretpostaviti da službeno izdanje 27 ne podržava SQL Server 2005 (ali ovaj problem se može riješiti čitanjem ovdje:).
Da biste razumjeli kako 1C funkcionira, razmotrite kako 1C pohranjuje i kako pokreće kod za izvršenje. Sav 1C kod se fizički nalazi ili u datoteci 1Cv7.md ili u eksternim izvještajima obrade (*.ert) (moguće je i učitavanje modula iz vanjskih datoteka, ali ovo je poseban slučaj i neće se razmatrati). Kod se pokreće za izvršenje u fazama. To znači da se kod kompajlira i izvodi po potrebi (tačnije, kada se pristupi objektu ili obliku objekta). Jedini izuzetak je globalni modul, njegova kompilacija se odvija u trenutku pokretanja samog 1C (tačnije, nakon inicijalizacije baze podataka). Preostali moduli se ne kompajliraju u trenutku pokretanja 1C, već se kompajliraju samo kada se ovom modulu pristupa putem obrasca ili objekta. To dovodi do činjenice da morate sami provjeriti sintaktičku kontrolu ili potražiti sintaktičke greške već u vrijeme kada je aplikacija pokrenuta.

2. Struktura objekta 1C

Logično, 1C kod je pohranjen u modulima (modul u razumijevanju 1C jezika je kod koji se pokreće za izvršenje). U 1C, svi moduli se mogu podijeliti u 3 velike kategorije: 1 - globalni modul, 1C objektni moduli, moduli za obradu i izvještavanje. Sa stanovišta 1C, objekat se shvata kao deo zajedničkog skupa entiteta koji se nalazi u određenoj bazi podataka koji imaju ista svojstva, imaju isti skup metoda i obavljaju istu vrstu funkcija sa informacijama ili sa baza podataka. Treba napomenuti da nemaju svi 1C objekti module, ali u isto vrijeme neki objekti imaju više od jednog modula. Obično se moduli pričvršćuju na obrasce. Sa stanovišta 1C, obrazac je prozor sa skupom njegovih atributa i detalja. Nemaju svi objekti svoje oblike, dok neki objekti imaju nekoliko oblika. Ovo je obično u obliku određenog elementa ili u obliku liste elemenata.
Treba napomenuti da 1C radi sa bazom podataka, au isto vrijeme neki objekti nisu pohranjeni u bazi podataka.
One. Prva klasifikacija objekata može se zasnivati ​​na tome da li su informacije o objektima pohranjene u bazi podataka ili ne u bazi podataka, nazovimo prvi tip objekata Informativnim, a drugi tip - Neinformativnim. Svi informacioni objekti pohranjeni su u bazi podataka, u jednoj ili više tabela. Rad sa informativnim objektima uvijek uključuje pozicioniranje na određenom unosu u tablici koji identificira objekt. To znači da da biste pristupili takvom objektu, morate nekako otići do traženog zapisa u bazi podataka. Obično se za takav prijelaz koriste 1C metode.
Vrlo dobra karakteristika 1C je da neki od novonastalih objekata mogu imati tip postojećeg objekta. Takvi objekti se nazivaju generiranje tipova. Oni tipovi koji ne formiraju podatke za novokreirane objekte ne formiraju tipove. Svi objekti koji stvaraju tipove su informativni, tj. oni su pohranjeni u bazi podataka. U razumijevanju 1C, objekti koji generiraju tipove su agregatni objekti.
Istovremeno, u 1C postoje osnovni tipovi koji postoje bez obzira na kreirane objekte. Ovi tipovi se također pohranjuju u bazi podataka, ali ti podaci nisu objekti sa stanovišta 1C, već su atributi informacijskih objekata.
Takođe, bitna klasifikacija objekata je njihovo tipiziranje prema karakteristikama po kojima su podijeljeni u samom opisu baze podataka. Ovo su objekti:
  • Konstante.
  • Referentne knjige.
  • Dokumentacija.
  • Dnevnici dokumenata.
  • Enumerations.
  • Izvještaji.
  • Obrada.
  • Račun planovi.
  • Subconto tipovi.
  • Operacija.
  • Ožičenje.
  • Registri.
  • Obračunski časopisi.
  • Vrste proračuna.
  • Računske grupe.
  • Kalendari.
Osim toga, postoje objekti koji ne kucaju, a nisu informativni i koji nisu prisutni u stablu postavki konfiguracije:
  • Tekst.
  • xbase.
  • AccountingResults.
  • ispravno ožičenje.
  • Pravilo ponovnog izračuna.
  • Subsequence.
  • Periodično.
  • Lista vrijednosti.
  • ValueTable.
  • Table.
  • Zahtjev.
  • Slika.
  • FS (Sistem datoteka).
Gotovo svim navedenim tipovima objekata može se pristupiti u modulima preko funkcije kreiranja objekta CreateObject().Opća struktura opisanih klasifikacija objekata može se predstaviti kao matrica:
Tipovi objekata Informativno formiranje tipa CreateObject() Dostupnost modula
Konstante
Referentne knjige + + + +
Dokumentacija + + + +
Časopisi dokumenata +
Enumerations +
Izvještaji +
Obrada +
Kontni planovi + + + +
Subconto tipovi +
Operacija + + +
Ožičenje + +
Registri +
Obračunski časopisi + +
Vrste proračuna + +
Računske grupe
Kalendari +
Tekst +
xbase +
AccountingResults +
Ispravne objave + +
Pravilo ponovnog izračuna +
Subsequence + +
Periodično +
Lista vrijednosti +
Tabela vrijednosti +
Table +
Zahtjev +
Slika +
FS (sistem datoteka) +
Broj +
Linija +
datum +

3. Jezik 1C. Modularnost

Kao što je već spomenuto, cijeli tekst programskog koda podijeljen je na module.
Općenito, moduli se mogu strukturirati ovako:
Odvojena baza podataka
globalni modul.
Moduli imenika.
Moduli Oblici lista direktorija.
Modul elementa imenika.
Grupni modul imenika
Dokument moduli.
Modul obrasca dokumenta.
Dokument modul.
Moduli evidencije dokumenata.
Modul obrasca dnevnika dokumenata.
Moduli kontnog plana.
Modul obrasca računa.
Moduli obrazaca lista kontnih planova.
operativni moduli.
Operativni modul.
Moduli obrasca liste operacija.
moduli za ožičenje.
Moduli obrasca liste dnevnika knjiženja.
Moduli dnevnika proračuna.
Moduli obrazaca lista dnevnika obračuna.
Moduli tipova proračuna.
Obračunski moduli.
Moduli izvještaja.
Modul obrasca izvještaja.
moduli za obradu.
Modul obrada obrasca.
One. unutar iste baze podataka, samo globalni modul je dostupan iz svakog modula objekta. Svi ostali moduli su izolirani i njihovo međusobno povezivanje je nemoguće bez referenci na određeni pozicionirani objekt. Ali u isto vrijeme, atributi najvišeg nivoa (i dio metoda koji su definirani kao sistemske funkcije) su dostupni iz svakog modula. Treba napomenuti da pisane korisnički definirane funkcije i procedure nisu metode objekata i ne mogu se pozvati kao metode.
Nivo izolacije atributa i varijabli ide odozdo prema gore. Dakle, varijable globalnog modula su dostupne u svim modulima, baš kao i funkcije i procedure globalnog modula. Istovremeno, atributi objekata dostupni su u svim modulima ovih objekata, ali su metode podijeljene na one koje su dostupne i nedostupne.

4. Opšte odredbe za pisanje modula

Semantika 1C jezika je takva da je cijeli tekst modula podijeljen na izjave i komentare. Kraj operatora je znak ";". Operatori se sastoje od izraza.

4.1 Komentari

Komentari u 1C su samo red po red (nema blok po blok). komentar počinje sa dva znaka "//" i završava se terminatorom reda (tj. do kraja reda).

4.2. Imena varijabli, procedura i funkcija

Ime varijable, korisnički definirane procedure ili funkcije može biti bilo koji niz slova, brojeva i donjih crta "_", koji počinje slovom ili donjom crtom "_". Novostvorena imena ne smiju odgovarati rezerviranim jezičnim riječima ili imenima postojećih procedura i funkcija koje su dostupne u vrijeme izvršenja. Prepoznavanje imena varijabli, procedura i funkcija vrši se bez uzimanja u obzir velikih slova.

4.3. rezervisane reči

Sljedeće ključne riječi su rezervirani i ne mogu se koristiti kao generirana imena varijabli i deklarirane procedure i funkcije. U ovoj verziji jezika svaka od ključnih riječi ima dva prikaza - ruski i engleski. Englesko predstavljanje je tradicionalno za programske jezike. Ključne riječi u ruskoj i engleskoj prezentaciji mogu se slobodno miješati u jednom izvornom tekstu. Velika i mala slova ključnih riječi nisu važna. Ispod je lista ključnih riječi u oba prikaza.

ElseIf

Snaga

EndIf

Kontekst

Nastavi

prekinuti

EndProcedure

EndFunctions

Upozorenje

EndCycle

Procedura

4.4. Struktura programskog modula

Struktura programskog modula može se podijeliti na sljedeće dijelove:

  • sekcija definicije varijable;
  • odjeljak o procedurama i funkcijama;
  • dio glavnog programa.

U određenom programskom modulu neki od odjeljaka može nedostajati.

Sekcija definicije varijable se postavlja od početka teksta modula do prve naredbe procedure ili izraza funkcije ili bilo koje izvršne naredbe. Ovaj odjeljak može sadržavati samo izjave deklaracije varijabli.

Odjeljak za procedure i funkcije se postavlja iz prve izjave procedure ili funkcije u bilo koju izvršnu naredbu izvan tijela deklaracije procedure ili funkcije.

Glavna sekcija programa se postavlja od prve izvršne naredbe izvan tijela procedura ili funkcija do kraja modula. Ovaj odjeljak može sadržavati samo izvršne izraze. Dio glavnog programa se izvršava u trenutku kada je modul pokrenut za izvršenje (vidi "Vrste programskih modula"). Obično, u glavnom dijelu programa, ima smisla postaviti izjave za inicijalizaciju varijabli s nekim specifičnim vrijednostima koje se moraju izvršiti prije prvog poziva bilo koje procedure ili funkcije modula.

5. Format za opisivanje izraza i konverzija tipova

Kao što je već spomenuto, semantika 1C jezika je takva da su glavna komponenta operatora izrazi. Izrazi se zauzvrat sastoje od brojeva, vrijednosti niza ili vrijednosti tipa „datum“, ugrađenih jezičkih operatora, atributa i funkcija povezanih simbolima aritmetičkih operacija.

5.1 Vrste podataka u izrazima i njihov format.

Pogledajmo bliže elemente izraza i aritmetičke operacije koje se koriste za rad s njima.

Brojevi

Brojevi se pišu kao brojevi od 0 do 9; ako je potrebno zapisati razlomak, cijeli broj se odvaja tačkom ".".
Na primjer:
45 je pozitivan cijeli broj
-12 - negativan cijeli broj
16,67 je razlomak pozitivan broj.

Za rad s brojevima možete koristiti priložene aritmetičke operacije (pogledajte dolje).

Datumi

Datumi se pišu kao niz znakova u ovom formatu:
"DD.MM.GG"
ili
"DD.MM.GGGG",
gdje:
DD je dan u mjesecu. Mora biti napisan dvocifreno: ako je dan u mjesecu manji od 9, ispred se stavlja 0, na primjer "02";
MM - broj mjeseca, također napisan kao dvije cifre;
GG (GGGG) - godina, može se pisati sa dve ili četiri cifre.

Na primjer: "01.01.2007."

Imajte na umu da su datumi dati samo u jednostrukim navodnicima. Sa takvim zapisom, sekvenca sa karakterom poput "01/01/2007" će biti percipirana i obrađena od strane sistema 1C:Enterprise kao datum, a ne kao niz znakova koji "oslikavaju" datum. Zašto je ovo važno - reći ćemo u nastavku.

Pored određenih datuma, ugrađeni jezik ima nešto kao "prazan datum". Prazan datum je dat nizom "00.00.00". Obično se za poređenje koristi prazan datum. Također možete dobiti prazan datum koristeći metodu konverzije Datum(0).

Bilješka.

U 1C ne postoji tip Time, kao što ne postoji tip DateTime.

String vrijednosti

Vrijednosti niza su nizovi znakova zatvoreni u dvostruke ili jednostruke navodnike. Primjer: "Primjer stringa".

Ako trebate navesti navodnike u vrijednosti stringa, trebali biste koristiti 2 znaka navodnika u nizu. Na primjer, kada upisujete formulu sadržaja operacije, vrijednost niza forme

"Primjer stringa ""string u navodnicima"""

će formirati niz u sadržaju operacije

Primjer stringa "navodni niz"

U razmatranom primjeru u vrijednosti niza:
prvi znak navodnika je početni navodnik vrijednosti stringa u cjelini;
2 znaka navodnika u nizu su početni navodnik i u rezultirajućem nizu su zamijenjeni jednim znakom navodnika;
3 znaka navodnika u nizu je grupa koja se sastoji od: 2 navodnika - završni navodnik, koji su zamijenjeni jednim znakom navodnika u rezultirajućem nizu, i jedan navodnik - završni navodnik vrijednosti stringa u cjelini.

Kao što pokazuje praksa, iz nekog razloga indikacija navodnika u vrijednostima niza uzrokuje određene poteškoće. Iako u tome nema ništa komplicirano, samo trebate zapamtiti jednostavno pravilo: prvi i posljednji navod su po jedan znak, a svi navodnici unutar njih su po dva znaka.

Vrijednosti niza imaju koncept "praznog niza". Prazan niz je dat parom navodnika: "". Prazan niz ima sva svojstva "normalne" vrijednosti stringa, ali nema dužinu.

5.2. Aritmetičke operacije

Sada razmotrite aritmetičke operacije koje se koriste u 1C jeziku (Op - "operand"):

Međutim, upotreba aritmetičkih operacija ima određene karakteristike, u zavisnosti od vrste operanada.

With numeričke vrijednosti možete koristiti sve gore navedene aritmetičke operacije, gotovo bez ograničenja.

Za string vrijednosti dozvoljena je samo operacija "+", koja se u ovom slučaju naziva operacija "+". konkatenacija (pristupanje). Ova operacija dodaje jednu vrijednost niza drugoj.

Na primjer, rezultat izraza:

"Primjer stringa " + "Januar 2007"

postojaće niz

Primjer stringa iz januara 2007

Imajte na umu da se vrijednosti stringova spajaju jedna s drugom bez promjene - dužina rezultirajuće vrijednosti stringa jednaka je zbiru dužina spojenih vrijednosti niza. Da bi rezultat operacije konkatenacije bio "čitljiv" string, ne treba zaboraviti na zadnje i početne razmake u dodanim stringovima, kao što se radi, na primjer, u nizu "Primjer stringa".

Operacija spajanja može spojiti više od dvije vrijednosti niza u isto vrijeme. Na primjer, sljedeći izraz je važeći:

"Ivanov" + " " + "Ivan" + " " + "Ivanovič"

Rezultat će biti string

Ivanov Ivan Ivanovič

Za vrijednosti tipa datuma Operacije sabiranja i oduzimanja su dozvoljene, ali pravila za korištenje ovih operacija su malo složenija nego za brojeve i nizove.

Datumu možete dodati broj, na primjer:

"02.08.2000"+2

a rezultat izraza će biti datum kasnije od prvog termina za broj dana jednak drugom terminu. U ovom slučaju, rezultat će biti 04.08.2000. ili 4. avgusta 2000. godine.

"02.03.2000"-2

u ovom slučaju ćemo dobiti datum ranije od onog koji se smanjuje. Treba napomenuti da se takvim povećanjem ili smanjenjem datuma vrši ispravan prijelaz između mjeseca i godine, odnosno uzima se u obzir broj dana u mjesecu, prijestupne godine i tako dalje. U našem primjeru, rezultat izraza, naravno, neće biti 03/00/2000, već 07/29/2000 - 29. februar 2000.

"02.10.2000" - "02.08.2000"

u ovom slučaju rezultat će biti broj dana između minuenda i oduzimanja.

Kao što ste vjerovatno primijetili, za razliku od operacija s brojevima i nizovima, kod operacija s datumima, tip rezultata izraza se razlikuje od tipa operanada. Ovo treba imati na umu pri formulisanju formula: ako u formulu za izračunavanje datuma transakcije upišemo izraz poput onog iznad, najvjerovatnije ćemo dobiti poruku o grešci.

"02.08.2000" + "02.10.2000"

i nećemo čak ni dobiti poruku o grešci, ali rezultat takvog izraza nema fizičko značenje.

Da bismo imali općenitije razumijevanje izraza, treba reći da ne samo određeni brojevi, nizovi ili datumi mogu djelovati kao operandi aritmetičkih operacija, već i izrazi koji rezultiraju brojevima, nizovima ili datumima.

Na primjer, u izrazu

"Amortizacija za" + Format (Datum rada(), "D MMMMGGGG")

drugi operand je izraz, što će rezultirati vrijednošću niza koja predstavlja mjesec u riječima i godinu radnog datuma.

5.3. Automatska konverzija tipa

Općenito, operandi izraza moraju biti istog tipa ili tipova, kako je određeno pravilima za konstruiranje izraza. Na primjer, brojeve treba dodati brojevima, nizove nizovima, ali i datum i broj mogu se oduzeti od datuma.

U procesu konstruisanja izraza može biti potrebno konvertovati tipove podataka pojedinačnih operanada izraza u skladu sa pravilima. Da biste to učinili, ugrađeni jezik ima funkcije posebno dizajnirane za to. Evo primjera poznatog izraza:

"Amortizacija za " + Format (Datum rada(), "D MMMMGGGG")

U ovom izrazu, drugi operand WorkingDate(), koji je tipa "datum", konvertuje se u tip "string" pomoću funkcije Format().

Međutim, sistem 1C:Enterprise, prije izračunavanja izraza, "može" automatski konvertirati operande različitih tipova u isti tip, vođen pravila konverzije tipa.

Za osnovne tipove definirana su sljedeća pravila konverzije:

Broj -> String

Ako broj nema postavku formata, tada je njegova reprezentacija niza potpuni prikaz broja u fiksnoj tački.

Datum -> String

Datum konvertovan u string tip ima oblik DD.MM.GG, gde je YY dve cifre godine, MM je numerička oznaka meseca (01, ..., 12), DD je dan u mesecu.

String -> Broj

Niz se pretvara u broj što je moguće duži. Dobiveni broj se smatra rezultatom konverzije. (Na primjer, niz "1.22 Glass" će biti pretvoren u broj 1.22). Ako na početku niza nema ničega što bi se moglo protumačiti kao broj, onda je rezultat 0.

Datum -> Broj

Rezultat ove konverzije je numerički prikaz datuma.

String -> Datum

Ako red počinje nečim što se može protumačiti kao string reprezentacija datuma u obliku DD.MM.GG, gdje je YY dvocifrena godina, MM je brojčani mjesec (01, ..., 12), DD je dan mjeseci, odgovarajuća konverzija će se izvršiti. U suprotnom, vrijednost datuma će biti null.

Broj -> Datum

Pokušava se uzeti cijeli dio broja i protumačiti ga kao numerički prikaz datuma. Ako je broj negativan, onda je rezultat nulti datum.

Dakle, prije svega, trebali biste to zapamtiti tip rezultata izraza određen je tipom prvog operanda tog izraza. Preostali operandi se prebacuju na tip prvog operanda. Poznavajući ovo pravilo, može se predvidjeti tip rezultata izraza u cjelini i kontrolirati tip rezultata.

Na primjer, rezultat izraza

2+"A"

će biti broj 2, jer prvi operand izraza ima numerički tip, a drugi operand, u skladu sa pravilima konverzije tipa, postao je jednak 0.

Međutim, vrijedi malo promijeniti izraz i napisati ga ovako:

""+ 2+"A"

kako će se njegov rezultat radikalno promijeniti: rezultat izraza će biti niz "2A".

Zašto se to dogodilo? Iznad smo govorili o konceptu "praznog niza", koji ima sva svojstva vrijednosti stringa, uključujući i tip "string". U našem primjeru, prazan niz je prvi operand izraza, a kada je izraz procijenjen, svi njegovi operandi su konvertovani u tip "string" u skladu sa pravilima konverzije tipa.

Još jedan primjer. Iznad smo naglasili da je vrijednost tipa "datum" određena nizom znakova u jednostrukim navodnicima, a isti niz znakova, ali već u dvostrukim navodnicima, je niz. Sada ćemo to ilustrovati primjerima.

Kao što smo već rekli, rezultat izraza "08/02/2000"+2 će biti datum 08/04/2000. Ali navođenjem prvog operanda u dvostrukim navodnicima:

"02.08.2000"+2

dobijamo potpuno drugačiji rezultat - niz "08/02/20002".

Hajde da sumiramo. Možete kontrolirati tip rezultata cijelog izraza postavljanjem prvog operanda na praznu vrijednost odgovarajućeg tipa. Prednost takve metode je u tome prazna vrijednost ne mijenja rezultat izraza. Na primjer, stavljanje 0 na početak izraza:

0+ "23"+45

kao rezultat ćemo dobiti broj 68, jer je izraz u cjelini tipa "broj", a niz znakova, u skladu sa pravilima konverzije tipa, uspješno je konvertovan u broj 45.

Ovdje je prikladno podsjetiti na prazan datum. Šta će biti rezultat izraza "00.00.00"+ 2+"02.08.2000"? Naravno, datum je 08/04/2000 (4. avgust 2000), jer je prvi operand izraza bio vrijednost tipa "datum".

Naprotiv, uklanjanje praznog datuma

2+"02.08.2000"

kao rezultat dobijamo 2451761 - ovo je broj dana od datuma nula do 2. avgusta 2000, plus još 2 dana.

5.4. Operatori logičkog poređenja

U 1C postoje takvi logički izrazi za osnovne tipove podataka.

> Više

< Меньше

<>Nije jednako

Ovi logički izrazi se mogu primijeniti na sva tri osnovna tipa podataka.

Što se tiče numeričkog tipa podataka, nema problema, uspoređuje se standardni broj (cijeli ili razlomački).

Za vrijednosti stringova dolazi do poređenja sa njihovim takozvanim "sken-kodovima" (u razumijevanju 1C, takav kod se može dobiti pomoću SymbolCode() metode). Poređenje se vrši karakter po karakter. Dakle, ako se porede nizovi jednake dužine, onda se kodovi odgovarajućih znakova porede sekvencijalno. Poređenje se dešava do prve nejednakosti u nizu (ako se niz sastoji od više od jednog znaka). Ako se upoređuju nizovi različitih dužina, tada se vrijednosti koje nedostaju u operatoru popunjavaju praznim znakovima niza (ne razmakom (Kôd= 32)). One. vrijednost razmaka (znak(32)) je veća od vrijednosti praznog niza.

Za tipove datuma, sam datum se upoređuje (ali moguće je da se 1C prije poređenja datuma prevede u broj koji je jednak broju dana od Datuma (0)).

6. Problemi zaokruživanja

Prilikom vođenja automatizovanog računovodstva korisnici se često susreću sa takozvanim „problemima zaokruživanja“ – situacijama kada se zbog zaokruživanja različitih izračunatih vrednosti, kao što su trošak, bilo koji porez, u različitim fazama obračuna, u konačnim rezultatima pojavljuju „viseći novčići“.

Na primjer, ova situacija:
Postoji 16 jedinica robe po cijeni (sa PDV-om) od 110,50 UAH.
- ukupni trošak je 110,50 * 16 = 1768 UAH.
- PDV (po stopi od 20%, uključujući) je 1768 * 20 / 120 = 294,67 UAH.

Ako se sada ovaj proizvod prodaje "na komad" bez ikakvih doplata, PDV će biti drugačiji:
- PDV po jedinici robe bit će 110,50 * 20 / 120 = 18,42 UAH.
- PDV za svih 16 jedinica bit će 18,42 * 16 = 294,72 UAH.

Razlika u PDV-u između "grupnih" računa i "komadnih" prodaje je 5 kopejki. Bez dodane vrednosti, dugovali smo budžetu 5 kopejki u vidu poreza iz njega.

Imajte na umu da kada je roba stigla, nismo mogli obračunati PDV "po komadu" - obračunavajući iznos poreza u cijeni jedne jedinice robe i množenjem s količinom robe. U ovom slučaju može doći do još većih gubitaka zaokruživanja. Na primjer, ako je cijena jedne jedinice robe 3 kopejke, čemu je onda jednak PDV?

Kada dođe do ovakvih "rezultata zaokruživanja", treba imati na umu da problem nije u programu, ne u formulama obračuna, već u većoj (u poređenju sa "ručnim" računovodstvom) tačnosti i rigoroznosti pravila izračunavanja. Vodeći ručne evidencije, računovođa često sebi dopušta da prilagodi rezultat obračuna, skrivajući ove "peni" u srednjim proračunima.

U tipičnim konfiguracijama 1C: Enterprise, gdje je to moguće, takve situacije se uzimaju u obzir i ispravno se rješavaju. Na primjer, ako se kreditiraju 3 jedinice robe ukupne vrijednosti 1 grivna, tada će prve dvije jedinice biti otpisane po cijeni od 33 kopejke, a posljednja - 34 kopejke. Ali ne mogu se svi slučajevi zaokruživanja uzeti u obzir u algoritmima, uključujući gornji primjer sa pet kopejki PDV-a ne može se ispravno obraditi u programu.
U nekim slučajevima takve greške se mogu izbjeći postavljanjem "prikladne" cijene za robu - tako da se PDV obračuna u potpunosti, bez traga. Ali ovo pravilo se odnosi samo na prodajne cijene - nabavne cijene ne moraju biti odabrane. U drugim slučajevima, korisnici programa treba da analiziraju odakle su došli "viseći novci" i odluče kako će se nositi s njima.

7. Ograničenja sistema V77

datum
Datum - radi ispravno u rasponu datuma od 01/01/0000 do 12/31/9999
Datum(0) odgovara 1721061 dana od datuma 01.01.0000
Kada pokušate da pređete na minus datume - 12/31/0001, sistem ne radi kako treba, jer radi od datuma 0, tj.: Datum("01/01/0000")-1 = 01/00/00. Funkcija formatiranja za takve datume uopće ne radi.

Broj
maksimalan broj vrijednosti = 64 (64 znaka).

Linija
Maksimalan broj = vrijednosti je ograničen slobodnom fizičkom memorijom (bez datoteke stranične memorije). Pretpostavlja se da ne može biti više od 2^32-1 karaktera.

Dokument
Dokument - može se kreirati 9999 vrsta dokumenata.
Dokument može imati i raditi ispravno sa najviše 9999 redova.
Maksimalna dužina koda je 20, tj. ukupno (27+33+10)^20 dokumenata bi se teoretski moglo kreirati (70^20 = 7,9792266297612001e+36).
Ukupno ne može biti više u sistemu (dužina ID koda u logu = 9), praktično ID dužina je 6 karaktera (3 po URIB-u) 36^6 = 2176782336 dokumenata.
Broj unesenih dokumenata sa istim vremenom je ograničen na 36^4 = 1679616

U pravilu, proučavanje bilo kojeg programskog jezika počinje primjerom pisanja prvog jednostavnog programa ("Zdravo svijet!"). Ovo se radi kako bi se vizuelno prikazao rad sa osnovnim sintaksičkim konstrukcijama. Nećemo praviti izuzetak od ovog uobičajenog načina predstavljanja materijala prilikom učenja novog razvojnog okruženja, pa stoga i naš prvi članak treba razmotriti u istom duhu. U njemu ćemo detaljno analizirati odgovore na sljedeća pitanja u vezi sa programiranjem na platformi 1C:Enterprise 8:

  • Gdje i uz koju pomoć napisati programski kod na ugrađenom 1C jeziku?
  • Šta su programski moduli, koja su pravila za rad sa njima?
  • Šta je varijabla, kako raditi s njom, kako i gdje je deklarisati?
  • Šta su operatori poređenja, dodjele i uvjetni operatori i kako ih koristite?
  • Booleove operacije - šta su to i kako s njima raditi?
  • Zašto su petlje potrebne i kako ih koristiti?

Članak će biti koristan svima onima koji još nisu upoznati s razvojem na platformi 1C:Enterprise 8, ali žele naučiti kako programirati u 1C.

Primjenjivost

Materijal je relevantan za platformu "1C:Enterprise 8" izdanja 8.2. i 8.3.

Varijable i operatori

U ovom članku počinjemo proučavati ugrađeni jezik 1C:Enterprise 8. Izvršni kod se nalazi u programskim modulima.

Postoji prilično veliki broj modula koji su dizajnirani za rukovanje raznim događajima.

Dakle, prijava korisnika se obrađuje u jednom modulu, a obrada klika korisnika na određeno dugme u potpuno drugom.

Dakle, svaki modul opisuje ponašanje konfiguracije u određenoj tački. Modul sadrži, prije svega, odjeljak deklaracije varijable. One. možemo deklarisati neke varijable u modulu.

U budućnosti se mogu koristiti u procedurama i funkcijama ovog modula. Ako je varijabla definirana ključnom riječi Export, tada će biti dostupna izvan ovog modula. Primjer linije deklaracije varijable:

Rem Skladište, Odjeljenje, Izvoz skladištara;

Nakon deklaracije varijabli, postoji dio procedura i funkcija.

Iza njih je dio glavnog programa, koji će se izvršavati u trenutku pristupa ovom modulu.

Na primjer, u glavnom dijelu programa možete inicijalizirati varijable, tj. dajte im neke početne vrijednosti:

Stanje=1;
NewExpression=2;
rezultat=3;

Modul se može zamisliti kao kombinacija različitih operatora koji izvode različite akcije koje su nam potrebne.

Razdjelnik operatora je znak ";" (tačka-zarez). Ovaj znak je znak kraja operatera. One. operator se može napisati ovako:

Rezultat=100X200
+400
-600;

Nije važno na koliko redova je izjava.

Naravno, često je zgodnije i jasnije postaviti operatora na jednu liniju, ali ponekad su operatori prilično dugački (broj linija može razumno doseći nekoliko desetina).

Tačka i zarez se može izostaviti u završnom iskazu date konstrukcije, na primjer, procedure. One. sljedeći kod će raditi:

Procedura CalculateValue()

Početna vrijednost = 100;
IntermediateValue = Početna vrijednost / 5;
FinalValue = InicijalnaValue+IntermediateValue

EndProcedure

Međutim, bolje je koristiti tačku i zarez u završnoj izjavi. Moguće je da će vremenom gradnja biti nastavljena, a konačni operater više neće biti konačan. Morat ćemo posebno pratiti ovu situaciju.

Varijable su dizajnirane da drže neku vrijednost bilo kojeg tipa podataka. Koriste se za posredno skladištenje informacija za obradu.

U gotovo svakom softverskom modulu koji izvodi neku radnju, postoje različite varijable. Upisivanje varijable po vrijednostima u Platformi 1C:Enterprise 8 je meko.

Na primjer, varijabla može sadržavati vrijednost jednog tipa podataka, a nekoliko redaka kasnije, drugog tipa:

Created = false;
Created = true;
Kreirano =100;

U prva dva izraza vrijednost varijabli je boolean, au trećoj se mijenja u numeričku vrijednost. One. kucanje ovisi o vrijednosti koja je dodijeljena ovoj varijabli.
Varijable se mogu deklarirati na dva načina:

  • implicitna metoda (pominjanje na lijevoj strani operatora dodjeljivanja opisuje ovu varijablu, nema preliminarnog opisa varijable sa riječju Variable, tj. ne postoji poseban dio deklaracije varijabli);
  • eksplicitna deklaracija varijabli (Variable ControlData;). Eksplicitna deklaracija varijabli se koristi, na primjer, ako se očekuje naknadni prijenos ove varijable u funkciju.

Za nazive varijabli koristi se klasični opis identifikatora. Identifikator se sastoji od slova, brojeva i donjih crta. Identifikator mora početi slovom ili donjom crtom.

U ovom slučaju, ime varijable treba da odražava značenje ove varijable. Jednoslovna imena varijabli (kao što su A, B, C) su loš primjer. One ne odražavaju suštinu varijabli.

Primjeri ispravnih imena varijabli: Brojač (inkrementirajuća varijabla za petlju), Kontraktor. Ako ime varijable sadrži nekoliko riječi, onda bi svaka nova riječ, radi jasnoće, trebala početi velikim slovom.

Rezervirane riječi, kao što su procedura, funkcija, petlja, kraj ciklusa, itd., ne mogu se koristiti u imenima varijabli. (ove konstrukcije su označene crvenom bojom u programskom modulu).

Rezervirane riječi su ugrađeni operatori jezika i ima ih dosta. Svi su predstavljeni u Syntax Assistant.

Treba napomenuti da tipovi podataka nisu rezervirane riječi (na primjer, niz, logički, istinit, netačan). Sistem će ispravno percipirati takva imena varijabli.

Za pisanje programskog koda, velika i mala slova nisu bitna. Na primjer, riječ Procedura može biti napisana i velikim i malim slovima. Štaviše, velika i mala slova mogu se preplitati unutar riječi.

Platformi to nije bitno. Međutim, prema pravilima lijepog ponašanja, početak riječi mora biti napisan velikim, a sva ostala slova malim slovima.

O jeziku. Možete koristiti i ruski i engleski i kombinaciju dva jezika. Ako je nekome zgodno, možete sigurno koristiti engleski za pisanje programskog koda, kao i kombinirati ruski i engleski. Nije bitno za platformu.

Mnoga imena na engleskom prilično je teško zapamtiti. Kada se koristi kombinacija dva jezika, čitljivost programskog koda se pogoršava.

Bulove operacije

Operatori poređenja vrlo često koriste Booleovu logiku koja vraća True ili False.

Na primjer, u uslovnom operatoru, možete uporediti: Ako je Događaj = Prodaja Tada će algoritam ići duž jedne grane (tj., ako je vrijednost Tačna), prema False uvjetu, druga grana algoritma se izvršava.

Uslovi mogu biti prilično složeni, mogu se kombinovati, koristeći sljedeće operatore: AND, OR i NOT. Dakle, za AND operator:

Istina I Istina = Istina;
Tačno I False = Netačno;
False AND True = Netačno;
False AND False = Netačno.

Za operator OR dovoljno je da je jedan od operanada jednak Tačno, tada će vrijednost kombinacije biti Tačno. Vrijednost je False samo ako su oba operanda False.

NOT operator jednostavno invertuje trenutnu vrijednost (False to Tačno, Tačno u False).

Koristeći kombinaciju ovih operatora, možete izgraditi prilično složene uslove. Prilikom sastavljanja složenih uslovnih iskaza, uzmite u obzir prednost.

Operator NOT ima najveći prioritet, nakon čega slijedi operator AND, a zatim operator OR. Sve što je zatvoreno u zagradama ima najveći prioritet i prvo se izvršava.

Na primjer, postavimo prioritete (slijed izvršavanja) za operacije u gornjem izrazu:

NOT(Uslov1 ILI Uslov2) I Uslov3 ILI Uslov4
1.Rezultat1 = (Uslov1 ILI Uslov2);
2. Rezultat2 = NIJE Rezultat1;
3. Rezultat3 = Rezultat2 I Stanje1;
4. Rezultat = Rezultat3 ILI Stanje4;

Postoji pravilo transformacije:

NOT (Uslov1 ILI Uslov2) = NIJE Uslov1 I NE Uslov2.

Međutim, ne treba uvijek težiti pojednostavljenju izraza, jer je često, logično, prošireni izraz lakši za čitanje.

operator dodjeljivanja

Operator dodjeljivanja ne treba miješati sa jednakošću, iako imaju isti pravopis.

Princip operatora dodjeljivanja je takav da se lijevoj vrijednosti (varijable na lijevoj strani) dodjeljuje vrijednost koja je desno od znaka jednakosti. Uzmimo primjer:

Varijabla1 = Varijabla2 = Varijabla3;

Varijabli1 se dodjeljuje vrijednost jednakosti iz Bulove logike, tj. Tačno ako je Varijabla2 = Varijabla3, ili False u suprotnom.

Prilikom testiranja za poziciju programera početnika, često se koristi zadatak: zamijeniti vrijednosti dvije varijable.

Ovaj problem se rješava pomoću operatora dodjeljivanja i ima dva rješenja.

Rješenje #1 korištenjem privremene varijable:
TempVar = Varijabla1;
Varijabla1 = Varijabla2;
Varijabla2 = TempVariable;

Rješenje #2:
Varijabla1 = Varijabla1 + Varijabla2;
Varijabla2 = Varijabla1 – Varijabla2;
Varijabla1 = Varijabla1 – Varijabla2;

Uslovni operator

Postoji takav operator If, nakon kojeg je potrebno opisati neki uslov (sam uslov može biti prilično velik). Nakon uslova slijedi riječ Then i naredbe koje treba izvršiti.

Ovo može biti praćeno ključnom riječi Else i nizom drugih izjava. Ako postoji nekoliko različitih uslova, možete koristiti niz ključnih riječi ElseIf(vidi primjer ispod). Cijela struktura mora biti upotpunjena ključnom riječi EndIf nakon čega slijedi tačka i zarez.

Pored jednostavnih i višestrukih uslova, postoji i skraćeni oblik uslovnog operatora: ?(Uslov, Izraz1, Izraz2);

Ako je uslov tačan, onda Izraz1, inače - Izraz2. Primjer koda: ExpensiveItem = ?(Item.Price>100000, Tačno, False);

U praksi, umjesto poređenja zapisi sa vrijednošću Istinito (Lazi) tip:

Ako je varijabla = istina, onda
i
Ako je varijabla = netačno onda

zapravo se koristi ekvivalentna notacija:

Ako je varijabilno onda
i
Ako NIJE Varijabilno onda

Cyclic Operators

Za bilo koju vrstu ciklusa, potrebna je eksplicitna indikacija kraja ovog ciklusa pomoću ključne riječi EndCycle. Postoji nekoliko vrsta ciklusa.

Ciklus po brojaču- ciklus sa fiksnim brojem ponavljanja. Uslov za izlazak iz petlje je da je prekoračena granična vrijednost. Primjer korištenja za izračunavanje vrijednosti A!

A = 5;
Faktorski = 1;
Za brojač = 1 po A petlji
Faktorski = Faktorski * Brojač;
EndCycle;

Petlja po uslovu– se izvršava dok je uslov ovog ciklusa tačan. primjer:

RemainderSum = 1000;
Cijena dodatne stavke = 243;
Količina = 0;
Dok je preostali iznos>0 ciklus
Količina = Količina+1;
Preostali iznos = Preostali iznos - Količina * Cijena dodatne robe;
Cijena ekstra artikla = Cijena ekstra artikla * 0,8;
EndCycle
Količina = Količina-1;

Ova petlja izračunava koliko jedinica proizvoda se može kupiti za dati iznos (1000 rubalja) ako se nakon kupovine svake jedinice proizvoda njegova prethodna cijena pomnoži s faktorom 0,8. Početna cijena robe je 243 rublja.

Primjer greške pri korištenju ove vrste petlje od strane početnika je vječna petlja, kada je uvjet petlje u početku tačan, ali se unutar same petlje ni na koji način ne mijenja.

Petlja kroz kolekcije (drugi naziv je Za svaku).

Platforma ima prilično veliki broj kolekcija (to su kontejneri koji sadrže elemente određenog tipa).

Možete iterirati elemente kolekcije koristeći posebnu vrstu petlje.

Na primjer, postoji niz brojeva, morate izračunati zbir svih elemenata niza:

Zbir = 0;
Za svaki element iz petlje niza
Zbir=Zbroj+Stavka;
EndCycle;

Postoje posebni operatori za petlje: Nastavi i prekinuti.

Ako, u nekom trenutku u petlji, izvršenje daljnjih naredbi ove petlje postane besmisleno, tada se operator koristi za povratak na početak petlje i organiziranje sljedeće petlje. Nastavi.

Operater prekinuti dozvoljava da se petlja završi čak i ako je uslov petlje tačan.

Ovo završava naše prvo upoznavanje sa razvojem internog jezika 1C.

Šta je sa Hello World? Nismo ga još napisali, zar ne? Da, ali ništa te ne sprečava da to uradiš sam, jer. znanje je već dovoljno. Pa, ako to ne uspije, možete pogledati ovdje.

Ukrajinski 1C forum: sve o 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7 _ Sistem kompozicije podataka _ Jezik izraza sistema za kompoziciju podataka

Sadržaj
1 Jezik izraza sistema kompozicije podataka
2 Literala
2.1 Linija
2.2 Broj
2.3 Datum
2.4 Boolean
2.5 Značenje
3 Operacije nad brojevima
3.1 Unarno -
3.2 Unarni +
3.3 Binarno -
3.4 Binarno +
3.5 Umetničko delo
3.6 Podjela
3.7 Ostatak
4 Operacije na žicama
4.1 Povezivanje (binarni +)
4.2 Slično
5 Operacije poređenja
5.1 Jednako
5.2 Nije jednako
5.3 Manje
5.4 Više
5.5 Manje ili jednako
5.6 Veće ili jednako
5.7 Operacija B
5.8 Operacija provjere prisutnosti vrijednosti u skupu podataka
5.9 NULL test operacija
5.10 NULL test operacija
6 Bulove operacije
6.1 Rad NE
6.2 Rad I
6.3 ILI rad
7 Agregatne funkcije
7.1 Iznos
7.2 Količina
7.3 Broj različitih
7.4 Maksimum
7.5 Minimum
7.6 Prosjek
8 Ostale operacije
8.1 Operacija SELECT
9 Pravila za poređenje dvije vrijednosti
10 Rad sa nulom
11 Operativni prioriteti
12 Funkcije jezika izraza sistema kompozicije podataka
12.1 Izračunajte
12.2 Nivo
12.3 Redni broj
12.4 NumberInOrderInGroup
12.5 Format
12.6 Početni period
12.7 Kraj perioda
12.8 AddDate
12.9 Datum razlike
12.10 Podniz
12.11 StringLength
12.12 God
12.13 Kvart
12.14 Mjesec
12.15 Dan u godini
12.16 Dan
12.17 Sedmica
12.18 Dan u sedmici
12.19 sati
12.20 minut
12.21 sekundi
12.22 Express
12.23 YesNull
12.24 Opće funkcije modula

Sistemski jezik za sastavljanje podataka

Jezik izraza sistema za kompoziciju podataka dizajniran je za snimanje izraza koji se koriste u različitim dijelovima sistema.

Izrazi se koriste u sljedećim podsistemima:

  • šema sastava podataka - za opisivanje izračunatih polja, ukupnih polja, izraza linkova, itd.;
  • postavke sastava podataka - za opisivanje prilagođenih izraza polja;
  • Izgled sastava podataka - za opisivanje izraza odnosa skupa podataka, opisivanje parametara rasporeda, itd.

Literali

Izraz može sadržavati literale. Mogući literali sljedećih tipova:

  • Linija;
  • Broj;
  • Datum;
  • Boolean.

Linija

Literal niza se piše u znakovima """, na primjer:

"String literal"


Ako trebate koristiti znak """ unutar literala stringa, trebali biste koristiti dva takva znaka.

Na primjer:

„doslovno „„pod navodnicima“““

Broj

Broj se piše bez razmaka, u decimalnom formatu. Razlomak je odvojen znakom "." Na primjer:

datum

Literal tipa datuma se piše pomoću ključnog literala DATETIME. Nakon ove ključne riječi, u zagradama, odvojenim zarezima, navode se godina, mjesec, dan, sati, minute, sekunde. Indikacija vremena nije potrebna.

Na primjer:
DATUM VRIJEME (1975, 1, 06) - 6. januar 1975
DATETIME(2006, 12, 2, 23, 56, 57) - 2. decembar 2006., 23:56:57, 23:56:57

boolean

Booleove vrijednosti se mogu napisati pomoću literala True (True), False (False).

Značenje

Za specificiranje literala drugih tipova (sistemske enumeracije, unaprijed definirani podaci), koristi se ključna riječ Value, praćena imenom literala u zagradama.
Vrijednost (Tip računa. Aktivan)

Operacije nad brojevima

unarno -

Ova operacija je dizajnirana da obrne predznak broja. Na primjer:
-Prodaja. Količina

Unary +

Ova operacija ne izvodi nikakve operacije na broju. Na primjer:
+Prodaja.Količina

binarni -

Ova operacija je dizajnirana da izračuna razliku dva broja. Na primjer:
RemainsAndTurnovers.InitialRemainder - RemainsAndTurnovers.EndRemaining
RemainsAnd Turnovers.InitialRemainder - 100
400 – 357

Binarno +

Ova operacija je dizajnirana da izračuna zbir dva broja. Na primjer:
Stanja I Promet Početno stanje + Stanja I Promet Promet
RemainsAnd Turnovers.InitialRemainder + 100
400 + 357

Posao

Ova operacija je dizajnirana za izračunavanje proizvoda dva broja. Na primjer:
Nomenklatura.Cijena * 1.2
2 * 3.14

Division

Ova operacija je dizajnirana da dobije rezultat dijeljenja jednog operanda drugim. Na primjer:
Nomenklatura.Cijena / 1.2
2 / 3.14

Ostatak divizije

Ova operacija je dizajnirana da dobije ostatak podjele jednog operanda drugim. Na primjer:
Nomenklatura.Cijena % 1.2
2 % 3.14

Operacije na nizovima

Konkatenacija (binarni +)

Ova operacija je dizajnirana za spajanje dva niza. Na primjer:
Nomenklatura.Član + “: ”+ Nomenklatura.Naziv

Sviđa mi se

Ova operacija provjerava da li niz odgovara datom uzorku.

Vrijednost operatora LIKE je TRUE ako je vrijednost<Выражения>odgovara uzorku, a u suprotnom FALSE.

Sljedeći likovi u<Строке_шаблона>imaju značenje koje nije samo još jedan znak u nizu:

  • % - procenat: niz koji sadrži nula ili više proizvoljnih znakova;
  • _ - donja crta: jedan proizvoljan znak;
  • […] - jedan ili više znakova u uglastim zagradama: jedan znak, bilo koji od onih navedenih unutar uglastih zagrada. Nabrajanje može sadržavati opsege, kao što je a-z, što znači bilo koji znak unutar raspona, uključujući krajeve raspona;
  • [^…] - u uglastim zagradama ikona negacije praćena jednim ili više znakova: bilo koji karakter osim onih navedenih iza ikone negacije;

Bilo koji drugi simbol znači sam i ne nosi nikakav dodatni teret. Ako je potrebno napisati jedan od navedenih znakova kao sebe, onda mu mora prethoditi<Спецсимвол>Navedeno iza ključne riječi ESCAPE.

Na primjer, šablon
“%ABC[abc]\_abc%” POSEBNI KARAKTER “\”

označava podniz koji se sastoji od niza znakova: slova A; slova B; slova B; jedna cifra; jedno od slova a, b, c ili d; znak podvlake; slova a; slova b; slova u. Štaviše, ovaj niz se može locirati počevši od proizvoljne pozicije u nizu.

Operacije poređenja

Jednako

Ova operacija je dizajnirana da uporedi dva operanda radi jednakosti. Na primjer:
Sales.Counterparty = Sales.NomenclatureMainSupplier

Nije jednako

Ova operacija je dizajnirana da uporedi dva operanda za nejednakost. Na primjer:
Sales.Counterparty Sales.NomenclatureMainSupplier

Manje

Ova operacija je dizajnirana da provjeri da li je prvi operand manji od drugog. Na primjer:
SalesCurrent.Amount

Više

Ova operacija je dizajnirana da provjeri da li je prvi operand veći od drugog. Na primjer:
SalesCurrent.Amount > SalesPast.Amount

Manje ili jednako

Ova operacija je dizajnirana da provjeri da li je prvi operand manji ili jednak drugom. Na primjer:
SalesCurrent.Amount

Više ili jednako

Ova operacija je dizajnirana da provjeri da li je prvi operand veći ili jednak drugom. Na primjer:
SalesCurrent.Amount >= SalesPast.Amount

Operacija B

Ova operacija provjerava prisutnost vrijednosti u proslijeđenoj listi vrijednosti. Rezultat operacije je True ako je vrijednost pronađena ili False u suprotnom. Na primjer:
Stavka B (&Item1, &Item2)

Operacija za provjeru da li vrijednost postoji u skupu podataka

Operacija provjerava prisutnost vrijednosti u navedenom skupu podataka. Skup podataka za validaciju mora sadržavati jedno polje. Na primjer:
Prodaja Izvođač radova

Operacija provjere NULL

Ova operacija vraća True ako je vrijednost NULL. Na primjer:
Prodaja.Izvođač JE NULL

Operacija provjere vrijednosti koja nije NULL

Ova operacija vraća True ako vrijednost nije NULL. Na primjer:
Prodaja.Izvođač NIJE NULL

Bulove operacije

Logičke operacije prihvataju kao operande izraze tipa Boolean.

Operacija NE

Operator NOT vraća Tačno ako je njegov operand False, i vraća False ako je njegov operand Tačan. Na primjer:
NOT Document.Consignee = Dokument.Pošiljalac

Operacija I

Operacija AND vraća True ako su oba operanda Tačna, i vraća False ako je jedan od operanda False. Na primjer:
Document.Consignee = Dokument.Pošiljalac I Document.Consignee = &Izvođač

OR operacija

Operacija OR vraća True ako je jedan od operanada Tačan, i False ako su oba operanda False. Na primjer:
Document.Consignee = Dokument.Pošiljalac OR Document.Consignee = &Izvođač

Agregatne funkcije

Agregatne funkcije izvode neku radnju na skupu podataka.

Suma

Agregatna funkcija Sum izračunava zbir vrijednosti izraza koji su joj proslijeđeni kao argument za sve zapise detalja. Na primjer:
Iznos(Prodaja.IznosPromet)

Količina

Funkcija Count broji broj vrijednosti koje nisu nulte. Na primjer:
Količina (Prodaja. Izvođač)

Broj različitih

Ova funkcija broji broj različitih vrijednosti. Na primjer:
Količina (razne prodaje. Izvođač)

Maksimum

Funkcija dobiva maksimalnu vrijednost. Na primjer:
Maksimum (ostaci. Količina)

Minimum

Funkcija dobiva minimalnu vrijednost. Na primjer:
Minimum (Stanje. Količina)

Prosječna

Funkcija dobiva srednju vrijednost za vrijednosti koje nisu nule. Na primjer:
Prosjek (ostaci. Količina)

Ostale operacije

Operacija SELECT

Operacija Select je dizajnirana za odabir jedne od nekoliko vrijednosti pod određenim uvjetima. Na primjer:
Odaberite Kada Zbroj > 1000 Zatim Zbroj Drugo 0 Kraj

Pravila za poređenje dvije vrijednosti

Ako se tipovi uspoređenih vrijednosti razlikuju jedni od drugih, tada se odnos između vrijednosti utvrđuje na osnovu prioriteta tipova:
NULL (najniže);
boolean;
Broj;
Datum;
Linija;
Referentni tipovi

Odnosi između različitih tipova referenci su definisani na osnovu referentnih brojeva tabela koje odgovaraju određenom tipu.

Ako se tipovi podataka podudaraju, tada se vrijednosti uspoređuju prema sljedećim pravilima:
tip Boolean TRUE je veći od FALSE;
tip Broj ima uobičajena pravila poređenja brojeva;
za tip Datuma, raniji datumi su manji od kasnijih;
za tip String - poređenja stringova u skladu sa utvrđenim nacionalnim karakteristikama baze podataka;
referentni tipovi se upoređuju na osnovu njihovih vrijednosti (broj zapisa itd.).

Rad sa NULL

Svaka operacija u kojoj je vrijednost jednog od operanada NULL će proizvesti NULL rezultat.

Postoje izuzeci:
operacija AND će samo vratiti NULL ako nijedan od operanada nije False;
operacija OR će vratiti NULL samo ako nijedan od operanada nije Tačan.

Operativni prioriteti

Operacije imaju sljedeće prioritete (prvi red ima najniži prioritet):
OR;
AND;
NE;
B, JE NULL, NIJE NULL;
=, <>, <=, <, >=, >;
Binarno +, Binarno – ;
*, /, %;
Unarno +, Unarno -.

Funkcije jezika za sastavljanje podataka sistema ekspresije

Izračunati

Funkcija Calculate je dizajnirana da izračuna izraz u kontekstu nekog grupisanja. Funkcija ima sljedeće parametre:
Izraz. Tip String. Sadrži izračunati izraz;
Grupisanje. Tip String. Sadrži naziv grupacije u čijem kontekstu se izraz treba procijeniti. Ako se kao ime grupisanja koristi prazan niz, proračun će se izvršiti u kontekstu trenutnog grupisanja. Ako se kao naziv grupisanja koristi niz GrandTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu roditeljskog grupiranja s tim imenom. Na primjer:
Iznos(Prodaja.Iznos Obrt) / Izračunaj("Iznos(Prodaja.Iznos Obrt)", "Ukupni Ukupni")

U ovom primjeru, rezultat će biti omjer iznosa u polju "Sales.AmountTurnover" zapisa grupisanja prema iznosu istog polja u cijelom izgledu.

Nivo

Funkcija je dizajnirana da dobije trenutni nivo snimanja.

primjer:
Nivo()

NumberInOrder

Uzmite sljedeći redni broj.

primjer:
Broj narudžbe()

NumberIn OrderInGrouping

Vraća sljedeći redni broj u trenutnoj grupi.

primjer:
BrojUOrderUGrupi()

Format

Dobijte formatirani niz proslijeđene vrijednosti.

Niz formata je postavljen u skladu sa nizom formata 1C:Enterprise.

Opcije:
Značenje;
Format string.

primjer:
Format(Fakture za izdatke.IznosDoc, "NPV=2")

Početak perioda

Opcije:

    • Minute;
    • Dan;
    • Sedmica;
    • Mjesec;
    • Quarter;
    • Decenija;
    • Pola godine.

primjer:
Početak perioda(DatumVrijeme(2002, 10, 12, 10, 15, 34), "Mjesec")

rezultat:

01.10.2002 0:00:00

EndPeriod

Funkcija je dizajnirana da izdvoji određeni datum iz datog datuma.

Opcije:

  • Datum. Unesite datum. Dat datum;
  • Tip perioda. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Minute;
    • Dan;
    • Sedmica;
    • Mjesec;
    • Quarter;
    • Decenija;
    • Pola godine.

primjer:
EndPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Sedmica")

rezultat:

13.10.2002 23:59:59

AddDate

Funkcija je dizajnirana da doda neku vrijednost datumu.

Opcije:

  • Vrsta uvećanja. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Minute;
    • Dan;
    • Sedmica;
    • Mjesec;
    • Quarter;
    • Decenija;
    • Pola godine.
Vrijednost - za koliko želite povećati datum. Vrsta broj. Razlomački dio se zanemaruje.

primjer:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mjesec", 1)

rezultat:

12.11.2002 10:15:34

DifferenceDate

Funkcija je dizajnirana da dobije razliku između dva datuma.

Opcije:

  • Izraz. Unesite datum. originalni datum;
  • Izraz. Unesite datum. Oduzeti datum;
  • Vrsta razlike. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Sekunda;
    • Minute;
    • Dan;
    • Mjesec;
    • Quarter;

primjer:
DATUM RAZLIKA(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "DAN")

rezultat:

Podniz

Ova funkcija je dizajnirana za odabir podniza iz niza.

Opcije:

  • Linija. Tip String. Niz iz kojeg se izdvaja podniz;
  • Pozicija. Vrsta broj. Pozicija znaka iz koje počinje podniz koji se izdvaja iz niza;
  • Dužina. Vrsta broj. Dužina odabranog podniza.

primjer:
SUBSTRING(Računi.Adresa, 1, 4)

String Length

Funkcija je dizajnirana da odredi dužinu niza.

Parametar:
Linija. Tip String. Niz čija se dužina određuje.

primjer:
String(Računi.Adresa)

Ova funkcija je dizajnirana da izdvoji godinu iz vrijednosti tipa Date.

Parametar:
Datum. Unesite datum. Datum do kojeg je određena godina.

GODINA (Inc.Date)

Kvart

Ova funkcija je dizajnirana da izdvoji broj kvartala iz vrijednosti tipa Datum. Broj bloka se obično kreće od 1 do 4.

Parametar
Datum. Unesite datum. Datum do kojeg se utvrđuje tromjesečje

KVARTAL(Faktura.Datum)

Mjesec

Ova funkcija je dizajnirana da izdvoji broj mjeseca iz vrijednosti tipa Datum. Broj mjeseca je obično u rasponu od 1 do 12.
Datum. Unesite datum. Datum do kojeg je određen mjesec.
MJESEC (Faktura.Datum)

Dan u godini

Ova funkcija je dizajnirana da dobije dan u godini iz vrijednosti tipa Datum. Dan u godini se obično kreće od 1 do 365(366).
Datum. Unesite datum. Datum do kojeg je određen dan u godini.
DAN U GODINI (Exp.Inc.Date)

Dan

Ova funkcija je dizajnirana da dobije dan u mjesecu iz vrijednosti tipa Date. Dan u mjesecu se obično kreće od 1 do 31.
Datum. Unesite datum. Datum do kojeg se određuju dani u mjesecu.
DAY(Exp.Inc.Date)

Sedmica

Ova funkcija je dizajnirana da dobije broj sedmice u godini iz vrijednosti tipa Date. Sedmice u godini se numerišu počevši od 1.
Datum. Unesite datum. Datum do kojeg se određuju brojevi sedmica.
SEDMICA(Exp.Inc.Date)

Dan u tjednu

Ova funkcija je dizajnirana da dobije dan u sedmici iz vrijednosti tipa Date. Dan u sedmici se obično kreće od 1 (ponedjeljak) do 7 (nedjelja).
Datum. Unesite datum. Datum do kojeg se određuje dan u sedmici.
DAN U SJEDICI (Exp.Inc.Date)

Ova funkcija je dizajnirana da dobije sat u danu iz vrijednosti tipa datuma. Sat u danu kreće se od 0 do 23.
Datum. Unesite datum. Datum do kojeg se određuje sat u danu.
HOUR (Exp.Inc.Date)

Minuta

Ova funkcija je dizajnirana da dobije minute u satu iz vrijednosti tipa datuma. Minuta u satu kreće se od 0 do 59.
Datum. Unesite datum. Datum do kojeg se određuje minuta u satu.
MINUTE(Exp.Inc.Date)

Sekunda

Ova funkcija je dizajnirana da dobije sekundu minute iz vrijednosti tipa datuma. Sekunda u minuti se kreće od 0 do 59.
Datum. Unesite datum. Datum do kojeg se određuju sekunde minuta.
SEC (Exp.Inc.Date)

express

Ova funkcija je dizajnirana da izdvoji tip iz izraza koji može sadržavati složeni tip. Ako izraz sadrži tip različit od traženog tipa, NULL će biti vraćeno.

Opcije:
Izraz koji se konvertuje;
Indikacija tipa. Tip String. Sadrži niz tipa. Na primjer, "Broj", "String" itd. Pored primitivnih tipova, ovaj niz može sadržavati ime tabele. U ovom slučaju, pokušat će se izraziti referenca na navedenu tabelu.

primjer:
Express(Podaci.Atribut1, "Broj(10,3)")

Null

Ova funkcija vraća vrijednost drugog parametra ako je vrijednost prvog parametra NULL.

U suprotnom će biti vraćena vrijednost prvog parametra.

primjer:
IsNULL(Iznos(Prodaja.IznosPromet), 0)

Zajedničke funkcije modula

Izraz mašine za sastav podataka može sadržavati pozive funkcija globalnim zajedničkim konfiguracijskim modulima. Za pozivanje takvih funkcija nije potrebna dodatna sintaksa.

primjer:
Skraćeni naziv (Dokumenti. Veza, Dokumenti. Datum, Dokumenti. Broj)

U ovom primjeru, funkcija "ShortName" će biti pozvana iz općeg konfiguracijskog modula.

Imajte na umu da je korištenje funkcija dijeljenog modula dozvoljeno samo kada je specificirana odgovarajuća opcija procesora sastava podataka.

Također, zajedničke funkcije modula ne mogu se koristiti u prilagođenim izrazima polja.

Php? D1.80.D0.B8.D0.BE.D0.B4.D0.B0

Ukrajinski 1C forum: sve o 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7
http://site

Top Related Articles