Data Composition System Expression Language (1Cv8). Funkcie výrazového jazyka systému na skladbu dát Výraz v parametroch SKD 1s 8.3

Jednou z najdôležitejších oblastí podnikového softvéru je reporting. Osud firmy môže závisieť (a nie v prenesenom zmysle!) od toho, aké ľahké je prispôsobiť existujúcu správu meniacim sa potrebám podnikania (a legislatívy) alebo vytvoriť novú, či už ide o správu pre daňový úrad. alebo diagram závislosti dopytu po tovare od sezóny a iných faktorov . Výkonný a flexibilný systém podávania správ, ktorý uľahčuje extrahovanie potrebných údajov zo systému, ich prezentáciu v zrozumiteľnej forme, čo umožňuje koncovému používateľovi prekonfigurovať štandardnú zostavu, aby videl údaje v novom svetle – to je ideálne, obchodný systém by sa mal snažiť.

V platforme 1C:Enterprise je za generovanie správ zodpovedný mechanizmus nazývaný „Systém skladania údajov“ (skrátene DCS). V tomto článku sa pokúsime stručne opísať myšlienku a architektúru mechanizmu ACS a jeho možnosti.


ACS je mechanizmus založený na deklaratívnom popise správ. Systém kontroly prístupu je určený na generovanie správ a zobrazovanie informácií s komplexnou štruktúrou. Mimochodom, okrem vývoja zostáv sa mechanizmus ACS používa aj v 1C:Enterprise v dynamickom zozname, nástroji na zobrazovanie informácií o zozname s bohatou funkčnosťou (zobrazenie plochých a hierarchických zoznamov, podmienený návrh riadkov, zoskupení atď.). ).

Trochu histórie

V úplne prvej verzii platformy 1C:Enterprise 8, verzia 8.0, boli správy vytvorené takto:
  1. Jeden alebo viacero dotazov bolo napísaných v dotazovacom jazyku 1C (jazyk podobný SQL, viac o ňom nižšie).
  2. Bol napísaný kód, ktorý prenášal výsledky vykonaných dotazov do tabuľkového dokumentu alebo grafu. Kód mohol tiež vykonávať prácu, ktorá sa nedala vykonať v dotaze - napríklad vypočítal hodnoty pomocou vstavaného jazyka 1C.
Prístup je jednoduchý, ale nie najpohodlnejší - vizuálne nastavenia sú minimálne, všetko treba naprogramovať „z ruky do ruky“. A jedným z tromfov v tom čase úplne novej platformy „1C:Enterprise 8“ bola minimalizácia množstva kódu, ktorý bolo potrebné písať ručne, najmä prostredníctvom vizuálneho dizajnu, v aplikačnom riešení. Bolo by logické postupovať rovnakou cestou v mechanizme podávania správ. Dosiahlo sa to vyvinutím nového mechanizmu – systému skladania údajov.

Jednou z myšlienok, ktoré tvorili základ systému kontroly prístupu, bola flexibilita a prispôsobenie reportov, ktoré boli dostupné pre vývojárov aj koncových používateľov. V ideálnom prípade by som chcel poskytnúť koncovému používateľovi prístup k rovnakej sade nástrojov na návrh zostáv ako vývojár. Bolo by logické vytvoriť jednotný súbor nástrojov dostupných pre každého. Keďže nástroje vyžadujú účasť koncového používateľa, znamená to, že používanie programovania v nich by sa malo obmedziť na minimum (najlepšie ho úplne vylúčiť) a maximálne využiť vizuálne nastavenia.

Formulácia problému

Úlohou vývojového tímu bolo vytvoriť reportovací systém založený nie na algoritme (t.j. prostredníctvom písania kódu), ale na deklaratívnom prístupe k tvorbe reportov. A veríme, že problém bol úspešne vyriešený. Podľa našich skúseností možno asi 80 % požadovaných reportov implementovať pomocou ACS bez jediného riadku kódu (okrem písania vzorcov pre vypočítané polia), väčšinou prostredníctvom vizuálnych nastavení.
Vývoj prvej verzie KBÚ trval približne 5 osoborokov.

Dva jazyky

Pri vytváraní prehľadov sa používajú dva jazyky. Jedným z nich je dopytovací jazyk používaný na získavanie údajov. Druhým je jazyk výrazov kompozície údajov, určený na písanie výrazov používaných v rôznych častiach systému, napríklad v nastaveniach kompozície údajov, na popis výrazov používateľských polí.

Jazyk dopytu

Dopytovací jazyk je založený na SQL a pre znalcov SQL sa dá ľahko naučiť. Príklad žiadosti:

Je ľahké vidieť analógy sekcií štandardných pre SQL dotazy - SELECT, FROM, GROUP BY, ORDER BY.

Dotazovací jazyk zároveň obsahuje značné množstvo rozšírení zameraných na reflektovanie špecifík finančných a ekonomických problémov a na maximalizáciu zníženia úsilia pri vývoji aplikačných riešení:

  • Prístup k poliam pomocou bodky. Ak sú polia tabuľky referenčného typu (ukladajú odkazy na objekty inej tabuľky), vývojár na ne môže odkazovať v texte požiadavky cez „.“ a systém neobmedzuje počet úrovní vnorenia. takýchto odkazov (napríklad Objednávka zákazníka. Dohoda. Organizácia. Telefón).
  • Viacrozmerná a viacúrovňová tvorba výsledkov. Súčty a medzisúčty sa tvoria s prihliadnutím na zoskupenie a hierarchiu, úrovne možno prechádzať v ľubovoľnom poradí so sčítavaním a je zabezpečená správna konštrukcia súčtov podľa časových dimenzií.
  • Podpora virtuálnych tabuliek. Virtuálne tabuľky poskytované systémom umožňujú získať takmer hotové dáta pre väčšinu úloh aplikácie bez potreby vytvárania zložitých dotazov. Virtuálna tabuľka teda môže poskytnúť údaje o zostatkoch produktov podľa období v určitom časovom bode. Virtuálne tabuľky zároveň maximálne využívajú uložené informácie, napríklad predtým vypočítané súčty atď.
  • Dočasné stoly. Jazyk dotazu vám umožňuje používať dočasné tabuľky v dotazoch. S ich pomocou môžete zlepšiť výkon dotazu, v niektorých prípadoch znížiť počet blokovaní a uľahčiť čítanie textu dotazu.
  • Dávkové požiadavky. Aby bola práca s dočasnými tabuľkami pohodlnejšia, dotazovací jazyk podporuje prácu s dávkovými dotazmi – teda vytvorenie dočasnej tabuľky a jej použitie sú umiestnené v jednom dotaze. Dávková požiadavka je postupnosť požiadaviek oddelených bodkočiarkou (";"). Požiadavky v dávke sa vykonávajú jedna po druhej. Výsledkom vykonania dávkovej požiadavky bude v závislosti od použitej metódy buď výsledok vrátený poslednou požiadavkou v dávke, alebo pole výsledkov zo všetkých dopytov v dávke v poradí, v akom nasledujú dopyty v dávke. .
  • Získavanie reprezentácií referenčných polí. Každá tabuľka objektov (v ktorej je uložený adresár alebo dokument) má virtuálne pole - „Zobraziť“. Toto pole obsahuje textovú reprezentáciu objektu a uľahčuje tvorcovi zostavy prácu. V prípade dokladu teda toto pole obsahuje všetky kľúčové informácie - názov typu dokladu, jeho číslo a dátum (napríklad „Predaj 000000003 od 07.06.2017 17:49:14“), čím sa vývojár ukladá z písanie vypočítaného poľa.
  • atď.
Mechanizmus požiadavky automaticky upravuje požiadavku s prihliadnutím na roly, ku ktorým patrí používateľ, v mene ktorého sa požiadavka vykonáva (t. j. používateľ uvidí iba údaje, ktoré má právo vidieť) a funkčné možnosti (t. j. v súlade s s tými, ktoré sú nakonfigurované vo funkcionalite riešenia aplikácie).

Existujú aj špeciálne rozšírenia dopytovacieho jazyka pre systémy riadenia prístupu. Rozšírenie sa vykonáva pomocou špeciálnych syntaktických inštrukcií uzavretých v zložených zátvorkách a umiestnených priamo v tele požiadavky. Pomocou rozšírení vývojár určuje, aké operácie bude môcť koncový používateľ vykonávať pri prispôsobovaní zostavy.

Napríklad:

  • VYBERTE SI. Táto veta popisuje polia, ktoré bude môcť používateľ vybrať na výstup. Po tomto kľúčovom slove sú uvedené aliasy polí z hlavného výberového zoznamu dotazov, ktoré budú dostupné na konfiguráciu, oddelené čiarkami. Príklad: (VYBRAŤ položku, sklad)
  • KDE. Sú popísané polia, na ktoré môže používateľ použiť výber. Tento návrh používa polia tabuľky. Použitie aliasov polí zoznamu výberu nie je povolené. Každá časť zväzku môže obsahovať svoj vlastný prvok WHERE. Príklady: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
  • atď.
Príklad použitia rozšírení:

Data Composition Expression Language

Data Composition Expression Language je určený na písanie výrazov používaných najmä na opis výrazov vlastných polí. SKD vám umožňuje definovať vlastné polia v zostave pomocou vlastných výrazov alebo množín možností s podmienkami pre ich výber (podobne ako CASE v SQL). Vlastné polia sú podobné ako vypočítavané polia. Dajú sa nastaviť v konfigurátore aj v režime 1C:Enterprise, ale funkcie bežných modulov nie je možné použiť vo výrazoch vlastných polí. Preto sú vlastné polia určené skôr pre používateľa ako pre vývojára.

Príklad:

Proces vytvárania správy o systéme kontroly prístupu

Pri vytváraní prehľadu musíme vytvoriť rozloženie, ktoré definuje, ako sa budú údaje v prehľade zobrazovať. Rozloženie môžete vytvoriť na základe diagramu rozloženia údajov. Diagram rozloženia údajov popisuje podstatu údajov, ktoré sa poskytujú do zostavy (odkiaľ získať údaje a ako možno riadiť ich rozloženie). Schéma zloženia údajov je základom, na ktorom je možné generovať všetky druhy správ. Schéma zloženia údajov môže obsahovať:
  • vyžiadaný text s pokynmi pre systém skladania údajov;
  • popis viacerých súborov údajov;
  • podrobný popis dostupných polí;
  • popis vzťahov medzi viacerými súbormi údajov;
  • popis parametrov získavania údajov;
  • popis usporiadania polí a zoskupení;
  • atď.

Môžete napríklad pridať dotaz do schémy zloženia údajov ako množinu údajov a zavolať konštruktor dotazu, ktorý vám umožní graficky vytvoriť dotaz ľubovoľnej zložitosti:

Výsledkom spustenia návrhára dotazov bude text dotazu (v dotazovacom jazyku 1C:Enterprise). Tento text je možné v prípade potreby upraviť ručne:

V schéme usporiadania údajov môže byť niekoľko množín údajov, množiny údajov môžu byť v rozložení ľubovoľným spôsobom prepojené, môžu sa pridávať vypočítané polia, špecifikovať parametre zostavy atď. Za zmienku stojí zaujímavá funkcia mechanizmu dotazov v 1C:Enterprise. Dotazy sú nakoniec preložené do dialektu SQL špecifického pre DBMS, s ktorým aplikácia priamo pracuje. Vo všeobecnosti sa snažíme využívať možnosti DBMS serverov na maximum (obmedzuje nás fakt, že využívame len tie možnosti, ktoré sú súčasne dostupné vo všetkých DBMS podporovaných platformou 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL). Na úrovni dotazu vo vypočítavaných poliach teda môžeme použiť len tie funkcie, ktoré sú preložené do SQL.

Ale na úrovni schémy zloženia údajov už môžeme pridávať vlastné polia a používať v nich funkcie v zabudovanom vývojovom jazyku 1C (vrátane tých nami napísaných), čo značne rozširuje možnosti zostáv. Technicky to vyzerá takto - všetko, čo sa dá preložiť do SQL, sa preloží do SQL, dotaz sa vykoná na úrovni DBMS, výsledky dotazu sa uložia do pamäte aplikačného servera 1C a SKD vypočíta pre každý záznam hodnoty ​​výpočtových polí, ktorých vzorce sú napísané v jazyku 1C.


Pridanie vlastných polí

Do zostavy môžete pridať ľubovoľný počet tabuliek a grafov:


Návrhár správ


Prehľad spustenia

Pomocou SKD môže používateľ do zostavy pridať komplexné výbery (ktoré budú pridané do požiadavky na správnych miestach), podmienený dizajn (umožňujúci rôzne formátovanie zobrazených polí - písmom, farbou atď. v závislosti od ich hodnôt). ) a oveľa viac. .

Proces vytvárania a generovania správy možno stručne opísať takto:

  • Vývojár v čase návrhu s pomocou dizajnéra (alebo v režime runtime pomocou kódu) určuje schému rozloženia údajov:
    • Text žiadosti/žiadostí
    • Popis vypočítaných polí
    • Vzťahy medzi žiadosťami (ak ich existuje niekoľko)
    • Možnosti prehľadu
    • Predvolené nastavenia
    • Atď.
  • Vyššie uvedené nastavenia sú uložené v rozložení
  • Používateľ otvorí prehľad
    • Možno vykoná ďalšie nastavenia (napríklad zmení hodnoty parametrov)
    • Kliknite na tlačidlo „Generovať“.
  • Používateľské nastavenia sa aplikujú na schému zloženia údajov definovanú vývojárom.
  • Vytvorí sa prechodné usporiadanie údajov, ktoré obsahuje pokyny, odkiaľ sa majú údaje prijímať. Upravujú sa najmä dotazy uvedené v rozložení. Polia, ktoré nie sú použité v zostave, sú teda z požiadavky odstránené (to sa robí s cieľom minimalizovať množstvo prijatých údajov). Všetky polia, ktoré sa zúčastňujú vzorcov vypočítaných polí, sa pridajú do dotazu.
  • Do hry vstupuje procesor skladania údajov. Procesor rozloženia vykonáva dotazy, spája súbory údajov, vypočítava hodnoty pre vypočítané polia a zdroje a vykonáva zoskupovanie. Jedným slovom robí všetky výpočty, ktoré neboli vykonané na úrovni DBMS.
  • Procesor výstupu dát spustí požiadavku na vykonanie a zobrazí prijaté dáta v tabuľkovom dokumente, grafe atď.


Proces generovania správy pomocou mechanizmu ACS

Snažíme sa minimalizovať množstvo dát reportov prenášaných zo servera do klientskej aplikácie. Pri zobrazení údajov v tabuľkovom dokumente pri otvorení tabuľkového dokumentu prenášame zo servera len tie riadky, ktoré používateľ vidí na začiatku dokumentu. Keď sa používateľ pohybuje pozdĺž riadkov dokumentu, chýbajúce údaje sa stiahnu zo servera do klienta.

Vlastné nastavenia

Všetky nástroje ACS sú dostupné pre vývojárov aj koncových používateľov. Prax však ukázala, že koncový používateľ je často vystrašený množstvom možností nástroja. Navyše vo väčšine prípadov koncový používateľ nepotrebuje všetky možnosti nastavení - stačí mu rýchly prístup k nastaveniu jedného alebo dvoch parametrov prehľadu (napríklad obdobie a protistrana). Od určitej verzie platformy má vývojár zostavy možnosť označiť, ktoré nastavenia zostavy sú dostupné používateľovi. To sa vykonáva pomocou začiarkavacieho políčka „Zahrnúť do používateľských nastavení“. Nastavenia prehľadu majú teraz príznak „Režim zobrazenia“, ktorý má jednu z troch hodnôt:
  • Rýchly prístup. Nastavenie sa zobrazí priamo v hornej časti okna prehľadu.
  • Obyčajný. Nastavenie bude dostupné cez tlačidlo „Nastavenia“.
  • Nie je k dispozícií. Toto nastavenie nebude dostupné pre koncového používateľa.


Nastavenie režimu zobrazenia v čase návrhu


Zobrazte nastavenie v režime rýchleho prístupu za behu (pod tlačidlom Generovať)

Rozvojové plány

Jednou z našich prioritných oblastí pri vývoji systémov kontroly prístupu je zjednodušenie používateľských nastavení. Naše skúsenosti ukazujú, že pre niektorých koncových používateľov je práca s používateľskými nastaveniami stále veľkým záväzkom. Berieme to do úvahy a pracujeme týmto smerom. V súlade s tým bude tiež pre vývojárov jednoduchšie pracovať so systémami kontroly prístupu, pretože Rovnako ako predtým chceme poskytnúť jediný nástroj na nastavenie prehľadov pre vývojárov aj koncových používateľov.

Správne používanie schémy zloženia údajov (DCS) vám umožňuje:

  • výrazne skrátiť čas potrebný na vypracovanie správy;
  • eliminovať potrebu vytvárať spravovaný obslužný program formulárov;
  • získajte krásny výsledok s možnosťou dodatočného prispôsobenia používateľom.

Nie všetci vývojári však maximálne využívajú možnosti schémy, pretože nie všetky jej nastavenia sú zrejmé a intuitívne. Najmä veľa ľudí vie, že v 1C SKD sú vypočítané polia, ale úplne nerozumejú rozsahu ich použitia a spôsobu práce s nimi.

Čo je vypočítané pole

Vo väčšine prípadov je zdrojom údajov v diagrame rozloženia dopyt. V zásade už v rámci samotného dotazu môžete použiť rôzne vzorce, konštrukcie a výrazy. Vzniká prirodzená otázka: prečo potrebujeme duplicitné funkcie?

Faktom je, že systém kontroly prístupu je niečo viac ako len zobrazenie výsledku dotazu, čo je jasne viditeľné z formulára na vytvorenie diagramu (obr. 1).

Vypočítané polia vám umožňujú vykonávať určité akcie s vygenerovanou množinou údajov:

  • Výstup poľa údajov prijatých požiadavkou do špecifickej bunky, kombinovaním niekoľkých riadkov do jedného;
  • Prístup k exportným funkciám všeobecného modulu;
  • Spustite rôzne výrazy dostupné pre jazyk rozloženia a použite špeciálne funkcie EvaluateExpression.

Poďme si prejsť tento zoznam.

Pole hodnôt v jednej bunke

Simulujme situáciu, keď je potrebné prijať všetky čísla príjmových dokladov pre protistranu v samostatnej bunke:


Preto sme v našej schéme vytvorili ďalšie pole výpočtu;


Ako vidíte z vyššie uvedeného príkladu, pri pridávaní a spracovaní vypočítaných polí nie sú žiadne ťažkosti. Použili sme dve funkcie: Array() a ConnectRows().

Pár slov o tom druhom. Okrem prvého parametra, ktorý označuje identifikátor poľa, hodnoty alebo hodnotu, je možné v ňom nastaviť ďalšie dva:

  1. Element Separator – označuje, ktorý znak oddelí jeden prvok poľa alebo jeden riadok tabuľky hodnôt od druhého (v našom prípade sme tento parameter vynechali a predvolene bol priradený zlom riadku);
  2. Oddeľovač stĺpcov – znak používaný na oddelenie stĺpcov tabuľky hodnôt (štandardne sa používa bodkočiarka).

Prístup k exportným funkciám spoločného modulu

Funkcie spoločného modulu môžu slúžiť ako zdroj údajov na vyplnenie vypočítaného poľa.

Niekoľko dôležitých bodov:

  • Funkcia musí byť exportovateľná;
  • Ak sa funkcia nachádza v spoločnom module s nastaveným atribútom „Global“, volá sa priamo menom, v opačnom prípade sa funkcia musí volať podľa schémy „Názov zdieľaného modulu“. "Názov funkcie, ktorá sa má volať."

Ako príklad použitia zoberieme rovnakú požiadavku na príjmové doklady a zobrazíme ju v samostatnom stĺpci. Nebudeme popisovať samotnú požiadavku, prejdime priamo k vypočítaným poliam:


Vidíme teda, že zo systému riadenia prístupu je možné inicializovať takmer akýkoľvek dátový procesor, čo výrazne rozširuje možnosti využitia schémy.

Rozloženie jazykových výrazov

Pomerne často v práci vývojára nastáva situácia, keď je potrebné zobraziť výsledok rozdelenia v poli ACS:

  1. Vypočítajte priemernú cenu položky;
  2. Všetky druhy záujmov;
  3. Výpočty priemerného zárobku atď.

Aby sa predišlo problémom, v týchto prípadoch je vhodné zadať do výpočtového poľa test na delenie 0.

Dá sa to urobiť pomocou konštrukcie „Voľba, kedy….Potom… Inak… Koniec“.

Na záver pár slov o celkom novej funkcii CalculateExpression(). S jeho pomocou môžete vypočítať najmä odchýlky v nákladoch medzi aktuálnym a predchádzajúcim riadkom, kumulatívny zostatok atď.

Povedzme, že môžete získať súčet dokumentov z predchádzajúceho riadku našej požiadavky zadaním hodnoty Vypočítať výraz ("súčet dokumentu", "predchádzajúci súčet") v poli "výraz".

Obsah
1 Jazyk výrazov systému skladania údajov
2 Doslovy
2.1 Reťazec
2.2 Počet
2.3 Dátum
2.4 Boolean
2.5 Význam
3 Operácie s číslami
3.1 unárny –
3.2 Unárne +
3.3 Binárne -
3.4 Binárne+
3.5 Práca
3.6 Rozdelenie
3.7 Zvyšok
4 operácie s reťazcami
4.1 Reťazenie (binárne +)
4.2 Podobné
5 Porovnávacie operácie
5.1 Rovnaké
5.2 Nerovnaké
5.3 Menej
5.4 Viac
5.5 Menšie alebo rovné
5.6 Väčšie alebo rovné
5.7 Prevádzka B
5.8 Činnosť kontroly prítomnosti hodnoty v súbore údajov
5.9 Činnosť kontroly hodnoty pre NULL
5.10 Operácia kontroly hodnoty pre NULL nerovnosť
6 Logické operácie
6.1 Prevádzka NIE
6.2 Prevádzka I
6.3 ALEBO prevádzka
7 Súhrnné funkcie
7.1 Suma
7.2 Množstvo
7.3 Počet rôznych
7.4 Maximálne
Minimálne 7,5
7,6 Priemer
8 Ďalšie operácie
8.1 Operácia SELECT
9 Pravidlá porovnávania dvoch hodnôt
10 Práca s hodnotou NULL
11 Operačné priority
12 Funkcie výrazového jazyka systému skladania údajov
12.1 Vypočítajte
12.2 Úroveň
12.3 Číslo v objednávke
12.4 Číslo v objednávke v zoskupení
12.5 Formát
12.6 Začiatok Obdobia
12.7 Koniec obdobia
12.8 AddToDate
12.9 Dátumový rozdiel
12.10 Podreťazec
12.11 Dĺžka čiary
12.12 Rok
12.13 štvrťrok
12.14 mesiac
12.15 Deň v roku
Deň 12.16
12.17 týždeň
12.18 Deň v týždni
12.19 hodina
12.20 minúta
12.21 sekunda
12.22 Expres
12.23 ÁnoNull
12.24 Funkcie spoločných modulov

Data Composition System Expression Language

Jazyk výrazov systému skladania údajov je určený na zapisovanie výrazov používaných v rôznych častiach systému.

Výrazy sa používajú v nasledujúcich podsystémoch:

  • diagram rozloženia údajov - na popis vypočítaných polí, súčtových polí, výrazov vzťahov atď.;
  • nastavenia rozloženia údajov – na popis vlastných výrazov polí;
  • rozloženie dát - na popis výrazov pre spájanie dátových množín, popis parametrov rozloženia a pod.

Doslovy

Výraz môže obsahovať literály. Možné sú nasledujúce typy literálov:

  • Linka;
  • číslo;
  • Dátum;
  • Boolean.

Linka

Reťazcový literál sa zapisuje znakmi „“, napríklad:

"Stringový doslov"


Ak potrebujete použiť znak „“ vo vnútri reťazcového literálu, mali by ste použiť dva takéto znaky.

Napríklad:

„Doslovné „“v úvodzovkách“““

číslo

Číslo sa zapisuje bez medzier, v desiatkovom formáte. Zlomková časť je oddelená symbolom "." Napríklad:

dátum

Dátumový literál sa zapisuje pomocou kľúčového literálu DATETIME. Za týmto kľúčovým slovom je v zátvorkách uvedený rok, mesiac, deň, hodiny, minúty, sekundy oddelené čiarkami. Časová špecifikácia sa nevyžaduje.

Napríklad:
DATETIME(1975, 1, 06) – 6. január 1975
DATETIME(2006, 12, 2, 23, 56, 57) – 2. december 2006, 23 hodín 56 minút 57 sekúnd, 23 hodín 56 minút 57 sekúnd

Boolean

Booleovské hodnoty možno zapísať pomocou literálov True (True), False (False).

Význam

Na špecifikovanie literálov iných typov (systémové enumerácie, preddefinované údaje) sa používa kľúčové slovo Hodnota, za ktorým nasleduje názov literálu v zátvorkách.
Hodnota (Typ účtu. Aktívne)

Operácie s číslami

Unary –

Táto operácia je určená na zmenu znamienka čísla na opačné. Napríklad:
- Predaj. Množstvo

Unárne +

Táto operácia nevykonáva s číslom žiadne akcie. Napríklad:
+Predaj.Množstvo

binárne -

Táto operácia je určená na výpočet rozdielu dvoch čísel. Napríklad:
RemainsAndTurnover.InitialRemainder – RemainsAndTurnover.FinalRemainder
RemainsAndTurnover.InitialRemaining – 100
400 – 357

Binárne +

Táto operácia je určená na výpočet súčtu dvoch čísel. Napríklad:
RemainsAndTurnover.InitialRemaining + RemainsAndTurnover.Turnover
RemainsAndTurnover.InitialRemaining + 100
400 + 357

Práca

Táto operácia je určená na výpočet súčinu dvoch čísel. Napríklad:
Nomenklatúra.Cena * 1.2
2 * 3.14

divízie

Táto operácia je určená na získanie výsledku delenia jedného operandu druhým. Napríklad:
Nomenklatúra.Cena / 1.2
2 / 3.14

Zvyšok divízie

Táto operácia je navrhnutá tak, aby získala zvyšok, keď je jeden operand delený druhým. Napríklad:
Nomenklatúra.Cena% 1.2
2 % 3.14

Reťazcové operácie

Reťazenie (binárne +)

Táto operácia je navrhnutá na zreťazenie dvoch reťazcov. Napríklad:
Nomenklatúra.Článok + “: ”+ Nomenklatúra.Názov

Páči sa mi to

Táto operácia skontroluje, či sa reťazec zhoduje s odovzdaným vzorom.

Hodnota operátora LIKE je TRUE, ak je hodnota<Выражения>vyhovuje vzoru a inak FALSE.

Nasledujúce znaky v<Строке_шаблона>majú iný význam ako iný znak v riadku:

  • % - percento: sekvencia obsahujúca nula alebo viac ľubovoľných znakov;
  • _ - podčiarkovník: jeden ľubovoľný znak;
  • […] - jeden alebo viac znakov v hranatých zátvorkách: jeden znak, ktorýkoľvek zo znakov uvedených v hranatých zátvorkách. Enumerácia môže obsahovať rozsahy, napríklad a-z, čo znamená ľubovoľný znak zahrnutý v rozsahu, vrátane koncov rozsahu;
  • [^...] - v hranatých zátvorkách ikona negácie nasledovaná jedným alebo viacerými znakmi: akýkoľvek znak okrem tých, ktoré sú uvedené za ikonou negácie;

Akýkoľvek iný symbol znamená sám seba a nenesie žiadnu dodatočnú záťaž. Ak jeden z uvedených znakov musí byť napísaný ako samotný, potom mu musí predchádzať<Спецсимвол>, špecifikované za kľúčovým slovom SPECIAL CHARACTER (ESCAPE).

Napríklad šablóna
„%ABV[abvg]\_abv%“ ŠPECIÁLNY CHARAKTER „\“

znamená podreťazec pozostávajúci zo sekvencie znakov: písmeno A; písmená B; písmená B; jedna číslica; jedno z písmen a, b, c alebo d; podčiarknuť; písmená a; písmená b; písmená v. Okrem toho môže byť táto sekvencia umiestnená od ľubovoľnej pozície v rade.

Porovnávacie operácie

Rovná sa

Táto operácia je určená na porovnanie dvoch operandov z hľadiska rovnosti. Napríklad:
Sales.Counterparty = Predaj.NomenklatúraHlavný dodávateľ

Nerovná sa

Táto operácia je určená na porovnanie dvoch operandov pre nerovnosť. Napríklad:
Predaj protistrany Hlavný dodávateľ

Menej

Táto operácia je určená na kontrolu, či je prvý operand menší ako druhý. Napríklad:
PredajAktuálna.Suma

Viac

Táto operácia je určená na kontrolu, či je prvý operand väčší ako druhý. Napríklad:
PredajAktualny.suma > Minuly predaj.Sum

Menej alebo rovnaké

Táto operácia je určená na kontrolu, či je prvý operand menší alebo rovný druhému. Napríklad:
PredajAktuálna.Suma

Viac alebo rovnaké

Táto operácia je určená na kontrolu, či je prvý operand väčší alebo rovný druhému. Napríklad:
PredajAktualna.Suma >=Suma minuleho predaja

Operácia B

Táto operácia skontroluje prítomnosť hodnoty v odovzdanom zozname hodnôt. Výsledok operácie bude True, ak sa nájde hodnota, alebo False v opačnom prípade. Napríklad:
Položka B (&Produkt1, &Produkt2)

Operácia kontroly prítomnosti hodnoty v súbore údajov

Operácia skontroluje prítomnosť hodnoty v špecifikovanom súbore údajov. Validačný súbor údajov musí obsahovať jedno pole. Napríklad:
Predaj protistrany

Operácia kontroly hodnoty pre NULL

Táto operácia vráti hodnotu True, ak je hodnota NULL. Napríklad:
Predaj. Protistrana JE NULL

Operácia kontroly hodnoty pre NULL nerovnosť

Táto operácia vráti hodnotu True, ak hodnota nie je NULL. Napríklad:
Predaj. Protistrana NIE JE NULL

Logické operácie

Logické operácie akceptujú výrazy typu Boolean ako operandy.

Operácia NIE

Operácia NOT vráti True, ak je jej operand False, a False, ak je jej operand True. Napríklad:
NIE Dokument.Príjemca = Dokument.Odosielateľ

Operácia I

Operácia AND vráti True, ak sú oba operandy True, a False, ak je jeden z operandov False. Napríklad:
Dokument. Príjemca = Dokument. Odosielateľ A Dokument. Príjemca = &Protistrana

ALEBO operácia

Operácia OR vráti True, ak je jeden z jej operandov True, a False, ak sú oba operandy False. Napríklad:
Dokument. Príjemca = Dokument. Odosielateľ ALEBO Dokument. Príjemca = &Protistrana

Súhrnné funkcie

Agregačné funkcie vykonávajú určitú akciu na množine údajov.

Sum

Agregačná funkcia Sum vypočítava súčet hodnôt výrazov, ktoré jej boli odovzdané ako argument pre všetky podrobné záznamy. Napríklad:
Suma(Sales.AmountTurnover)

Množstvo

Funkcia Count vypočíta počet hodnôt iných ako NULL. Napríklad:
Množstvo (Predaj. Protistrana)

Počet rôznych

Táto funkcia vypočíta počet odlišných hodnôt. Napríklad:
Množstvo (rôzne predaje. Protistrana)

Maximálne

Funkcia získa maximálnu hodnotu. Napríklad:
Maximum (Remaining.Quantity)

Minimum

Funkcia získa minimálnu hodnotu. Napríklad:
Minimum (Zvyšné množstvo)

Priemerná

Funkcia získa priemer hodnôt, ktoré nie sú NULL. Napríklad:
Priemer (Zvyšné množstvo)

Iné operácie

Operácia SELECT

Operácia Select je určená na výber jednej z niekoľkých hodnôt, keď sú splnené určité podmienky. Napríklad:
Vyberte Keď Čiastka > 1000, Potom Čiastka Inak 0 Koniec

Pravidlá porovnávania dvoch hodnôt

Ak sa typy porovnávaných hodnôt navzájom líšia, potom sa vzťahy medzi hodnotami určujú na základe priority typov:
NULL (najnižšia);
Boolean;
číslo;
Dátum;
Linka;
Referenčné typy

Vzťahy medzi rôznymi referenčnými typmi sú určené na základe referenčných čísel tabuliek zodpovedajúcich konkrétnemu typu.

Ak sú typy údajov rovnaké, hodnoty sa porovnávajú podľa nasledujúcich pravidiel:
pre booleovský typ je hodnota TRUE väčšia ako hodnota FALSE;
typ Číslo má obvyklé pravidlá porovnávania čísel;
pre typ Dátum sú skoršie dátumy menšie ako neskoršie;
pre typ String - porovnanie reťazcov v súlade so stanovenými národnými charakteristikami databázy;
referenčné typy sa porovnávajú na základe ich hodnôt (číslo záznamu atď.).

Práca s hodnotou NULL

Každá operácia, v ktorej je jeden z operandov NULL, vytvorí výsledok NULL.

Existujú výnimky:
Operácia AND vráti hodnotu NULL iba vtedy, ak žiadny z operandov nie je False;
Operácia OR vráti hodnotu NULL iba vtedy, ak žiadny z jej operandov nie je pravdivý.

Operačné priority

Operácie majú nasledujúce priority (prvý riadok má najnižšiu prioritu):
OR;
AND;
NIE;
B, JE NULL, NIE JE NULL;
=, <>, <=, <, >=, >;
Binárne +, Binárne – ;
*, /, %;
Unary +, Unary -.

Zloženie údajov Funkcie jazyka výrazov systému

Vypočítajte

Funkcia Vypočítať je určená na výpočet výrazu v kontexte určitého zoskupenia. Funkcia má nasledujúce parametre:
Výraz. Zadajte reťazec. Obsahuje vypočítaný výraz;
Zoskupovanie. Zadajte reťazec. Obsahuje názov zoskupenia, v kontexte ktorého sa má výraz vyhodnotiť. Ak sa ako názov zoskupenia použije prázdny reťazec, výpočet sa vykoná v kontexte aktuálneho zoskupenia. Ak sa ako názov skupiny použije reťazec GrandTotal, výpočet sa vykoná v kontexte celkového súčtu. V opačnom prípade sa výpočet vykoná v kontexte nadradenej skupiny s rovnakým názvom. Napríklad:
Súčet(Predaj.SúčetTurnover) / Vypočítať("Súčet(Predaj.SumTurnover)", "Celkom")

V tomto príklade bude výsledkom pomer sumy pre pole „Sales.AmountTurnover“ záznamu zoskupenia k sume rovnakého poľa v celom rozložení.

úroveň

Funkcia je určená na získanie aktuálnej úrovne nahrávania.

Príklad:
úroveň()

NumberInOrder

Získajte ďalšie poradové číslo.

Príklad:
NumberByOrder()

NumberInOrderInGrouping

Vráti ďalšie poradové číslo v aktuálnom zoskupení.

Príklad:
NumberByOrderInGroup()

Formátovať

Získajte naformátovaný reťazec odovzdanej hodnoty.

Formátovací reťazec je nastavený v súlade s formátovacím reťazcom 1C:Enterprise.

Možnosti:
Význam;
Formátovať reťazec.

Príklad:
Format (Consumable Invoices.Doc Amount, "NPV=2")

Začiatok obdobia

Možnosti:

    • minúta;
    • deň;
    • Týždeň;
    • mesiac;
    • štvrťrok;
    • desaťročie;
    • Polrok.

Príklad:
StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Mesiac")

výsledok:

01.10.2002 0:00:00

Koniec obdobia

Funkcia je navrhnutá tak, aby extrahovala konkrétny dátum z daného dátumu.

Možnosti:

  • Dátum. Typ Dátum. Určený dátum;
  • Typ obdobia. Zadajte reťazec. Obsahuje jednu z nasledujúcich hodnôt:
    • minúta;
    • deň;
    • Týždeň;
    • mesiac;
    • štvrťrok;
    • desaťročie;
    • Polrok.

Príklad:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Týždeň")

výsledok:

13.10.2002 23:59:59

AddToDate

Funkcia je navrhnutá tak, aby k dátumu pridala určitú hodnotu.

Možnosti:

  • Typ zväčšenia. Zadajte reťazec. Obsahuje jednu z hodnôt:
    • minúta;
    • deň;
    • Týždeň;
    • mesiac;
    • štvrťrok;
    • desaťročie;
    • Polrok.
Suma – o koľko potrebujete zvýšiť dátum. Typ Číslo. Zlomková časť sa ignoruje.

Príklad:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mesiac", 1)

výsledok:

12.11.2002 10:15:34

Dátum rozdielu

Funkcia je navrhnutá tak, aby získala rozdiel medzi dvoma dátumami.

Možnosti:

  • Výraz. Typ Dátum. Pôvodný dátum;
  • Výraz. Typ Dátum. Odpočítaný dátum;
  • Typ rozdielu. Zadajte reťazec. Obsahuje jednu z hodnôt:
    • Po druhé;
    • minúta;
    • deň;
    • mesiac;
    • štvrťrok;

Príklad:
DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06); "DAY")

výsledok:

Podreťazec

Táto funkcia je navrhnutá na extrahovanie podreťazca z reťazca.

Možnosti:

  • Linka. Zadajte reťazec. Reťazec, z ktorého sa extrahuje podreťazec;
  • pozícia. Typ Číslo. Pozícia znaku, od ktorej začína podreťazec, ktorý sa má z reťazca extrahovať;
  • Dĺžka. Typ Číslo. Dĺžka prideleného podreťazca.

Príklad:
SUBSTRING(Accounts.Address, 1, 4)

Dĺžka riadku

Funkcia je určená na určenie dĺžky reťazca.

Parameter:
Linka. Zadajte reťazec. Reťazec, ktorého dĺžka je špecifikovaná.

Príklad:
Riadok (Protistrany.Adresa)

Táto funkcia je navrhnutá tak, aby extrahovala rok z hodnoty typu Dátum.

Parameter:
Dátum. Typ Dátum. Dátum, do ktorého je určený rok.

ROK(výdavky.dátum)

Štvrťrok

Táto funkcia je navrhnutá tak, aby extrahovala štvrťročné číslo z hodnoty typu Dátum. Číslo štvrťroka sa zvyčajne pohybuje od 1 do 4.

Parameter
Dátum. Typ Dátum. Dátum, do ktorého je určený štvrťrok

ŠTVRŤ(výdavok.dátum)

mesiac

Táto funkcia je navrhnutá na extrahovanie čísla mesiaca z hodnoty typu Dátum. Číslo mesiaca sa zvyčajne pohybuje od 1 do 12.
Dátum. Typ Dátum. Dátum, do ktorého je určený mesiac.
MESIAC(výdavky.dátum)

deň v roku

Táto funkcia je navrhnutá na získanie dňa v roku z hodnoty typu Dátum. Deň v roku sa zvyčajne pohybuje od 1 do 365 (366).
Dátum. Typ Dátum. Dátum, ktorým sa určuje deň v roku.
DAYYEAR(ExpenseAccount.Date)

deň

Táto funkcia je navrhnutá na získanie dňa v mesiaci z hodnoty typu Dátum. Deň v mesiaci sa zvyčajne pohybuje od 1 do 31.
Dátum. Typ Dátum. Dátum, ktorým sa určuje deň v mesiaci.
DAY(Dátum výdavkov)

Týždeň

Táto funkcia je určená na získanie čísla týždňa v roku z hodnoty typu Dátum. Týždne v roku sú očíslované od 1.
Dátum. Typ Dátum. Dátum, podľa ktorého sa určujú čísla týždňov.
WEEK(Dátum výdajov)

Deň v týždni

Táto funkcia je navrhnutá na získanie dňa v týždni z hodnoty typu Dátum. Bežný deň v týždni sa pohybuje od 1 (pondelok) do 7 (nedeľa).
Dátum. Typ Dátum. Dátum, podľa ktorého sa určuje deň v týždni.
DEŇ TÝŽDŇA (dátum faktúry výdavkov)

Táto funkcia je navrhnutá na získanie hodiny dňa z hodnoty typu Dátum. Hodina dňa sa pohybuje od 0 do 23.
Dátum. Typ Dátum. Dátum, podľa ktorého je určená hodina dňa.
HODINA (Výdavok. Dátum)

Minúta

Táto funkcia je navrhnutá na získanie minúty v hodine z hodnoty typu Dátum. Minúta hodiny sa pohybuje od 0 do 59.
Dátum. Typ Dátum. Dátum, podľa ktorého je určená minúta hodiny.
MINUTE(dátum.výdavku)

Po druhé

Táto funkcia je navrhnutá na získanie sekundy minúty z hodnoty typu Dátum. Sekunda minúty je v rozsahu od 0 do 59.
Dátum. Typ Dátum. Dátum, podľa ktorého sa určujú sekundy minúty.
DRUHÝ(dátum.výdavku)

expresné

Táto funkcia je navrhnutá tak, aby extrahovala typ z výrazu, ktorý môže obsahovať zložený typ. Ak výraz obsahuje iný než požadovaný typ, vráti sa NULL.

Možnosti:
Výraz na konverziu;
Označenie typu. Zadajte reťazec. Obsahuje reťazec typu. Napríklad "Číslo", "Reťazec" atď. Okrem primitívnych typov môže tento riadok obsahovať názov tabuľky. V tomto prípade sa pokúsime vyjadriť odkaz na zadanú tabuľku.

Príklad:
Express(Data.Props1, "Number(10;3)")

IsNull

Táto funkcia vráti hodnotu druhého parametra, ak je hodnota prvého parametra NULL.

V opačnom prípade sa vráti hodnota prvého parametra.

Príklad:
ÁnoNULL(Suma(Sales.AmountTurnover), 0)

Funkcie bežných modulov

Výraz mechanizmu na zostavovanie údajov môže obsahovať volania funkcií globálnych spoločných konfiguračných modulov. Na volanie takýchto funkcií nie je potrebná žiadna ďalšia syntax.

Príklad:
Skrátený názov (Documents.Link, Documents.Date, Documents.Number)

V tomto príklade bude funkcia "AbbreviatedName" volaná z modulu všeobecnej konfigurácie.

Všimnite si, že používanie spoločných funkcií modulu je povolené len vtedy, ak je špecifikovaný príslušný parameter procesora zloženia údajov.

Okrem toho funkcie bežných modulov nemožno použiť vo výrazoch vlastných polí.

[pre zobrazenie odkazu sa musíte zaregistrovať]

Data Composition System Expression Language

Jazyk výrazov systému skladania údajov je určený na zapisovanie výrazov používaných v rôznych častiach systému.

Výrazy sa používajú v nasledujúcich podsystémoch:

  • diagram rozloženia údajov - na popis vypočítaných polí, súčtových polí, výrazov vzťahov atď.;
  • nastavenia rozloženia údajov – na popis vlastných výrazov polí;
  • rozloženie dát - na popis výrazov pre spájanie dátových množín, popis parametrov rozloženia a pod.

Doslovy

Výraz môže obsahovať literály. Možné sú nasledujúce typy literálov:

  • Linka;
  • číslo;
  • Dátum;
  • Boolean.

Linka

Reťazcový literál sa zapisuje znakmi „“, napríklad:

"Stringový doslov"

Ak potrebujete použiť znak „“ vo vnútri reťazcového literálu, mali by ste použiť dva takéto znaky.

Napríklad:

„Doslovné „“v úvodzovkách“““

číslo

Číslo sa zapisuje bez medzier, v desiatkovom formáte. Zlomková časť je oddelená symbolom "." Napríklad:

10.5 200

dátum

Dátumový literál sa zapisuje pomocou kľúčového literálu DATETIME. Za týmto kľúčovým slovom je v zátvorkách uvedený rok, mesiac, deň, hodiny, minúty, sekundy oddelené čiarkami. Časová špecifikácia sa nevyžaduje.

Napríklad:

DATETIME(1975, 1, 06) – 6. január 1975 DATETIME(2006, 12, 2, 23, 56, 57) – 2. december 2006, 23 hodín 56 minút 57 sekúnd, 23 hodín 56 minút 57 sekúnd

Boolean

Booleovské hodnoty možno zapísať pomocou literálov True (True), False (False).

Význam

Na špecifikovanie literálov iných typov (systémové enumerácie, preddefinované údaje) sa používa kľúčové slovo Hodnota, za ktorým nasleduje názov literálu v zátvorkách.

Hodnota (Typ účtu. Aktívne)

Operácie s číslami

Unary –

Táto operácia je určená na zmenu znamienka čísla na opačné. Napríklad:

Predaj. Množstvo

Unárne +

Táto operácia nevykonáva s číslom žiadne akcie. Napríklad:

Predaj. Množstvo

binárne -

Táto operácia je určená na výpočet rozdielu dvoch čísel. Napríklad:

ResidualsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining – 100 400 – 357

Binárne +

Táto operácia je určená na výpočet súčtu dvoch čísel. Napríklad:

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResiduesAndTurnover.InitialRemaining + 100 400 + 357

Práca

Táto operácia je určená na výpočet súčinu dvoch čísel. Napríklad:

Nomenklatúra.Cena * 1,2 2 * 3,14

divízie

Táto operácia je určená na získanie výsledku delenia jedného operandu druhým. Napríklad:

Nomenklatúra.Cena / 1,2 2 / 3,14

Zvyšok divízie

Táto operácia je navrhnutá tak, aby získala zvyšok, keď je jeden operand delený druhým. Napríklad:

Nomenklatúra % 1,2 2 % 3.14

Reťazcové operácie

Reťazenie (binárne +)

Táto operácia je navrhnutá na zreťazenie dvoch reťazcov. Napríklad:

Nomenklatúra.Článok + “: ”+ Nomenklatúra.Názov

Páči sa mi to

Táto operácia skontroluje, či sa reťazec zhoduje s odovzdaným vzorom.

Hodnota operátora LIKE je TRUE, ak je hodnota<Выражения>vyhovuje vzoru a inak FALSE.

Nasledujúce znaky v<Строке_шаблона>majú iný význam ako iný znak v riadku:

  • % - percento: sekvencia obsahujúca nula alebo viac ľubovoľných znakov;
  • _ - podčiarkovník: jeden ľubovoľný znak;
  • […] - jeden alebo viac znakov v hranatých zátvorkách: jeden znak, ktorýkoľvek zo znakov uvedených v hranatých zátvorkách. Enumerácia môže obsahovať rozsahy, napríklad a-z, čo znamená ľubovoľný znak zahrnutý v rozsahu, vrátane koncov rozsahu;
  • [^...] - v hranatých zátvorkách ikona negácie nasledovaná jedným alebo viacerými znakmi: akýkoľvek znak okrem tých, ktoré sú uvedené za ikonou negácie;

Akýkoľvek iný symbol znamená sám seba a nenesie žiadnu dodatočnú záťaž. Ak jeden z uvedených znakov musí byť napísaný ako samotný, potom mu musí predchádzať<Спецсимвол>, špecifikované za kľúčovým slovom SPECIAL CHARACTER (ESCAPE).

Napríklad šablóna

„%ABV[abvg]\_abv%“ ŠPECIÁLNY CHARAKTER „\“

znamená podreťazec pozostávajúci zo sekvencie znakov: písmeno A; písmená B; písmená B; jedna číslica; jedno z písmen a, b, c alebo d; podčiarknuť; písmená a; písmená b; písmená v. Okrem toho môže byť táto sekvencia umiestnená od ľubovoľnej pozície v rade.

Porovnávacie operácie

Rovná sa

Táto operácia je navrhnutá na porovnanie dvoch operandov na dosiahnutie rovnosti. Napríklad:

Sales.Counterparty = Predaj.NomenklatúraHlavnýdodávateľ

Nerovná sa

Táto operácia je navrhnutá na porovnanie dvoch operandov pre nerovnosť. Napríklad:

Predaj.Protistrana<>Predaj.NomenklatúraHlavnýdodávateľ

Menej

Táto operácia je určená na kontrolu, či je prvý operand menší ako druhý. Napríklad:

PredajAktuálna.Suma< ПродажиПрошлые.Сумма

Viac

Táto operácia je určená na kontrolu, či je prvý operand väčší ako druhý. Napríklad:

PredajAktuálny.súčet >Minulý predaj.Súčet

Menej alebo rovnaké

Táto operácia je určená na kontrolu, či je prvý operand menší alebo rovný druhému. Napríklad:

PredajAktuálna.Suma<= ПродажиПрошлые.Сумма

Viac alebo rovnaké

Táto operácia je určená na kontrolu, či je prvý operand väčší alebo rovný druhému. Napríklad:

TržbyAktuálna.Suma >=Minulá.Suma predaja

Operácia B

Táto operácia skontroluje prítomnosť hodnoty v odovzdanom zozname hodnôt. Výsledok operácie bude True, ak sa nájde hodnota, alebo False v opačnom prípade. Napríklad:

Položka B (&Produkt1, &Produkt2)

Operácia kontroly prítomnosti hodnoty v súbore údajov

Operácia skontroluje prítomnosť hodnoty v špecifikovanom súbore údajov. Validačný súbor údajov musí obsahovať jedno pole. Napríklad:

Predaj protistrany

Operácia kontroly hodnoty pre NULL

Táto operácia vráti hodnotu True, ak je hodnota NULL. Napríklad:

Predaj. Protistrana JE NULL

Operácia kontroly hodnoty pre NULL nerovnosť

Táto operácia vráti hodnotu True, ak hodnota nie je NULL. Napríklad:

Predaj. Protistrana NIE JE NULL

Logické operácie

Logické operácie akceptujú výrazy typu Boolean ako operandy.

Operácia NIE

Operácia NOT vráti True, ak je jej operand False, a False, ak je jej operand True. Napríklad:

NIE Dokument.Príjemca = Dokument.Odosielateľ

Operácia I

Operácia AND vráti True, ak sú oba operandy True, a False, ak je jeden z operandov False. Napríklad:

Dokument. Príjemca = Dokument. Odosielateľ A Dokument. Príjemca = &Protistrana

ALEBO operácia

Operácia OR vráti True, ak je jeden z jej operandov True, a False, ak sú oba operandy False. Napríklad:

Dokument. Príjemca = Dokument. Odosielateľ ALEBO Dokument. Príjemca = &Protistrana

Súhrnné funkcie

Agregačné funkcie vykonávajú určitú akciu na množine údajov.

Sum

Agregačná funkcia Sum vypočítava súčet hodnôt výrazov, ktoré jej boli odovzdané ako argument pre všetky podrobné záznamy. Napríklad:

Suma(Sales.AmountTurnover)

Množstvo

Funkcia Count vypočíta počet hodnôt iných ako NULL. Napríklad:

Množstvo (Predaj. Protistrana)

Počet rôznych

Táto funkcia vypočíta počet odlišných hodnôt. Napríklad:

Množstvo (rôzne predaje. Protistrana)

Maximálne

Funkcia získa maximálnu hodnotu. Napríklad:

Maximum (Remaining.Quantity)

Minimum

Funkcia získa minimálnu hodnotu. Napríklad:

Minimum (Zvyšné množstvo)

Priemerná

Funkcia získa priemer hodnôt, ktoré nie sú NULL. Napríklad:

Priemer (Zvyšné množstvo)

Iné operácie

Operácia SELECT

Operácia Select je určená na výber jednej z niekoľkých hodnôt, keď sú splnené určité podmienky. Napríklad:

Vyberte Keď Čiastka > 1000, Potom Čiastka Inak 0 Koniec

Pravidlá porovnávania dvoch hodnôt

Ak sa typy porovnávaných hodnôt navzájom líšia, potom sa vzťahy medzi hodnotami určujú na základe priority typov:

  • NULL (najnižšia);
  • Boolean;
  • číslo;
  • Dátum;
  • Linka;
  • Referenčné typy

Vzťahy medzi rôznymi referenčnými typmi sú určené na základe referenčných čísel tabuliek zodpovedajúcich konkrétnemu typu.

Ak sú typy údajov rovnaké, hodnoty sa porovnajú podľa nasledujúcich pravidiel:

  • pre booleovský typ je hodnota TRUE väčšia ako hodnota FALSE;
  • typ Číslo má obvyklé pravidlá porovnávania čísel;
  • pre typ Dátum sú skoršie dátumy menšie ako neskoršie;
  • pre typ String - porovnanie reťazcov v súlade so stanovenými národnými charakteristikami databázy;
  • referenčné typy sa porovnávajú na základe ich hodnôt (číslo záznamu atď.).

Práca s hodnotou NULL

Akákoľvek operácia, v ktorej je jeden z operandov NULL, vytvorí výsledok NULL.

Existujú výnimky:

  • Operácia AND vráti hodnotu NULL iba vtedy, ak žiadny z operandov nie je False;
  • Operácia OR vráti hodnotu NULL iba vtedy, ak žiadny z jej operandov nie je pravdivý.

Operačné priority

Operácie majú nasledujúce priority (prvý riadok má najnižšiu prioritu):

  • B, JE NULL, NIE JE NULL;
  • =, <>, <=, <, >=, >;
  • Binárne +, Binárne – ;
  • *, /, %;
  • Unary +, Unary -.

Zloženie údajov Funkcie jazyka výrazov systému

Vypočítajte

Funkcia Vypočítať je určená na výpočet výrazu v kontexte určitého zoskupenia. Funkcia má nasledujúce parametre:

  • Výraz. Zadajte reťazec. Obsahuje vypočítaný výraz;
  • Zoskupovanie. Zadajte reťazec. Obsahuje názov zoskupenia, v kontexte ktorého sa má výraz vyhodnotiť. Ak sa ako názov zoskupenia použije prázdny reťazec, výpočet sa vykoná v kontexte aktuálneho zoskupenia. Ak sa ako názov skupiny použije reťazec GrandTotal, výpočet sa vykoná v kontexte celkového súčtu. V opačnom prípade sa výpočet vykoná v kontexte nadradenej skupiny s rovnakým názvom. Napríklad:
Súčet(Predaj.SúčetTurnover) / Vypočítať("Súčet(Predaj.SumTurnover)", "Celkom")

V tomto príklade bude výsledkom pomer sumy pre pole „Predaj.SumaTurnover“ záznamu zoskupenia k sume rovnakého poľa v celom rozložení.

úroveň

Funkcia je určená na získanie aktuálnej úrovne nahrávania.

úroveň()

NumberInOrder

Získajte ďalšie poradové číslo.

NumberByOrder()

NumberInOrderInGrouping

Vráti ďalšie poradové číslo v aktuálnom zoskupení.

NumberByOrderInGroup()

Formátovať

Získajte naformátovaný reťazec odovzdanej hodnoty.

Formátovací reťazec je nastavený v súlade s formátovacím reťazcom 1C:Enterprise.

Možnosti:

  • Význam;
  • Formátovať reťazec.

Format (Consumable Invoices.Doc Amount, "NPV=2")

Začiatok obdobia

Možnosti:

    • minúta;
    • deň;
    • Týždeň;
    • mesiac;
    • štvrťrok;
    • desaťročie;
    • Polrok.

StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Mesiac")

výsledok:

01.10.2002 0:00:00

Koniec obdobia

Funkcia je navrhnutá tak, aby extrahovala konkrétny dátum z daného dátumu.

Možnosti:

  • Dátum. Typ Dátum. Určený dátum;
  • Typ obdobia. Zadajte reťazec. Obsahuje jednu z nasledujúcich hodnôt:
    • minúta;
    • deň;
    • Týždeň;
    • mesiac;
    • štvrťrok;
    • desaťročie;
    • Polrok.

EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Týždeň")

výsledok:

13.10.2002 23:59:59

AddToDate

Funkcia je navrhnutá tak, aby k dátumu pridala určitú hodnotu.

Možnosti:

  • Typ zväčšenia. Zadajte reťazec. Obsahuje jednu z nasledujúcich hodnôt:
    • minúta;
    • deň;
    • Týždeň;
    • mesiac;
    • štvrťrok;
    • desaťročie;
    • Polrok.
  • Suma – o koľko potrebujete zvýšiť dátum. Typ Číslo. Zlomková časť sa ignoruje.

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

výsledok:

12.11.2002 10:15:34

Dátum rozdielu

Funkcia je navrhnutá tak, aby získala rozdiel medzi dvoma dátumami.

Možnosti:

  • Výraz. Typ Dátum. Pôvodný dátum;
  • Výraz. Typ Dátum. Odpočítaný dátum;
  • Typ rozdielu. Zadajte reťazec. Obsahuje jednu z nasledujúcich hodnôt:
    • Po druhé;
    • minúta;
    • deň;
    • mesiac;
    • štvrťrok;

DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06); "DAY")

výsledok:

Podreťazec

Táto funkcia je navrhnutá na extrahovanie podreťazca z reťazca.

Možnosti:

  • Linka. Zadajte reťazec. Reťazec, z ktorého sa extrahuje podreťazec;
  • pozícia. Typ Číslo. Pozícia znaku, od ktorej začína podreťazec, ktorý sa má z reťazca extrahovať;
  • Dĺžka. Typ Číslo. Dĺžka prideleného podreťazca.

SUBSTRING(Accounts.Address, 1, 4)

Dĺžka riadku

Funkcia je určená na určenie dĺžky reťazca.

Parameter:

  • Linka. Zadajte reťazec. Reťazec, ktorého dĺžka je špecifikovaná.

Riadok (Protistrany.Adresa)

rok

Táto funkcia je navrhnutá tak, aby extrahovala rok z hodnoty typu Dátum.

Parameter:

  • Dátum. Typ Dátum. Dátum, do ktorého je určený rok.

ROK(výdavky.dátum)

Štvrťrok

Táto funkcia je navrhnutá tak, aby extrahovala štvrťročné číslo z hodnoty typu Dátum. Číslo štvrťroka sa zvyčajne pohybuje od 1 do 4.

Parameter

  • Dátum. Typ Dátum. Dátum, do ktorého je určený štvrťrok
ŠTVRŤ(výdavok.dátum)

mesiac

Táto funkcia je navrhnutá na extrahovanie čísla mesiaca z hodnoty typu Dátum. Číslo mesiaca sa zvyčajne pohybuje od 1 do 12.

  • Dátum. Typ Dátum. Dátum, do ktorého je určený mesiac.
MESIAC(výdavky.dátum)

deň v roku

Táto funkcia je navrhnutá na získanie dňa v roku z hodnoty typu Dátum. Deň v roku sa zvyčajne pohybuje od 1 do 365 (366).

  • Dátum. Typ Dátum. Dátum, ktorým sa určuje deň v roku.
DAYYEAR(ExpenseAccount.Date)

deň

Táto funkcia je navrhnutá na získanie dňa v mesiaci z hodnoty typu Dátum. Deň v mesiaci sa zvyčajne pohybuje od 1 do 31.

  • Dátum. Typ Dátum. Dátum, ktorým sa určuje deň v mesiaci.
DAY(Dátum výdavkov)

Týždeň

Táto funkcia je určená na získanie čísla týždňa v roku z hodnoty typu Dátum. Týždne v roku sú očíslované od 1.

  • Dátum. Typ Dátum. Dátum, podľa ktorého sa určujú čísla týždňov.
WEEK(Dátum výdajov)

Deň v týždni

Táto funkcia je navrhnutá na získanie dňa v týždni z hodnoty typu Dátum. Bežný deň v týždni sa pohybuje od 1 (pondelok) do 7 (nedeľa).

  • Dátum. Typ Dátum. Dátum, podľa ktorého sa určuje deň v týždni.
DEŇ TÝŽDŇA (dátum faktúry výdavkov)

hodina

Táto funkcia je navrhnutá na získanie hodiny dňa z hodnoty typu Dátum. Hodina dňa sa pohybuje od 0 do 23.

  • Dátum. Typ Dátum. Dátum, podľa ktorého je určená hodina dňa.
HODINA (Výdavok. Dátum)

Minúta

Táto funkcia je navrhnutá na získanie minúty v hodine z hodnoty typu Dátum. Minúta hodiny sa pohybuje od 0 do 59.

  • Dátum. Typ Dátum. Dátum, podľa ktorého sa určuje minúta hodiny.
MINUTE(dátum.výdavku)

Po druhé

Táto funkcia je navrhnutá na získanie sekundy minúty z hodnoty typu Dátum. Sekunda minúty je v rozsahu od 0 do 59.

  • Dátum. Typ Dátum. Dátum, podľa ktorého sa určujú sekundy minúty.
DRUHÝ(dátum.výdavku)

expresné

Táto funkcia je navrhnutá tak, aby extrahovala typ z výrazu, ktorý môže obsahovať zložený typ. Ak výraz obsahuje iný než požadovaný typ, vráti sa NULL.

Možnosti:

  • Výraz na konverziu;
  • Označenie typu. Zadajte reťazec. Obsahuje reťazec typu. Napríklad "Číslo", "Reťazec" atď. Okrem primitívnych typov môže tento riadok obsahovať názov tabuľky. V tomto prípade sa pokúsime vyjadriť odkaz na zadanú tabuľku.

Express(Data.Props1, "Number(10;3)")

IsNull

Táto funkcia vráti hodnotu druhého parametra, ak je hodnota prvého parametra NULL.

V opačnom prípade sa vráti hodnota prvého parametra.

ÁnoNULL(Suma(Sales.AmountTurnover), 0)

Funkcie bežných modulov

Výraz mechanizmu na zostavovanie údajov môže obsahovať volania funkcií globálnych spoločných konfiguračných modulov. Na volanie takýchto funkcií nie je potrebná žiadna ďalšia syntax.

V tomto príklade bude funkcia "AbbreviatedName" volaná z modulu všeobecnej konfigurácie.

Všimnite si, že používanie spoločných funkcií modulu je povolené len vtedy, ak je špecifikovaný príslušný parameter procesora zloženia údajov.

Okrem toho funkcie bežných modulov nemožno použiť vo výrazoch vlastných polí.