Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows Phone
  • Izraz u parametrima ckd 1s 8.2. Jezik izraza sistema sastava podataka (1Cv8)

Izraz u parametrima ckd 1s 8.2. Jezik izraza sistema sastava podataka (1Cv8)

U ovoj maloj napomeni želim da pokažem kako možete sumirati vrednosti na različitim nivoima grupisanja u izveštaju koristeći sistem sastavljanja podataka.
Kao što je prikazano na slici, samo na nivou grupisanja "Grupe artikala" izračunava se resurs "Narudžba", koji prikazuje koliko je potrebno naručiti za trenutnu grupu artikala na osnovu određenih uslova:


Ova vrijednost se može izračunati samo na ovom nivou grupisanja, jer, iznad ili ispod, nema vrijednosti za izračunavanje. Na primjer, na nivou detaljne evidencije nema podataka o maksimalnom broju u grupi, jer ovi podaci vrijede samo za grupu u cjelini, a ne za njene pojedinačne komponente.

U skladu s tim, sada je potrebno izračunati ukupne vrijednosti za gore navedene grupe („Skladišta“, „Vrste skladišta“) i ukupni zbroj.
Da biste to učinili, koristite funkciju EvaluateGroupExpressionArray:
IZRAČUNAJ IZRAZ PO GRUPI NIZA (EVALEXPRESSIONWITHGROUPARRAY)
sintaksa:
EvaluateGroupExpressionArray (,)
Opis:
Funkcija vraća niz, čiji svaki element sadrži rezultat evaluacije izraza koji treba grupirati prema navedenom polju.
Sastavljač rasporeda, prilikom generisanja izgleda, pretvara parametre funkcije u termine polja rasporeda sastava podataka. Na primjer, polje Račun će biti konvertirano u Dataset.Contractor.
Prilikom generiranja izraza za prikaz prilagođenog polja, čiji izraz sadrži samo funkciju EvaluateArrayWithGroupArray (), sastavljač izgleda generira prikazani izraz tako da su prikazane informacije poređane. Na primjer, za prilagođeno polje s izrazom:

CalculateExpressionWithGroupingArray ("Sum (SumTurnover)", "Counterparty")
Kompozitor rasporeda će generirati sljedeći izraz za izlaz:

ConnectRows (Niz (Uređaj (EvaluateExpressionWithGroupValuesTable ("Prikaz (Sum (Dataset.SumTurnover)), Sum (Dataset.SumTurnover)", "Dataset.Contractor"), "2")))

Opcije:

Vrsta: String. Izraz za procjenu. Niz, na primjer, iznos (AmountTurnover).

Vrsta: String. Grupni izrazi polja su izrazi polja za grupisanje, odvojeni zarezima. Na primjer, Counterparty, Party.

Vrsta: String. Izraz koji opisuje odabir primijenjen na zapise detalja. Izraz ne podržava upotrebu agregatnih funkcija. Na primjer, Delete Mark = False.

Vrsta: String. Izraz koji opisuje filtriranje primijenjeno na grupne zapise. Na primjer, Sum (SumTurnover)> & Parameter1.
primjer:

Maksimum (CalculateExpressionWithGroupArray ("Sum (SumTurnover)", "Counterparty"));

Detaljan opis sintakse funkcije može se naći na http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Sada za izračunavanje, duplicirat ćemo polje "Narudžba" sa različitim vrijednostima "Izračunaj po ...", koristeći sljedeće izraze, imajte na umu da su na svakom višem nivou vrijednosti nivoa ispod grupisanja korišteno.

Kao rezultat, dobijamo sljedeću konstrukciju:

Sadržaj
1 Jezik izraza sistema za sastav podataka
2 Literala
2.1 String
2.2 Broj
2.3 Datum
2.4 Boolean
2.5 Vrijednost
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 Korak B
5.8 Operacija provjere postojanja vrijednosti u skupu podataka
5.9 Operacija provjere vrijednosti za NULL
5.10 Operacija provjere vrijednosti za NULL nejednakost
6 Logičke 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 NULL
11 Prioriteti poslovanja
12 Funkcije jezika izraza sistema za sastav podataka
12.1 Izračunajte
12.2 Nivo
12.3 Broj po narudžbi
12.4 NumberOrderInGroup
12.5 Format
12.6 Početak perioda
12.7 Kraj perioda
12.8 Dodaj datumu
12.9 Razlika u datumu
12.10 Podniz
12.11 Dužina linije
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 Drugo
12.22 Express
12.23 YesNull
12.24 Funkcije zajedničkih modula

Sistemski jezik za sastavljanje podataka

Jezik izraza sistema za sastav podataka dizajniran je za pisanje 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 odnosa itd.
  • postavke sastava podataka - za opisivanje prilagođenih izraza polja;
  • Šablon sastava podataka - za opisivanje izraza odnosa skupa podataka, opisivanje parametara šablona, ​​itd.

Literali

Izrazi mogu sadržavati literale. Mogući su literali sljedećih tipova:

  • Line;
  • Broj;
  • Datum;
  • Boolean.

Linija

Literal niza je napisan 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. Frakcijski dio je odvojen simbolom "." Na primjer:

datum

Literal datuma se zapisuje pomoću ključnog literala DATETIME. Nakon ove ključne riječi, u zagradama, odvojenim zarezima, navode se godina, mjesec, dan, sati, minute, sekunde. Vrijeme je opciono.

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

Boolean

Booleove vrijednosti se mogu napisati pomoću literala Tačno, Netačno.

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 (Vrsta računa. Aktivan)

Operacije na brojevima

unarno -

Ova operacija ima za cilj obrnuti predznak broja. Na primjer:
-Prodaja. Količina

Unary +

Ova operacija ne izvodi nikakvu radnju na broju. Na primjer:
+ Prodaja. Količina

binarni -

Ova operacija je dizajnirana da izračuna razliku između dva broja. Na primjer:
Stanja i obrti.Početni saldo - Stanja i obrti.Konačni saldo
Stanje I promet Početno stanje - 100
400 – 357

Binarno +

Ova operacija je dizajnirana da izračuna zbir dva broja. Na primjer:
Stanja i obrti.Početni saldo + Stanja i obrti.Promet
Stanje I Promet Početno stanje + 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 ima za cilj da dobije rezultat dijeljenja jednog operanda drugim. Na primjer:
Nomenklatura.Cijena / 1.2
2 / 3.14

Ostatak divizije

Ova operacija ima za cilj da dobije ostatak dijeljenja jednog operanda drugim. Na primjer:
Nomenklatura.Cijena% 1.2
2 % 3.14

Operacije sa stringovima

Konkatenacija (binarni +)

Ova operacija je namijenjena spajanju dva niza. Na primjer:
Nomenklatura.Član + “:” + Nomenklatura.Naziv

Sviđa mi se

Ova operacija provjerava da li niz odgovara proslijeđenom uzorku.

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

Sljedeći likovi u<Строке_шаблона>ima smisla osim samo sljedećeg retka:

  • % - 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 u uglastim zagradama. Nabrajanje može sadržavati opsege, na primjer, a-z, što znači proizvoljan znak uključen u raspon, uključujući krajeve raspona;
  • [^…] - u uglastim zagradama ikona negacije praćena jednim ili više znakova: bilo koji znak osim onih navedenih iza ikone negacije;

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

Na primjer, predložak
"% ABC [abvg] \ _ abc%" POSEBNI SIMBOL "\"

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

Operacije poređenja

Jednako

Ova operacija ima za cilj da uporedi dva operanda radi jednakosti. Na primjer:
Sales.Contractor = Sales.NomenclatureMainSupplier

Nije jednako

Ova operacija ima za cilj da uporedi dva operanda za nejednakost. Na primjer:
Sales.Contractor Sales.NomenclatureMainSupplier

Manje

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

Više

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

Manje ili jednako

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

Više ili jednako

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

Operacija B

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

Operacija provjere postojanja vrijednosti u skupu podataka

Operacija provjerava postojanje vrijednosti u navedenom skupu podataka. Skup podataka za validaciju mora sadržavati jedno polje. Na primjer:
Prodaja. Counterparty To Counterparties

Operacija provjere vrijednosti za NULL

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

Operacija provjere vrijednosti za NULL nejednakost

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

Logičke operacije

Logičke operacije uzimaju Booleove izraze kao operande.

Operacija NE

Operacija NE vraća True ako je njen operand False, i False ako je njen operand Tačan. Na primjer:
NOT Document.Consignee = Dokument.Pošiljalac

Operacija I

Operator AND vraća True ako su oba operanda Tačna, i False ako je jedan od operanda False. Na primjer:
Document.Consignee = Document.Shipper I Document.Consignee = & Counterparty

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 = Document.Carrier OR Document.Consignee = & Counterparty

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.Ukupan promet)

Količina

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

Broj različitih

Ova funkcija izračunava broj različitih vrijednosti. Na primjer:
Količina (razna prodaja. Izvođač)

Maksimum

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

Minimum

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

Prosječna

Funkcija dobiva srednju vrijednost ne-NULL vrijednosti. Na primjer:
Prosjek (Stanje.Iznos)

Ostale operacije

Operacija SELECT

Operacija Select je dizajnirana za odabir jedne od nekoliko vrijednosti kada su ispunjeni određeni uvjeti. Na primjer:
Izbor Kada je iznos> 1000 Zatim iznos ostalo 0 Kraj

Pravila za poređenje dvije vrijednosti

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

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

Ako se tipovi podataka podudaraju, tada se vrijednosti uspoređuju prema sljedećim pravilima:
Boolean tip ima TRUE vrijednost veću od vrijednosti FALSE;
tip Broj ima uobičajena pravila poređenja brojeva;
tip datuma ima ranije datume manje od kasnijih;
za tip String - poređenja nizova u skladu sa utvrđenim nacionalnim karakteristikama baze podataka;
referentni tipovi se upoređuju na osnovu njihovih vrijednosti (brojevi zapisa itd.).

Rad sa NULL vrijednostima

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

Postoje izuzeci:
operacija AND će vratiti NULL samo 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 izraza sistema za sastavljanje podataka

Izračunati

Funkcija Calculate dizajnirana je za procjenu izraza u kontekstu nekog grupiranja. Funkcija ima sljedeće parametre:
Izraz. Tip String. Sadrži izračunati izraz;
Grupisanje. Tip String. Sadrži naziv grupiranja u čijem kontekstu treba procijeniti izraz. Ako se kao ime grupisanja koristi prazan niz, izračunavanje će se izvršiti u kontekstu trenutnog grupisanja. Ako se linija GeneralTotal koristi kao naziv grupisanja, izračun će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu nadređene grupe s istim imenom. Na primjer:
Iznos (Sales.SumTurnover) / Izračunajte ("Iznos (Sales.SumTurnover)", "TotalTotal")

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

Nivo

Funkcija je namijenjena da dobije trenutni nivo snimanja.

primjer:
Nivo()

NumberOrder

Uzmite sljedeći redni broj.

primjer:
Broj Red ()

NumberOrderInGroup

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

primjer:
NumberOrderInGrouping ()

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.SumDoc, "NPT = 2")

Početak perioda

Opcije:

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

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

rezultat:

01.10.2002 0:00:00

Kraj perioda

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

Opcije:

  • Datum. Unesite datum. Navedeni datum;
  • Tip perioda. Tip String. Sadrži jednu od 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

Dodaj datumu

Funkcija je namijenjena za dodavanje određene vrijednosti datumu.

Opcije:

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

primjer:
Dodaj datumu (Datum i vrijeme (2002, 10, 12, 10, 15, 34), "Mjesec", 1)

rezultat:

12.11.2002 10:15:34

Razlika u datumu

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 vrijednosti:
    • Sekunda;
    • Minute;
    • Dan;
    • Mjesec;
    • Quarter;

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

rezultat:

Podniz

Ova funkcija je dizajnirana da izdvoji podniz iz niza.

Opcije:

  • Linija. Tip String. Niz iz kojeg treba izdvojiti podniz;
  • Pozicija. Tip broj. Položaj znaka iz kojeg počinje podniz koji se izdvaja iz niza;
  • Dužina. Tip broj. Dužina podniza za odabir.

primjer:
PODLOGA (Izvođači. Adresa, 1, 4)

Dužina linije

Funkcija je dizajnirana da odredi dužinu niza.

Parametar:
Linija. Tip String. Niz koji treba specificirati dužinu.

primjer:
String (Računi.Adresa)

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

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

GODINA (Datum fakture)

Kvart

Ova funkcija je namijenjena izdvajanju broja četvrtine iz vrijednosti tipa Datum. Broj četvrtine je obično u rasponu od 1 do 4.

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

KVARTAL (Datum isporuke)

Mjesec

Ova funkcija je namijenjena 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 se određuje mjesec.
MJESEC (Datum fakture)

Dan u godini

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

Dan

Ova funkcija je namijenjena da dobije dan u mjesecu iz vrijednosti tipa Date. Dan u mjesecu je obično u rasponu od 1 do 31.
Datum. Unesite datum. Datum do kojeg je određen dan u mjesecu.
DAY (Datum fakture)

Sedmica

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

Dan u tjednu

Ova funkcija je namijenjena da dobije dan u sedmici iz vrijednosti tipa Date. Dan u sedmici je obično između 1 (ponedjeljak) i 7 (nedjelja).
Datum. Unesite datum. Datum do kojeg se određuje dan u sedmici.
DAN U SJEDICI (Datum fakture)

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

Minuta

Ova funkcija je namijenjena da dobije minutu od jednog sata iz vrijednosti tipa Datum. Minuta u satu kreće se od 0 do 59.
Datum. Unesite datum. Datum do kojeg se određuje minuta u satu.
MINUTE (Datum fakture)

Sekunda

Ova funkcija je namijenjena da dobije sekundu minute iz vrijednosti tipa Datum. Sekunda u minuti se kreće od 0 do 59.
Datum. Unesite datum. Datum do kojeg se određuju sekunde minuta.
DRUGO (Datum fakture)

Express

Ova funkcija je namijenjena za izdvajanje tipa iz izraza koji može sadržavati složeni tip. Ako izraz sadrži tip koji nije potreban, bit će vraćena NULL vrijednost.

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 (Data.Props1, "Broj (10.3)")

YesNull

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

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

primjer:
DaNULL (iznos (prodaja.ukupan promet), 0)

Zajedničke funkcije modula

Izraz mašine za sastav podataka može sadržavati pozive funkcijama globalnih zajedničkih konfiguracijskih modula. Za pozivanje takvih funkcija nije potrebna dodatna sintaksa.

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

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

Imajte na umu da je korištenje funkcija zajedničkih modula dozvoljeno samo kada je specificiran odgovarajući parametar procesora sastava podataka.

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

[morate se registrirati da vidite link]

Sistemski jezik za sastavljanje podataka

Jezik izraza sistema za sastav podataka dizajniran je za pisanje 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 odnosa itd.
  • postavke sastava podataka - za opisivanje prilagođenih izraza polja;
  • Šablon sastava podataka - za opisivanje izraza odnosa skupa podataka, opisivanje parametara šablona, ​​itd.

Literali

Izrazi mogu sadržavati literale. Mogući su literali sljedećih tipova:

  • Line;
  • Broj;
  • Datum;
  • Boolean.

Linija

Literal niza je napisan 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. Frakcijski dio je odvojen simbolom "." Na primjer:

10.5 200

datum

Literal datuma se zapisuje pomoću ključnog literala DATETIME. Nakon ove ključne riječi, u zagradama, odvojenim zarezima, navode se godina, mjesec, dan, sati, minute, sekunde. Vrijeme je opciono.

Na primjer:

DATUM VRIJEME (1975, 1, 06) - 6. januar 1975. DATUM (2006, 12, 2, 23, 56, 57) - 2. decembar 2006., 23 sata 56 minuta 57 sekundi, 23 sata 56 minuta 57 sekundi

Boolean

Booleove vrijednosti se mogu napisati pomoću literala Tačno, Netačno.

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 (Vrsta računa. Aktivan)

Operacije na brojevima

unarno -

Ova operacija ima za cilj obrnuti predznak broja. Na primjer:

Prodaja.Broj

Unary +

Ova operacija ne izvodi nikakvu radnju na broju. Na primjer:

Prodaja.Broj

binarni -

Ova operacija je dizajnirana da izračuna razliku između dva broja. Na primjer:

Ostaci i prometi.Početno stanje - stanja i prometi.Završno stanje stanja i prometi.Početno stanje - 100 400 - 357

Binarno +

Ova operacija je dizajnirana da izračuna zbir dva broja. Na primjer:

Stanja i prometi.Početno stanje + stanja i prometi.Prometna stanja i prometi.Početno stanje + 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 ima za cilj da dobije rezultat dijeljenja jednog operanda drugim. Na primjer:

Nomenklatura.Cijena / 1.2 2 / 3.14

Ostatak divizije

Ova operacija ima za cilj da dobije ostatak dijeljenja jednog operanda drugim. Na primjer:

Nomenklatura Cijena% 1,2 2% 3.14

Operacije sa stringovima

Konkatenacija (binarni +)

Ova operacija je namijenjena spajanju dva niza. Na primjer:

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

Sviđa mi se

Ova operacija provjerava da li niz odgovara proslijeđenom uzorku.

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

Sljedeći likovi u<Строке_шаблона>ima smisla osim samo sljedećeg retka:

  • % - 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 u uglastim zagradama. Nabrajanje može sadržavati opsege, na primjer, a-z, što znači proizvoljan znak uključen u raspon, uključujući krajeve raspona;
  • [^…] - u uglastim zagradama ikona negacije praćena jednim ili više znakova: bilo koji znak osim onih navedenih iza ikone negacije;

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

Na primjer, predložak

"% ABC [abvg] \ _ abc%" POSEBNI SIMBOL "\"

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

Operacije poređenja

Jednako

Ova operacija ima za cilj da uporedi dva operanda radi jednakosti. Na primjer:

Sales.Contractor = Sales.NomenclatureMainSupplier

Nije jednako

Ova operacija ima za cilj da uporedi dva operanda za nejednakost. Na primjer:

Prodaja, izvođač radova<>Sales.NomenclatureMainSupplier

Manje

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

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

Više

Ova operacija je namijenjena provjeri da je prvi operand veći od drugog. Na primjer:

SalesCurrent.Total> SalesPast.Amount

Manje ili jednako

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

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

Više ili jednako

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

SalesCurrent.Amount> = SalesPost.Amount

Operacija B

Ova operacija provjerava prisutnost vrijednosti u proslijeđenoj listi vrijednosti. Rezultat operacije će biti True ako je vrijednost pronađena, ili False u suprotnom. Na primjer:

Stavka B (& Stavka1, & Stavka2)

Operacija provjere postojanja vrijednosti u skupu podataka

Operacija provjerava postojanje vrijednosti u navedenom skupu podataka. Skup podataka za validaciju mora sadržavati jedno polje. Na primjer:

Prodaja. Counterparty To Counterparties

Operacija provjere vrijednosti za NULL

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

Prodaja.Izvođač JE NULL

Operacija provjere vrijednosti za NULL nejednakost

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

Prodaja.Izvođač NIJE NULL

Logičke operacije

Logičke operacije uzimaju Booleove izraze kao operande.

Operacija NE

Operacija NE vraća True ako je njen operand False, i False ako je njen operand Tačan. Na primjer:

NOT Document.Consignee = Dokument.Pošiljalac

Operacija I

Operator AND vraća True ako su oba operanda Tačna, i False ako je jedan od operanda False. Na primjer:

Document.Consignee = Document.Shipper I Document.Consignee = & Counterparty

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 = Document.Carrier OR Document.Consignee = & Counterparty

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.Ukupan promet)

Količina

Funkcija Count izračunava broj vrijednosti koje nisu nulte. Na primjer:

Količina (Prodaja. Izvođač)

Broj različitih

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

Količina (razna prodaja. Izvođač)

Maksimum

Funkcija dobiva maksimalnu vrijednost. Na primjer:

Maksimum (Stanje. Količina)

Minimum

Funkcija dobiva minimalnu vrijednost. Na primjer:

Minimum (Stanje. Količina)

Prosječna

Funkcija dobiva srednju vrijednost ne-NULL vrijednosti. Na primjer:

Prosjek (Stanje.Iznos)

Ostale operacije

Operacija SELECT

Operacija Select je dizajnirana za odabir jedne od nekoliko vrijednosti kada su ispunjeni određeni uvjeti. Na primjer:

Izbor Kada je iznos> 1000 Zatim iznos ostalo 0 Kraj

Pravila za poređenje dvije vrijednosti

Ako se tipovi uspoređenih vrijednosti razlikuju jedni od drugih, tada se odnos između vrijednosti određuje na osnovu prioriteta tipova:

  • NULL (najniže);
  • Boolean;
  • Broj;
  • Datum;
  • Line;
  • Referentni tipovi

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

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

  • Boolean tip ima TRUE vrijednost veću od vrijednosti FALSE;
  • tip Broj ima uobičajena pravila poređenja brojeva;
  • tip datuma ima ranije datume manje od kasnijih;
  • za tip String - poređenja nizova u skladu sa utvrđenim nacionalnim karakteristikama baze podataka;
  • referentni tipovi se upoređuju na osnovu njihovih vrijednosti (brojevi zapisa itd.).

Rad sa NULL vrijednostima

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

Postoje izuzeci:

  • operacija AND će vratiti NULL samo 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):

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

Funkcije jezika izraza sistema za sastavljanje podataka

Izračunati

Funkcija Calculate dizajnirana je za procjenu izraza u kontekstu nekog grupiranja. Funkcija ima sljedeće parametre:

  • Izraz. Tip String. Sadrži izračunati izraz;
  • Grupisanje. Tip String. Sadrži naziv grupiranja u čijem kontekstu treba procijeniti izraz. Ako se kao ime grupisanja koristi prazan niz, izračunavanje će se izvršiti u kontekstu trenutnog grupisanja. Ako se linija GeneralTotal koristi kao naziv grupisanja, izračun će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu nadređene grupe s istim imenom. Na primjer:
Iznos (Sales.SumTurnover) / Izračunajte ("Iznos (Sales.SumTurnover)", "TotalTotal")

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

Nivo

Funkcija je namijenjena da dobije trenutni nivo snimanja.

Nivo()

NumberOrder

Uzmite sljedeći redni broj.

Broj Red ()

NumberOrderInGroup

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

NumberOrderInGrouping ()

Format

Dobijte formatirani niz proslijeđene vrijednosti.

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

Opcije:

  • Značenje;
  • Format string.

Format (Fakture.SumDoc, "NPT = 2")

Početak perioda

Opcije:

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

Početak perioda (Datum i vrijeme (2002, 10, 12, 10, 15, 34), "Mjesec")

rezultat:

01.10.2002 0:00:00

Kraj perioda

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

Opcije:

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

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

rezultat:

13.10.2002 23:59:59

Dodaj datumu

Funkcija je namijenjena za dodavanje određene vrijednosti datumu.

Opcije:

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

Dodaj datumu (Datum i vrijeme (2002, 10, 12, 10, 15, 34), "Mjesec", 1)

rezultat:

12.11.2002 10:15:34

Razlika u datumu

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 vrijednosti:
    • Sekunda;
    • Minute;
    • Dan;
    • Mjesec;
    • Quarter;

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

rezultat:

Podniz

Ova funkcija je dizajnirana da izdvoji podniz iz niza.

Opcije:

  • Linija. Tip String. Niz iz kojeg treba izdvojiti podniz;
  • Pozicija. Tip broj. Položaj znaka iz kojeg počinje podniz koji se izdvaja iz niza;
  • Dužina. Tip broj. Dužina podniza za odabir.

PODLOGA (Izvođači. Adresa, 1, 4)

Dužina linije

Funkcija je dizajnirana da odredi dužinu niza.

Parametar:

  • Linija. Tip String. Niz koji treba specificirati dužinu.

String (Računi.Adresa)

Godina

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

Parametar:

  • Datum. Unesite datum. Datum do kojeg je određena godina.

GODINA (Datum fakture)

Kvart

Ova funkcija je namijenjena izdvajanju broja četvrtine iz vrijednosti tipa Datum. Broj četvrtine je obično u rasponu od 1 do 4.

Parametar

  • Datum. Unesite datum. Datum do kojeg se utvrđuje tromjesečje
KVARTAL (Datum isporuke)

Mjesec

Ova funkcija je namijenjena 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 se određuje mjesec.
MJESEC (Datum fakture)

Dan u godini

Ova funkcija je dizajnirana da dobije dan u godini iz vrijednosti tipa Date. Dan u godini je obično u rasponu od 1 do 365 (366).

  • Datum. Unesite datum. Datum do kojeg je određen dan u godini.
DAN U GODINI (Datum fakture)

Dan

Ova funkcija je namijenjena da dobije dan u mjesecu iz vrijednosti tipa Date. Dan u mjesecu je obično u rasponu od 1 do 31.

  • Datum. Unesite datum. Datum do kojeg je određen dan u mjesecu.
DAY (Datum fakture)

Sedmica

Ova funkcija je namijenjena da dobije broj sedmice u godini iz vrijednosti tipa Datum. Sedmice u godini se numerišu počevši od 1.

  • Datum. Unesite datum. Datum do kojeg se određuju brojevi sedmica.
SEDMICA (Datum fakture)

Dan u tjednu

Ova funkcija je namijenjena da dobije dan u sedmici iz vrijednosti tipa Date. Dan u sedmici je obično između 1 (ponedjeljak) i 7 (nedjelja).

  • Datum. Unesite datum. Datum do kojeg se određuje dan u sedmici.
DAN U SJEDICI (Datum fakture)

Sat

Ova funkcija je dizajnirana da dobije sat u danu iz vrijednosti tipa Date. Sat u danu kreće se od 0 do 23.

  • Datum. Unesite datum. Datum do kojeg se određuje sat u danu.
SAT (Datum isporuke)

Minuta

Ova funkcija je namijenjena da dobije minutu od jednog sata iz vrijednosti tipa Datum. Minuta u satu kreće se od 0 do 59.

  • Datum. Unesite datum. Datum do kojeg se određuje minuta u satu.
MINUTE (Datum fakture)

Sekunda

Ova funkcija je namijenjena da dobije sekundu minute iz vrijednosti tipa Datum. Sekunda u minuti se kreće od 0 do 59.

  • Datum. Unesite datum. Datum do kojeg se određuju sekunde minuta.
DRUGO (Datum fakture)

Express

Ova funkcija je namijenjena za izdvajanje tipa iz izraza koji može sadržavati složeni tip. Ako izraz sadrži tip koji nije potreban, bit će vraćena NULL vrijednost.

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.

Express (Data.Props1, "Broj (10.3)")

YesNull

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

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

DaNULL (iznos (prodaja.ukupan promet), 0)

Zajedničke funkcije modula

Izraz mašine za sastav podataka može sadržavati pozive funkcijama globalnih zajedničkih konfiguracijskih modula. Za pozivanje takvih funkcija nije potrebna dodatna sintaksa.

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

Imajte na umu da je korištenje funkcija zajedničkih modula dozvoljeno samo kada je specificiran odgovarajući parametar procesora sastava podataka.

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

Jedna od najvažnijih oblasti poslovnog softvera je izvještavanje. Sudbina preduzeća može zavisiti (i to ne u prenesenom smislu!) od toga koliko je lako postojeći izveštaj prilagoditi promenljivim potrebama poslovanja (i zakonodavstva) ili napraviti novi, bilo da se radi o izveštaju za poreska uprava ili dijagram zavisnosti potražnje za robom od sezone i drugih faktora. ... Moćan i fleksibilan sistem izveštavanja koji vam omogućava da lako izvučete potrebne podatke iz sistema, predstavite ih u razumljivom obliku, omogućavajući krajnjem korisniku da rekonfiguriše standardni izveštaj da vidi podatke u novom svetlu - ovo je ideal koji svaki poslovni sistem treba da teži.

U platformi 1C: Enterprise, mehanizam nazvan „Sistem sastava podataka“ (skraćeno ACS) odgovoran je za generiranje izvještaja. U ovom članku pokušaćemo da damo kratak opis ideje i arhitekture ACS mehanizma i njegovih mogućnosti.


ACS je mehanizam zasnovan na deklarativnom opisu izvještaja. ACS je namenjen za izradu izveštaja i za prikaz informacija koje imaju složenu strukturu. Inače, pored izrade izveštaja, mehanizam ACS se koristi i u 1C: Enterprise u dinamičkoj listi, alat za prikaz informacija o listi sa bogatom funkcionalnošću (prikazivanje ravnih i hijerarhijskih lista, uslovni dizajn linija, grupisanje itd. ).

Malo istorije

U prvoj verziji platforme 1C: Enterprise 8, verzija 8.0, izvještaji su napravljeni na sljedeći način:
  1. Jedan ili nekoliko upita je napisano u 1C jeziku upita (jezik sličan SQL-u, više o tome u nastavku).
  2. Napisan je kod koji je prenosio rezultate izvršenih upita u tabelarni dokument ili u dijagram. Kôd bi također mogao obaviti posao koji se ne može obaviti u zahtjevu - na primjer, izračunao je vrijednosti koristeći ugrađeni 1C jezik.
Pristup je jednostavan, ali ne i najprikladniji - postoji minimum vizuelnih postavki, sve se mora programirati „od ruke do ruke“. A jedan od tadašnjih aduta potpuno nove platforme "1C: Enterprise 8" je minimizacija količine koda u primijenjenom rješenju koji je potrebno pisati ručno, posebno zbog vizualnog dizajna. Bilo bi logično slijediti isti put u mehanizmu za generiranje izvještaja. To je urađeno razvojem novog mehanizma - Sistema za sastavljanje podataka.

Jedna od ideja koja je bila osnova ACS-a bila je fleksibilnost i prilagodljivost izvještaja, štoviše, dostupnih i programeru i krajnjem korisniku. U idealnom slučaju, željeli bismo dati krajnjem korisniku pristup istom skupu alata za dizajn izvještaja kao i programeru. Bilo bi logično da se jedan skup alata učini dostupnim svima. Pa, budući da alati uključuju krajnjeg korisnika, to znači da je korištenje programiranja u njima potrebno ukloniti na minimum (najbolje ga je potpuno eliminirati), a maksimalno iskoristiti vizualne postavke.

Formulacija problema

Zadatak razvojnog tima bio je sljedeći - napraviti sistem izvještavanja koji se ne zasniva na algoritamskom (tj. pisanjem koda), već na deklarativnom pristupu kreiranju izvještaja. I vjerujemo da je zadatak uspješno riješen. Prema našem iskustvu, oko 80% potrebnog izvještavanja može se implementirati pomoću ACS-a bez ijedne linije koda (osim pisanja formula za izračunata polja), uglavnom kroz vizualne postavke.
Razvoj prve verzije ACS-a trajao je oko 5 čovjek-godina.

Dva jezika

Dva su jezika uključena u izvještavanje. Jedan je jezik upita koji se koristi za dohvaćanje podataka. Drugi je jezik izraza za sastav podataka, dizajniran za pisanje izraza koji se koriste u različitim dijelovima sistema, na primjer, u postavkama sastava podataka, da opiše izraze prilagođenih polja.

Jezik upita

Jezik upita je baziran na SQL-u i njime lako savladava dobro upućen SQL. Primjer zahtjeva:

Lako je vidjeti analoge standardnih odjeljaka za SQL upit - SELECT, FROM, GROUP BY, ORDER BY.

Istovremeno, jezik upita sadrži značajan broj ekstenzija koje imaju za cilj da odražavaju specifičnosti finansijskih i ekonomskih zadataka i minimiziraju napore za razvoj primenjenih rešenja:

  • Referenca od tačke do tačke na polja. Ako su polja tabele referentnog tipa (pohranjuju reference na objekte druge tabele), programer se može pozvati na njih u tekstu upita sa "." Telefon).
  • Višedimenzionalno i višeslojno formiranje rezultata. Zbroji i međuzbroji se formiraju uzimajući u obzir grupisanje i hijerarhiju, nivoi se mogu prelaziti bilo kojim redoslijedom sa sumiranjem međuzbirova, osigurava se ispravna konstrukcija totala po vremenskim dimenzijama.
  • Podrška za virtuelne tabele. Virtuelne tabele koje obezbeđuje sistem omogućavaju vam da dobijete gotovo gotove podatke za većinu aplikacija bez potrebe za složenim upitima. Dakle, virtuelna tabela može da pruži podatke o bilansima robe u kontekstu perioda u nekom trenutku. U isto vrijeme, virtuelne tablice maksimalno iskorištavaju pohranjene informacije, na primjer, prethodno izračunate ukupne vrijednosti, itd.
  • Privremeni stolovi. Jezik upita vam omogućava da koristite privremene tabele u upitima. Uz njihovu pomoć možete poboljšati performanse upita, u nekim slučajevima smanjiti broj zaključavanja i učiniti tekst upita lakšim za čitanje.
  • Grupni zahtjevi. Za praktičniji rad sa privremenim tabelama, jezik upita podržava rad sa skupnim upitima - tako se kreiranje privremene tabele i njeno korišćenje stavlja u jedan upit. Skupni zahtjev je niz zahtjeva odvojenih tačkom i zarezom (";"). Zahtjevi u paketu se izvršavaju jedan za drugim. Rezultat izvršavanja paketnog zahtjeva, ovisno o korištenoj metodi, bit će ili rezultat koji je vraćen zadnjim zahtjevom u grupi, ili niz rezultata svih zahtjeva u paketu redoslijedom kojim su zahtjevi u grupi pratiti.
  • Dobivanje reprezentacija referentnih polja. Svaka tabela objekata (koja pohranjuje referencu ili dokument) ima virtuelno polje - "Pregled". Ovo polje sadrži tekstualni prikaz objekta i olakšava rad piscu izvještaja. Dakle, za dokument, ovo polje sadrži sve ključne informacije - naziv vrste dokumenta, njegov broj i datum (na primjer, "Prodaja 000000003 od 06.07.2017 17:49:14"), čime se programer čuva od pisanje izračunatog polja.
  • i sl.
Mehanizam zahtjeva automatski modificira zahtjev, uzimajući u obzir uloge kojima korisnik pripada, u čije ime je zahtjev upućen (tj. korisnik će vidjeti samo podatke koje ima pravo vidjeti) i funkcionalne opcije (tj. u skladu s onim konfiguriranim u funkcionalnosti aplikativnog rješenja).

Postoje i posebna proširenja jezika upita za ACS. Proširenje se izvodi pomoću posebnih sintaktičkih instrukcija zatvorenih u vitičaste zagrade i postavljene direktno u tekst upita. Uz pomoć ekstenzija, programer određuje koje operacije krajnji korisnik može izvršiti prilagođavanjem izvještaja.

Na primjer:

  • SELECT. Ova rečenica opisuje polja koja korisnik može odabrati za prikaz. Nakon ove ključne riječi, pseudonimi polja sa glavne liste odabira upita koji će biti dostupni za prilagođavanje su navedeni, odvojeni zarezima. Primjer: (ODABIR artikla, skladište)
  • GDJE. Opisuje polja po kojima korisnik može filtrirati. Ovaj prijedlog koristi polja tabele. Upotreba pseudonima polja za odabir liste nije dozvoljena. Svaki dio unije može sadržavati vlastiti WHERE element. Primjeri: (GDJE Stavka. *, Skladište), (GDJE Dokument.Datum> = & Datum početka, Dokument.Datum<= &ДатаКонца}
  • i sl.
Primjer korištenja ekstenzija:

Jezik izraza sastava podataka

Jezik izraza za sastav podataka je namijenjen za pisanje izraza koji se koriste, posebno, za opisivanje izraza prilagođenih polja. ACS vam omogućava da definišete prilagođena polja u izveštaju koristeći ili sopstvene izraze ili skupove opcija sa uslovima za njihov izbor (analogno CASE u SQL-u). Prilagođena polja su analogna izračunatim poljima. Mogu se postaviti i u konfiguratoru i u 1C: Enterprise modu, ali se funkcije zajedničkih modula ne mogu koristiti u izrazima prilagođenih polja. Stoga su prilagođena polja namijenjena korisniku, a ne programeru.

primjer:

Proces kreiranja izvještaja o ACS-u

Prilikom kreiranja izvještaja potrebno je napraviti izgled koji određuje kako će podaci biti prikazani u izvještaju. Možete kreirati raspored na osnovu šeme sastava podataka. Šema sastava podataka opisuje suštinu podataka koji se dostavljaju izvještaju (gdje dobiti podatke i kako možete kontrolisati njihov sastav). Šema sastava podataka je baza na osnovu koje se mogu generisati sve vrste izvještaja. Šema sastava podataka može sadržavati:
  • tekst zahtjeva sa uputstvima za sistem sastavljanja podataka;
  • opis nekoliko skupova podataka;
  • detaljan opis dostupnih polja;
  • opis odnosa između nekoliko skupova podataka;
  • opis parametara preuzimanja podataka;
  • opis rasporeda polja i grupa;
  • i sl.

Na primjer, možete dodati upit kao skup podataka u šemu sastava podataka i pozvati konstruktor upita, koji vam omogućava da grafički sastavite upit proizvoljne složenosti:

Rezultat pokretanja dizajnera upita bit će tekst upita (na jeziku upita 1C: Enterprise). Ovaj tekst se može ručno podesiti ako je potrebno:

U šemi sastava podataka može biti nekoliko skupova podataka, skupovi podataka mogu biti povezani u izgled na proizvoljan način, mogu se dodati izračunata polja, postaviti parametri izvještaja itd. Vrijedi spomenuti zanimljivu karakteristiku mehanizma upita u 1C: Enterprise. Upiti se na kraju prevode u dijalekt SQL-a specifičan za DBMS s kojim aplikacija direktno komunicira. Općenito, nastojimo maksimalno iskoristiti mogućnosti DBMS servera (ograničeni smo činjenicom da koristimo samo one mogućnosti koje su istovremeno dostupne u svim DBMS-ima koje podržava 1C: Enterprise platforma - MS SQL, Oracle, IBM DB2 , PostgreSQL). Dakle, na razini upita u izračunatim poljima možemo koristiti samo one funkcije koje su prevedene u SQL.

Ali na nivou sheme sastava podataka, već možemo dodati prilagođena polja i koristiti funkcije u njima u ugrađenom 1C razvojnom jeziku (uključujući i one koje smo napisali), što uvelike proširuje mogućnosti izvještaja. Tehnički, to izgleda ovako - sve što se može prevesti u SQL prevodi se u SQL, upit se izvršava na nivou DBMS-a, rezultati upita se stavljaju u memoriju 1C aplikacijskog servera i ACS izračunava za svaki zapis vrijednosti izračunatih polja, čije su formule napisane na 1C jeziku.


Dodavanje prilagođenih polja

Možete dodati proizvoljan broj tabela i grafikona u izvještaj:


Dizajner izvještaja


Izvještaj o vremenu rada

Uz pomoć ACS-a, korisnik može dodati složene filtere u izvještaj (koji će biti dodati upitu na pravim mjestima), uslovni dizajn (koji omogućava formatiranje prikazanih polja na različite načine - fontom, bojom, itd. - ovisno o njihovim vrijednostima) i još mnogo toga...

Proces izgradnje i generisanja izvještaja može se ukratko opisati na sljedeći način:

  • Programer u vrijeme dizajna uz pomoć dizajnera (ili u vrijeme izvođenja uz pomoć koda) definira shemu sastava podataka:
    • Tekst zahtjeva/zahtjeva
    • Opis izračunatih polja
    • Odnosi između zahtjeva (ako ih ima više)
    • Parametri izvještaja
    • Zadane postavke
    • itd.
  • Gore navedene postavke su sačuvane u izgledu
  • Korisnik otvara izvještaj
    • Možda vrši dodatna podešavanja (na primjer, mijenja vrijednosti parametara)
    • Pritiska dugme "Generiraj".
  • Korisničke postavke se primjenjuju na shemu sastava podataka koju je definirao programer.
  • Formira se posredni predložak sastava podataka koji sadrži upute o tome odakle dobiti podatke. Posebno se prilagođavaju zahtjevi navedeni u izgledu. Na primjer, polja koja se ne koriste u izvještaju se uklanjaju iz zahtjeva (ovo se radi kako bi se količina primljenih podataka svela na minimum). Sva polja koja su uključena u izračunate formule polja dodaju se upitu.
  • Procesor sastava podataka je uključen. Procesor kompozicije izvršava upite, komunicira skupove podataka, izračunava vrijednosti izračunatih polja i resursa i vrši grupisanje. Jednom riječju, radi sve kalkulacije koje nisu obavljene na nivou DBMS-a.
  • Procesor za izlaz podataka pokreće zahtjev za izvršenje i šalje primljene podatke u tabelarni dokument, dijagram itd.


Proces generisanja izveštaja od strane ACS mehanizma

Trudimo se da minimiziramo količinu podataka izvještaja koji se prenose sa servera na klijentsku aplikaciju. Prilikom prikaza podataka u tabelarnom dokumentu, prilikom otvaranja tabelarnog dokumenta, sa servera prenosimo samo one redove koje korisnik vidi na početku dokumenta. Kako se korisnik kreće duž redova dokumenta, podaci koji nedostaju se pumpaju sa servera na klijenta.

Prilagođene postavke

Svi ACS alati dostupni su i programeru i krajnjem korisniku. Ali praksa je pokazala da je krajnji korisnik često zaplašen obiljem mogućnosti alata. Štaviše, u većini slučajeva, krajnjem korisniku nije potrebna sva moć podešavanja – samo treba da ima brz pristup postavljanju jednog ili dva parametra izveštaja (na primer, period i druga strana). Počevši od određene verzije platforme, programer izvještaja ima mogućnost označiti koje postavke izvještaja su dostupne korisniku. Ovo se radi pomoću polja za potvrdu "Uključi u korisničke postavke". Također, u postavkama izvještaja pojavila se zastavica "Režim prikaza" koja ima jednu od tri vrijednosti:
  • Brzi pristup. Postavka će biti prikazana direktno u gornjem dijelu prozora izvještaja.
  • Normalno. Postavka će biti dostupna putem dugmeta "Postavke".
  • Nije dostupno. Postavka neće biti dostupna krajnjem korisniku.


Postavljanje načina prikaza u vrijeme dizajna


Prikaz postavke u modu "Brzi pristup" u toku rada (ispod dugmeta "Generiraj")

Razvojni planovi

Jedan od prioritetnih pravaca u razvoju ACS-a za nas je pojednostavljenje korisničkih podešavanja. Naše iskustvo pokazuje da je za neke krajnje korisnike rad sa prilagođenim postavkama i dalje ozbiljan posao. Mi to uzimamo u obzir i radimo u tom pravcu. Shodno tome, programerima će takođe postati lakše raditi sa ACS-om, jer mi, kao i do sada, želimo da obezbedimo jedinstveni komplet alata za prilagođavanje izveštaja i za programera i za krajnjeg korisnika.

Pozdrav, dragi moji čitaoci! Nastavimo s osnovama sistema rasporeda. U ovoj seriji članaka naučili ste razliku između skupa podataka – upita naspram običnog upita. Pogledali ste i parametre virtuelnih tabela i upoznali se sa proširenjem jezika upita. Sada pogledajte sadržaj onoga što ste naučili ovdje. Sretno!

Funkcije jezika ACS izraza.

Kada je upit ugrađen u izgled, tada se unutar njega koriste standardne funkcije jezika upita. Ali ACS vam omogućava da definirate dodatne funkcije. Neke funkcije su slične funkcijama u jeziku upita, ali je sintaksa drugačija. Na primjer, funkcija "StartPeriod":

Početak perioda (Datum i vrijeme (2002, 10, 12, 10, 15, 34), "Mjesec")

Ova funkcija se razlikuje od funkcije jezika upita u drugom parametru. Ovdje se koristi string "Month", dok se u funkciji jezika upita koristi literalni MONTH.

Opis funkcija možete pronaći otvaranjem Konfiguratora: Pomoć -> Sadržaj -> Sistem sastavljanja podataka -> Jezik ekspresije sistema za sastavljanje podataka -> Funkcije jezika ekspresije sistema za sastavljanje podataka.

Gdje se mogu koristiti funkcije ACS jezika izraza ako se ne mogu koristiti u jeziku upita?

  • Na kartici u koloni Izraz.
  • Na kartici "Parametri" u koloni "Izraz".
  • Na kartici "Postavke" u koloni "Prilagođena polja". Korisnik može kreirati vlastita polja i pisati izraze u njih.
  • Na kartici Skupovi podataka, u kolonama Izrazi prikaza i Izrazi rasporeda.
    Ovo su izrazi koji prilagođavaju polja sastava podataka.

Karakteristike rada ACS-a.

Kada koristite skup podataka, upit ima niz funkcija koje se pojavljuju
pri optimizaciji ACS-a.

  • Rezultirajući upit se skraćuje u skladu sa postavkom varijante izvještaja,
    pošto su neka polja uklonjena u rezultirajućem upitu.
  • Osim toga, tablice se mogu izbrisati iz rezultirajućeg upita ako upit opisuje privremene tablice i tada se nigdje ne koriste.
  • Isto se odnosi i na skupove podataka, ako smo opisali mnoge skupove podataka u šemi, ali koristimo samo neke od njih, tada će sistem primati informacije samo o korištenim skupovima podataka, a ostatak skupova podataka će biti uklonjen iz rezultirajućeg predloška sastava podataka .

Mogu li ove karakteristike imati negativne posljedice? Da, pošto u nekim slučajevima zahtjev neće biti formiran kako smo željeli. Stoga morate uzeti u obzir ove karakteristike kada pravite složene upite.

Osnovna podešavanja ACS polja.

Na kartici "Skupovi podataka", prilikom kreiranja skupa podataka tipa upita, polja sastava se popunjavaju automatski. Kao što vidite, polja sadrže veliki broj postavki.

Zvučnik "polje" sadrži naziv polja koji se dobija iz infobaze (IB).
Nepromjenjiva vrijednost koja je tvrdo kodirana u zahtjevu. Odgovara aliasu zahtjeva.

Ali postoji jedna posebnost. Ako promijenimo pseudonim, na primjer "Nomenklatura", u Dizajneru upita na kartici "Unijevi / Aliasi" u koloni "Naziv polja" u "Proizvod", tada će se u "Setovima podataka" pojaviti novo polje "Proizvod". " kartice izgleda, ali je istovremeno ostavljeno i polje "Nomenklatura". To je zato što je postavljena zastavica AutoComplete. Sa ovom postavkom, sistem ne može razumjeti da je polje "Item" isto kao i polje "Nomenklatura", pa se, za svaki slučaj, polje dodaje dva puta.

Može li ovaj dizajn naštetiti korisničkom iskustvu? Da. Uostalom, dva polja "Proizvod" i "Nomenklatura" će se pojaviti u postavkama opcije izvještaja. Korisniku neće biti jasno po čemu se razlikuju, iako su ovi odabiri identični.

Iako možete isključiti izgled polja "Nomenklatura" tako što ćete označiti kućice u polju "Ograničenje polja" - "Uslov" i "Ograničenje atributa" - "Uslov" na kartici "Skupovi podataka" u postavkama polja. Osim toga, možete poništiti potvrdni okvir "Autocomplete" i popuniti sva polja u Query Designeru na kartici "Sastav podataka".

Zvučnik "put" označava kako ćemo se pozivati ​​na polje na svim karticama sastava podataka. Vrijednost koju možete promijeniti kako vam odgovara. Razmaci su dozvoljeni u nazivu putanje, ali je takvo ime zatvoreno u uglaste zagrade. Ali bolje je da put bude bez razmaka, jer je ovo servisno polje. Bolje je promijeniti naslov tako što ćete označiti kvadratić u koloni Naslov.

Zašto ste morali da kreirate dva različita polja "Field" i "Path" ako su njihova imena skoro uvek ista? Zato što se koristi mnogo skupova podataka. Na primjer, ako će drugi skup podataka biti unija, onda da biste uskladili polja, morate imati iste putanje. U drugim slučajevima, staze se mogu ostaviti nepromijenjene ako su njihova imena jasna.

Možete koristiti sljedeću metodu za rad sa kolonom "Putanja". Određivanjem putanje možete kreirati ugniježđene virtualne detalje za stavku. Na primjer, stavimo atribut "Quality" unutar atributa "Product". Promijenimo polje “Putanja” atributa “Quality” u “Product.Quality”. Sada na kartici "Postavke" u kartici "Izabrana polja" nećemo pronaći polje "Kvalitet", ali će se pojaviti unutar polja "Proizvod".

Pogledajmo bliže postavke ograničenja pristupačnosti. Kao što vidite, postoje dva reda za ograničavanje pristupa u kolonama "Ograničavanje polja" i "Ograničenje rekvizita".

Kolone koje ograničavaju ACS polja

Kolona "Ograničenje polja" znači da će ograničenja biti nametnuta na samo polje. Kolona "Ograničenje atributa" znači da će biti nametnuta ograničenja na ugniježđene atribute ovog polja ako polje pripada složenom tipu podataka, kao što je referenca ili dokument.

Svaki red je podijeljen u još četiri kolone. Ako je zastavica postavljena za polje ili atribute ovog polja:

  • Polje, tada neće biti dostupni za odabir na kartici "Postavke" na kartici "Izabrana polja".
  • Stanje, tada neće biti dostupni kao uslov na kartici "Postavke" na kartici "Izbor".
  • Grupa, zatim na kartici "Postavke" prilikom kreiranja novog grupiranja, grupiranje prema njima neće biti dostupno.
  • Naručivanje, tada neće biti dostupni za naručivanje na kartici "Postavke" u kartici "Sortiranje".

Zvučnik "Izraz prezentacije" potrebno za promjenu reprezentacije polja kao rezultat izvještaja. Na primjer, morate prikazati ne samo naziv proizvoda, već i njegov članak. Stoga u ovoj koloni možete napisati sljedeće:

Proizvod. Članak + "-" + Proizvod. Ime

U ovom polju možemo koristiti sve mogućnosti ACS jezika i pristupiti funkcijama zajedničkih modula.

Ako u konfiguraciji postoji zajednički modul pod nazivom "Za SKD" i ovaj modul definira zajedničku (sa ključnom riječi "Export") funkciju "GetView" sa parametrom "Link", tada ćemo u polje "View Expression" napisati :

Za SKD. GetView (stavka)

Ali ovu priliku morate pažljivo iskoristiti, posebno ako funkcija zajedničkog modula pristupa bazi podataka, jer se ovaj poziv javlja nakon što su svi podaci za izvještaj primljeni. U stvari, za svaki red, upit će se ponovo izvršiti.

Zvučnik "Izraz narudžbe" potrebno za definiranje nestandardnog sortiranja. Ovdje možete koristiti iste konstrukcije kao u polju Izraz pogleda.

Pa, rekao je sve, kako je i obećao. Ako imate pitanja, onda ih napišite u komentarima. Da bi vam se materijal fiksirao u mislima, pripremit ću test.

Top srodni članci