Számított mezők a kérelemben 1s. Adatösszetételi rendszer kifejezési nyelve (1Cv8). Nem NULL érték ellenőrzésének művelete

25.10.2019 Programok

Adatösszetételi rendszer kifejezési nyelve

Az adatösszeállítási rendszer kifejezési nyelve a rendszer különböző részein használt kifejezések rögzítésére szolgál.

A kifejezések a következő alrendszerekben használatosak:

  • adatösszetétel séma - számított mezők, összes mezők, linkkifejezések stb. leírásához;
  • adatösszetételi beállítások – egyéni mezőkifejezések leírására;
  • adatösszetétel elrendezés - adatkészlet-reláció kifejezések leírására, elrendezési paraméterek leírására stb.

Szó szerint

A kifejezés tartalmazhat literálokat. A következő típusú lehetséges literálok:

  • Vonal;
  • Szám;
  • Dátum;
  • Boolean.

Vonal

Egy string literál a "" karakterekkel van írva, például:

"String literal"

Ha a """ karaktert kell használnia a string literálon belül, akkor két ilyen karaktert kell használnia.

Például:

"szó szerinti ""idézőjelben""

Szám

A szám szóközök nélkül, decimális formátumban kerül felírásra. A tört részt a "." karakter választja el. Például:

10.5 200

dátum

A dátum típusú literál a DATETIME billentyű literál használatával írható. Ezt követően kulcsszó, zárójelben, vesszővel elválasztva, az év, hónap, nap, óra, perc, másodperc szerepel. Időjelzés nem szükséges.

Például:

DATETIME(1975, 1, 06) - 1975. január 6. DATETIME(2006, 12, 2, 23, 56, 57) - 2006. december 2., 23:56:57 másodperc, 23:56:57 másodperc

logikai érték

A logikai értékeket igaz (igaz), hamis (hamis) literálokkal írhatjuk fel.

Jelentése

Más típusú literálok (rendszerfelsorolások, előre definiált adatok) megadásához a Value kulcsszót kell használni, amelyet a literál neve követ zárójelben.

Érték (Számlatípus. Aktív)

Műveletek a számokkal

Unary -

Ez a művelet egy szám előjelének megfordítására szolgál. Például:

Értékesítés. Mennyiség

Unary +

Ez a művelet nem hajt végre műveletet a számon. Például:

Értékesítés. Mennyiség

Bináris -

Ez a művelet két szám különbségének kiszámítására szolgál. Például:

Egyenlegek és Forgások. Kezdőegyenleg - Egyenlegek és Forgások. Végegyenlegek és Forgások. Kezdőegyenleg - 100 400 - 357

Bináris +

Ez a művelet két szám összegének kiszámítására szolgál. Például:

Egyenlegek és Forgások. Kezdeti egyenleg + egyenlegek és forgalom. forgalmi egyenlegek és forgalom. kezdeti egyenleg + 100 400 + 357

Munka

Ez a művelet két szám szorzatának kiszámítására szolgál. Például:

Nómenklatúra Ár * 1,2 2 * 3,14

Osztály

Ezt a műveletet úgy tervezték, hogy megkapja az egyik operandus másikkal való osztásának eredményét. Például:

Nómenklatúra Ár / 1,2 2 / 3,14

A hadosztály maradéka

Ezt a műveletet úgy tervezték, hogy megkapja az egyik operandus másikkal való felosztásának maradékát. Például:

Nómenklatúra Ár % 1,2 2 % 3.14

Műveletek húrokon

Összefűzés (bináris +)

Ez a művelet két karakterlánc összefűzésére szolgál. Például:

Nómenklatúra.Cikk + “: ”+ Nómenklatúra.Név

Tetszik

Ez a művelet ellenőrzi, hogy egy karakterlánc megfelel-e az adott mintának.

A LIKE operátor értéke TRUE, ha az érték<Выражения>egyezik a mintával, egyébként HAMIS.

A következő karakterek a<Строке_шаблона>más jelentéssel bír, mint egy másik karakter a karakterláncban:

  • % - százalék: nulla vagy több tetszőleges karaktert tartalmazó sorozat;
  • _ - aláhúzás: egy tetszőleges karakter;
  • […] – egy vagy több karakter szögletes zárójelek: egyetlen karakter, a szögletes zárójelben felsoroltak bármelyike. A felsorolás tartalmazhat tartományokat, például a-z, ami a tartományon belül bármely karaktert jelent, beleértve a tartomány végeit is;
  • [^…] - szögletes zárójelben egy tagadó ikon, amelyet egy vagy több karakter követ: bármely karakter, amely nem szerepel a tagadó ikon után;

Minden más szimbólum önmagát jelenti, és nem hordoz semmilyen további terhelést. Ha a felsorolt ​​karakterek valamelyikét önmagának kell írni, akkor ezt meg kell előznie<Спецсимвол>Az ESCAPE kulcsszó után megadott.

Például sablon

„%ABC[abc]\_abc%” KÜLÖNLEGES KARAKTER „\”

egy részstringet jelent, amely karaktersorozatból áll: A betűk; B betűk; B betűk; egy számjegy; az a, b, c vagy d betűk egyike; aláhúzás karakter; a betűk; b betűk; betűk be. Sőt, ez a sorozat a karakterlánc tetszőleges pozíciójából kiindulva is elhelyezhető.

Összehasonlító műveletek

Egyenlő

Ez a művelet két operandus összehasonlítására szolgál az egyenlőség érdekében. Például:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Nem egyenlő

Ez a művelet két operandus összehasonlítására szolgál az egyenlőtlenség szempontjából. Például:

Értékesítés.Vállalkozó<>Értékesítés.NómenklatúraFőszállító

Kevésbé

Ez a művelet annak ellenőrzésére szolgál, hogy az első operandus kisebb-e, mint a második. Például:

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

Több

Ez a művelet annak ellenőrzésére szolgál, hogy az első operandus nagyobb-e, mint a második. Például:

SalesCurrent.Amount > SalesPast.Amount

Kisebb vagy egyenlő

Ez a művelet annak ellenőrzésére szolgál, hogy az első operandus kisebb vagy egyenlő-e a másodiknál. Például:

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

Több vagy egyenlő

Ez a művelet annak ellenőrzésére szolgál, hogy az első operandus nagyobb vagy egyenlő-e a másodiknál. Például:

SalesCurrent.Amount >= SalesPast.Amount

B művelet

Ez a művelet ellenőrzi, hogy van-e érték az átadott értéklistában. A művelet eredménye igaz, ha az értéket megtalálja, vagy hamis, ha nem. Például:

B elem (&item1, &item2)

Művelet annak ellenőrzésére, hogy létezik-e érték az adatkészletben

A művelet ellenőrzi, hogy van-e érték a megadott adatkészletben. Az érvényesítési adatkészletnek egy mezőt kell tartalmaznia. Például:

Értékesítés. Vállalkozó vállalkozóknak

NULL ellenőrzési művelet

Ez a művelet igazat ad vissza, ha az érték NULL. Például:

Értékesítés. Vállalkozó NULL

Nem NULL érték ellenőrzésének művelete

Ez a művelet igazat ad vissza, ha az érték nem NULL. Például:

Értékesítés. A vállalkozó NEM NULL

Boole-műveletek

A logikai műveletek elfogadják a Boolean típusú kifejezéseket operandusként.

A művelet NEM

A NOT operátor igaz értéket ad vissza, ha az operandusa False, és hamis értéket ad vissza, ha az operandusa True. Például:

NOT Document.Consignee = Dokumentum.Feladó

Művelet ÉS

Az ÉS művelet igazat ad vissza, ha mindkét operandus igaz, és False értéket ad vissza, ha az egyik operandus hamis. Például:

Document.Consignee = Document.Consignor ÉS Document.Consignee = &Vállalkozó

VAGY művelet

Az VAGY művelet True értéket ad vissza, ha az egyik operandus igaz, és False értéket, ha mindkét operandus hamis. Például:

Document.Consignee = Document.Consignor VAGY Document.Consignee = &Vállalkozó

Összesített függvények

Az összesítő függvények bizonyos műveleteket hajtanak végre egy adathalmazon.

Összeg

A Sum aggregate függvény az összes részletrekord argumentumaként átadott kifejezések értékeinek összegét számítja ki. Például:

Összeg(Eladás.Összegforgalom)

Mennyiség

A Count függvény a nem nulla értékek számát számolja. Például:

Mennyiség (értékesítés. Vállalkozó)

Különbözőek száma

Ez a függvény megszámolja a különböző értékek számát. Például:

Mennyiség (különféle értékesítés. Vállalkozó)

Maximális

A függvény a maximális értéket kapja. Például:

Maximum (Maradék. Mennyiség)

Minimális

A függvény a minimális értéket kapja. Például:

Minimum (egyenleg. Mennyiség)

Átlagos

A függvény a nem nulla értékek átlagát kapja. Például:

Átlagos (Maradék. Mennyiség)

Egyéb műveletek

Művelet KIVÁLASZTÁS

A Select művelet célja, hogy bizonyos feltételek mellett több érték közül egyet válasszon. Például:

Válassza a Amikor összeg > 1000, majd az összeg különben 0 vége lehetőséget

Két érték összehasonlításának szabályai

Ha az összehasonlított értékek típusai eltérnek egymástól, akkor az értékek közötti kapcsolatot a típusok elsőbbsége alapján határozzuk meg:

  • NULL (legalacsonyabb);
  • logikai érték;
  • Szám;
  • Dátum;
  • Vonal;
  • Referencia típusok

A különböző hivatkozási típusok közötti kapcsolatokat az adott típusnak megfelelő táblázatok hivatkozási számai alapján határozzák meg.

Ha az adattípusok egyeznek, akkor az értékeket a következő szabályok szerint hasonlítják össze:

  • típusú logikai érték: TRUE nagyobb, mint FALSE;
  • típus A szám a szokásos összehasonlítási szabályokkal rendelkezik a számokhoz;
  • a Dátum típusnál a korábbi dátumok kisebbek, mint a későbbiek;
  • a String típus esetében - a karakterláncok összehasonlítása az adatbázis nemzeti jellemzőivel összhangban;
  • a referenciatípusokat értékeik (rekordszám stb.) alapján hasonlítják össze.

Munka a NULL-lal

Minden olyan művelet, amelyben az egyik operandus értéke NULL, NULL eredményt ad.

Vannak kivételek:

  • az ÉS művelet csak akkor ad NULL értéket, ha egyik operandus sem hamis;
  • az VAGY művelet csak akkor ad NULL értéket, ha egyik operandus sem igaz.

Működési prioritások

A műveletek a következő prioritásokkal rendelkeznek (az első sor a legalacsonyabb prioritású):

  • B, IS NULL, NEM NULL;
  • =, <>, <=, <, >=, >;
  • Bináris +, Bináris – ;
  • *, /, %;
  • Unary +, Unary -.

Adatösszetételi rendszer kifejezési nyelvi függvényei

Kiszámítja

A Calculate funkció célja egy kifejezés kiszámítása bizonyos csoportosítással összefüggésben. A függvény a következő paraméterekkel rendelkezik:

  • Kifejezés. Írja be a String. Számított kifejezést tartalmaz;
  • Csoportosítás. Írja be: String. Annak a csoportnak a nevét tartalmazza, amelynek kontextusában a kifejezést ki kell értékelni. Ha üres karakterláncot használ csoportnévként, a számítás az aktuális csoportosítással összefüggésben történik. Ha a GrandTotal karakterláncot használja csoportnévként, a számítás a végösszeg kontextusában történik. Ellenkező esetben a számítás az adott nevű szülőcsoport kontextusában történik. Például:
Összeg(Eladás.Össz.Forgalom) / Calculate("Összeg(Eladási összegForgalom)", "Össz.Össz.")

NÁL NÉL ezt a példát ennek eredményeként megkapja a csoportosítási rekord "Eladások.Összegforgalom" mezőjében lévő összeg arányát a teljes elrendezésben ugyanazon mező összegéhez.

Szint

A funkciót az aktuális felvételi szint lekérésére tervezték.

Szint()

NumberInOrder

Szerezze meg a következő sorszámot.

Rendelésszám()

NumberIn OrderInGrouping

Az aktuális csoport következő sorszámát adja vissza.

NumberInOrderInGroup()

Formátum

Szerezze be az átadott érték formázott karakterláncát.

A formátum karakterlánc beállítása az 1C:Enterprise formátum karakterláncának megfelelően történik.

Lehetőségek:

  • Jelentés;
  • Karakterlánc formázása.

Formátum (Kiadási számlák.AmountDoc, "NPV=2")

Az időszak kezdete

Lehetőségek:

    • Perc;
    • Nap;
    • Egy hét;
    • Hónap;
    • Negyed;
    • Évtized;
    • Fél év.

PeriodStart(DátumIdő(2002, 10, 12, 10, 15, 34), "Hónap")

Eredmény:

01.10.2002 0:00:00

EndPeriod

A funkció célja, hogy egy adott dátumot kivonjon egy adott dátumból.

Lehetőségek:

  • Dátum. Írja be a dátumot. Adott dátum;
  • Időszak típusa. Írja be: String. A következő értékek egyikét tartalmazza:
    • Perc;
    • Nap;
    • Egy hét;
    • Hónap;
    • Negyed;
    • Évtized;
    • Fél év.

EndPeriod(DátumIdő(2002, 10, 12, 10, 15, 34), "Hét")

Eredmény:

13.10.2002 23:59:59

AddDate

A funkció célja, hogy némi értéket adjon a dátumhoz.

Lehetőségek:

  • Nagyítás típusa. Írja be a String. A következő értékek egyikét tartalmazza:
    • Perc;
    • Nap;
    • Egy hét;
    • Hónap;
    • Negyed;
    • Évtized;
    • Fél év.
  • Érték – mennyivel szeretné növelni a dátumot. Írja be a számot. A tört részt figyelmen kívül hagyja.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Hónap", 1)

Eredmény:

12.11.2002 10:15:34

KülönbségDátum

A funkciót úgy tervezték, hogy meghatározza két dátum közötti különbséget.

Lehetőségek:

  • Kifejezés. Írja be a dátumot. eredeti dátum;
  • Kifejezés. Írja be a dátumot. Kivont dátum;
  • Különbség típusa. Írja be a String. A következő értékek egyikét tartalmazza:
    • Második;
    • Perc;
    • Nap;
    • Hónap;
    • Negyed;

DATEDIFF(DÁTUMIDŐ(2002, 10, 12, 10, 15, 34), DÁTUMIDŐ(2002, 10, 14, 9, 18, 06), "NAP")

Eredmény:

Alkarakterlánc

Ez a funkció arra szolgál, hogy kiválasszon egy karakterláncból egy részt.

Lehetőségek:

  • Vonal. Írja be: String. A karakterlánc, amelyből az alkarakterlánc ki lett bontva;
  • Pozíció. Írja be a számot. A karakter pozíciója, ahonnan a karakterláncból kinyerendő részkarakterlánc kezdődik;
  • Hossz. Írja be a számot. A kiválasztott részkarakterlánc hossza.

SUBSTRING (Fiókok. Cím, 1, 4)

Húr hossza

A függvény egy karakterlánc hosszának meghatározására szolgál.

Paraméter:

  • Vonal. Írja be: String. A karakterlánc, amelynek hosszát meghatározzuk.

Karakterlánc (Fiókok. Cím)

Év

Ez a funkció arra szolgál, hogy kivonja az évet a Dátum típusú értékből.

Paraméter:

  • Dátum. Írja be a dátumot. Az év meghatározásának dátuma.

YEAR (dátummal együtt)

Negyed

Ez a funkció arra szolgál, hogy a Dátum típus értékéből kivonja a negyedév számát. A blokk száma általában 1 és 4 között van.

Paraméter

  • Dátum. Írja be a dátumot. A negyedév meghatározásának dátuma
NEGYEDÉV(Számla.Dátum)

Hónap

Ez a funkció arra szolgál, hogy kivonja a hónap számát a Dátum típusú értékből. A hónap száma általában 1 és 12 között van.

  • Dátum. Írja be a dátumot. A hónap meghatározásának dátuma.
HÓNAP(számla.dátum)

Az év napja

Ezt a funkciót úgy tervezték, hogy az év napját egy Dátum típusú értékből kapja meg. Az év napja általában 1 és 365 (366) között mozog.

  • Dátum. Írja be a dátumot. Az a dátum, amelyre az év napját meghatározzák.
AZ ÉV NAPJA (Lejárati dátum)

Nap

Ez a funkció úgy készült, hogy a hónap napját a Dátum típusú értékből kapja meg. A hónap napja általában 1 és 31 között van.

  • Dátum. Írja be a dátumot. A hónap napjainak meghatározásának dátuma.
NAP (lejárati dátum)

Egy hét

Ez a funkció arra szolgál, hogy a Dátum típusú értékből megkapja az év hetének számát. Az év hetei 1-től kezdődnek.

  • Dátum. Írja be a dátumot. A hétszámok meghatározásának dátuma.
HÉT (lejárati dátum)

A hét napja

Ez a funkció úgy készült, hogy a hét napját a Dátum típusú értékből kapja meg. A hét napja általában 1 (hétfő) és 7 (vasárnap) között van.

  • Dátum. Írja be a dátumot. A hét napjának meghatározásának dátuma.
A HÉT NAPJA (Lejárati dátum)

Óra

Ezt a funkciót úgy tervezték, hogy a nap óráját a Dátum típusú értékből lekérje. A nap órája 0 és 23 között van.

  • Dátum. Írja be a dátumot. Az a dátum, amelyre a nap órája meghatározásra kerül.
ÓRA (lejárati dátum)

Perc

Ezt a funkciót úgy tervezték, hogy a Dátum típusú értékből lekérje az óra percét. Az óra perce 0 és 59 között mozog.

  • Dátum. Írja be a dátumot. Az óra percének meghatározásának dátuma.
PERC (lejárati dátum)

Második

Ezt a funkciót úgy tervezték, hogy a Dátum típusú értékből lekérje a perc másodpercét. A perc másodperce 0 és 59 között mozog.

  • Dátum. Írja be a dátumot. A dátum, amelyre a perc másodpercei meghatározásra kerülnek.
SEC (lejárati dátum)

Expressz

Ez a funkció arra szolgál, hogy egy olyan kifejezésből kinyerjen egy típust, amely összetett típust tartalmazhat. Ha a kifejezés a szükséges típustól eltérő típust tartalmaz, a rendszer NULL értéket ad vissza.

Lehetőségek:

  • A konvertálandó kifejezés;
  • Típusjelzés. Írja be: String. Típus karakterláncot tartalmaz. Például: "Szám", "Karakterlánc" stb. A primitív típusokon kívül ez a karakterlánc tartalmazhatja egy tábla nevét is. Ebben az esetben a rendszer megpróbálja kifejezni a megadott táblára való hivatkozást.

Express(Adat.Attribútum1, "Szám(10,3)")

Nulla

Ez a függvény a második paraméter értékét adja vissza, ha az első paraméter értéke NULL.

Ellenkező esetben az első paraméter értéke kerül visszaadásra.

IsNULL(összeg(értékesítés.összegForgalom), 0)

Közös modulfunkciók

Az adatösszetétel motor kifejezés tartalmazhat függvényhívásokat globális közös konfigurációs modulokhoz. Az ilyen függvények meghívásához nincs szükség további szintaxisra.

Ebben a példában a "ShortName" függvényt az általános konfigurációs modulból hívják meg.

Vegye figyelembe, hogy a megosztott modulfunkciók használata csak akkor engedélyezett, ha a megfelelő adatösszetétel-feldolgozó opció meg van adva.

Ezenkívül a közös modulfüggvények nem használhatók egyéni mezőkifejezésekben.

Kifejezés kiszámítása- Az ACS meglehetősen összetett funkciója megérthető, és a referencia információkban az alkalmazási példák meglehetősen ritkák. Ez a cikk olyan példákat tárgyal, amelyek minden fejlesztő számára hasznosak lehetnek:

  1. futás összesen egy csoportosításban;
  2. futás összesen kereszttáblában;
  3. az előző érték megszerzése;
  4. PM kimenet egy sorban.

1. Mutató beszerzése kumulatív összegen

Szerezze meg az áruk mennyiségét összesített összegben a csoportosítás szintjén. Ehhez létrehozunk egy számított mezőt (lásd 1. ábra).
Az "Erőforrások" lapon állítsa be a számított mező függvényét:
CalculateExpression("Összeg(Számforgalom)", "Első", "Jelenlegi")
amely az első rekordtól a jelenlegiig összegzi a termékek számát (lásd a 2. ábrát).

Ha a részletezett nyilvántartások szintjén eredményszemléletű árumennyiséget kíván kapni, akkor a "Kiszámított mezők" fülön a számított mezőhöz a Kifejezés számítása funkció van beállítva (lásd 3. ábra).
A futó végösszeg beérkezési szintjétől függően csoportosítást hozunk létre (lásd 4. ábra): erőforrás szinten - áruk szerinti csoportosítás, RD szinten - részletes rekordok csoportosítását.
4. ábra Jelentéscsoportosítások kumulatív összeggel

2. Az indikátor értékének lekérése az előző sorból

Szerezze meg a dátum és az előző dátum árfolyamát. Ehhez hozzon létre egy számított mezőt, és írja be a következő kifejezést a kifejezésmezőbe (lásd 5. ábra):
EvaluateExpression("Tanfolyam", "Előző", "Előző")
amelyre az árfolyam korábbi értékét veszi fel aktuális vonal, a függvény utolsó paramétere korlátozza az adatok fogadását.
Mivel a részletes rekordok szintjén dolgozunk, azonnal a "Beállítások" fülre lépünk, és létrehozunk egy csoportosítást - részletes rekordokat.

3. Kereszttáblában kumulatív összegű mutató beszerzése

Az árumennyiséget eredményszemléletűen kapjuk meg az időszak összefüggésében. Ehhez létrehozunk egy számított mezőt (lásd 1. ábra). A számított mező "Erőforrások" lapján adja meg a következő kifejezést (lásd: 6. ábra):
CalculateExpression("Összeg(Számforgalom)", "Időszak", "Első", "Jelenlegi")
amely csoportosítási szinten az első sortól az aktuálisig terjedő tartományban lévő áruk mennyiségét fogja kiszámítani az időszak összefüggésében az egyes cikkekre vonatkozóan.
A "Beállítások" fülön egy sorban tételenkénti csoportosítással, oszlopban pont szerinti csoportosítással készítünk táblázatot (lásd 7. ábra).

4. A táblázatos rész adatkiadása egy sorban

A táblázatos adatok egy sorban történő kiadásának módszereit, beleértve a Kifejezés kiszámítása funkciót is, a cikk tárgyalja.