1s niz agregatnih funkcij SKD. Funkcije izraznega jezika sistema za sestavljanje podatkov. Spreminjanje vrstnega reda stolpcev

V tej kratki opombi želim pokazati, kako lahko povzamete vrednosti na različnih ravneh združevanja v poročilu z uporabo sistema za sestavo podatkov.
Kot je prikazano na sliki, se le na ravni združevanja »Skupine artiklov« izračuna vir »Naročilo«, ki prikazuje, koliko je treba naročiti za trenutno skupino artiklov na podlagi določenih pogojev:


To vrednost je mogoče izračunati samo za tej ravni skupine, ker zgoraj ali spodaj ni vrednosti za izračun. Tako na primer na ravni podrobne evidence ni podatka o maksimalni količini v skupini, ker ta podatek velja samo za skupino kot celoto, ne pa za njene posamezne sestavine.

V skladu s tem je zdaj treba izračunati vsote za zgornje skupine (»Skladišča«, »Vrste skladišč«) in skupno vsoto.
Če želite to narediti, uporabite funkcijo CalculateExpressionWithGroupArray:
VREDNOTI IZRAZ S SKUPINSKO NIZO (EVALEXPRESSION WITH GROUPARRAY)
Sintaksa:
EvaluateExpressionWithGroupArray(,)
Opis:
Funkcija vrne matriko, katere vsak element vsebuje rezultat vrednotenja izraza za združevanje po podanem polju.
Sestavljalec postavitve pri generiranju postavitve pretvori parametre funkcije v izraze polj postavitve sestave podatkov. Na primer, polje Račun bo pretvorjeno v DataSet.Account.
Graditelj postavitve pri ustvarjanju izrazov za izhod polja po meri, katerega izraz vsebuje samo funkcijo CalculateArrayWithGroupArray(), ustvari izhodni izraz, tako da so izhodne informacije urejene. Na primer za polje po meri z izrazom:

CalculateExpressionWithGroupArray("Znesek(Znesek prometa)", "Nasprotna stranka")
Graditelj postavitve bo ustvaril naslednji izraz za izpis:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Opcije:

Vrsta: Vrvica. Izraz, ki ga je treba oceniti. Niz, na primer znesek (AmountTurnover).

Vrsta: Vrvica. Izrazi združevanja polj – izrazi združevanja polj, ločeni z vejicami. Na primer izvajalec, stranka.

Tip: Vrvica. Izraz, ki opisuje izbor, uporabljen za podrobne zapise. Izraz ne podpira uporabe agregatnih funkcij. Na primer, DeletionFlag = False.

Tip: Vrvica. Izraz, ki opisuje izbor, uporabljen za zapise skupine. Na primer, Znesek(ZnesekPrometa) > &Parameter1.
primer:

Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));

Podroben opis sintakse funkcije najdete na http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Zdaj za izračun podvojimo polje »Naročilo« z različnimi vrednostmi »Izračunaj po ...«, z uporabo naslednjih izrazov, upoštevajte, da se na vsaki višji ravni uporabljajo vrednosti ravni pod skupinami .

Kot rezultat dobimo naslednjo konstrukcijo:

U ta metoda Zdi se mi, da je minus, ampak deluje, vendar je minus velik. Poglejmo primer: v konfiguraciji je dokument "Prejem blaga" s tabelarnega dela“Izdelki”, je potrebno v poročilu prikazati dokumente in nazive prejetega blaga za vsak dokument.

Ustvarimo poročilo, dodamo osnovno shemo postavitve podatkov, dodamo nabor podatkov tipa "povpraševanje" sistemu za nadzor dostopa in ustvarimo preprosto zahtevo (glej sliko 1).

Slika 1. Poizvedba nabora podatkov
Na zavihku »Izračunana polja« dodajte izračunano polje z imenom TabularPart in podajte prazen niz v stolpcu Izraz (glejte sliko 2).
Naše izračunano polje bo uporabljeno kot vir, zato na zavihku "Viri" nastavimo izraz za združevanje: ConnectRows(Array(Products.Nomenclature),""). Navedemo tudi, da je treba ta vir izračunati s poljem Link (glejte sliko 3).
Rezultat poročila:
Slaba stran je uporaba združevanja, v našem primeru se združevanje izvaja z atributom Link, sicer ne deluje. Prisotnost združevanja nalaga nekatere omejitve pri nastavitvi izpisa podatkov (glejte sliko 4).

2) Klicanje lastne funkcije iz skupnega modula.

Preprost in jasen način, edina težava je najti ustrezen skupni modul ali ustvariti novega za pisanje lastne funkcije :). S pomočjo posredovane povezave do dokumenta "Prejem blaga" bo funkcija sprejela vrstice iz tabelarnega dela dokumenta in generirala vrstico s podatki o prejetem blagu. Začnimo z izvajanjem.

Ustvarimo poročilo, dodamo osnovno shemo postavitve podatkov, dodamo nabor podatkov tipa "poizvedba" sistemu za nadzor dostopa in ustvarimo preprosto zahtevo (glej sliko 6).


Slika 6. Poizvedba nabora podatkov
Ustvarimo skupni modul _Demo Work WITH Reports in napišimo izvozno funkcijo Get List of Products for Report(). Programska koda funkcije glejte spodaj.
Na zavihku »Izračunana polja« dodajte izračunano polje z imenom TabularPart in v stolpcu Izraz označite klic funkcije iz splošnega modula (glejte sliko 2):
_DemoDelo s poročili. Pridobite seznam izdelkov za poročilo (povezava)

Pojdimo na zavihek "Nastavitve" in ustvarimo nastavitev za izpis podatkov - to bo podroben zapis (glej sliko 8).
Rezultat poročila:

Prenesite vzorčno poročilo

Kaj morate vedeti pri uporabi te metode:
1) Izraz mehanizma za sestavljanje podatkov lahko vsebuje klice funkcij globalnih skupnih konfiguracijskih modulov. Na primer:
AbbreviatedName(povezava, datum, številka)
2) Pri programski generaciji poročila je uporaba funkcij skupnih modulov dovoljena samo, če je naveden ustrezen parameter procesorja za sestavljanje podatkov (4. parameter):
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout, DecryptionData, True);
3) Funkcij skupnih modulov ni mogoče uporabiti v izrazih polja po meri.
4) Če se pri ustvarjanju poročila, ki označuje funkcijo skupnega modula, vrže izjema, preverite kontekst izvajanja modula (glejte sliko 9).

Opis uporabljenih funkcij

ConnectRows(Vrednost, Ločilo elementov, Ločilo stolpcev)- zasnovan za združevanje nizov v eno vrstico.
  • Vrednost - izrazi, ki jih je treba združiti v eno vrstico. Če je matrika, bodo elementi matrike združeni v niz. Če je tabela vrednosti, bodo vsi stolpci in vrstice tabele združeni v vrstico;
  • Ločilo elementov – niz, ki vsebuje besedilo, ki se uporablja kot ločilo med elementi matrike in vrsticami tabele vrednosti. Privzeto – znak za pomik vrstice;
  • Ločila stolpcev - niz, ki vsebuje besedilo, ki se uporablja kot ločilo med stolpci tabele vrednosti. Privzeto "; ".
Matrika ([različni] izraz)- kot parameter lahko uporabite tabelo vrednosti. V tem primeru bo rezultat funkcije matrika, ki vsebuje vrednosti prvega stolpca tabele vrednosti, posredovane kot parameter. Če izraz vsebuje funkcijo Array, se izraz šteje za zbirni izraz. Če je določeno ključna beseda Različno, potem nastala matrika ne bo vsebovala podvojenih vrednosti.

Pridobite seznam izdelkov za poročilo (DocumentLink)- funkcija generira vrstico s seznamom vhodnega blaga.
// Opcije:
// DocumentLink - DocumentLink.Potrdilo o prejemu blaga - Dokument "Potrdilo o prejemu blaga".
// Vrnjena vrednost:
// Niz - niz s seznamom izdelkov.
Funkcija Get List of Products for Report (DocumentLink) Export

Seznam izdelkov = "";

Za vsako vrstico PM iz cikla DocumentLink.Products
Seznam izdelkov = Seznam izdelkov + vrstica TC.Nomenklatura;
Seznam izdelkov = Seznam izdelkov + Simboli.PS;
EndCycle;

Seznam vračil izdelkov;

EndFunction // Pridobi seznam izdelkov za Report()

1. Izračunaj (Eval)- je namenjen ovrednotenju izraza v kontekstu neke skupine. Ta funkcija se uporablja za združljivost z prejšnje različice platforme. Namesto tega je priporočljivo uporabiti funkcijo CalculateExpression.

Sintaksa:
Izračunaj (izraz, združevanje, vrsta izračuna)

Opcije :

  • Izraz(črta). Vsebuje izračunan izraz;
  • Združevanje v skupine(črta). Vsebuje ime združevanja, v kontekstu katerega je treba ovrednotiti izraz. Če je uporabljeno ime skupine prazna vrstica, bo izračun izveden v okviru trenutnega združevanja. Če je kot ime skupine uporabljen niz GrandTotal, bo izračun izveden v kontekstu skupnega seštevka. V nasprotnem primeru bo izračun izveden v kontekstu nadrejene skupine z istim imenom.
    Na primer:
    Sum(Sales.SumTurnover) / Calculate("Sum(Sales.SumTurnover)", "Total").
    IN v tem primeru rezultat bo razmerje med zneskom za polje »Sales.SumTurnover« zapisa združevanja in zneskom istega polja v celotni postavitvi.
  • Vrsta izračuna(črta). Če je ta parameter nastavljen na "TotalTotal", bo izraz izračunan za vse zapise združevanja. Če je vrednost parametra "Združevanje", bodo vrednosti izračunane za trenutni zapis skupine za združevanje.
2. Ocenite izraz (EvalExpression) - je namenjen ovrednotenju izraza v kontekstu neke skupine. Funkcija upošteva izbor skupin, ne upošteva pa hierarhičnih izborov. Funkcije ni mogoče uporabiti za skupino v izboru skupine te skupine.

Sintaksa:
CalculateExpression(Expression, Grouping, CalculationType, Start, End, Sort, HierarchicalSort, ProcessingIdenticalOrderValues)

Opcije :

  • Izraz(črta). Vsebuje izračunan izraz;
  • Združevanje v skupine(črta). Vsebuje ime združevanja, v kontekstu katerega je treba ovrednotiti izraz. Če je kot ime skupine uporabljen prazen niz, bo izračun izveden v kontekstu trenutne skupine. Če je kot ime skupine uporabljen niz GrandTotal, bo izračun izveden v kontekstu skupnega seštevka. V nasprotnem primeru bo izračun izveden v kontekstu nadrejene skupine s tem imenom;
  • Vrsta izračuna(črta). Če je ta parameter nastavljen na "TotalTotal", bo izraz izračunan za vse zapise združevanja. Če je vrednost parametra "Združevanje", bodo vrednosti izračunane za trenutni zapis skupine za združevanje. Če je parameter nastavljen na »Združevanje brez virov«, bo pri izračunu funkcije za skupinski zapis po viru izraz ovrednoten za prvi skupinski zapis prvotne skupine. Pri vrednotenju funkcije CalculateExpression z vrednostjo »GroupingNonResource« za skupinske zapise, ki niso skupine glede na vir, je funkcija ovrednotena na enak način, kot bi bila ovrednotena z vrednostjo parametra »Grouping«. Graditelj postavitve sestave podatkov pri generiranju postavitve sestave podatkov pri izpisu polja - vira, po katerem se izvede združevanje v postavitev, v postavitev izpiše izraz, izračunan s pomočjo funkcije CalculateExpression z navedenim parametrom "GroupingNon-Resource". Za druge vire, razvrščene po virih, so vrnjeni običajni izrazi virov. Če je parameter nastavljen na "Hierarchy", potem je treba izraz ovrednotiti za nadrejeni hierarhični zapis, če obstaja, in za celotno skupino, če nadrejenega hierarhičnega zapisa ni. Graditelj postavitve pri generiranju izraza za % v polju Hierarchy Group ustvari izraz, ki vsebuje razmerje med izrazom vira in funkcijo CalculateExpression za izraz vira, ki se izračunava za trenutno združevanje z vrsto izračuna Hierarchy.
  • Začetek. Označuje, iz katerega zapisa se mora začeti fragment, v katerem je treba izračunati funkcije agregatnega izraza in iz katerega zapisa pridobiti vrednosti polja zunaj agregatnih funkcij. Niz, ki vsebuje eno od:
    • "prvi" Pridobiti je treba prvi zbirni zapis. Za besedo v oklepaju lahko podate izraz, katerega rezultat bo uporabljen kot odmik od začetka združevanja. Dobljena vrednost mora biti celo število, večje od nič. Na primer First(3) – sprejem tretjega zapisa od začetka združevanja. Če je prvi zapis izven združevanja, se šteje, da zapisov ni. Na primer, če obstajajo 3 zapisi in želite dobiti First(4), se šteje, da ni nobenega zapisa.
    • "Zadnji" Pridobiti morate zadnji zapis združevanja. Za besedo v oklepaju lahko podate izraz, katerega rezultat bo uporabljen kot odmik od konca združevanja. Dobljena vrednost mora biti celo število, večje od nič. Na primer Last(3) – sprejem tretjega zapisa s konca skupine. če zadnji zapis presega združevanje, se šteje, da evidence ni. Na primer, če obstajajo 3 zapisi in želite dobiti Last(4), se šteje, da ni nobenega zapisa.
    • "Prejšnji" Pridobiti morate prejšnji zapis združevanja. Za besedo v oklepaju lahko podate izraz, katerega rezultat bo uporabljen kot odmik nazaj od trenutnega zapisa združevanja. Na primer Previous(2) – pridobivanje prejšnjega iz prejšnjega zapisa. Če je prejšnji zapis zunaj združevanja (na primer, drugi zapis združevanja zahteva pridobitev Prejšnji(3)), se pridobi prvi zapis združevanja. Ob prejemu predhodnega zapisa za skupinski seštevek dobimo prvi zapis.
    • "Naslednji" Dobiti morate naslednji zapis združevanja. Za besedo v oklepaju lahko podate izraz, katerega rezultat bo uporabljen kot odmik naprej od trenutnega vnosa združevanja. Na primer, Next(2) – pridobivanje naslednjega iz naslednjega zapisa. Če naslednji zapis preseže skupino, se šteje, da zapisov ni. Na primer, če so 3 vnosi in tretji vnos prejme Naprej, se šteje, da ni vnosov. Ko je prejet naslednji zapis za skupni seštevek, se šteje, da zapisa ni.
    • "Trenutno". Dobiti morate trenutni zapis. Pri pridobivanju skupne vsote se pridobi prvi zapis.
    • "Mejna vrednost". Potreba po pridobitvi zapisa z določeno vrednostjo. Za besedo LimitingValue v oklepaju morate navesti izraz, s katerega vrednostjo želite začeti fragment, prvo polje za naročanje. Prvi zapis, katerega vrednost vrstnega polja je večja ali enaka podani vrednosti, bo vrnjen kot zapis. Na primer, če je polje Period uporabljeno kot polje za naročanje in ima vrednosti 01/01/2010, 02/01/2010, 03/01/2010 in želite pridobiti LimitingValue(DateTime(2010) , 1, 15)), potem bo pridobljen zapis z datumom 02/01. 2010.
  • Konec. Označuje, na kateri zapis naj se nadaljuje fragment, v katerem naj se izračuna agregatni izraz. Niz, ki vsebuje eno od:
    • "prvi"
    • "Zadnji"
    • "Prejšnji"
    • "Naslednji"
    • "Trenutno".
    • "Mejna vrednost".
  • Razvrščanje. Niz, ki navaja izraze, ločene z vejicami, v smeri katerih naj bo zaporedje urejeno. Če ni podano, se vrstni red izvede na enak način kot za skupino, za katero je izraz ovrednoten. Za vsakim izrazom lahko določite ključno besedo Ascending, za razvrščanje v naraščajočem vrstnem redu, Descending, za razvrščanje v padajočem vrstnem redu, Auto-Ordering, za razvrščanje referenčnih polj po poljih, po katerih želite razvrstiti predmet, na katerega se sklicujete. Besedo Samodejni vrstni red lahko uporabite tako z besedo Naraščajoče kot z besedo Padajoče.
  • HierarchicalSorting. Podobno kot razvrščanje. Uporablja se za organiziranje hierarhičnih zapisov. Če ni podano, sestavljalec postavitve ustvari vrstni red v skladu z vrstnim redom, podanim v parametru Razvrsti.
  • Obdelava enakih vrednosti naročila. Niz, ki vsebuje eno od:
    • "Skupaj" pomeni, da se za določitev prejšnjega in naslednjega zapisa uporablja zaporedje urejenih zapisov;
    • "Ločeno" pomeni, da sta prejšnji in naslednji zapis določena na podlagi vrednosti vrstnih izrazov;
    Na primer, če je nastalo zaporedje urejeno po datumu:
    1. 1. januar 2001 Ivanov M. 10
    2. 2. januar 2001 Petrov S. 20
    3. 2. januar 2001 Sidorov R. 30
    4. 3. januar 2001 Petrov S. 40
    Pri uporabi obdelave enakih vrednosti naročila "Ločeno" bo prejšnji za zapis 3 zapis 2, pri uporabi "Skupaj" - zapis 1. In fragment za trenutni zapis za zapis 2 za "Ločeno" bo zapis 2 in za "Skupaj" - zapisa 2 in 3. Tako bo skupna vsota za trenutni zapis za "Ločeno" 20, za "Skupaj" pa 50. Ko je "Skupaj" določeno v Start in Končni parametri, ne morete določiti odmika za položaje "Prvi", "Zadnji", "Prejšnji", "Naslednji". Privzeta vrednost je "Ločeno".
primer:
Pridobivanje razmerja med zneskom za polje »Sales.AmountTurnover« zapisa združevanja in zneskom istega polja v celotni postavitvi:
Sum(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Total").

Ta primer izračuna vrednost trenutne hierarhije:
Izbira
Ko je Level() > 0
Nato EvaluateExpression("Reference", "Hierarchy")
Sicer Null
Konec

Opombe:
Funkcija upošteva izbor skupin, ne upošteva pa hierarhičnih izborov. Funkcije ni mogoče uporabiti za skupino v izboru skupine te skupine. Na primer, pri izbiri združevanja Nomenklature ne morete uporabiti izraza CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Toda tak izraz se lahko uporablja pri hierarhični izbiri. Če je končni zapis pred začetnim zapisom, se šteje, da ni zapisov za izračun podrobnih podatkov in izračun agregatnih funkcij. Pri izračunu intervalnih izrazov za skupno vsoto (parameter združevanja je nastavljen na "GrossTotal") se predpostavlja, da ni zapisov za izračun podrobnih podatkov in izračun agregatnih funkcij. Pri generiranju izraza za funkcijo CalculateExpression sestavljalec postavitve, če vrstni izraz vsebuje polja, ki jih ni mogoče uporabiti pri združevanju, nadomesti funkcijo CalculateExpression z NULL.

3. Vrednotenje izraza s skupinsko matriko (EvalExpression With Group Array) - funkcija vrne matriko, katere vsak element vsebuje rezultat izračuna izraza za združevanje po podanem polju.

Sintaksa:
CalculateExpressionWithGroupArray (Expression, GroupFieldExpressions, SelectRecords, SelectGroups)

Opcije :

  • Izraz(Niz) - izraz, ki ga je treba ovrednotiti. Na primer, "Znesek (Znesek prometa)";
  • FieldExpressionsGroups
  • Izbor zapisov
  • Izbira skupin- izbor uporabljen za skupinske zapise. Na primer: "Znesek(Znesek prometa) > &Parameter1".
primer:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));


Graditelj postavitve pri generiranju izrazov za prikaz polja po meri, katerega izraz vsebuje samo funkcijo CalculateArrayWithGroup, generira izhodni izraz na tak način, da so prikazani podatki in podatki urejeni.
Na primer za polje po meri z izrazom:
CalculateExpressionWithGroupArray("Znesek(Znesek prometa)", "Nasprotna stranka")
Graditelj postavitve bo ustvaril naslednji izraz za izpis:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Izračunajte izraz z GroupValueTable (EvalExpressionWithGroupValueTable) - funkcija vrne tabelo vrednosti, katere vsak element vsebuje rezultat izračuna izraza za združevanje po podanem polju.

Sintaksa:
CalculateExpressionWithGroupValueTable (izraz, izrazi skupinskega polja, izbor zapisov, izbor skupine)

Opcije :

  • Izraz(Niz) - izraz, ki ga je treba ovrednotiti. Vrstica lahko vsebuje več izrazov, ločenih z vejicami. Za vsakim izrazom je lahko neobvezna ključna beseda AS in ime stolpca tabele vrednosti. Na primer: "Nasprotna stranka, znesek (AmountTurnover) kot obseg prodaje."
  • FieldExpressionsGroups- izrazi skupinskih polj, ločenih z vejicami. Na primer "Nasprotna stranka, stranka";
  • Izbor zapisov- izraz, ki se uporablja za podrobne zapise. Na primer, "Zastavica za izbris = False." Če v ta parameter uporabljena je agregatna funkcija, pri sestavljanju podatkov bo prišlo do napake;
  • Izbira skupin- izbor uporabljen za skupinske zapise. Na primer: "Znesek(Znesek prometa) > &Parameter1".
primer:
Izračunajte izraz z združevanjem tabele vrednosti ("Račun KOT Nasprotna stranka, Znesek (Znesek Promet) KOT Obseg prodaje", "Račun")

Rezultat te funkcije bo tabela vrednosti s stolpci Nasprotna stranka in Obseg prodaje, ki bo vsebovala nasprotne stranke z njihovim obsegom prodaje.
Sestavljalec postavitve pri generiranju postavitve pretvori parametre funkcije v izraze polj postavitve sestave podatkov. Na primer, polje Račun bo pretvorjeno v DataSet.Account.
Na primer polje po meri z izrazom:
CalculateExpressionWithGroupValueTable("Račun, Znesek(ZnesekPrometa)", "Račun")
Graditelj postavitve bo ustvaril naslednji izraz za izpis:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), "2, 4"))

5. Raven - funkcija je zasnovana tako, da pridobi trenutno raven snemanja.

Sintaksa:
Raven()

primer:
Raven()

6. Zaporedna številka - dobite naslednjo serijsko številko.

Sintaksa:
ŠteviloPoNaročilu()

primer:
ŠteviloPoNaročilu()

7. SequenceNumberInGrouping - vrne naslednjo zaporedno številko v trenutni skupini.

primer:
NumberByOrderInGroup()

8. Oblika - pridobite oblikovani niz posredovane vrednosti.

Sintaksa:
Format(Vrednost, FormatString)

Opcije :

  • Pomen- izraz, ki ga je treba oblikovati;
  • FormatString- formatni niz je nastavljen v skladu z formatni niz 1C:Podjetje.
primer:
Format(Invoices.Doc Amount, "NPV=2")

9. BeginOfPeriod

Sintaksa:
Začetno obdobje (datum, vrsta obdobja)

Opcije :

  • datum(Datum). Določen datum;
  • Vrsta obdobja
primer:
Začetno obdobje (datum in čas (2002, 10, 12, 10, 15, 34), "mesec")
Rezultat: 10.1.2002 0:00:00

10. Konec obdobja - funkcija je zasnovana za izbiro določenega datuma od danega datuma.

Sintaksa:
EndPeriod(Datum, PeriodType)

Opcije :

  • datum(Datum). Določen datum;
  • Vrsta obdobja(črta). Vsebuje eno od naslednjih vrednosti: minute; ura; dan; Teden; mesec; četrtina; leto; desetletje; Pol leta.
primer:
Končno obdobje (datum in čas (2002, 10, 12, 10, 15, 34), "teden")
Rezultat: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - funkcija je zasnovana tako, da datumu doda določeno vrednost.

Sintaksa:
AddToDate(Izraz, Vrsta prirastka, Magnituda)

Opcije :

  • Izraz(Datum). izvirni datum;
  • TypeMagnification(črta). Vsebuje eno od naslednjih vrednosti: minute; ura; dan; Teden; mesec; četrtina; leto; desetletje; Pol leta.
  • Magnituda(Številka). Za koliko je treba povečati datum, se ulomek ne upošteva.
primer:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mesec", 1)
Rezultat: 12.11.2002 10:15:34

12. Datumska razlika - funkcija je zasnovana tako, da dobi razliko med dvema datumoma.

Sintaksa:
DifferenceDate(Expression1, Expression2, DifferenceType)

Opcije :

  • Izraz1(Datum). Odšteti datum;
  • Izraz2(Datum). izvirni datum;
  • TypeDifference(črta). Vsebuje eno od vrednosti: Second; Minuta; ura; dan; mesec; četrtina; leto
primer:
DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "DAN")
Rezultat: 2

13. Podniz - to funkcijo je namenjen ekstrahiranju podniza iz niza.

Sintaksa:
Podniz (niz, položaj, dolžina)

Opcije :

  • Linija(črta). Niz, iz katerega je podniz ekstrahiran;
  • Položaj(Številka). Položaj znaka, s katerega se začne podniz, ki ga je treba ekstrahirati iz niza;
  • Dolžina(Številka). Dolžina dodeljenega podniza.
primer:
PODNIZ(Računi.Naslov, 1, 4)

14. Dolžina niza - funkcija je zasnovana za določanje dolžine niza.

Sintaksa:
StringLength(String)

Parameter:

  • Linija(črta). Niz, katerega dolžina je določena.
primer:
Vrstica (nasprotne stranke. naslov)

15. Leto- ta funkcija je zasnovana tako, da izvleče leto iz vrednosti vrste Datum.

Sintaksa:
Leto (datum)

Parameter:

  • datum(Datum). Datum, do katerega je določeno leto.
primer:
YEAR(Stroški.Datum)

16. Četrt - ta funkcija je zasnovana za ekstrahiranje številke četrtletja iz vrednosti vrste Datum. Številka četrtine se običajno giblje od 1 do 4.

Sintaksa:
četrtletje (datum)

Parameter:

  • datum(Datum). Datum, do katerega je določeno četrtletje
primer:
ČETRTET(Stroški.Datum)

17. Mesec - ta funkcija je zasnovana tako, da ekstrahira številko meseca iz vrednosti vrste datum. Številka meseca se običajno giblje od 1 do 12.

Sintaksa:
Mesec (datum)

Parameter:

  • datum(Datum). Datum, s katerim se določi mesec.
primer:
MESEC(Stroški.Datum)

18. Dan v letu (DayOfYear) - ta funkcija je zasnovana za pridobivanje dneva v letu iz vrednosti tipa Datum. Dan v letu se običajno giblje od 1 do 365 (366).

Sintaksa:
Dan v letu (datum)

Parameter:

  • datum(Datum). Datum, s katerim se določi dan v letu.
primer:
DAYYEAR(RačunOdhodkov.Datum)

19. Dan- ta funkcija je zasnovana za pridobivanje dneva v mesecu iz vrednosti tipa Datum. Dan v mesecu se običajno giblje od 1 do 31.

Sintaksa:
dan (datum)

Parameter:

  • datum(Datum). Datum, s katerim se določi dan v mesecu.
primer:
DAN(Stroški.Datum)

20. teden - ta funkcija je zasnovana za pridobivanje številke tedna v letu iz vrednosti tipa Datum. Tedni v letu so oštevilčeni od 1.

Sintaksa:
Teden (datum)

Parameter:

  • datum(Datum). Datum, do katerega so določene številke tednov.
primer:
WEEK(Stroški.Datum)

21. WeekDay - ta funkcija je zasnovana za pridobitev dneva v tednu iz vrednosti tipa datuma. Običajni dan v tednu je od 1 (ponedeljek) do 7 (nedelja).

Sintaksa:
Dan v tednu (datum)

Parameter:

  • datum(Datum). Datum, s katerim se določi dan v tednu.
primer:
DAN V TEDNU (Stroški.Datum)

22. Ura- ta funkcija je zasnovana tako, da pridobi uro v dnevu iz vrednosti tipa Datum. Ura dneva se giblje od 0 do 23.

Sintaksa:
ura (datum)

Parameter:

  • datum(Datum). Datum, do katerega je določena ura dneva.
primer:
HOUR(Stroški.Datum)

23. Minuta - ta funkcija je zasnovana za pridobivanje minut ure iz vrednosti tipa Datum. Minuta ure se giblje od 0 do 59.

Sintaksa:
Minuta (datum)

Parameter:

  • datum(Datum). Datum, do katerega je določena urna minuta.
primer:
MINUT(Stroški.Datum)

24. Drugič - ta funkcija je zasnovana tako, da pridobi sekundo minute iz vrednosti tipa Datum. Sekunda minute se giblje od 0 do 59.

Sintaksa:
Drugi (datum)

Parameter:

  • datum(Datum). Datum, do katerega so določene sekunde minute.
primer:
SECOND(Stroški.Datum)

25. Cast - ta funkcija je zasnovana za ekstrahiranje vrste iz izraza, ki lahko vsebuje sestavljeno vrsto. Če izraz vsebuje tip, ki ni zahtevani tip, bo vrnjena vrednost NULL.

Sintaksa:
Express(Expression, Type Indication)

Opcije :

  • Izraz- izraz za pretvorbo;
  • Navedba tipa(črta). Vsebuje niz vrste. Na primer "Številka", "Niz" itd. Poleg primitivnih tipov podana vrstica lahko vsebuje ime tabele. V tem primeru se bo poskušalo izraziti sklicevanje na navedeno tabelo.
primer:
Express(Data.Props1, "Number(10,3)")

26. IsNull (IsNull) - ta funkcija vrne vrednost drugega parametra, če je vrednost prvega parametra NULL. V nasprotnem primeru bo vrnjena vrednost prvega parametra.

Sintaksa:
IsNull(Izraz1, Izraz2)

Opcije :

  • Izraz1- vrednost, ki jo je treba preveriti;
  • Izraz2- vrnjena vrednost, če je izraz1 NULL.
primer:
YesNULL(Znesek(Prodaja.ZnesekPrometa), 0)

27.ACos- izračuna ark kosinus v radianih.

Sintaksa:
ACos (izraz)

Parameter:

  • Izraz(Številka). Vrednost kosinusa (v območju -1 ... 1), s katero je določen kot.
28.ASin- izračuna arksinus v radianih.

Sintaksa:
ASin(izraz)

Parameter:

  • Izraz(Številka). Vrednost sinusa (v območju -1 ... 1), s katero je določen kot.
29. ATan- izračuna arktangens v radianih.

Sintaksa:
ATan (izraz)

Parameter:

  • Izraz(Številka). Vrednost tangente, s katero je določen kot.
30.Cos- izračuna kosinus.

Sintaksa:
Cos (izraz)

Parameter:

  • Izraz
31. Exp- povišanje števila e na potenco.

Sintaksa:
Exp (izraz)

Parameter:

  • Izraz(Številka). Pomen diplome.
32.Dnevnik- izračuna naravni logaritem.

Sintaksa:
Dnevnik (izraz)

Parameter:

  • Izraz
33.Log10- izračuna logaritem X na osnovo 10.

Sintaksa:
Log10 (izraz)

Parameter:

  • Izraz(Številka). Prvotno število je večje od 0.
34. Pow- potenciranje.

Sintaksa:
Pow (osnova, indikator)

Opcije :

  • Osnova(Številka). Osnova operacije potenciranja.
  • Kazalo(Številka). Eksponent.
35. Greh- izračuna sinus.

Sintaksa:
Greh (izraz)

Parameter:

  • Izraz(Številka). Podano v radianih.
36. Sqrt- izračuna kvadratni koren.

Sintaksa:
Sqrt (izraz)

Parameter:

  • Izraz(Številka). Nenegativno število.
37. Tan- izračuna tangens.

Sintaksa:
Tan (izraz)

Parameter:

  • Izraz(Številka). Vrednost sinusa, s katero je določen kot.
38. Okroglo- zaokroži izvirno število na zahtevano bitno globino. Način zaokroževanja je standarden (1,5 kot 2).

Sintaksa:
Env (izraz, bitna globina)

Opcije :

  • Izraz(Številka). izvirna številka;
  • Bitna globina(Številka). Število decimalnih mest, na katere želite zaokrožiti.
39. Int- odreže ulomek števila.

Sintaksa:
Predmet (izraz)

Parameter:

  • Izraz(Številka). Delno število.
40. Funkcije skupnih modulov

Izraz stroja za sestavljanje podatkov lahko vsebuje klice funkcij globalnih skupnih konfiguracijskih modulov. Za klic takšnih funkcij ni potrebna nobena dodatna sintaksa.

primer:
AbbreviatedName(Dokumenti.Povezava, Dokumenti.Datum, Dokumenti.Številka)

V tem primeru bo funkcija "AbbreviatedName" poklicana iz splošnega konfiguracijskega modula.
Upoštevajte, da je uporaba skupnih funkcij modula dovoljena le, če je določen ustrezen parameter procesorja za sestavo podatkov.
Poleg tega funkcij običajnih modulov ni mogoče uporabiti v izrazih polj po meri.

41. Zamera - ta funkcija vrne predstavitev niza posredovane vrednosti neprimitivnega tipa. Za vrednosti primitivnega tipa vrne samo vrednost.

<Пустое значение>".

primer:
Predstavitev (nasprotna stranka)

42. Niz - ta funkcija pretvori posredovano vrednost v niz.

Če je kot parameter uporabljena matrika ali tabela vrednosti, funkcija vrne niz, ki vsebuje nizovno predstavitev vseh elementov matrike, ločenih z znaki "; ". Če ima kateri koli element predstavitev praznega niza, je niz "<Пустое значение>".

primer:
Vrstica (Datum prodaje)

43. ValueIsFilled

Za vrednosti NULL Undefined vedno vrne False.
Za logične vrednosti vedno vrne True.
Za druge tipe vrne True, če se vrednost razlikuje od privzete vrednosti za dani tip.

primer:
ValueFilled(DeliveryDate)

44. LevelInGroup - ta funkcija pridobi trenutno raven snemanja glede na skupino.

Uporablja se lahko za pridobitev ravni gnezdenja zapisa v hierarhičnem združevanju.

primer:
LevelInGroup()

45. ValueType

Sintaksa:
ValueType(Expression)

Parameter:

  • Izraz(črta). Vrsta vrednosti niza.
Vrne vrednost tipa Type, ki vsebuje vrsto vrednosti parametra funkcije.

Pravilna uporaba sheme sestavljanja podatkov (DCS) vam omogoča, da:

  • bistveno zmanjša čas, potreben za pripravo poročila;
  • znebite se potrebe po ustvarjanju kontrolirani obliki procesor;
  • s priložnostjo dobite čudovit rezultat dodatne nastavitve uporabnik.

Toda vsi razvijalci ne izkoristijo kar največ zmogljivosti sheme, saj vse njene nastavitve niso očitne in intuitivne. Še posebej veliko ljudi ve, da so v 1C SKD izračunana polja, vendar ne razumejo popolnoma obsega njihove uporabe in načinov dela z njimi.

Kaj je izračunano polje

V večini primerov je vir podatkov v diagramu postavitve poizvedba. Načeloma lahko že v sami poizvedbi uporabljate različne formule, konstrukcije in izraze. Postavlja se naravno vprašanje: zakaj potrebujemo podvojeno funkcionalnost?

Dejstvo je, da je sistem za nadzor dostopa nekaj več kot le prikaz rezultata poizvedbe, kar je jasno razvidno iz obrazca za izdelavo diagrama (slika 1).

Izračunana polja vam omogočajo izvajanje določenih dejanj z ustvarjenim naborom podatkov:

  • Izhod niza podatkov, prejetih z zahtevo, v določeno celico, z združevanjem več vrstic v eno;
  • Dostop do izvoznih funkcij splošnega modula;
  • Izvedite različne izraze, ki so na voljo za jezik postavitve, in uporabite posebne funkcije EvaluateExpression.

Pojdimo skozi ta seznam.

Niz vrednosti v eni celici

Simulirajmo situacijo, ko je treba prejeti vse številke potrdil o prejemu za nasprotno stranko v ločeni celici:


Tako smo v naši shemi ustvarili dodatno računsko polje;


Kot lahko vidite iz zgornjega primera, pri dodajanju in obdelavi izračunanih polj ni težav. Uporabili smo dve funkciji: Array() in ConnectRows().

Nekaj ​​besed o slednjem. Poleg prvega parametra, ki označuje identifikator matrike, vrednosti ali vrednosti, lahko v njem nastavite še dva:

  1. Ločilo elementov – označuje, kateri znak bo ločil en element matrike ali eno vrstico tabele vrednosti od drugega (v našem primeru smo ta parameter izpustili in privzeto je bil dodeljen prelom vrstice);
  2. Ločilo stolpcev – znak, ki se uporablja za ločevanje stolpcev tabele vrednosti (podpičje se uporablja privzeto).

Dostop do izvoznih funkcij skupnega modula

Funkcije skupnega modula lahko delujejo kot vir podatkov za izpolnjevanje izračunanega polja.

nekaj pomembne točke:

  • Funkcija mora biti izvozljiva;
  • Če se funkcija nahaja v skupnem modulu z nastavljenim atributom "Global", se kliče neposredno po imenu, sicer mora biti funkcija poklicana v skladu s shemo "Ime modula v skupni rabi". "Ime funkcije, ki jo želite poklicati."

Kot primer uporabe bomo vzeli isto zahtevo za potrdila o prejemu in jo prikazali v ločenem stolpcu. Same zahteve ne bomo opisovali, pojdimo neposredno na izračunana polja:


Tako vidimo, da je skoraj vsak procesor podatkov mogoče inicializirati iz sistema za nadzor dostopa, kar bistveno razširi možnosti uporabe sheme.

Izrazi v jeziku postavitve

Pri delu razvijalca se pogosto pojavi situacija, ko je treba prikazati rezultat delitve v polju ACS:

  1. Izračunajte povprečno ceno predmeta;
  2. Vse vrste obresti;
  3. Izračuni povprečnih plač itd.

Da bi se izognili težavam, je v teh primerih priporočljivo v polje za izračun vnesti test za deljenje z 0.

To je mogoče storiti z uporabo konstrukcije »Izbira Ko….Potem… Sicer… Konec«.

Za konec še nekaj besed o dovolj nova funkcija Izračunaj izraz(). Z njegovo pomočjo lahko izračunate zlasti odstopanja v stroških med trenutno in prejšnjo vrstico, kumulativno stanje itd.

Recimo, da lahko dobite vsoto dokumenta iz prejšnje vrstice naše zahteve tako, da navedete vrednost Izračunaj izraz ("Vsota dokumenta", "Prejšnja vsota") v polju "Izraz".

Dober dan, dragi bralci našega bloga! Danes vam želim na resničnem primeru povedati, kako
uporabite funkciji ACS Array in JoinStrings. V članku o

je bilo malo omenjeno, kako delati z
na zaznamku
, je bilo tudi že pojasnjeno kot
z uporabo zavihka "Viri". Tem bomo danes ponovno posvetili pozornost
zaznamki v luči naše teme.

Videz primera poročila 1C z uporabo dveh funkcij ACS Array in ConnectRows Naslednji:

Izjava problema za uporabo funkcij ACS Array in JoinStrings

Naloga: V eno celico morate vnesti vse prodajne številke za en izdelek.

Nekaj ​​takega kot: nomenklatura | količina | 001, 002 itd. |

Uporabili bomo zahtevo za akumulacijski register "Realizacija TMZ".

IZBERI
Implementacija TMZ. Registrar. številka,
Implementacija TMZ. nomenklatura,
Implementacija TMZ. tajnik,
Implementacija TMZ. Količina prometa
OD
Register kopičenja. Implementacija TMZ. Revolucije
(, , Registrar, ) KAKO Uveljaviti TMZ

Register kopičenja »Realizacija TMZ« obstaja tako v konfiguraciji Računovodstvo kot v konfiguraciji Upravljanje trgovskega podjetja (UTP). Ugotovite, kako konfigurirati USP v elementu imenika »Nomenklatura«. Zato lahko po prenosu zaženete to poročilo v obeh konfiguracijah, da preverite njegovo funkcionalnost.

Izvedba naloge s funkcijama SKD Array in ConnectRows


Za ustvarjanje so bili uporabljeni isti koraki, vendar z nekaj dodatki
.

Opis funkcije JoinStrings

JoinStrings

Uporablja se za združevanje nizov v en niz.

Sintaksa:

ConnectRows(Vrednost, Ločilo elementov, Ločilo stolpcev)

Opcije:

  1. Pomen— izrazi, ki jih je treba združiti v eno vrstico.
    Če je matrika, bodo elementi matrike združeni v niz.
    Če je tabela vrednosti, bodo vsi stolpci in vrstice tabele združeni v vrstico;
  2. Ločilo elementov- niz, ki vsebuje besedilo, ki bo uporabljeno kot
    ločilo med elementi polja in vrsticami tabele vrednosti. Privzeto – znak za pomik vrstice;
  3. Ločila stolpcev-niz, ki vsebuje besedilo, ki bo uporabljeno kot ločilo
    med stolpci tabele vrednosti. Privzeto ";".