Izračunata polja u zahtjevu 1s. Izražajni jezik sustava sastava podataka (1Cv8). Operacija provjere vrijednosti za NULL nejednakost

25.10.2019 Programi

Izražajni jezik sustava sastava podataka

Jezik izraza sustava za sastavljanje podataka dizajniran je za pisanje izraza koji se koriste u različitim dijelovima sustava.

Izrazi se koriste u sljedećim podsustavima:

  • dijagram rasporeda podataka - za opisivanje izračunatih polja, ukupnih polja, izraza veze itd.;
  • postavke izgleda podataka - za opisivanje prilagođenih izraza polja;
  • izgled izgleda podataka - za opisivanje izraza za povezivanje skupova podataka, opisivanje parametara izgleda itd.

Literali

Izraz može sadržavati literale. Moguće su sljedeće vrste literala:

  • Crta;
  • Broj;
  • Datum od;
  • Booleov.

Crta

String literal je napisan znakovima “”, na primjer:

“String literal”

Ako trebate koristiti znak “” unutar literala niza, trebali biste koristiti dva takva znaka.

Na primjer:

“Doslovno ““pod navodnicima”““

Broj

Broj se ispisuje bez razmaka, u decimalnom formatu. Razlomak se odvaja simbolom "." Na primjer:

10.5 200

datum

Datumski literal se piše korištenjem ključnog literala DATETIME. Nakon ovoga ključna riječ, u zagradi, odvojene zarezima, navedena je godina, mjesec, dan, sati, minute, sekunde. Specifikacija vremena nije potrebna.

Na primjer:

DATETIME(1975, 1, 06) – 6. siječnja 1975. DATETIME(2006, 12, 2, 23, 56, 57) – 2. prosinca 2006., 23 sata 56 minuta 57 sekundi, 23 sata 56 minuta 57 sekundi

Booleov

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

Značenje

Za navođenje literala drugih tipova (sustavna enumeracija, unaprijed definirani podaci) koristi se ključna riječ Value, iza koje slijedi naziv literala u zagradama.

Vrijednost (AccountType. Active)

Operacije nad brojevima

Unarni –

Ova operacija je namijenjena za promjenu predznaka broja u suprotni predznak. Na primjer:

Prodaja. Količina

Unarni +

Ova operacija ne izvodi nikakve radnje na broju. Na primjer:

Prodaja. Količina

Binarno -

Ova operacija je namijenjena za izračunavanje razlike dvaju brojeva. Na primjer:

ResidualsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

Binarno +

Ova operacija je dizajnirana za izračunavanje zbroja dvaju brojeva. Na primjer:

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResiduesAndTurnover.InitialRemaining + 100 400 + 357

Raditi

Ova operacija je dizajnirana za izračunavanje umnoška dvaju brojeva. Na primjer:

Nomenklatura.Cijena * 1.2 2 * 3.14

Podjela

Ova je operacija osmišljena za dobivanje rezultata dijeljenja jednog operanda s drugim. Na primjer:

Nomenklatura.Cijena / 1.2 2 / 3.14

Ostatak podjele

Ova operacija je dizajnirana za dobivanje ostatka kada se jedan operand podijeli s drugim. Na primjer:

Nomenklatura Cijena % 1,2 2 % 3.14

Operacije nizova

Ulančanje (binarno +)

Ova operacija je dizajnirana za spajanje dva niza. Na primjer:

Nomenklatura.Članak + “: ”+ Nomenklatura.Naziv

Kao

Ovom operacijom se provjerava odgovara li niz proslijeđenom uzorku.

Vrijednost LIKE operatora je TRUE ako vrijednost<Выражения>zadovoljava obrazac, a FALSE inače.

Sljedeći likovi u<Строке_шаблона>imaju značenje različito od drugog znaka u retku:

  • % - postotak: niz koji sadrži nula ili više proizvoljnih znakova;
  • _ - podvlaka: jedan proizvoljan znak;
  • […] - jedan ili više znakova u uglate zagrade: jedan znak, bilo koji od onih navedenih unutar uglatih zagrada. Nabrajanje može sadržavati raspone, na primjer a-z, što znači proizvoljni znak uključen u raspon, uključujući krajeve raspona;
  • [^...] - u uglatim zagradama ikona negacije iza koje slijedi jedan ili više znakova: bilo koji znak osim onih navedenih nakon ikone negacije;

Bilo koji drugi simbol znači sam za sebe i ne nosi nikakvo dodatno opterećenje. Ako jedan od navedenih znakova treba biti napisan kao sam, tada mu mora prethoditi<Спецсимвол>, naveden nakon ključne riječi SPECIAL CHARACTER (ESCAPE).

Na primjer, predložak

“%ABV[abvg]\_abv%” POSEBAN ZNAK “\”

označava podniz koji se sastoji od niza znakova: slovo A; slova B; slova B; jedna znamenka; jedno od slova a, b, c ili d; donja crta; slova a; slova b; slova v. Štoviše, ovaj niz se može locirati počevši od proizvoljne pozicije u retku.

Operacije usporedbe

Jednako

Ova operacija je namijenjena za usporedbu dvaju operanda radi jednakosti. Na primjer:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Nejednak

Ova operacija je namijenjena za usporedbu dva operanda za nejednakost. Na primjer:

Prodaja.Druga strana<>Prodaja.NomenklaturaGlavni dobavljač

Manje

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

SalesCurrent.Amount< ПродажиПрошлые.Сумма

Više

Ova operacija je osmišljena da provjeri je li prvi operand veći od drugog. Na primjer:

SalesCurrent.Sum > SalesPast.Sum

Manje ili jednako

Ova operacija je osmišljena da provjeri je li prvi operand manji ili jednak drugom. Na primjer:

SalesCurrent.Amount<= ПродажиПрошлые.Сумма

Više ili jednako

Ova operacija je osmišljena da provjeri je li prvi operand veći ili jednak drugom. Na primjer:

SalesCurrent.Amount >= SalesPast.Amount

Operacija B

Ova operacija provjerava prisutnost vrijednosti u proslijeđenom popisu vrijednosti. Rezultat operacije bit će True ako je vrijednost pronađena ili False u suprotnom. Na primjer:

Stavka B (&Proizvod1, &Proizvod2)

Operacija provjere prisutnosti vrijednosti u skupu podataka

Operacijom se provjerava prisutnost vrijednosti u navedenom skupu podataka. Skup podataka za provjeru valjanosti mora sadržavati jedno polje. Na primjer:

Prodaja. Druga ugovorna strana prema drugim ugovornim stranama

Operacija provjere vrijednosti za NULL

Ova operacija vraća True ako je vrijednost NULL. Na primjer:

Prodaja. Suprotna ugovorna strana JE NIŠTAVNA

Operacija provjere vrijednosti za NULL nejednakost

Ova operacija vraća True ako vrijednost nije NULL. Na primjer:

Prodaja. Protustrana strana NIJE NIŠTAVNA

Logičke operacije

Logičke operacije prihvaćaju izraze tipa Boolean kao operande.

Operacija NOT

Operacija NOT vraća True ako je njen operand False i False ako je njen operand True. Na primjer:

NIJE Dokument.Primatelj = Dokument.Pošiljatelj

Operacija I

Operacija AND vraća True ako su oba operanda True i False ako je jedan od operanda False. Na primjer:

Document.Consignee = Document.Consignor I Document.Consignee = &Druga strana

ILI operacija

Operacija ILI vraća True ako je jedan od njenih operanda True, i False ako su oba operanda False. Na primjer:

Document.Consignee = Document.Consignor ILI Document.Consignee = &Counterparty

Agregatne funkcije

Skupne funkcije izvode neke radnje na skupu podataka.

Iznos

Skupna funkcija Sum izračunava zbroj vrijednosti izraza koji su joj proslijeđeni kao argument za sve zapise detalja. Na primjer:

Iznos(Prodaja.IznosPrometa)

Količina

Funkcija Count izračunava broj vrijednosti osim NULL. Na primjer:

Količina (Prodaja. Suprotna strana)

Broj različitih

Ova funkcija izračunava broj različitih vrijednosti. Na primjer:

Količina (razne prodaje. Protustrana)

Maksimum

Funkcija dobiva maksimalnu vrijednost. Na primjer:

Maksimalno (preostalo.količina)

Minimum

Funkcija dobiva minimalnu vrijednost. Na primjer:

Minimum (preostala. količina)

Prosjek

Funkcija dobiva prosjek vrijednosti koje nisu NULL. Na primjer:

Prosjek (preostalo.količina)

Ostale operacije

Operacija SELECT

Operacija Select namijenjena je odabiru jedne od nekoliko vrijednosti kada su ispunjeni određeni uvjeti. Na primjer:

Odaberite When Amount > 1000 Zatim Amount Inače 0 End

Pravila za usporedbu dviju vrijednosti

Ako se vrste vrijednosti koje se uspoređuju razlikuju jedna od druge, tada se odnosi između vrijednosti određuju na temelju prvenstva vrsta:

  • NULL (najniža);
  • Booleov;
  • Broj;
  • Datum od;
  • Crta;
  • Referentne vrste

Odnosi između različitih vrsta referenci određuju se na temelju referentnih brojeva tablica koje odgovaraju određenoj vrsti.

Ako su tipovi podataka isti, tada se vrijednosti uspoređuju prema sljedećim pravilima:

  • za Boolean tip vrijednost TRUE je veća od vrijednosti FALSE;
  • tip Number ima uobičajena pravila usporedbe za brojeve;
  • za tip Datum, raniji datumi su manji od kasnijih;
  • za tip String - usporedba nizova u skladu s utvrđenim nacionalnim obilježjima baze podataka;
  • referentni tipovi se uspoređuju na temelju njihovih vrijednosti (broj zapisa itd.).

Rad s NULL vrijednošću

Svaka operacija u kojoj je jedan od operanda NULL proizvest će rezultat NULL.

Postoje iznimke:

  • Operacija AND vratit će NULL samo ako nijedan od operanda nije False;
  • Operacija OR vratit će NULL samo ako nijedan od njezinih operanda nije True.

Operativni prioriteti

Operacije imaju sljedeće prioritete (prva linija ima najniži prioritet):

  • B, JE NULL, NIJE NULL;
  • =, <>, <=, <, >=, >;
  • Binarno +, Binarno – ;
  • *, /, %;
  • Unarni +, Unarni -.

Kompozicija podataka Sustav Izraz Jezične funkcije

Izračunati

Funkcija Calculate dizajnirana je za izračunavanje izraza u kontekstu određenog grupiranja. Funkcija ima sljedeće parametre:

  • Izraz. Tip String. Sadrži izračunati izraz;
  • Grupiranje. Tip String. Sadrži naziv grupiranja u čijem kontekstu se izraz treba procijeniti. Ako se kao naziv grupiranja koristi prazan niz, izračun će se izvesti u kontekstu trenutnog grupiranja. Ako se niz GrandTotal koristi kao naziv grupe, izračun će se izvršiti u kontekstu ukupnog zbroja. Inače će se izračun izvršiti u kontekstu nadređene grupe s istim imenom. Na primjer:
Suma(Sales.SumTurnover) / Izračunaj("Sum(Sales.SumTurnover)", "Ukupno")

U u ovom primjeru rezultat će biti omjer iznosa za polje “Sales.SumTurnover” zapisa grupiranja i iznosa istog polja u cijelom izgledu.

Razina

Funkcija je dizajnirana za dobivanje trenutne razine snimanja.

Razina()

NumberInOrder

Dobijte sljedeći redni broj.

Broj Po Redu()

NumberInOrderInGrouping

Vraća sljedeći redni broj u trenutnom grupiranju.

BrojPoReduUGrupi()

Format

Dobijte formatirani niz proslijeđene vrijednosti.

Niz formata postavlja se u skladu s nizom formata 1C:Enterprise.

Mogućnosti:

  • Značenje;
  • Oblikovanje niza.

Format(Fakture za potrošnu robu.Iznos dokumenta, "NPV=2")

Početak razdoblja

Mogućnosti:

    • Minuta;
    • Dan;
    • Tjedan;
    • Mjesec;
    • Četvrtina;
    • Desetljeće;
    • Pola godine.

Početni period(DatumVrijeme(2002, 10, 12, 10, 15, 34), "Mjesec")

Proizlaziti:

01.10.2002 0:00:00

Kraj razdoblja

Funkcija je dizajnirana za izdvajanje određenog datuma iz zadanog datuma.

Mogućnosti:

  • Datum od. Upišite Datum. Navedeni datum;
  • Vrsta razdoblja. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Minuta;
    • Dan;
    • Tjedan;
    • Mjesec;
    • Četvrtina;
    • Desetljeće;
    • Pola godine.

EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Tjedan")

Proizlaziti:

13.10.2002 23:59:59

DodajDatumu

Funkcija je dizajnirana za dodavanje određene vrijednosti datumu.

Mogućnosti:

  • Vrsta povećanja. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Minuta;
    • Dan;
    • Tjedan;
    • Mjesec;
    • Četvrtina;
    • Desetljeće;
    • Pola godine.
  • Iznos – za koliko trebate povećati datum. Vrsta broja. Razlomački dio se zanemaruje.

DodajDatumu(DatumVrijeme(2002, 10, 12, 10, 15, 34), "Mjesec", 1)

Proizlaziti:

12.11.2002 10:15:34

Datumska razlika

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

Mogućnosti:

  • Izraz. Upišite Datum. Izvorni datum;
  • Izraz. Upišite Datum. Oduzeti datum;
  • Vrsta razlike. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Drugi;
    • Minuta;
    • Dan;
    • Mjesec;
    • Četvrtina;

DATEDIFFERENCE(DATUMVRIJEME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAN")

Proizlaziti:

Podniz

Ova je funkcija dizajnirana za izdvajanje podniza iz niza.

Mogućnosti:

  • Crta. Tip String. Niz iz kojeg je izdvojen podniz;
  • Položaj. Vrsta broja. Položaj znaka od kojeg počinje podniz koji se izdvaja iz niza;
  • Duljina. Vrsta broja. Duljina dodijeljenog podniza.

PODNIZ(Računi.Adresa, 1, 4)

Duljina linije

Funkcija je dizajnirana za određivanje duljine niza.

Parametar:

  • Crta. Tip String. Niz čija je duljina navedena.

Redak (Druge strane. Adresa)

Godina

Ova je funkcija dizajnirana za izdvajanje godine iz vrijednosti tipa Datum.

Parametar:

  • Datum od. Upišite Datum. Datum prema kojem se utvrđuje godina.

YEAR(Troškovi.Datum)

Četvrtina

Ova je funkcija dizajnirana za izdvajanje broja kvartala iz vrijednosti tipa Datum. Broj četvrtine obično se kreće od 1 do 4.

Parametar

  • Datum od. Upišite Datum. Datum do kojeg se utvrđuje kvartal
QUARTER(Troškovi.Datum)

Mjesec

Ova je funkcija dizajnirana za izdvajanje broja mjeseca iz vrijednosti tipa Datum. Broj mjeseca obično se kreće od 1 do 12.

  • Datum od. Upišite Datum. Datum prema kojem se određuje mjesec.
MONTH(Troškovi.Datum)

Dan u godini

Ova je funkcija dizajnirana za dobivanje dana u godini iz vrijednosti tipa datuma. Dan u godini obično se kreće od 1 do 365 (366).

  • Datum od. Upišite Datum. Datum prema kojem se određuje dan u godini.
DAYYEAR(Račun Troškova.Datum)

Dan

Ova je funkcija dizajnirana za dobivanje dana u mjesecu iz vrijednosti tipa Datum. Dan u mjesecu obično se kreće od 1 do 31.

  • Datum od. Upišite Datum. Datum prema kojem se određuje dan u mjesecu.
DAY(Troškovi.Datum)

Tjedan

Ova je funkcija dizajnirana za dobivanje broja tjedna u godini iz vrijednosti tipa Datum. Tjedni u godini numerirani su počevši od 1.

  • Datum od. Upišite Datum. Datum do kojeg se određuju brojevi tjedana.
TJEDAN(Troškovi.Datum)

Dan u tjednu

Ova je funkcija dizajnirana za dobivanje dana u tjednu iz vrijednosti tipa Datum. Uobičajeni dan u tjednu kreće se od 1 (ponedjeljak) do 7 (nedjelja).

  • Datum od. Upišite Datum. Datum prema kojem se određuje dan u tjednu.
DAN U TJEDNU (trošak. datum)

Sat

Ova je funkcija dizajnirana za dobivanje sata u danu iz vrijednosti tipa datuma. Sat u danu kreće se od 0 do 23.

  • Datum od. Upišite Datum. Datum prema kojem se određuje sat u danu.
SAT(Troškovi.Datum)

Minuta

Ova je funkcija osmišljena za dobivanje minute sata iz vrijednosti tipa datuma. Minuta sata kreće se od 0 do 59.

  • Datum od. Upišite Datum. Datum do kojeg se određuje minuta u satu.
MINUTE(Troškovi.Datum)

Drugi

Ova je funkcija osmišljena za dobivanje sekunde minute iz vrijednosti tipa datuma. Sekunda minute kreće se od 0 do 59.

  • Datum od. Upišite Datum. Datum prema kojem se određuju sekunde minute.
SECOND(Troškovi.Datum)

Izraziti

Ova je funkcija dizajnirana za izdvajanje tipa iz izraza koji može sadržavati složeni tip. Ako izraz sadrži tip koji nije traženi, vratit će se NULL.

Mogućnosti:

  • Izraz za pretvorbu;
  • Oznaka tipa. Tip String. Sadrži niz tipa. Na primjer, "Broj", "Niz" itd. Osim primitivnih tipova, ovaj red može sadržavati naziv tablice. U tom slučaju pokušat će se izraziti referenca na navedenu tablicu.

Express(Data.Props1, "Broj(10,3)")

IsNull

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

U protivnom će se vratiti vrijednost prvog parametra.

YesNULL(Iznos(Prodaja.IznosPrometa), 0)

Funkcije zajedničkih modula

Izraz stroja za sastavljanje podataka može sadržavati pozive funkcija globalnih zajedničkih konfiguracijskih modula. Za pozivanje takvih funkcija nije potrebna nikakva dodatna sintaksa.

U ovom primjeru, funkcija "AbbreviatedName" bit će pozvana iz općeg konfiguracijskog modula.

Imajte na umu da je korištenje uobičajenih funkcija modula dopušteno samo ako je naveden odgovarajući parametar procesora za sastav podataka.

Osim toga, funkcije zajedničkih modula ne mogu se koristiti u prilagođenim izrazima polja.

Izračunaj izraz je prilično teška funkcija ACS-a za razumijevanje, a primjeri primjene u referentnim informacijama prilično su rijetki. Ovaj članak govori o primjerima koji će sigurno biti korisni svakom razvojnom programeru:

  1. kumulativni zbroj u grupiranju;
  2. kumulativni zbroj u unakrsnoj tablici;
  3. dobivanje prethodne vrijednosti;
  4. PM izlaz u jednom redu.

1. Dobivanje pokazatelja na obračunskoj osnovi

Uzmimo količinu robe kao kumulativni zbroj na razini grupiranja. Da biste to učinili, stvorite izračunato polje (pogledajte sliku 1).
Na kartici "Resursi" postavite funkciju za izračunato polje:
CalculateExpression("Sum(QuantityTurnover)", "Prvi", "Trenutni")
koji će zbrojiti broj proizvoda od prvog zapisa do trenutnog (vidi sliku 2).

Ako je kumulativnu ukupnu količinu artikla potrebno dobiti na razini detaljne evidencije, tada za izračunato polje na kartici “Izračunata polja” postavljamo funkciju CalculateExpression (vidi sliku 3).
Ovisno o razini dobivanja kumulativnog zbroja, kreiramo grupiranje (vidi sliku 4): na razini resursa - grupiranje po robi, na razini daljinskog upravljanja - grupiranje detaljnih zapisa.
Slika 4. Grupiranje izvješća s kumulativnim ukupnim iznosima

2. Dobivanje vrijednosti indikatora iz prethodnog reda

Uzmimo tečaj za datum i prethodni datum. Da biste to učinili, kreirajte izračunato polje i napišite sljedeći izraz u polje izraza (pogledajte sliku 5):
CalculateExpression("Stopa", "Prethodni", "Prethodni")
koji će uzeti prethodnu vrijednost tečaja za trenutna linija, posljednji parametar funkcije ograničava primljene podatke.
Budući da radimo na razini detaljnih zapisa, odmah idemo na karticu "Postavke" i kreiramo grupiranje - detaljni zapisi.

3. Dobivanje pokazatelja kao kumulativnog zbroja u unakrsnoj tablici

Uzmimo količinu robe na obračunskoj osnovi po razdoblju. Da biste to učinili, stvorite izračunato polje (pogledajte sliku 1). Na kartici "Resursi" navodimo sljedeći izraz za izračunato polje (vidi sliku 6):
CalculateExpression("Sum(QuantityTurnover)", "Period", "Prvi", "Trenutni")
koji će na razini grupiranja izračunati količinu robe u intervalu od prve linije do tekuće u kontekstu razdoblja za svaku stavku.
Na kartici “Postavke” kreirajte tablicu s grupiranjem po stavkama u retku i grupiranjem po razdoblju u stupcu (vidi sliku 7).

4. Izlaz tabelarnih podataka u jednom retku

U članku se raspravlja o metodama prikaza tabličnih podataka u jednom retku, uključujući metodu pomoću funkcije CalculateExpression