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:- Jeden alebo viacero dotazov bolo napísaných v dotazovacom jazyku 1C (jazyk podobný SQL, viac o ňom nižšie).
- 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.
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ď.
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ď.
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:
- 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);
- 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:
- Vypočítajte priemernú cenu položky;
- Všetky druhy záujmov;
- 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.
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:
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
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.
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.
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.
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.
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.
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.
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.
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.
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í.