Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Izračunata polja u funkcijama skd 1s 8.3. Funkcije jezika za sastavljanje podataka sistema ekspresije

Izračunata polja u funkcijama skd 1s 8.3. Funkcije jezika za sastavljanje podataka sistema ekspresije

U ovoj kratkoj napomeni, želim da pokažem kako možete da sumirate 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 treba 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 ti podaci vrijede samo za grupu u cjelini, a ne i za njene pojedinačne komponente.

U skladu s tim, sada je potrebno izračunati ukupne vrijednosti za više grupe (“Skladišta”, “Vrste skladišta”) i zbir.
Za to se koristi funkcija Izračunajte izraz s grupisanim nizom:
PROCJENI IZRAZ GRUPIRANJA NIZA (EVALEXPRESSIONWITHGROUPARRAY)
sintaksa:
ComputeExpressionGroupedArray(,)
Opis:
Funkcija vraća niz, čiji svaki element sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju.
Graditelj rasporeda, kada generira izgled, pretvara parametre funkcije u termine polja rasporeda podataka. Na primjer, polje Račun će biti konvertirano u skup podataka. Račun.
Graditelj rasporeda, 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 poređane. Na primjer, za prilagođeno polje s izrazom:

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

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

Parametri:

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

Vrsta: String. Grupisanje izraza polja – grupisanje izraza polja odvojenih zarezima. Na primjer, Ugovarač, Strana.

Vrsta: String. Izraz koji opisuje filter primijenjen na detaljne zapise. Agregatne funkcije nisu podržane u izrazu. Na primjer, DeletionMark = False.

Vrsta: String. Izraz koji opisuje filter primijenjen na grupne zapise. Na primjer, iznos (iznos obrta) > &Parametar1.
primjer:

Maksimum(Izračunaj ExpressionWith GroupingArray("Iznos(IznosPromet)", "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“, s različitim vrijednostima „Izračunaj po...“, koristeći sljedeće izraze, imajte na umu da su na svakom višem nivou vrijednosti nivoa ispod stajališta koriste se grupe.

Kao rezultat, dobijamo sljedeću konstrukciju:

Sistemski jezik za sastavljanje podataka

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

Izrazi se koriste u sljedećim podsistemima:

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

Literali

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

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

Linija

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

"String literal"

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

Na primjer:

„doslovno „„pod navodnicima“““

Broj

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

10.5 200

datum

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

Na primjer:

DATETIME(1975, 1, 06) - 6. januar 1975. DATETIME(2006, 12, 2, 23, 56, 57) - 2. decembar 2006, 23:56:57 sekundi, 23:56:57 sekundi

boolean

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

Značenje

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

Vrijednost (Tip računa. Aktivan)

Operacije nad brojevima

unarno -

Ova operacija je dizajnirana da obrne predznak broja. Na primjer:

Sales.Quantity

Unary +

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

Sales.Quantity

binarni -

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

BalancesAndTurnovers.InitialBalance - BalancesAndTurnovers.EndBalances BalancesAndTurnovers.InitialBalance - 100 400 - 357

Binarno +

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

BalancesAndTurnovers.InitialBalance + BalancesAndTurnovers.Promet BalancesAndTurnovers.InitialBalance + 100 400 + 357

Posao

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

Nomenklatura Cijena * 1,2 2 * 3.14

divizija

Ova operacija je dizajnirana da dobije rezultat dijeljenja jednog operanda drugim. Na primjer:

Nomenklatura Cijena / 1.2 2 / 3.14

Ostatak divizije

Ova operacija je dizajnirana da dobije ostatak podjele jednog operanda drugim. Na primjer:

Nomenklatura Cijena % 1,2 2 % 3.14

Operacije na nizovima

Konkatenacija (binarni +)

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

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

Sviđa mi se

Ova operacija provjerava da li niz odgovara datom uzorku.

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

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

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

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

Na primjer, šablon

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

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

Operacije poređenja

Jednako

Ova operacija je dizajnirana da uporedi dva operanda radi jednakosti. Na primjer:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Nije jednako

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

Prodaja.Izvođač<>Sales.NomenclatureMainSupplier

Manje

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

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

Više

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

SalesCurrent.Amount > SalesPast.Amount

Manje ili jednako

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

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

Više ili jednako

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

SalesCurrent.Amount >= SalesPast.Amount

Operacija B

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

Stavka B (&Item1, &Item2)

Operacija za provjeru da li vrijednost postoji u skupu podataka

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

Prodaja Izvođač radova

Operacija provjere NULL

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

Prodaja.Izvođač JE NULL

Operacija provjere vrijednosti koja nije NULL

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

Prodaja.Izvođač NIJE NULL

Bulove operacije

Logičke operacije prihvataju kao operande izraze tipa Boolean.

Operacija NE

Operator NOT vraća Tačno ako je njegov operand False, i vraća False ako je njegov operand Tačan. Na primjer:

NOT Document.Consignee = Dokument.Pošiljalac

Operacija I

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

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

OR operacija

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

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

Agregatne funkcije

Agregatne funkcije izvode neku radnju na skupu podataka.

Suma

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

Iznos(Prodaja.IznosPromet)

Količina

Funkcija Count broji broj vrijednosti koje nisu nulte. Na primjer:

Količina (Prodaja. Izvođač)

Broj različitih

Ova funkcija broji broj različitih vrijednosti. Na primjer:

Količina (razne prodaje. Izvođač)

Maksimum

Funkcija dobiva maksimalnu vrijednost. Na primjer:

Maksimum (ostaci. Količina)

Minimum

Funkcija dobiva minimalnu vrijednost. Na primjer:

Minimum (Stanje. Količina)

Prosječna

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

Prosjek (ostaci. Količina)

Ostale operacije

Operacija SELECT

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

Odaberite Kada Zbroj > 1000 Zatim Zbroj Drugo 0 Kraj

Pravila za poređenje dvije vrijednosti

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

  • NULL (najniže);
  • boolean;
  • Broj;
  • Datum;
  • Linija;
  • Referentni tipovi

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

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

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

Rad sa NULL

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

Postoje izuzeci:

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

Operativni prioriteti

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

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

Funkcije jezika za sastavljanje podataka sistema ekspresije

Izračunati

Funkcija Calculate je dizajnirana da izračuna izraz u kontekstu nekog grupisanja. Funkcija ima sljedeće parametre:

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

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

Nivo

Funkcija je dizajnirana da dobije trenutni nivo snimanja.

Nivo()

NumberInOrder

Uzmite sljedeći redni broj.

Broj narudžbe()

NumberIn OrderInGrouping

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

BrojUOrderUGrupi()

Format

Dobijte formatirani niz proslijeđene vrijednosti.

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

Parametri:

  • Značenje;
  • Format string.

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

Početak perioda

Parametri:

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

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

rezultat:

01.10.2002 0:00:00

EndPeriod

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

Parametri:

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

AddDate

Funkcija je dizajnirana da doda neku vrijednost datumu.

Parametri:

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

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

rezultat:

12.11.2002 10:15:34

DifferenceDate

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

Parametri:

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

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

rezultat:

Podniz

Ova funkcija je dizajnirana za odabir podniza iz niza.

Parametri:

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

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

String Length

Funkcija je dizajnirana da odredi dužinu niza.

Parametar:

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

String(Računi.Adresa)

Godina

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

Parametar:

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

GODINA (Inc.Date)

Kvart

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

Parametar

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

Mjesec

Ova funkcija je dizajnirana da izdvoji broj mjeseca iz vrijednosti tipa Datum. Broj mjeseca je obično u rasponu od 1 do 12.

  • Datum. Unesite datum. Datum do kojeg je određen mjesec.
MJESEC (Faktura.Datum)

Dan u godini

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

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

Dan

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

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

Sedmica

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

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

Dan u tjednu

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

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

Sat

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

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

Minuta

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

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

Sekunda

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

  • Datum. Unesite datum. Datum do kojeg se određuju sekunde minuta.
SEC (Exp.Inc.Date)

express

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

Parametri:

  • 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(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.IznosPromet), 0)

Zajedničke funkcije modula

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

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

Imajte na umu da je upotreba funkcija dijeljenog modula dozvoljena samo kada je specificirana odgovarajuća opcija procesora sastava podataka.

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

U svetlu predstojećeg izdanja 8.2.14, pokušaću da opišem neke od novih karakteristika sistema za sastavljanje podataka.

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

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

1. Postavite zahtjev u ACS-u.

2. Postavite izračunata polja u ACS

3. Konfigurišemo raspored podataka na kartici podešavanja

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

Opis samih novih karakteristika:

1. Trenutni datum()

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

2. COMPUTE EXPRESSION()

sintaksa:

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

Opis:

Funkcija je dizajnirana da procijeni izraz u kontekstu nekog grupiranja.

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

Funkcija se ne može primijeniti na grupisanje u odabiru grupe te grupe. Na primjer, u odabiru grupiranja po nomenklaturi, ne možete koristiti izraz Izračunaj izraz ("Sum(SumTurnover)", "TotalTotal") > 1000. Ali takav izraz se može koristiti u hijerarhijskoj selekciji.

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

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

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

Parametri

<Выражение>

Vrsta: String. Izraz koji se vrednuje.

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

Vrsta: String. Sadrži naziv grupacije u čijem kontekstu se izraz treba procijeniti. Ako se kao ime grupisanja koristi prazan niz, proračun će se izvršiti u kontekstu trenutnog grupisanja. Ako se kao naziv grupisanja koristi niz GrandTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu roditeljskog grupiranja s tim imenom.

Na primjer:

Zbroj (Prodaja.Zbroj prometa)/Izračunaj(“Zbroj(Prodaja.Zbroj prometa)”, “Ukupni ukupan”)

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

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

Vrsta: String. Parametar može imati sljedeće vrijednosti:

  • GeneralTotal - izraz će se izračunati za sve grupne zapise.
  • Hijerarhija - izraz će se procijeniti za roditeljski hijerarhijski unos, ako ga ima, i za cijelo grupisanje, ako ne postoji roditeljski hijerarhijski unos.
  • Grupisanje - izraz će biti procijenjen za trenutni zapis grupisanja.
  • GroupingNotResource - kada se izračunava funkcija za grupni zapis prema resursima, izraz će se izračunati za prvi grupni zapis originalnog grupisanja.

Prilikom izračunavanja funkcije Izračunaj izraz() s vrijednošću GroupingNotResource za grupne zapise koji nisu grupirani prema resursima, funkcija se procjenjuje na isti način kao što bi bila izračunata 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 grupisanje, 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: String. Određuje koji zapis treba započeti fragment u kojem će se izračunati agregatne funkcije izraza i iz kojeg zapisa će se dobiti vrijednosti polja izvan agregatnih funkcija. Vrijednost može biti jedna od sljedećih:

<Конец>

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

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

Ako je prvi unos izvan grupisanja, 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 za grupisanje. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od kraja grupisanja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, Last(3) - Dobiva treći zapis s kraja grupisanja.

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

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

Ako je prethodni zapis izvan grupisanja (na primjer, drugi zapis grupisanja zahtijeva prethodni(3), tada se dobiva prvi zapis grupisanja.

Prilikom dobijanja prethodnog zapisa za zbroj grupisanja, smatra se da je dobijen prvi zapis.

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

Ako sljedeći zapis ide dalje od grupisanja, smatra se da nema zapisa. Na primjer, ako postoje 3 zapisa, a treći zapis dobije Next(), onda se smatra da nema zapisa.

Kada se primi sljedeći zapis za ukupno grupisanje, smatra se da nema zapisa.

  • Current (Current). Morate dobiti trenutni unos.

Kada se dohvati za ukupno grupisanje, preuzima se prvi zapis.

  • BoundaryValue. Potreba da se dobije zapis po navedenoj vrijednosti. Nakon riječi RestrictingValue u zagradama potrebno je navesti izraz sa čijom vrijednošću želite započeti fragment, prvo polje za redoslijed.

Zapis će biti prvi zapis čija je vrijednost polja za redoslijed veća ili jednaka navedenoj vrijednosti. Na primjer, ako se polje Period koristi kao polje za naručivanje i ima vrijednosti 01/01/2010, 02/01/2010, 03/01/2010, a želite da dobijete LimitValue(DateTime(2010 , 1, 15)), tada će biti primljen zapisnik sa datumom 02/01. 2010.

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

Vrsta: String. Navedeni su izrazi razdvojeni zarezima koji opisuju pravila uređenja. Ako nije navedeno, tada se poredak izvodi na isti način kao i za grupisanje za koje se izraz procjenjuje. Nakon svakog izraza, možete odrediti ključne riječi Asc (za sortiranje u rastućem redoslijedu), Descending (za sortiranje u opadajućem redoslijedu) i AutoOrder (za sortiranje referenciranih polja prema poljima po kojima želite sortirati referencirani objekt). Riječ AutoOrder može se koristiti i sa uzlaznim i s silažnim riječima.

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

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

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

Vrsta: String. 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 niz uređenih zapisa koristi za određivanje prethodnog i sljedećeg zapisa. Zadana vrijednost.
  • Zajedno (Together) znači da se prethodni i sljedeći zapis određuju na osnovu vrijednosti izraza za narudžbu.

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

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

Ako je vrijednost parametra odvojeno, tada:

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

§ ako je fragment proračuna definisan kao Current, Current (respektivno, 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) biće jednako 20.

Ako je vrijednost parametra Zajedno, tada:

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

§ ako je fragment proračuna definisan kao Current, Current (respektivno, parametri Start i End), tada će se za zapis 2 ovaj fragment sastojati od zapisa 2 i 3. Izraz CalculateExpression(“Sum(Value)”, Current, Current) će biti jednako 50.

Kada specificirate vrijednost parametra jednaku Together, u parametrima Početak i Kraj, ne možete specificirati pomak za pozicije First, Last, Previous, Next.

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

Ako želite da dobijete vrednost grupisanja u prethodnom redu, možete koristiti sledeći izraz:

CalculateExpression("Kurs", "Prethodni")

Lista novo funkcije:

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

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

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

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

ValueFilled(<Выражение>) – Vraća True ako je vrijednost drugačija od zadane vrijednosti ovog tipa, 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 je postavljen u skladu sa nizom formata sistema 1C:Enterprise.

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

String Length(<Выражение>) – Funkcija je dizajnirana da odredi dužinu niza. Parametar - izraz tipa string

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

Jedan od najprikladnijih i jedinstvenih razvojnih alata u 1C je sistem za sastav podataka (SKD). U nekoliko informacionih sistema, programeri mogu kreirati izveštaje bez pisanja koda. Ovaj mehanizam je razvijen kako bi se pojednostavila i ubrzala izrada izvještajnih obrazaca i pružila više mogućnosti korisnicima u radu sa izlaznim podacima. Ovo posljednje visoko cijene napredni korisnici, koji zahvaljujući tome mogu samostalno prilagoditi izvještaj za svoje potrebe bez čekanja da programeri preduzmu akciju.

Kreiranje izvještaja u 1C kroz SKD

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

  1. Kreirajte zahtjev. Zahtjev možete napisati ručno ili bez programskog koda koristeći pogodan interfejs;
  2. Podešavanje izveštaja. Odabiru se polja, zbrojevi, grupisanja, parametri, dizajn izvještaja;
  3. Nakon toga, ostaje nam samo da na bilo koji način povežemo rezultirajući izvještaj sa konfiguracijom.

Uprkos mogućnosti korisnika da konfigurišu izveštaje na ACS-u, oni se moraju kreirati preko konfiguratora.

Razmotrimo primjer kreiranja vanjskog izvještaja o ACS-u:


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

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

SKD mogućnosti

Ima situacija kada smo napravili izvještaj, a onda dođe korisnik i zatraži malu reviziju. Na primjer, umjesto naziva nomenklature, prikažite članke. ACS omogućava korisnicima da sami naprave takva poboljšanja koristeći dugme "Više" - "Promeni opciju...".


Prozor koji se otvara je sličan prozoru postavki u izvještaju u konfiguratoru, a ima i slične funkcije. Da bi riješio zadatak, korisnik mora otići na karticu "Polja" i promijeniti polje "Nomenklatura". Ovo polje za uređivanje otvara se dvostrukim klikom i dugme "Odaberi..." postaje dostupno.


Prozor koji se otvori daje nam mogućnost da odaberemo bilo koju vrijednost koja će se pojaviti u polju "Nomenklatura". Neka polja imaju znak plus na lijevoj strani - programer je postavio veze u ova 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štaja sadrži mnoge korisne funkcije sistema za sastav podataka. Na primjer, korisnik može samostalno promijeniti redoslijed grupiranja, dodati odabir ili nametnuti uvjetni dizajn. Završavamo uređivanje i generiramo izvještaj - kao što vidite, cijeli asortiman se sada prikazuje kao članci.


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

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


Broj mogućnosti koje programeri uključuju u ACS mehanizam je velik, ali mnoge od njih se koriste izuzetno rijetko. Čak i iskusni 1C programeri možda neće koristiti neke funkcije tokom godina. Za uspješan rad u ACS-u dovoljno je poznavati osnovne koncepte i često korištena podešavanja. 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 programeru:

  1. ukupan broj u grupi;
  2. tekući ukupni iznos u unakrsnoj tabeli;
  3. dobijanje prethodne vrednosti;
  4. PM izlaz u jednom redu.

1. Dobivanje indikatora na kumulativnom ukupnom iznosu

Dobijte ukupnu količinu robe na nivou grupisanja. 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", "Trenutni")
koji će sabrati broj proizvoda od prvog zapisa do trenutnog (vidi sliku 2).

Ako želite da dobijete količinu robe na obračunskoj osnovi na nivou detaljne evidencije, tada se za obračunsko polje postavlja funkcija Izračunaj izraz na kartici „Izračunata polja“ (vidi sliku 3).
U zavisnosti od nivoa prijema tekućeg zbroja, kreiramo grupisanje (vidi sliku 4): na nivou resursa - grupisanje po robi, na nivou DZ - grupisanje detaljnih zapisa.
Slika 4. Grupacije izvještaja sa kumulativnim ukupnim iznosom

2. Dobivanje vrijednosti indikatora iz prethodnog reda

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 (pogledajte sliku 5):
EvaluateExpression("Kurs", "Prethodni", "Prethodni")
koji će uzeti prethodnu vrijednost kursa za trenutnu liniju, posljednji parametar funkcije ograničava prijem podataka.
Pošto radimo na nivou detaljnih zapisa, odmah idemo na karticu "Postavke" i kreiramo grupisanje - detaljni zapisi.

3. Dobivanje indikatora sa kumulativnim ukupnim iznosom u unakrsnoj tabeli

Količinu robe ćemo dobiti na obračunskoj osnovi u kontekstu perioda. Da bismo to učinili, kreiramo izračunato polje (vidi sliku 1). Na kartici "Resursi" za izračunato polje navedite sljedeći izraz (pogledajte sliku 6):
CalculateExpression("Iznos(Broj obrta)", "Period", "Prvi", "Trenutni")
koji će na nivou grupisanja izračunati količinu robe u rasponu od prvog reda do tekućeg u kontekstu perioda za svaku stavku.
Na kartici „Postavke“ kreiramo tabelu sa grupisanjem po stavci u redu i grupisanjem po periodu u koloni (vidi sliku 7).

4. Izlaz podataka tabelarnog dijela u jednom redu

Metode za izlaz tabelarnih podataka u jednom redu, uključujući metodu pomoću funkcije Izračunaj izraz, obrađene su u članku

Top Related Articles