Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Vlerësime
  • Fushat e llogaritura në funksionet skd 1s 8.3. Funksionet e gjuhës së shprehjes së sistemit të përbërjes së të dhënave

Fushat e llogaritura në funksionet skd 1s 8.3. Funksionet e gjuhës së shprehjes së sistemit të përbërjes së të dhënave

Në këtë shënim të shkurtër, unë dua të tregoj se si mund të përmbledhni vlerat në nivele të ndryshme grupimi në një raport duke përdorur një sistem të përbërjes së të dhënave.
Siç tregohet në imazh, vetëm në nivelin e grupimit "Grupet e artikujve", burimi "Porosi" llogaritet, ai tregon se sa duhet porositur për grupin aktual të artikujve bazuar në kushte të caktuara:


Kjo vlerë mund të llogaritet vetëm në këtë nivel grupimi, sepse, sipër ose poshtë, nuk ka vlera për t'u llogaritur. Për shembull, në nivelin e regjistrimeve të detajuara, nuk ka të dhëna për numrin maksimal në një grup, sepse këto të dhëna janë të vërteta vetëm për grupin në tërësi, dhe jo për përbërësit e tij individualë.

Prandaj, tani është e nevojshme të llogariten totalet për grupimet më të larta ("Depot", "Llojet e magazinës") dhe totali.
Për këtë përdoret funksioni Llogaritni shprehjen me grup të grupuar:
VLERËSOJE SHPREHJEN E GRUPIMIT TË ARRAIT (EVALEXPRESIONWITHGROUPARRAY)
Sintaksë:
ComputeExpressionGroupedArray(,)
Përshkrim:
Funksioni kthen një grup, secili element i të cilit përmban rezultatin e vlerësimit të shprehjes për grupim sipas fushës së specifikuar.
Ndërtuesi i paraqitjes, kur gjeneron një paraqitje, i konverton parametrat e funksionit në termat e fushave të paraqitjes së të dhënave. Për shembull, fusha Llogaria do të konvertohet në grup të dhënash.
Ndërtuesi i layout, kur gjeneron shprehje për shfaqjen e një fushe të personalizuar, shprehja e së cilës përmban vetëm funksionin CalculateArrayWithGroupArray(), gjeneron shprehjen dalëse në atë mënyrë që informacioni dalës të renditet. Për shembull, për një fushë të personalizuar me një shprehje:

Llogaritni ExpressionWith GroupingArray ("Shuma (Shuma e qarkullimit)", "Kontraparta")
Ndërtuesi i paraqitjes do të gjenerojë shprehjen e mëposhtme për dalje:

ConcatenateStrings(Array(Order(CalculateExpressionWithGroupingValueTable("Shiko(Shuma(DataSet.AmountTurnover)),Shuma(DataSet.AmountTurnover)","DataSet.Counterparty"),"2"))

Opsione:

Lloji: String. Shprehja që do të vlerësohet. Një varg, për shembull, Amount(AmountTurnover).

Lloji: String. Grupimi i shprehjeve të fushës – grupimi i shprehjeve të fushës të ndara me presje. Për shembull, Kontraktori, Pala.

Lloji: String. Një shprehje që përshkruan filtrin e aplikuar në të dhënat e detajuara. Funksionet e përgjithshme nuk mbështeten në një shprehje. Për shembull, DeletionMark = False.

Lloji: String. Një shprehje që përshkruan filtrin e aplikuar në regjistrimet e grupit. Për shembull, Shuma (Shuma e qarkullimit) > &Parametri1.
Shembull:

Maksimumi (Llogaritni shprehjen me GroupingArray ("Shuma(ShumaTurnover)", "Kontraparta"));

Një përshkrim i detajuar i sintaksës së funksionit mund të gjendet në http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Tani për llogaritjen, do të dublikojmë fushën "Order", me vlera të ndryshme të "Llogarit me ...", duke përdorur shprehjet e mëposhtme, vini re se në çdo nivel më të lartë, vlerat e niveleve nën pozitën përdoren grupime.

Si rezultat, marrim ndërtimin e mëposhtëm:

Gjuha e shprehjes së sistemit të përbërjes së të dhënave

Gjuha e shprehjes së sistemit të përbërjes së të dhënave është krijuar për të regjistruar shprehjet e përdorura në pjesë të ndryshme të sistemit.

Shprehjet përdoren në nënsistemet e mëposhtme:

  • skema e përbërjes së të dhënave - për përshkrimin e fushave të llogaritura, fushave totale, shprehjeve të lidhjeve, etj.;
  • cilësimet e përbërjes së të dhënave - për të përshkruar shprehjet e personalizuara të fushës;
  • faqosja e përbërjes së të dhënave - për përshkrimin e shprehjeve të lidhjes së të dhënave, përshkrimin e parametrave të paraqitjes, etj.

Literale

Shprehja mund të përmbajë fjalë për fjalë. Literale të mundshme të llojeve të mëposhtme:

  • Linjë;
  • Numri;
  • Data;
  • Boolean.

Linjë

Një varg literal shkruhet me karakteret """, për shembull:

"String fjalë për fjalë"

Nëse duhet të përdorni karakterin """ brenda vargut literal, duhet të përdorni dy karaktere të tilla.

Për shembull:

"fjalë për fjalë ""në thonjëza""

Numri

Numri shkruhet pa hapësira, në format dhjetor. Pjesa e pjesshme ndahet me karakterin ".". Për shembull:

10.5 200

Data

Një literal i llojit të datës shkruhet duke përdorur tastin DATETIME. Pas kësaj fjale kyçe, në kllapa, të ndara me presje, renditen viti, muaji, dita, orët, minutat, sekondat. Tregimi i kohës nuk kërkohet.

Për shembull:

DATETIME(1975, 1, 06) - 6 janar 1975 DATETIME(2006, 12, 2, 23, 56, 57) - 2 dhjetor 2006, 23:56:57 sekonda, 23:56:57 sekonda

logjike

Vlerat Boolean mund të shkruhen duke përdorur fjalë për fjalë True (True), False (False).

Kuptimi

Për të specifikuar literale të llojeve të tjera (numërime të sistemit, të dhëna të paracaktuara), përdoret fjala kyçe Vlera, e ndjekur nga emri i fjalëpërfjalshëm në kllapa.

Vlera (Lloji i llogarisë. Aktive)

Veprimet në numra

Unar -

Ky operacion është krijuar për të kthyer shenjën e një numri. Për shembull:

Shitjet.Sasia

Unary +

Ky operacion nuk kryen asnjë operacion në numër. Për shembull:

Shitjet.Sasia

Binar -

Ky operacion është krijuar për të llogaritur diferencën e dy numrave. Për shembull:

BalancesAndTurnovers.InitialBalance - BalancesAndTurnovers.EndBalance BalancesAndTurnovers.InitialBalance - 100 400 - 357

Binar +

Ky operacion është krijuar për të llogaritur shumën e dy numrave. Për shembull:

BilancetDheTurnovers.InitialBalance + BalancesAndTurnovers.Turnover BalancesAndTurnovers.InitialBalance + 100 400 + 357

Puna

Ky operacion është krijuar për të llogaritur prodhimin e dy numrave. Për shembull:

Nomenklatura.Çmimi * 1.2 2 * 3.14

Divizioni

Ky operacion është krijuar për të marrë rezultatin e pjesëtimit të një operand me një tjetër. Për shembull:

Nomenklatura.Çmimi / 1.2 2 / 3.14

Pjesa e mbetur e ndarjes

Ky operacion është krijuar për të marrë pjesën e mbetur të ndarjes së një operandi me një tjetër. Për shembull:

Nomenklatura.Çmimi % 1.2 2 % 3.14

Operacionet në vargje

Lidhja (Binar +)

Ky operacion është krijuar për të lidhur dy vargje. Për shembull:

Nomenklatura.Neni + “: ”+ Nomenklatura.Emri

si

Ky operacion kontrollon nëse një varg përputhet me modelin e dhënë.

Vlera e operatorit LIKE është TRUE nëse vlera<Выражения>përputhet me modelin, dhe FALSE ndryshe.

Personazhet e mëposhtëm në<Строке_шаблона>kanë një kuptim të ndryshëm nga një karakter tjetër në varg:

  • % - përqindje: një sekuencë që përmban zero ose më shumë karaktere arbitrare;
  • _ - nënvizon: një karakter arbitrar;
  • […] - një ose më shumë karaktere në kllapa katrore: një karakter, cilido nga ato të listuara brenda kllapave katrore. Një numërim mund të përmbajë vargje, të tilla si a-z, që do të thotë çdo karakter brenda intervalit, duke përfshirë skajet e diapazonit;
  • [^…] - në kllapa katrore një ikonë mohimi e ndjekur nga një ose më shumë karaktere: çdo karakter përveç atyre të listuara pas ikonës së mohimit;

Çdo simbol tjetër nënkupton vetveten dhe nuk mbart ndonjë ngarkesë shtesë. Nëse është e nevojshme të shkruhet një nga personazhet e listuar si vetë, atëherë duhet të paraprihet<Спецсимвол>E specifikuar pas fjalës kyçe ESCAPE.

Për shembull, shabllon

“%ABC[abc]\_abc%” KARAKTER I VEÇANTË “\”

nënkupton një nënvarg që përbëhet nga një sekuencë karakteresh: shkronjat A; shkronjat B; shkronjat B; një shifër; një nga shkronjat a, b, c ose d; karakter nënvizues; shkronjat a; shkronjat b; letra në. Për më tepër, kjo sekuencë mund të vendoset duke filluar nga një pozicion arbitrar në varg.

Operacionet e krahasimit

Të barabartë

Ky operacion është krijuar për të krahasuar dy operandë për barazi. Për shembull:

Sales.Counterparty = Sales.NomenclatureFurnizuesi Kryesor

Jo të barabartë

Ky operacion është krijuar për të krahasuar dy operandë për pabarazi. Për shembull:

Shitjet.Kontraktori<>Shitjet.Nomenklatura Furnizuesi Kryesor

Më të vogla

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i vogël se i dyti. Për shembull:

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

Më shumë

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i madh se i dyti. Për shembull:

SalesCurrent.Amount > SalesPast.Amount

Më pak ose e barabartë

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i vogël ose i barabartë me i dyti. Për shembull:

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

Më shumë ose e barabartë

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i madh ose i barabartë me i dyti. Për shembull:

SalesCurrent.Sasia >= SalesPast.Shuma

Operacioni B

Ky operacion kontrollon praninë e një vlere në listën e kaluar të vlerave. Rezultati i operacionit është True nëse gjendet vlera, ose False ndryshe. Për shembull:

Artikulli B (&Artikulli 1, &Artikulli 2)

Operacioni për të kontrolluar nëse një vlerë ekziston në një grup të dhënash

Operacioni kontrollon praninë e një vlere në grupin e specifikuar të të dhënave. Të dhënat e vërtetimit duhet të përmbajë një fushë. Për shembull:

Shitjet Kontraktori Tek Kontraktorët

Operacioni i kontrollit NULL

Ky operacion kthen True nëse vlera është NULL. Për shembull:

Shitjet.Kontraktori ËSHTË NULL

Operacioni i kontrollit të një vlere për jo-NULL

Ky operacion kthen True nëse vlera nuk është NULL. Për shembull:

Shitjet.Kontraktori NUK ËSHTË NULL

Operacionet Boolean

Operacionet logjike pranojnë si operand shprehje të tipit Boolean.

Operacioni JO

Operatori NOT kthen True nëse operandi i tij është False dhe kthen False nëse operandi i tij është True. Për shembull:

NOT Document.Marrës = Dokument.Dërguesi

Operacioni DHE

Operacioni AND kthen True nëse të dy operandët janë True, dhe kthen False nëse njëri prej operandëve është False. Për shembull:

Dokumenti. Marrësi = Dokumenti. Dërguesi DHE Dokumenti. Marrësi = & Kontraktori

OSE operacion

Operacioni OR kthen True nëse njëri prej operandëve është True, dhe False nëse të dy operandët janë False. Për shembull:

Document.Marrës = Document.Dërguesi OSE Document.Marrësi = &Kontraktori

Funksionet agregate

Funksionet agregate kryejnë disa veprime në një grup të dhënash.

Shuma

Funksioni Sum aggregate llogarit shumën e vlerave të shprehjeve që i janë dhënë si një argument për të gjitha regjistrimet e detajeve. Për shembull:

Shuma (Shitjet. Shuma e qarkullimit)

sasi

Funksioni Count numëron numrin e vlerave jo-nul. Për shembull:

Sasia (Shitjet. Kontraktori)

Numri i të ndryshmeve

Ky funksion numëron numrin e vlerave të dallueshme. Për shembull:

Sasia (Shitje të ndryshme. Kontraktor)

Maksimumi

Funksioni merr vlerën maksimale. Për shembull:

Maksimumi (Të mbeturat. Sasia)

Minimumi

Funksioni merr vlerën minimale. Për shembull:

Minimumi (Bilanci. Sasia)

Mesatar

Funksioni merr mesataren për vlerat jo-nul. Për shembull:

Mesatare (të mbetura. Sasia)

Operacione të tjera

Operacioni SELECT

Operacioni Select është krijuar për të zgjedhur një nga disa vlera në kushte të caktuara. Për shembull:

Zgjidhni Kur shuma > 1000 Pastaj Shuma tjetër 0 Fund

Rregullat për krahasimin e dy vlerave

Nëse llojet e vlerave të krahasuara ndryshojnë nga njëri-tjetri, atëherë marrëdhënia midis vlerave përcaktohet në bazë të përparësisë së llojeve:

  • NULL (më e ulëta);
  • boolean;
  • Numri;
  • Data;
  • Linjë;
  • Llojet e referencës

Marrëdhëniet midis llojeve të ndryshme të referencës përcaktohen bazuar në numrat e referencës së tabelave që korrespondojnë me një lloj të caktuar.

Nëse llojet e të dhënave përputhen, atëherë vlerat krahasohen sipas rregullave të mëposhtme:

  • tipi Boolean TRUE është më i madh se FALSE;
  • lloji Number ka rregullat e zakonshme të krahasimit për numrat;
  • për llojin Date, datat e mëparshme janë më të vogla se ato të mëvonshme;
  • për llojin String - krahasimet e vargjeve në përputhje me veçoritë kombëtare të përcaktuara të bazës së të dhënave;
  • Llojet e referencës krahasohen në bazë të vlerave të tyre (numri i rekordit, etj.).

Duke punuar me NULL

Çdo operacion në të cilin vlera e njërit prej operandëve është NULL do të prodhojë një rezultat NULL.

Ka përjashtime:

  • operacioni AND do të kthejë NULL vetëm nëse asnjë nga operandët nuk është False;
  • operacioni OR do të kthejë NULL vetëm nëse asnjë nga operandët nuk është True.

Prioritetet e Operacionit

Operacionet kanë prioritetet e mëposhtme (rreshti i parë ka prioritetin më të ulët):

  • B, ËSHTË NULL, NUK ËSHTË NULL;
  • =, <>, <=, <, >=, >;
  • Binare +, Binare – ;
  • *, /, %;
  • Unary +, Unary -.

Funksionet e gjuhës së shprehjes së sistemit të përbërjes së të dhënave

Llogaritni

Funksioni Calculate është krijuar për të llogaritur një shprehje në kontekstin e disa grupimeve. Funksioni ka parametrat e mëposhtëm:

  • Shprehje. Lloji String. Përmban një shprehje të llogaritur;
  • Grupimi. Lloji String. Përmban emrin e grupimit në kontekstin e të cilit duhet të vlerësohet shprehja. Nëse një varg bosh përdoret si emër grupimi, llogaritja do të kryhet në kontekstin e grupimit aktual. Nëse vargu GrandTotal përdoret si emër i grupimit, llogaritja do të kryhet në kontekstin e totalit të përgjithshëm. Përndryshe, llogaritja do të kryhet në kontekstin e grupimit mëmë me atë emër. Për shembull:
Shuma(Shitjet.ShumaTurnover) / Llogaritni("Shuma(Shitjet.ShumaTurnover)", "TotalTotal")

Në këtë shembull, rezultati do të jetë raporti i shumës në fushën "Sales.AmountTurnover" të rekordit të grupimit me shumën e së njëjtës fushë në të gjithë paraqitjen.

Niveli

Funksioni është krijuar për të marrë nivelin aktual të regjistrimit.

Niveli ()

NumberInOrder

Merrni numrin vijues të radhës.

Numri i porosisë ()

NumberIn OrderInGrouping

Rikthen numrin vijues të radhës në grupimin aktual.

NumberInOrderInGroup()

Formati

Merrni vargun e formatuar të vlerës së kaluar.

Vargu i formatit është vendosur në përputhje me vargun e formatit 1C:Enterprise.

Opsione:

  • Kuptimi;
  • Formatoni vargun.

Formati (Faturat e shpenzimeve. AmountDoc, "NPV=2")

Fillimi i periudhës

Opsione:

    • Minuta;
    • Dita;
    • Nje jave;
    • Muaj;
    • tremujori;
    • Dekada;
    • Gjysem viti.

Fillimi i periudhës (DataKoha (2002, 10, 12, 10, 15, 34), "Muaji")

Rezultati:

01.10.2002 0:00:00

Periudha e Fundit

Funksioni është krijuar për të nxjerrë një datë specifike nga një datë e caktuar.

Opsione:

  • Data. Lloji Data. Data e dhënë;
  • Lloji i periudhës. Lloji String. Përmban një nga vlerat e mëposhtme:
    • Minuta;
    • Dita;
    • Nje jave;
    • Muaj;
    • tremujori;
    • Dekada;
    • Gjysem viti.

Periudha e Fundit (DataKoha (2002, 10, 12, 10, 15, 34), "Java")

Rezultati:

13.10.2002 23:59:59

AddDate

Funksioni është krijuar për t'i shtuar një vlerë datës.

Opsione:

  • Lloji i zmadhimit. Lloji String. Përmban një nga vlerat e mëposhtme:
    • Minuta;
    • Dita;
    • Nje jave;
    • Muaj;
    • tremujori;
    • Dekada;
    • Gjysem viti.
  • Vlera - me sa dëshironi të rrisni datën. Lloji Numri. Pjesa thyesore shpërfillet.

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

Rezultati:

12.11.2002 10:15:34

DifferenceDate

Funksioni është krijuar për të marrë diferencën midis dy datave.

Opsione:

  • Shprehje. Lloji Data. data origjinale;
  • Shprehje. Lloji Data. Data e zbritur;
  • Lloji i ndryshimit. Lloji String. Përmban një nga vlerat e mëposhtme:
    • E dyta;
    • Minuta;
    • Dita;
    • Muaj;
    • tremujori;

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

Rezultati:

Nënstring

Ky funksion është krijuar për të zgjedhur një nënvarg nga një varg.

Opsione:

  • Linjë. Lloji String. Vargu nga i cili nxirret nënvargu;
  • Pozicioni. Lloji Numri. Pozicioni i karakterit nga i cili fillon nënvargu që do të nxirret nga vargu;
  • Gjatësia. Lloji Numri. Gjatësia e nënvargut të zgjedhur.

SUBSTRING (Llogaritë. Adresa, 1, 4)

Gjatësia e vargut

Funksioni është krijuar për të përcaktuar gjatësinë e një vargu.

Parametri:

  • Linjë. Lloji String. Vargu gjatësia e të cilit është duke u përcaktuar.

String (Llogaritë. Adresa)

viti

Ky funksion është krijuar për të nxjerrë vitin nga një vlerë e tipit Date.

Parametri:

  • Data. Lloji Data. Data me të cilën përcaktohet viti.

YEAR (përfshirë datën)

lagje

Ky funksion është krijuar për të nxjerrë numrin e tremujorit nga vlera e tipit Date. Numri i bllokut normalisht varion nga 1 në 4.

Parametri

  • Data. Lloji Data. Data në të cilën përcaktohet tremujori
QARTER (Faturë.Data)

Muaj

Ky funksion është krijuar për të nxjerrë numrin e muajit nga një vlerë e tipit Date. Numri i muajit normalisht është në rangun nga 1 në 12.

  • Data. Lloji Data. Data në të cilën përcaktohet muaji.
MUAJ (Faturë.Data)

Dita e Vitit

Ky funksion është krijuar për të marrë ditën e vitit nga një vlerë e tipit Date. Dita e vitit normalisht varion nga 1 në 365 (366).

  • Data. Lloji Data. Data me të cilën përcaktohet dita e vitit.
DITA E VITIT (Data e skadimit)

ditë

Ky funksion është krijuar për të marrë ditën e muajit nga një vlerë e tipit Date. Dita e muajit normalisht varion nga 1 deri në 31.

  • Data. Lloji Data. Data me të cilën përcaktohen ditët e muajit.
DITA (Data e skadimit)

Nje jave

Ky funksion është krijuar për të marrë numrin e javës së vitit nga një vlerë e llojit Date. Javët e vitit numërohen duke filluar nga 1.

  • Data. Lloji Data. Data në të cilën përcaktohen numrat e javës.
JAVA (Data e skadimit)

Ditë të javës

Ky funksion është krijuar për të marrë ditën e javës nga një vlerë e tipit Date. Dita e javës zakonisht varion nga 1 (e hënë) deri në 7 (e diel).

  • Data. Lloji Data. Data me të cilën përcaktohet dita e javës.
DITA E JAVËS (Data e skadimit)

Ora

Ky funksion është krijuar për të marrë orën e ditës nga një vlerë e tipit Data. Ora e ditës varion nga 0 në 23.

  • Data. Lloji Data. Data me të cilën përcaktohet ora e ditës.
HOUR (Data e skadimit)

Minuta

Ky funksion është krijuar për të marrë minutën e orës nga një vlerë e tipit Data. Minuta e orës varion nga 0 në 59.

  • Data. Lloji Data. Data me të cilën përcaktohet minuta e orës.
MINUTE (Data e skadimit)

Së dyti

Ky funksion është krijuar për të marrë sekondën e një minutë nga një vlerë e tipit Data. Sekonda e një minutë varion nga 0 në 59.

  • Data. Lloji Data. Data në të cilën përcaktohen sekondat e minutës.
SEC (Data e skadimit)

shprehin

Ky funksion është krijuar për të nxjerrë një lloj nga një shprehje që mund të përmbajë një tip të përbërë. Nëse shprehja përmban një lloj të ndryshëm nga lloji i kërkuar, NULL do të kthehet.

Opsione:

  • Shprehja që do të konvertohet;
  • Treguesi i llojit. Lloji String. Përmban një varg tipi. Për shembull, "Numri", "String", etj. Përveç llojeve primitive, ky varg mund të përmbajë emrin e një tabele. Në këtë rast, do të bëhet një përpjekje për t'u shprehur në një referencë në tabelën e specifikuar.

Express(Të dhënat.Atributi1, "Numri(10,3)")

I pavlefshëm

Ky funksion kthen vlerën e parametrit të dytë nëse vlera e parametrit të parë është NULL.

Përndryshe, vlera e parametrit të parë do të kthehet.

IsNULL (Shuma (Shitjet. Shuma e qarkullimit), 0)

Funksionet e zakonshme të modulit

Shprehja e motorit të përbërjes së të dhënave mund të përmbajë thirrje funksionesh në modulet e konfigurimit të përbashkët global. Asnjë sintaksë shtesë nuk kërkohet për të thirrur funksione të tilla.

Në këtë shembull, funksioni "ShortName" do të thirret nga moduli i konfigurimit të përgjithshëm.

Vini re se përdorimi i funksioneve të modulit të përbashkët lejohet vetëm kur specifikohet opsioni përkatës i procesorit të përbërjes së të dhënave.

Gjithashtu, funksionet e zakonshme të modulit nuk mund të përdoren në shprehjet e fushës me porosi.

Në dritën e publikimit të ardhshëm të 8.2.14, do të përpiqem të përshkruaj disa nga veçoritë e reja të sistemit të përbërjes së të dhënave.

Hapni skemën e përbërjes së të dhënave, mundësisht në një raport të jashtëm, për ta bërë më të lehtë modifikimin.

Ne shtojmë një grup të dhënash të pyetjeve dhe shkruajmë, me dorë ose duke përdorur ndërtuesin e pyetjeve, pyetjen më të thjeshtë:

1. Vendosni një kërkesë në ACS.

2. Vendosni fushat e llogaritura në ACS

3. Ne konfigurojmë paraqitjen e të dhënave në skedën e cilësimeve

4. Ne lançojmë 1C Enterprise 8.2.14. Ne hapim raportin. Ne formojmë, marrim.

Përshkrimi i vetë veçorive të reja:

1. Data aktuale ()

Kthen datën e sistemit. Gjatë paraqitjes së paraqitjes së paraqitjes, në të gjitha shprehjet që janë të pranishme në paraqitje, funksioni CurrentDate() zëvendësohet me vlerën e datës aktuale.

2. SHPREHJA LLOGARIZUESE ()

Sintaksë:

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

Përshkrim:

Funksioni është krijuar për të vlerësuar një shprehje në kontekstin e disa grupimeve.

Funksioni merr parasysh përzgjedhjen e grupimeve, por nuk merr parasysh zgjedhjet hierarkike.

Funksioni nuk mund të zbatohet për një grupim në përzgjedhjen e grupit të atij grupimi. Për shembull, në përzgjedhjen e grupimit të Nomenklaturës, nuk mund të përdorni shprehjen Calculate Expression ("Sum(SumTurnover)", "TotalTotal") > 1000. Por një shprehje e tillë mund të përdoret në përzgjedhjen hierarkike.

Nëse regjistrimi i fundit i paraprin regjistrimit të fillimit, atëherë konsiderohet se nuk ka regjistrime për llogaritjen e të dhënave të detajuara dhe llogaritjen e funksioneve agregate.

Gjatë llogaritjes së shprehjeve të intervalit për një total total (parametri i grupimit vendoset në GrandTotal), konsiderohet se nuk ka të dhëna për llogaritjen e të dhënave të detajuara dhe llogaritjen e funksioneve agregate.

Ndërtuesi i faqosjes, kur gjeneron shprehjen e funksionit Calculate Expression, nëse shprehja e renditjes përmban fusha që nuk mund të përdoren në grupim, zëvendëson funksionin Calculate Expression me NULL.

Opsione

<Выражение>

Lloji: String. Shprehja që do të vlerësohet.

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

Lloji: String. Përmban emrin e grupimit në kontekstin e të cilit duhet të vlerësohet shprehja. Nëse një varg bosh përdoret si emër grupimi, llogaritja do të kryhet në kontekstin e grupimit aktual. Nëse vargu GrandTotal përdoret si emër i grupimit, llogaritja do të kryhet në kontekstin e totalit të përgjithshëm. Përndryshe, llogaritja do të kryhet në kontekstin e grupimit mëmë me atë emër.

Për shembull:

Shuma (Shitjet. Shuma e qarkullimit)/Llogarit ("Suma(Shitjet.Shuma e qarkullimit)", "Totali Total")

Në këtë shembull, rezultati do të jetë raporti i shumës për fushën Sales.AmountVolume i rekordit të grupimit me shumën e së njëjtës fushë në të gjithë paraqitjen;

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

Lloji: String. Parametri mund të marrë vlerat e mëposhtme:

  • GeneralTotal - shprehja do të llogaritet për të gjitha regjistrimet e grupimit.
  • Hierarkia - shprehja do të vlerësohet për hyrjen hierarkike mëmë, nëse ka një të tillë, dhe për të gjithë grupimin, nëse nuk ka hyrje hierarkike mëmë.
  • Grupimi - shprehja do të vlerësohet për regjistrimin aktual të grupimit.
  • GroupingNotResource - kur llogaritet një funksion për një rekord grup sipas burimeve, shprehja do të llogaritet për regjistrimin e grupit të parë të grupimit origjinal.

Gjatë llogaritjes së funksionit Llogaritni shprehjen () me vlerën GroupingNotResource për regjistrimet e grupit që nuk janë grupime sipas burimeve, funksioni vlerësohet në të njëjtën mënyrë siç do të llogaritej nëse vlera e parametrit do të ishte e barabartë me vlerën e grupimit.

Ndërtuesi i paraqitjes së përbërjes së të dhënave, kur gjeneron paraqitjen e përbërjes së të dhënave, kur shfaq fushën e burimit në të cilën kryhet grupimi, vendos një shprehje në paraqitjen që llogaritet duke përdorur funksionin Llogaritni shprehjen (), duke specifikuar parametrin GroupingNotResource. Për burimet e tjera të grupuara sipas burimeve, vendosen shprehje të rregullta të burimeve.

<Начало>

Lloji: String. Përcakton se cili rekord do të fillojë fragmentin në të cilin do të llogariten funksionet agregate të shprehjes dhe nga cili rekord të merren vlerat e fushave jashtë funksioneve të grumbulluara. Vlera mund të jetë një nga sa vijon:

<Конец>

Lloji: String. Tregon se në cilin rekord të vazhdojë fragmenti në të cilin llogariten funksionet agreguese të shprehjes. Vlera mund të jetë një nga sa vijon:

  • E para (e para). Ju duhet të merrni rekordin e parë të grupimit. Pas fjalës në kllapa, mund të specifikoni një shprehje, rezultati i së cilës do të përdoret si kompensim që nga fillimi i grupimit. Vlera që rezulton duhet të jetë një numër i plotë më i madh se zero. Për shembull, First(3) - marrja e rekordit të tretë nga fillimi i grupimit.

Nëse hyrja e parë është jashtë grupimit, atëherë konsiderohet se nuk ka hyrje. Për shembull, nëse ka 3 regjistrime, dhe ju dëshironi të merrniFirst(4), atëherë konsiderohet se nuk ka të dhëna.

  • E fundit (E fundit). Ju duhet të merrni hyrjen më të fundit të grupimit. Pas fjalës në kllapa, mund të specifikoni një shprehje, rezultati i së cilës do të përdoret si një kompensim nga fundi i grupimit. Vlera që rezulton duhet të jetë një numër i plotë më i madh se zero. Për shembull, Last(3) - Merr rekordin e tretë nga fundi i grupimit.

Nëse hyrja e fundit është jashtë grupimit, atëherë konsiderohet se nuk ka hyrje. Për shembull, nëse ka 3 regjistrime, dhe ju dëshironi të merrniLast(4), atëherë konsiderohet se nuk ka të dhëna.

  • E mëparshme. Ju duhet të merrni hyrjen e mëparshme të grupimit. Pas fjalës në kllapa, mund të specifikoni një shprehje, rezultati i së cilës do të përdoret si një zhvendosje prapa nga rekordi aktual i grupimit. Për shembull, Previous(2) - merrni të mëparshmen nga rekordi i mëparshëm.

Nëse rekordi i mëparshëm është jashtë grupimit (për shembull, rekordi i dytë i grupimit kërkon Previous(3), atëherë merret rekordi i parë i grupimit.

Me rastin e marrjes së rekordit të mëparshëm për totalin e grupimit, konsiderohet se është marrë rekordi i parë.

  • Tjetra (Tjetër). Ju duhet të merrni hyrjen tjetër të grupimit. Pas fjalës në kllapa, mund të specifikoni një shprehje, rezultati i së cilës do të përdoret si një zhvendosje përpara nga rekordi aktual i grupimit. Për shembull, Next(2) - merrni tjetrin nga rekordi tjetër.

Nëse rekordi i radhës shkon përtej grupimit, atëherë konsiderohet se nuk ka regjistrime. Për shembull, nëse ka 3 regjistrime dhe rekordi i tretë merr Next(), atëherë konsiderohet se nuk ka regjistrime.

Kur merret rekordi i radhës për totalin e grupimit, konsiderohet se nuk ka regjistrim.

  • Rryma (Aktuale). Ju duhet të merrni hyrjen aktuale.

Kur merret për një total grupimi, merret rekordi i parë.

  • Vlera kufitare. Nevoja për të marrë rekordin sipas vlerës së specifikuar. Pas fjalës RestrictingValue në kllapa, duhet të specifikoni shprehjen me vlerën e së cilës dëshironi të filloni fragmentin, fushën e parë të renditjes.

Rekordi do të jetë rekordi i parë, vlera e fushës së renditjes së të cilit është më e madhe ose e barabartë me vlerën e specifikuar. Për shembull, nëse fusha Periudha përdoret si fushë e renditjes dhe ka vlerat 01/01/2010, 02/01/2010, 03/01/2010 dhe dëshironi të merrni LimitValue(DateTime(2010 , 1, 15)), më pas do të merret një procesverbal me datën 02/01. 2010.

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

Lloji: String. Janë renditur shprehjet e ndara me presje që përshkruajnë rregullat e renditjes. Nëse nuk specifikohet, atëherë renditja kryhet në të njëjtën mënyrë si për grupimin për të cilin vlerësohet shprehja. Pas çdo shprehjeje, mund të specifikoni fjalët kyçe Asc (për të renditur në rend rritës), Descending (për të renditur në rend zbritës) dhe AutoOrder (për të renditur fushat e referuara sipas fushave sipas të cilave dëshironi të renditni objektin e referuar). Fjala Autoorder mund të përdoret si me fjalët në ngjitje ashtu edhe me ato zbritëse.

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

Lloji: String. Ngjashëm me opsionin Sort. Përdoret për të rregulluar të dhënat hierarkike. Nëse nuk specifikohet, ndërtuesi i paraqitjes gjeneron një renditje sipas renditjes së specifikuar në parametrin Sort.

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

Lloji: String. Përcakton një rregull për të përcaktuar rekordin e mëparshëm ose të ardhshëm nëse ka shumë rekorde me të njëjtën vlerë renditjeje:

  • Veçmas do të thotë që një sekuencë regjistrimesh të renditura përdoret për të përcaktuar regjistrimet e mëparshme dhe të ardhshme. Vlera e paracaktuar.
  • Së bashku (Together) do të thotë që të dhënat e mëparshme dhe të ardhshme përcaktohen në bazë të vlerave të shprehjeve të renditjes.

Për shembull, nëse sekuenca që rezulton renditet sipas datës:

Data Emri i plotë Kuptimi
1 01 janar 2001 Ivanov M. 10
2 02 janar 2001 Petrov S. 20
3 03 janar 2001 Sidorov R. 30
4 04 janar 2001 Petrov S. 40

Nëse vlera e parametrit është e ndarë, atëherë:

§ hyrja e mëparshme në hyrjen 3 do të jetë hyrja 2.

§ nëse fragmenti i llogaritjes përcaktohet si Aktual, Aktual (përkatësisht parametrat Fillimi dhe Fundi), atëherë për rekordin 2 ky fragment do të përbëhet nga një rekord 2. Shprehja Llogarit Shprehjen ("Shuma (Vlera)", Aktual, Aktual) do të jetë e barabartë me 20.

Nëse vlera e parametrit është Together, atëherë:

§ hyrja e mëparshme në hyrjen 3 do të jetë hyrja 1.

§ nëse fragmenti i llogaritjes përcaktohet si Aktual, Aktual (përkatësisht, parametrat Fillimi dhe Fundi), atëherë për regjistrimin 2 ky fragment do të përbëhet nga regjistrimet 2 dhe 3. Shprehja CalculateExpression(“Sum(Value)”, Current, Current) do të të jetë e barabartë me 50.

Kur specifikoni vlerën e parametrit të barabartë me Together, në parametrat Fillimi dhe Fundi, nuk mund të specifikoni një zhvendosje për pozicionet First, Last, Previous, Next.

CalculateExpression("Shuma(ShumaTurnover)", "First", "Current")

Nëse dëshironi të merrni vlerën e grupimit në rreshtin e mëparshëm, mund të përdorni shprehjen e mëposhtme:

CalculateExpression ("Kursi", "Paraardhës")

Listë i ri funksione:

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

Funksioni kthen një grup, secili element i të cilit përmban rezultatin e vlerësimit të shprehjes për grupim sipas fushës së specifikuar.

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

Funksioni kthen një tabelë vlerash, çdo rresht i së cilës përmban rezultatin e vlerësimit të shprehjeve për grupim sipas fushës së specifikuar

Vlera e Plotësuar(<Выражение>) – Kthen True nëse vlera është e ndryshme nga vlera e paracaktuar e këtij lloji, përveç NULL, përveç referencës null, përveç asaj të Padefinuar. Vlerat Boolean janë testuar për NULL. Vargjet kontrollohen për karaktere pa hapësirë ​​të bardhë.

Formati(<Выражение>, <Форматная строка>) – Merrni vargun e formatuar të vlerës së kaluar. Vargu i formatit është vendosur në përputhje me vargun e formatit të sistemit 1C: Enterprise.

Nënstring(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Ky funksion është krijuar për të zgjedhur një nënvarg nga një varg.

Gjatësia e vargut(<Выражение>) – Funksioni është krijuar për të përcaktuar gjatësinë e një vargu. Parametri - shprehje e tipit të vargut

Linjë(<Выражение>) – Nëse një grup kalohet si parametër, atëherë funksioni kthen një varg që përmban paraqitje të vargut të të gjithë elementëve të grupit, të ndara me karakteret “; “. Nëse një tabelë vlerash kalohet si parametër, atëherë funksioni kthen një varg që përmban paraqitjet e vargjeve të të gjitha rreshtave të tabelës së vlerave, dhe paraqitjet e qelizave të çdo rreshti ndahen me karakteret "; ", dhe vargjet me karakter të linjës së re. Nëse ndonjë element ka një përfaqësim të vargut bosh, atëherë në vend të paraqitjes së tij, shfaqet një varg<Пустое значение>.

Një nga mjetet më të përshtatshme dhe unike të zhvillimit në 1C është sistemi i përbërjes së të dhënave (SKD). Në pak sisteme informacioni, zhvilluesit mund të krijojnë raporte pa shkruar kod. Ky mekanizëm u zhvillua për të thjeshtuar dhe përshpejtuar zhvillimin e formularëve të raportimit dhe për t'u dhënë më shumë mundësi përdoruesve në punën me të dhënat dalëse. Kjo e fundit vlerësohet shumë nga përdoruesit e avancuar, të cilët, falë kësaj, mund të personalizojnë në mënyrë të pavarur raportin për nevojat e tyre pa pritur që zhvilluesit të ndërmarrin veprime.

Krijimi i një raporti në 1C përmes SKD

Procesi i zhvillimit të një raporti duke përdorur SKD mund të ndahet në fazat e mëposhtme:

  1. Krijo një kërkesë. Ju mund të shkruani një kërkesë me dorë ose të bëni pa kod programi duke përdorur një ndërfaqe të përshtatshme;
  2. Raporto konfigurimin. Përzgjidhen fushat, totalet, grupimet, parametrat, dizajni i raportit;
  3. Pas kësaj, ne vetëm duhet të lidhim raportin që rezulton me konfigurimin në çdo mënyrë të mundshme.

Pavarësisht aftësisë së përdoruesve për të konfiguruar raportet në ACS, ato duhet të krijohen përmes konfiguruesit.

Konsideroni një shembull të krijimit të një raporti të jashtëm për ACS:


Tani shkojmë në 1C, hapim raportin tonë për t'u siguruar që veprimet e ndërmarra janë të sakta. Të dhënat pasqyrohen të gjitha, grupimet mund të shemben dhe zgjerohen. Siç mund ta shihni, ACS ju lejon të merrni raporte të plota pa shkruar kod, përveç kërkesave jo standarde. Duke pasur parasysh se shumica e raporteve kanë një strukturë të ngjashme, njohja e ACS do të reduktojë ndjeshëm kohën për zhvillimin e këtyre objekteve.

Popullariteti i madh i këtij mekanizmi u sigurua nga mbështetja e mundësive të gjera gjatë krijimit të një raporti. Për më tepër, jo vetëm zhvilluesit, por edhe përdoruesit e zakonshëm mund t'i përdorin ato.

Aftësitë SKD

Ka situata kur kemi bërë një raport dhe më pas vjen një përdorues dhe kërkon një rishikim të vogël. Për shembull, në vend të emrave të nomenklaturës, shfaqni artikuj. ACS i lejon përdoruesit të bëjnë përmirësime të tilla vetë duke përdorur butonin "Më shumë" - "Ndrysho opsionin ...".


Dritarja që hapet është e ngjashme me dritaren e cilësimeve në raport në konfigurues dhe gjithashtu ka funksione të ngjashme. Për të zgjidhur detyrën, përdoruesi duhet të shkojë në skedën "Fushat" dhe të ndryshojë fushën "Nomenklatura". Kjo fushë redaktimi hapet duke klikuar dy herë dhe butoni "Zgjidh..." bëhet i disponueshëm.


Dritarja që hapet na jep mundësinë të zgjedhim çdo vlerë që do të shfaqet në fushën "Nomenklatura". Disa fusha kanë një shenjë plus në të majtë - zhvilluesi vendosi lidhje në këto fusha, që do të thotë se ne mund të shohim detajet e tyre. Ne hapim "Nomenklaturën" dhe shohim artikullin që na nevojitet. Zgjidhni atë dhe zgjidhni.


Dritarja për modifikimin e opsioneve të raportit përmban shumë funksione të dobishme të sistemit të përbërjes së të dhënave. Për shembull, përdoruesi mund të ndryshojë në mënyrë të pavarur rendin e grupimeve, të shtojë një përzgjedhje ose të vendosë një dizajn të kushtëzuar. Ne përfundojmë redaktimin dhe gjenerojmë një raport - siç mund ta shihni, i gjithë diapazoni tani shfaqet si artikuj.


Mekanizmi SKD 1C:Enterprise 8.3 gjithashtu ka funksionalitet të zgjeruar për zhvilluesit. Gjatë zhvillimit të raportit, ne përdorëm vetëm 2 skeda - "Setet e të dhënave" dhe "Cilësimet", por ka shumë të tjera në ACS. Për të përdorur të gjitha funksionet e sistemit të përbërjes së të dhënave, duhet të kuptoni se për çfarë nevojitet secila prej skedave:

  1. Grupet e të dhënave - të gjitha pyetjet e përfshira në gjenerimin e raportit janë renditur këtu;
  2. Marrëdhëniet me grupin e të dhënave - përdoret për të ndërtuar marrëdhënie midis pyetjeve të ndryshme nga skeda e parë;
  3. Fushat e llogaritura - një listë e fushave të shtuara jo nga pyetja. Përdoret më shpesh në rastet kur, bazuar në vlerat e disa fushave nga kërkesa, duhet të merrni 1 vlerë;
  4. Burimet. Në 1C, ky është emri i fushave për të cilat duhet të dini totalet. Burimet mbështesin operacione të ndryshme aritmetike - shuma, sasia, maksimumi dhe të tjera;
  5. Opsione. Ato përdoren nëse për të gjeneruar një raport është e nevojshme që përdoruesi të fusë të dhëna të caktuara - datë, departamente ose nomenklaturë, për shembull;
  6. Layouts. Projektuar për ato raste kur përdoruesit duan të shohin një raport të dizajnuar në mënyrë unike. Krijoni një vend të veçantë për nënshkrime ose një krye të re të raportit - e gjithë kjo mund të bëhet këtu;
  7. skemat e mbivendosura. Ato nevojiten kur raporti juaj duhet të përmbajë të dhëna nga raporte të tjera;
  8. Cilësimet. Seksioni deklaron fushat e daljes, grupimet dhe konfiguron pamjen e raportit.


Numri i mundësive të përfshira në mekanizmin ACS nga zhvilluesit është i madh, por shumë prej tyre përdoren jashtëzakonisht rrallë. Edhe programuesit me përvojë 1C mund të mos përdorin disa funksione me kalimin e viteve. Për të filluar punën e suksesshme në ACS, mjafton të njihni konceptet bazë dhe cilësimet e përdorura shpesh. Në raste të rralla, dokumentacioni do të vijë në shpëtim.

Llogaritni shprehjen- Një funksion mjaft kompleks i ACS për të kuptuar, dhe shembujt e aplikimit në informacionin e referencës janë mjaft të pakta. Ky artikull diskuton shembuj që me siguri do të jenë të dobishëm për çdo zhvillues:

  1. drejtimi i përgjithshëm në një grupim;
  2. ekzekutimi total në crosstab;
  3. marrja e vlerës së mëparshme;
  4. Prodhimi PM në një linjë.

1. Marrja e një treguesi mbi një total kumulativ

Merrni sasinë e mallrave në një total kumulativ në nivel grupimi. Për ta bërë këtë, ne krijojmë një fushë të llogaritur (shih Figurën 1).
Në skedën "Burimet", vendosni funksionin për fushën e llogaritur:
CalculateExpression("Sum(NumberTurnover)", "First", "Current")
i cili do të përmbledhë numrin e produkteve nga rekordi i parë deri në atë aktual (shih figurën 2).

Nëse dëshironi të merrni sasinë e mallrave në bazë akruale në nivelin e regjistrave të detajuar, atëherë funksioni Llogarit shprehjen vendoset për fushën e llogaritur në skedën "Fushat e llogaritura" (shih Figurën 3).
Në varësi të nivelit të marrjes së totalit aktual, ne krijojmë një grupim (shih Figurën 4): në nivelin e burimeve - një grupim sipas mallrave, në nivelin DZ - një grupim të të dhënave të detajuara.
Figura 4. Raportoni grupimet me totalin kumulativ

2. Marrja e vlerës së treguesit nga rreshti i mëparshëm

Merrni kursin e këmbimit për datën dhe datën e mëparshme. Për ta bërë këtë, krijoni një fushë të llogaritur dhe shkruani shprehjen e mëposhtme në fushën e shprehjes (shih Figurën 5):
EvaluateExpression ("Kursi", "Paraardhës", "Paraardhës")
e cila do të marrë vlerën e mëparshme të kursit të këmbimit për linjën aktuale, parametri i fundit i funksionit kufizon marrjen e të dhënave.
Meqenëse po punojmë në nivelin e regjistrimeve të detajuara, menjëherë shkojmë te skedari "Cilësimet" dhe krijojmë një grupim - regjistrime të detajuara.

3. Marrja e një treguesi me një total kumulativ në një skedë kryqëzimi

Ne do të marrim sasinë e mallrave në bazë akruale në kontekstin e periudhës. Për ta bërë këtë, ne krijojmë një fushë të llogaritur (shih Figurën 1). Në skedën "Burimet" për fushën e llogaritur, specifikoni shprehjen e mëposhtme (shih Figurën 6):
CalculateExpression ("Shuma (Numri Qarkullimi)", "Periudha", "I pari", "Aktual")
i cili në nivel grupimi do të llogarisë sasinë e mallrave në intervalin nga rreshti i parë deri në atë aktual në kuadër të periudhës për çdo artikull.
Në skedën "Cilësimet", ne krijojmë një tabelë me grupim sipas artikullit në një rresht dhe grupim sipas pikës në një kolonë (shih Figurën 7).

4. Dalja e të dhënave të pjesës tabelare në një rresht

Metodat për nxjerrjen e të dhënave tabelare në një rresht, duke përfshirë metodën duke përdorur funksionin Llogarit shprehjen, diskutohen në artikull

Artikujt kryesorë të lidhur