Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Recenzije
  • Izračunata polja u funkcijama skd 1s 8.3. Funkcije jezika izraza sustava sastavljanja podataka

Izračunata polja u funkcijama skd 1s 8.3. Funkcije jezika izraza sustava sastavljanja podataka

U ovoj kratkoj bilješci želim pokazati kako možete zbrojiti vrijednosti na različitim razinama grupiranja u izvješću koristeći sustav za sastavljanje podataka.
Kao što je prikazano na slici, samo na razini grupiranja "Grupe artikala" izračunava se resurs "Narudžba", koji prikazuje koliko treba naručiti za trenutnu grupu artikala na temelju određenih uvjeta:


Ova se vrijednost može izračunati samo na ovoj razini grupiranja, jer, iznad ili ispod, nema vrijednosti za izračunavanje. Primjerice, na razini detaljne evidencije nema podataka o maksimalnom broju u skupini, jer ti podaci vrijede samo za skupinu u cjelini, a ne i za pojedine njene komponente.

Sukladno tome, sada je potrebno izračunati zbrojeve za više grupe (“Skladišta”, “Vrste skladišta”) i zbroj.
Za to se koristi funkcija Izračunaj izraz s grupiranim nizom:
EVALUACIJA IZRAZA GRUPIRANJA NIZA (EVALEXPRESSIONWITHGROUPARRAY)
Sintaksa:
ComputeExpressionGroupedArray(,)
Opis:
Funkcija vraća niz čiji svaki element sadrži rezultat evaluacije izraza za grupiranje prema navedenom polju.
Graditelj izgleda, kada generira izgled, pretvara parametre funkcije u polja rasporeda podataka. Na primjer, polje Račun će se pretvoriti u Skup podataka. Račun.
Graditelj izgleda, kada generira izraze za prikaz prilagođenog polja čiji izraz sadrži samo funkciju CalculateArrayWithGroupArray(), generira izlazni izraz na takav način da su izlazne informacije poredane. Na primjer, za prilagođeno polje s izrazom:

Izračunaj ExpressionWith GroupingArray("Iznos(IznosPromet)", "Counterparty")
Graditelj izgleda će generirati sljedeći izraz za izlaz:

ConcatenateStrings(Niz(Red(CalculateExpressionWithGroupingValueTable("Prikaz(Iznos(DataSet.AmountTurnover)),Amount(DataSet.AmountTurnover)","DataSet.Counterparty"),"2")))

Parametri:

Vrsta: Žica. Izraz koji se vrednuje. Niz, na primjer, iznos (iznos obrta).

Vrsta: Žica. Grupiranje izraza polja – grupiranje izraza polja odvojenih zarezima. Na primjer, izvođač, stranka.

Vrsta: Žica. Izraz koji opisuje filtar primijenjen na detaljne zapise. Agregatne funkcije nisu podržane u izrazu. Na primjer, Oznaka brisanja = False.

Vrsta: Žica. Izraz koji opisuje filtar primijenjen na grupne zapise. Na primjer, Iznos(IznosPromet) > &Parametar1.
Primjer:

Maksimum(Izračunaj izraz s poljem grupiranja("Iznos(iznos obrta)", "druga strana"));

Detaljan opis sintakse funkcije može se pronaći na http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Sada za izračun, duplicirat ćemo polje "Narudžba" s različitim vrijednostima "Izračunaj po ...", koristeći sljedeće izraze, imajte na umu da su na svakoj višoj razini vrijednosti razina ispod stajališta koriste se grupiranja.

Kao rezultat, dobivamo sljedeću konstrukciju:

Jezik izraza sustava sastavljanja podataka

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

Izrazi se koriste u sljedećim podsustavima:

  • shema sastava podataka - za opisivanje izračunatih polja, ukupnih polja, izraza veza itd.;
  • postavke sastava podataka - za opisivanje prilagođenih izraza polja;
  • Izgled sastava podataka - za opisivanje izraza odnosa skupa podataka, opisivanje parametara izgleda itd.

Literali

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

  • Crta;
  • Broj;
  • Datum;
  • Boolean.

Crta

Literal niza upisuje se u znakove """, na primjer:

"String literal"

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

Na primjer:

"doslovno ""u navodnicima"""

Broj

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

10.5 200

datum

Literal tipa datuma zapisuje se 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:

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

boolean

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

Značenje

Za određivanje literala drugih tipova (nabrajanja sustava, unaprijed definiranih podataka), koristi se ključna riječ Value, nakon čega slijedi naziv literala u zagradama.

Vrijednost (vrsta računa. Aktivan)

Operacije nad brojevima

unarno -

Ova je operacija osmišljena za obrnuti predznak broja. Na primjer:

Prodaja.Količina

Unarno +

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

Prodaja.Količina

binarni -

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

Stanja i obrti. Početni saldo - stanja i promet. Krajnji saldo Stanja i prometi. početno stanje - 100 400 - 357

Binarno +

Ova operacija je dizajnirana za izračunavanje zbroja dva broja. Na primjer:

Stanja i promet. Početni saldo + saldo i promet. Stanja i prometi. početno stanje + 100 400 + 357

Raditi

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

Nomenklatura Cijena * 1,2 2 * 3,14

Podjela

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 od podjele jednog operanda drugim. Na primjer:

Nomenklatura Cijena % 1,2 2 % 3.14

Operacije na žicama

Povezivanje (binarni +)

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

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

Kao

Ova operacija provjerava odgovara li niz zadanom 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:

  • % - postotak: 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 raspone, kao što je a-z, što znači bilo koji znak unutar raspona, 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 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, predložak

“%ABC[abc]\_abc%” POSEBNI ZNAK “\”

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

Operacije usporedbe

Jednako

Ova operacija je dizajnirana za usporedbu dvaju operanda za jednakost. Na primjer:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Nejednak

Ova operacija je dizajnirana za usporedbu dvaju operanda za nejednakost. Na primjer:

Prodaja.Izvođač<>Prodaja.Nomenklatura Glavni dobavljač

Manje

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

Trenutna prodaja.Iznos< ПродажиПрошлые.Сумма

Više

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

SalesTurrent.Amount > SalesPast.Amount

Manje ili jednako

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

Trenutna prodaja.Iznos<= ПродажиПрошлые.Сумма

Više ili jednako

Ova operacija je dizajnirana 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 je True ako je vrijednost pronađena ili False u suprotnom. Na primjer:

Stavka B (&Item1, &Item2)

Operacija za provjeru postoji li vrijednost u skupu podataka

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

Prodaja. Izvođač izvođačima

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

Booleove operacije

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

Operacija NE

Operator NOT vraća True ako je njegov operand False i vraća False ako je njegov operand True. Na primjer:

NOT Document.Consignee = Dokument.Pošiljatelj

Operacija I

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

Document.Consignee = Dokument.Pošiljatelj I Document.Consignee = &Izvođač

ILI operacija

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

Document.Consignee = Dokument.Pošiljatelj OR Document.Consignee = &Izvođač

Agregatne funkcije

Agregatne funkcije izvode neku radnju na skupu podataka.

Iznos

Agregatna funkcija Sum izračunava zbroj 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čno

Funkcija dobiva srednju vrijednost za vrijednosti koje nisu nule. Na primjer:

Prosjek (ostaci. Količina)

Ostale operacije

Operacija SELECT

Operacija Select dizajnirana je za odabir jedne od nekoliko vrijednosti pod određenim uvjetima. Na primjer:

Odaberite Kada Zbroj > 1000 Zatim Zbroj ostalo 0 Kraj

Pravila za usporedbu dviju vrijednosti

Ako se vrste uspoređenih vrijednosti međusobno razlikuju, tada se odnos između vrijednosti određuje na temelju prvenstva tipova:

  • NULL (najniže);
  • boolean;
  • Broj;
  • Datum;
  • Crta;
  • Referentne vrste

Odnosi između različitih referentnih tipova definirani su na temelju referentnih brojeva tablica koje odgovaraju određenom tipu.

Ako se vrste 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 za usporedbu brojeva;
  • za tip Datum, raniji datumi su manji od kasnijih;
  • za tip String - usporedbe nizova u skladu s utvrđenim nacionalnim značajkama baze podataka;
  • referentni tipovi se uspoređuju na temelju njihovih vrijednosti (broj zapisa itd.).

Rad s NULL

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

Postoje iznimke:

  • operacija AND će samo vratiti NULL ako nijedan od operanada nije False;
  • operacija OR će vratiti NULL samo ako nijedan od operanada nije True.

Prioriteti operacije

Operacije imaju sljedeće prioritete (prvi red ima najniži prioritet):

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

Funkcije jezika izraza sustava sastavljanja podataka

Izračunati

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

  • Izraz. Upišite String. Sadrži izračunati izraz;
  • Grupiranje. Upišite String. Sadrži naziv grupiranja u čijem kontekstu se izraz treba evaluirati. Ako se kao naziv grupiranja koristi prazan niz, izračun će se izvesti u kontekstu trenutnog grupiranja. Ako se kao naziv grupiranja koristi niz GrandTotal, izračun će se izvesti u kontekstu ukupnog zbroja. Inače, izračun će se izvesti u kontekstu roditeljskog grupiranja s tim imenom. Na primjer:
Iznos(Prodaja.Iznos Obrt) / Izračunaj("Iznos(Prodaja.IznosPromet)", "Ukupni Ukupni")

U ovom će primjeru rezultat biti omjer iznosa u polju "Sales.AmountTurnover" zapisa grupiranja i iznosa istog polja u cijelom izgledu.

Razina

Funkcija je dizajnirana da dobije trenutnu razinu snimanja.

Razina()

NumberInOrder

Uzmite sljedeći redni broj.

Broj narudžbe()

NumberIn OrderInGrouping

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

broj u redu u grupi ()

Format

Dobijte formatirani niz proslijeđene vrijednosti.

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

Parametri:

  • Značenje;
  • Oblikujte niz.

Format(Fakture o izdacima.IznosDoc, "NPV=2")

Početak razdoblja

Parametri:

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

Početak razdoblja(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 određenog datuma.

Parametri:

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

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

Proizlaziti:

13.10.2002 23:59:59

AddDate

Funkcija je dizajnirana da doda neku vrijednost datumu.

Parametri:

  • Vrsta povećanja. Upišite String. Sadrži jednu od sljedećih vrijednosti:
    • Minuta;
    • Dan;
    • Tjedan;
    • Mjesec;
    • Četvrtina;
    • Desetljeće;
    • Pola godine.
  • Vrijednost - za koliko želite povećati datum. Vrsta Broj. Frakcijski dio se zanemaruje.

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

Proizlaziti:

12.11.2002 10:15:34

DifferenceDate

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

Parametri:

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

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

Proizlaziti:

Podniz

Ova je funkcija dizajnirana za odabir podniza iz niza.

Parametri:

  • Crta. Upišite String. Niz iz kojeg se izdvaja podniz;
  • Položaj. Vrsta Broj. Položaj znaka iz kojeg počinje podniz koji se izdvaja iz niza;
  • Duljina. Vrsta Broj. Duljina odabranog podniza.

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

Duljina niza

Funkcija je dizajnirana za određivanje duljine niza.

Parametar:

  • Crta. Upišite String. Niz čija se duljina određuje.

String(Računi.Adresa)

Godina

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

Parametar:

  • Datum. Upišite datum. Datum do kojeg se utvrđuje godina.

GODINA (Uklj. datum)

Četvrtina

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

Parametar

  • Datum. Upišite datum. Datum do kojeg se utvrđuje tromjesečje
KVARTAL(Faktura.Datum)

Mjesec

Ova je funkcija dizajnirana za izdvajanje broja mjeseca iz vrijednosti tipa Datum. Broj mjeseca obično je u rasponu od 1 do 12.

  • Datum. Upišite datum. Datum do kojeg se određuje mjesec.
MJESEC (Faktura.Datum)

Dan u godini

Ova je funkcija dizajnirana da dobije dan u godini iz vrijednosti tipa Datum. Dan u godini obično se kreće od 1 do 365 (366).

  • Datum. Upišite datum. Datum po kojem se određuje dan u godini.
DAN U GODINI (Exp.Inc.Date)

Dan

Ova je funkcija dizajnirana da dobije dan u mjesecu iz vrijednosti tipa Datum. Dan u mjesecu obično se kreće od 1 do 31.

  • Datum. Upišite datum. Datum do kojeg se određuju dani u mjesecu.
DAY (Exp.Inc.Date)

Tjedan

Ova je funkcija dizajnirana da dobije broj tjedna u godini iz vrijednosti tipa Datum. Tjedni u godini se numeriraju počevši od 1.

  • Datum. Upišite datum. Datum do kojeg se određuju brojevi tjedana.
TJEDAN (Exp.Inc.Datum)

Dan u tjednu

Ova je funkcija dizajnirana da dobije dan u tjednu iz vrijednosti tipa Datum. Dan u tjednu obično se kreće od 1 (ponedjeljak) do 7 (nedjelja).

  • Datum. Upišite datum. Datum do kojeg se određuje dan u tjednu.
DAN U TJEDNU (Exp.Inc.Date)

Sat

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

  • Datum. Upišite datum. Datum do kojeg se određuje sat u danu.
HOUR (Exp.Inc.Date)

Minuta

Ova je funkcija dizajnirana da dobije minute u satu iz vrijednosti tipa datuma. Minuta u satu kreće se od 0 do 59.

  • Datum. Upišite datum. Datum do kojeg se određuje minuta u satu.
MINUTE (Exp.Inc.Date)

Drugi

Ova je funkcija dizajnirana da dobije sekundu minute iz vrijednosti tipa datuma. Sekunda minute kreće se od 0 do 59.

  • Datum. Upišite datum. Datum do kojeg se određuju sekunde minute.
SEC (Exp.Inc.Date)

izraziti

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

Parametri:

  • Izraz koji treba pretvoriti;
  • Oznaka tipa. Upišite String. Sadrži niz tipa. Na primjer, "Broj", "String" itd. Osim primitivnih tipova, ovaj niz može sadržavati naziv tablice. U ovom slučaju, pokušat će se izraziti referenca na navedenu tablicu.

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.

IsNULL(iznos(prodaja.iznos prometa), 0)

Zajedničke funkcije modula

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

U ovom primjeru, funkcija "ShortName" bit će pozvana iz modula opće konfiguracije.

Imajte na umu da je korištenje funkcija dijeljenog modula dopušteno samo ako je navedena odgovarajuća opcija procesora sastava podataka.

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

U svjetlu nadolazećeg izdanja 8.2.14, pokušat ću opisati neke od novih značajki sustava za sastavljanje podataka.

Otvorite shemu sastava podataka, po mogućnosti u vanjskom izvješću, kako biste je lakše uredili.

Dodamo skup podataka upita i pišemo, bilo ručno ili pomoću alata za izgradnju upita, najjednostavniji upit:

1. Postavite zahtjev u ACS.

2. Postavite izračunata polja u ACS-u

3. Konfiguriramo raspored podataka na kartici postavki

4. Pokrećemo 1C Enterprise 8.2.14. Otvaramo izvještaj. Formiramo, primamo.

Opis samih novih značajki:

1. Trenutni datum()

Vraća datum sustava. Prilikom postavljanja izgleda izgleda, u svim izrazima koji su prisutni u izgledu, funkcija CurrentDate() se zamjenjuje vrijednošću trenutnog datuma.

2. IZRAČUNAJ ()

Sintaksa:

Izračunaj izraz(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Opis:

Funkcija je dizajnirana za procjenu izraza u kontekstu nekog grupiranja.

Funkcija uzima u obzir odabir grupiranja, ali ne uzima u obzir hijerarhijske odabire.

Funkcija se ne može primijeniti na grupiranje u grupnom odabiru te grupe. Na primjer, pri odabiru grupiranja po nomenklaturi ne možete koristiti izraz Izračunaj izraz ("Zbroj(SumTurnover)", "UkupniUkupni") > 1000. Ali takav se izraz može koristiti u hijerarhijskom odabiru.

Ako završni zapis prethodi početnom zapisu, tada se smatra da ne postoje zapisi za izračun detaljnih podataka i izračun agregatnih funkcija.

Prilikom izračunavanja intervalnih izraza za ukupni zbroj (parametar Grupiranje je postavljen na GrandTotal), smatra se da ne postoje zapisi za izračun detaljnih podataka i izračun agregatnih funkcija.

Graditelj izgleda, kada generira izraz funkcije Calculate Expression, ako izraz za naručivanje sadrži polja koja se ne mogu koristiti u grupiranju, zamjenjuje funkciju Izračunaj izraz s NULL.

Parametri

<Выражение>

Vrsta: Žica. Izraz koji se vrednuje.

<Группировка>

Vrsta: Žica. Sadrži naziv grupiranja u čijem kontekstu se izraz treba evaluirati. Ako se kao naziv grupiranja koristi prazan niz, izračun će se izvesti u kontekstu trenutnog grupiranja. Ako se kao naziv grupiranja koristi niz GrandTotal, izračun će se izvesti u kontekstu ukupnog zbroja. Inače, izračun će se izvesti u kontekstu roditeljskog grupiranja s tim imenom.

Na primjer:

Zbroj(Prodaja.Zbrojni promet)/Izračunaj("Zbroj(Prodaja.Zbrojni promet)", "Ukupni ukupni")

U ovom primjeru, rezultat će biti omjer iznosa za polje Sales.AmountVolume zapisa grupiranja i količine istog polja u cijelom izgledu;

<ОбластьВычисления>

Vrsta: Žica. Parametar može imati sljedeće vrijednosti:

  • GeneralTotal - izraz će se izračunati za sve zapise grupiranja.
  • Hijerarhija - izraz će se evaluirati za roditeljski hijerarhijski unos, ako ga postoji, i za cijelo grupiranje, ako ne postoji roditeljski hijerarhijski unos.
  • Grupiranje - izraz će se evaluirati za trenutni zapis grupiranja.
  • GroupingNotResource - kada se izračunava funkcija za grupni zapis prema resursima, izraz će se izračunati za prvi grupni zapis izvornog grupiranja.

Pri izračunu funkcije Izračunaj izraz() s vrijednošću GroupingNotResource za grupne zapise koji nisu grupirani prema resursima, funkcija se vrednuje na isti način kao što bi se izračunala da je vrijednost parametra jednaka vrijednosti grupiranja.

Graditelj izgleda sastava podataka, prilikom generiranja izgleda sastava podataka, prilikom prikaza polja resursa na kojem se vrši grupiranje, stavlja izraz u izgled koji se izračunava pomoću funkcije Izračunaj izraz(), navodeći parametar GroupingNotResource. Za druge resurse grupirane po resursima postavljaju se regularni izrazi resursa.

<Начало>

Vrsta: Žica. Određuje koji zapis treba započeti fragment u kojem će se izračunati agregatne funkcije izraza i iz kojeg zapisa dobiti vrijednosti polja izvan agregatnih funkcija. Vrijednost može biti jedna od sljedećeg:

<Конец>

Vrsta: Žica. Označava na koji zapis nastaviti fragment u kojem se izračunavaju agregatne funkcije izraza. Vrijednost može biti jedna od sljedećeg:

  • Prvi (Prvi). Morate dobiti prvi zapis o grupiranju. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od početka grupiranja. Dobivena vrijednost mora biti cijeli broj veći od nule. Na primjer, First(3) - dobivanje trećeg zapisa od početka grupiranja.

Ako je prvi unos izvan grupiranja, smatra se da unosa nema. Na primjer, ako postoje 3 zapisa, a želite dobitiFirst(4), onda se smatra da nema zapisa.

  • Posljednji (Posljednji). Morate dobiti najnoviji unos grupiranja. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od kraja grupiranja. Dobivena vrijednost mora biti cijeli broj veći od nule. Na primjer, Last(3) - Dobiva treći zapis s kraja grupiranja.

Ako je zadnji unos izvan grupiranja, smatra se da unosa nema. Na primjer, ako postoje 3 zapisa, a želite dobiti Last(4), onda se smatra da nema zapisa.

  • Prethodni. Morate dobiti prethodni unos grupiranja. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak natrag od trenutnog zapisa grupiranja. Na primjer, Prethodno(2) - dohvatite prethodni iz prethodnog zapisa.

Ako je prethodni zapis izvan grupiranja (na primjer, drugi zapis grupiranja treba dobiti Previous(3), tada se dobiva prvi zapis grupiranja.

Pri dobivanju prethodnog zapisa za zbroj grupiranja smatra se da je dobiven prvi zapis.

  • Sljedeće (Sljedeće). Morate dobiti sljedeći unos grupiranja. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak naprijed od trenutnog zapisa grupiranja. Na primjer, Next(2) - dohvatite sljedeći iz sljedećeg zapisa.

Ako sljedeći zapis nadilazi grupiranje, tada se smatra da zapisa nema. Na primjer, ako postoje 3 zapisa, a treći zapis dobije Next(), tada se smatra da nema zapisa.

Kada se primi sljedeći zapis za zbroj grupiranja, smatra se da zapisa nema.

  • Struja (Struja). Morate dobiti trenutni unos.

Kada se dohvati za zbroj grupiranja, dohvaća se prvi zapis.

  • BoundaryValue. Potreba za dobivanjem zapisa prema navedenoj vrijednosti. Nakon riječi RestrictingValue u zagradama potrebno je navesti izraz s čijom vrijednošću želite započeti fragment, prvo polje za redoslijed.

Zapis će biti prvi zapis čija je vrijednost polja redoslijeda veća ili jednaka navedenoj vrijednosti. Na primjer, ako se polje Period koristi kao polje za narudžbu i ima vrijednosti 01/01/2010, 02/01/2010, 03/01/2010, a želite dobiti LimitValue(DateTime(2010 , 1, 15)), tada će se zaprimiti zapisnik s datumom 02/01. 2010.

<Сортировка>

Vrsta: Žica. Navedeni su izrazi odvojeni zarezima koji opisuju pravila uređenja. Ako nije navedeno, tada se poredak izvodi na isti način kao i za grupiranje za koje se izraz evaluira. Nakon svakog izraza, možete odrediti ključne riječi Asc (za sortiranje uzlaznim redoslijedom), Descending (za sortiranje u silaznom redoslijedu) i AutoOrder (za razvrstavanje referenciranih polja prema poljima po kojima želite sortirati referencirani objekt). Riječ AutoOrder može se koristiti i s uzlaznim i s silažnim riječima.

<ИерархическаяСортировка>

Vrsta: Žica. Slično opciji Sortiraj. Koristi se za sređivanje hijerarhijskih zapisa. Ako nije navedeno, graditelj izgleda generira poredak prema redoslijedu navedenom u parametru Sort.

<ОбработкаОдинаковыхЗначенийПорядка>

Vrsta: Žica. Određuje pravilo za određivanje prethodnog ili sljedećeg zapisa ako postoji više zapisa s istom vrijednošću reda:

  • Odvojeno znači da se slijed uređenih zapisa koristi za određivanje prethodnog i sljedećeg zapisa. Zadana vrijednost.
  • Zajedno (Zajedno) znači da se prethodni i sljedeći zapis određuju na temelju vrijednosti izraza za narudžbu.

Na primjer, ako je rezultirajući niz poredan po datumu:

datum Puno ime Značenje
1 1. siječnja 2001 Ivanov M. 10
2 2. siječnja 2001 Petrov S. 20
3 3. siječnja 2001 Sidorov R. 30
4 04. siječnja 2001 Petrov S. 40

Ako je vrijednost parametra odvojeno, tada:

§ prethodni unos za unos 3 bit će unos 2.

§ ako je fragment izračuna definiran kao Current, Current (odnosno, parametri Start i End), tada će se za zapis 2 ovaj fragment sastojati od jednog zapisa 2. Izraz Izračunaj izraz ("Sum (Value)", Current, Current) bit će jednak 20.

Ako je vrijednost parametra Zajedno, tada:

§ prethodni unos za unos 3 bit će unos 1.

§ ako je fragment proračuna definiran kao Current, Current (odnosno, parametri početka i kraja), tada će se za zapis 2 ovaj fragment sastojati od zapisa 2 i 3. Izraz CalculateExpression(“Sum(Value)”, Current, Current) će biti jednak 50.

Kada navedete vrijednost parametra jednaku Together, u parametrima Početak i Kraj, ne možete odrediti pomak za pozicije Prvi, Zadnji, Prethodni, Sljedeći.

CalculateExpression("Iznos(iznos obrta)", "prvi", "trenutni")

Ako želite dobiti vrijednost grupiranja u prethodnom retku, možete koristiti sljedeći izraz:

CalculateExpression("Tečaj", "Prethodni")

Popis novi značajke:

ComputeExpressionGroupedArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funkcija vraća niz čiji svaki element sadrži rezultat evaluacije izraza za grupiranje prema navedenom polju.

ComputeExpressionGroupedValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funkcija vraća tablicu vrijednosti, čiji svaki redak sadrži rezultat evaluacije izraza za grupiranje prema navedenom polju

ValueFilled(<Выражение>) – Vraća True ako je vrijednost drugačija od zadane vrijednosti ove vrste, osim NULL, osim nulte reference, osim Undefined. Booleove vrijednosti se testiraju na NULL. Stringovi se provjeravaju za znakove koji nisu razmak.

Format(<Выражение>, <Форматная строка>) – Dobijte formatirani niz proslijeđene vrijednosti. Niz formata postavlja se u skladu s nizom formata sustava 1C:Enterprise.

Podniz(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Ova je funkcija dizajnirana za odabir podniza iz niza.

Duljina niza(<Выражение>) – Funkcija je dizajnirana za određivanje duljine niza. Parametar - izraz tipa niza

Crta(<Выражение>) – Ako je niz proslijeđen kao parametar, tada funkcija vraća niz koji sadrži nizove prikaza svih elemenata niza, odvojenih znakovima “; “. Ako se tablica vrijednosti prosljeđuje kao parametar, tada funkcija vraća niz koji sadrži nizove prikaza svih redaka tablice vrijednosti, a prikazi ćelija svakog retka odvojeni su znakovima "; “, i nizovi sa znakom novog reda. Ako bilo koji element ima prazan prikaz niza, tada se umjesto njegovog prikaza prikazuje niz<Пустое значение>.

Jedan od najprikladnijih i jedinstvenih razvojnih alata u 1C je sustav za sastavljanje podataka (SKD). U nekoliko informacijskih sustava programeri mogu kreirati izvješća bez pisanja koda. Ovaj mehanizam razvijen je kako bi se pojednostavio i ubrzao razvoj izvještajnih obrazaca te dao više mogućnosti korisnicima u radu s izlaznim podacima. Potonje je visoko cijenjeno od strane naprednih korisnika, koji zahvaljujući tome mogu samostalno prilagoditi izvješće za svoje potrebe bez čekanja da programeri poduzmu akciju.

Izrada izvješća u 1C kroz SKD

Proces izrade izvješća pomoću SKD-a može se podijeliti u sljedeće faze:

  1. Napravite zahtjev. Zahtjev možete napisati ručno ili bez programskog koda pomoću prikladnog sučelja;
  2. Postavljanje izvješća. Odabiru se polja, zbrojevi, grupiranja, parametri, dizajn izvješća;
  3. Nakon toga, moramo samo spojiti rezultirajuće izvješće s konfiguracijom na bilo koji način.

Unatoč mogućnosti korisnika da konfiguriraju izvješća na ACS-u, ona se moraju kreirati putem konfiguratora.

Razmotrimo primjer izrade vanjskog izvješća o ACS-u:


Sada idemo na 1C, otvaramo naše izvješće kako bismo bili sigurni da su poduzete radnje točne. Svi se podaci odražavaju, grupe se mogu skupiti i proširiti. Kao što vidite, ACS vam omogućuje dobivanje cjelovitih izvješća bez pisanja koda, osim za nestandardne zahtjeve. S obzirom da većina izvještaja ima sličnu strukturu, poznavanje ACS-a značajno će skratiti vrijeme za razvoj ovih objekata.

Veliku popularnost ovog mehanizma osigurala je podrška širokih mogućnosti prilikom generiranja izvješća. Štoviše, mogu ih koristiti ne samo programeri, već i obični korisnici.

SKD mogućnosti

Ima situacija kada smo napravili prijavu, a onda dođe korisnik i zatraži malu reviziju. Primjerice, umjesto naziva nomenklature prikažite članke. ACS omogućuje korisnicima da sami naprave takva poboljšanja pomoću gumba "Više" - "Promijeni opciju...".


Prozor koji se otvara sličan je prozoru postavki u izvješću u konfiguratoru, a također ima slične funkcije. Za rješavanje zadatka korisnik mora otići na karticu "Polja" i promijeniti polje "Nomenklatura". Ovo polje za uređivanje otvara se dvostrukim klikom i gumb "Odaberi..." postaje dostupan.


Prozor koji se otvori daje nam mogućnost odabira bilo koje vrijednosti koja će se pojaviti u polju "Nomenklatura". Neka polja imaju znak plus na lijevoj strani - programer je postavio veze u ta polja, što znači da možemo vidjeti njihove detalje. Otvaramo "Nomenklaturu" i vidimo članak koji nam je potreban. Odaberite ga i odaberite.


Prozor za uređivanje opcija izvješća sadrži mnoge korisne funkcije sustava sastavljanja podataka. Na primjer, korisnik može samostalno promijeniti redoslijed grupiranja, dodati odabir ili nametnuti uvjetni dizajn. Dovršavamo uređivanje i generiramo izvješće - kao što vidite, cijeli raspon se sada prikazuje kao članci.


Mehanizam SKD 1C:Enterprise 8.3 također ima proširenu funkcionalnost za programere. Prilikom izrade izvješća koristili smo samo 2 kartice - "Skupovi podataka" i "Postavke", ali ih u ACS-u ima puno više. Da biste koristili sve funkcije sustava za sastavljanje podataka, morate razumjeti za što je svaka od kartica potrebna:

  1. Skupovi podataka - ovdje su navedeni svi upiti uključeni u generiranje izvješća;
  2. Odnosi skupa podataka - koriste se za izgradnju odnosa između različitih upita s prve kartice;
  3. Izračunata polja - popis dodanih polja koja nisu iz upita. Najčešće se koristi u slučajevima kada, na temelju vrijednosti nekoliko polja iz zahtjeva, trebate dobiti 1 vrijednost;
  4. Resursi. U 1C, ovo je naziv polja za koja trebate znati zbrojeve. Resursi podržavaju različite aritmetičke operacije - zbroj, količina, maksimum i druge;
  5. Parametri. Koriste se ako je za generiranje izvješća potrebno da korisnik unese određene podatke - npr. datum, odjele ili nomenklaturu;
  6. Izgledi. Dizajniran za one slučajeve kada korisnici žele vidjeti jedinstveno dizajnirano izvješće. Napravite zasebno mjesto za potpise ili novi vrh izvješća - sve to možete učiniti ovdje;
  7. ugniježđene sheme. Potrebni su kada vaše izvješće mora sadržavati podatke iz drugih izvješća;
  8. Postavke. Odjeljak deklarira izlazna polja, grupiranja i konfigurira izgled izvješća.


Broj mogućnosti koje programeri ugrađuju u mehanizam ACS-a je velik, ali mnoge od njih se koriste iznimno rijetko. Čak i iskusni 1C programeri možda neće koristiti neke funkcije tijekom godina. Za uspješan rad u ACS-u dovoljno je poznavati osnovne pojmove i često korištene postavke. U rijetkim slučajevima dokumentacija će priskočiti u pomoć.

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

  1. ukupan zbroj u grupiranju;
  2. tekući zbroj u unakrsnoj tablici;
  3. dobivanje prethodne vrijednosti;
  4. PM izlaz u jednom redu.

1. Dobivanje pokazatelja na kumulativni zbroj

Dobijte ukupnu količinu robe na razini grupiranja. Da bismo to učinili, kreiramo izračunato polje (vidi sliku 1).
Na kartici "Resursi" postavite funkciju za izračunato polje:
CalculateExpression("Zbroj(BrojPromet)", "Prvi", "Trenutno")
koji će zbrojiti broj proizvoda od prvog zapisa do trenutnog (vidi sliku 2).

Ako želite dobiti količinu robe na obračunskoj osnovi na razini detaljne evidencije, tada se funkcija Izračunaj izraz postavlja za obračunsko polje na kartici "Izračunata polja" (vidi sliku 3).
Ovisno o stupnju primitka tekućeg zbroja, kreiramo grupiranje (vidi sliku 4): na razini resursa - grupiranje po robi, na razini DZ - grupiranje detaljnih zapisa.
Slika 4. Grupiranja izvješća s kumulativnim ukupnim iznosom

2. Dobivanje vrijednosti indikatora iz prethodnog retka

Dobijte tečaj za datum i prethodni datum. Da biste to učinili, kreirajte izračunato polje i upišite sljedeći izraz u polje izraza (vidi sliku 5):
EvaluateExpression("Tečaj", "Prethodni", "Prethodni")
koji će uzeti prethodnu vrijednost tečaja za trenutni redak, posljednji parametar funkcije ograničava primanje podataka.
Budući da radimo na razini detaljnih zapisa, odmah idemo na karticu "Postavke" i kreiramo grupiranje - detaljni zapisi.

3. Dobivanje pokazatelja s kumulativnim zbrojem u unakrsnoj tablici

Dobit ćemo količinu robe na obračunskoj osnovi u kontekstu razdoblja. Da bismo to učinili, kreiramo izračunato polje (vidi sliku 1). Na kartici "Resursi" za izračunato polje navedite sljedeći izraz (vidi sliku 6):
CalculateExpression("Iznos(Broj obrta)", "Razdoblje", "Prvi", "Trenutno")
koji će na razini grupiranja izračunati količinu robe u rasponu od prvog retka do tekućeg u kontekstu razdoblja za svaku stavku.
Na kartici "Postavke" kreiramo tablicu s grupiranjem po stavci u redu i grupiranjem po točki u stupcu (vidi sliku 7).

4. Ispis podataka tabličnog dijela u jednom retku

U članku se razmatraju metode za ispis tabličnih podataka u jednom retku, uključujući metodu pomoću funkcije Izračunaj izraz.

Vrhunski povezani članci