• Výraz reprezentace SKD. Data Composition System Expression Language (1Cv8). Pole hodnot v jedné buňce

    Ve světle nadcházejícího vydání 8.2.14 se pokusím popsat některé nové funkce systému skládání dat.

    Otevřete diagram rozložení dat, nejlépe v externí zprávě, abyste si usnadnili úpravy.

    Přidáme datovou sadu typu dotazu a zapíšeme, buď ručně, nebo pomocí návrháře dotazů, jednoduchý dotaz:

    1. Nastavte požadavek v systému řízení přístupu.

    2. Nastavte vypočítaná pole v systému řízení přístupu

    3. Nakonfigurujte rozložení dat na kartě nastavení

    4. Spusťte 1C Enterprise 8.2.14. Otevřete sestavu. Tvoříme, přijímáme.

    Popis samotných nových funkcí:

    1. Aktuální datum ()

    Vrátí systémové datum. Při sestavování rozvržení je ve všech výrazech, které jsou v rozvržení přítomné, funkce CurrentDate() nahrazena hodnotou aktuálního data.

    2. COMPUTEEXPRESSION()

    Syntax:

    CalculateExpression(,)

    Popis:

    Funkce je navržena tak, aby vyhodnotila výraz v kontextu nějakého seskupení.

    Funkce zohledňuje výběr seskupení, ale nebere v úvahu hierarchické výběry.

    Funkci nelze použít na seskupení ve výběru skupiny tohoto seskupení. Například při výběru seskupení Nomenklatura nemůžete použít výraz CalculateExpression("Součet(součetObrat)", "TotalTotal") > 1000. Ale takový výraz lze použít v hierarchickém výběru.

    Pokud koncový záznam předchází počátečnímu záznamu, má se za to, že neexistují žádné záznamy pro výpočet podrobných dat a výpočet agregačních funkcí.

    Při výpočtu intervalových výrazů pro celkový součet (parametr Grouping je nastaven na GrandTotal) se předpokládá, že neexistují žádné záznamy pro výpočet podrobných dat a výpočet agregačních funkcí.

    Layout linker při generování výrazu funkce CalculateExpression, pokud objednávkový výraz obsahuje pole, která nelze použít při seskupování, nahradí funkci CalculateExpression na NULA.

    Možnosti

    Typ: Čára. Výraz, který má být vyhodnocen.

    Typ: Čára. Obsahuje název seskupení, v jehož kontextu má být výraz vyhodnocen. Pokud je jako název seskupení použit prázdný řetězec, výpočet bude proveden v kontextu aktuálního seskupení. Pokud je jako název skupiny použit řetězec GeneralTotal, výpočet bude proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení se stejným názvem.

    Například:

    Součet(prodej.SoučetObrat)/Vypočítat("Součet(Prodej.SoučetObrat)", "Celkem")

    V tomto příkladu bude výsledkem poměr součtu podle polí Prodej. ČástkaObratu seskupování záznamů na součet stejného pole v celém rozložení;

    Typ: Čára. Parametr může nabývat následujících hodnot:

    · celkový součet— výraz bude vypočítán pro všechny záznamy seskupení.

    · Hierarchie— výraz bude vyhodnocen pro nadřazený hierarchický záznam, pokud existuje, a pro celé seskupení, pokud žádný nadřazený hierarchický záznam neexistuje.

    · Seskupování— výraz bude vyhodnocen pro aktuální záznam seskupení skupiny.

    · SeskupeníNonResource— při výpočtu funkce pro záznam skupiny podle zdrojů bude výraz vypočítán pro první záznam skupiny původního seskupení.

    Při výpočtu funkce CalculateExpression() se smyslem SeskupeníNonResource u skupinových záznamů, které nejsou seskupeny podle zdrojů, se funkce vypočítá stejným způsobem, jako by se vypočítala, kdyby se hodnota parametru rovnala hodnotě Seskupování.

    Tvůrce rozvržení kompozice dat při generování rozložení kompozice dat při výstupu pole zdroje, podle kterého se provádí seskupování do rozvržení, umístí do rozvržení výraz, který se vypočítá pomocí funkce CalculateExpression() , označující parametr SeskupeníNonResource. U ostatních zdrojů jsou obvyklé výrazy prostředků umístěny do seskupení prostředků.

    Typ: Čára. Označuje, ze kterého záznamu by měl fragment začínat, ve kterých agregačních výrazových funkcích by se měly vypočítat a ze kterého záznamu získat hodnoty polí mimo agregační funkce. Hodnota může být jedna z následujících:

    · První

    · Poslední (poslední)

    · Předchozí

    · Další (Další)

    · Aktuální

    · LimitingValue(Hodnota hranice) LimitingValue

    Typ: Čára. Označuje, do kterého záznamu by měl fragment pokračovat, ve kterém by se měly vypočítat agregační funkce výrazu. Hodnota může být jedna z následujících:

    · První. Je nutné získat první záznam o seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako posun od začátku seskupení. Výsledná hodnota musí být celé číslo větší než nula. Například First(3) - příjem třetího záznamu od začátku seskupení.

    Pokud je první záznam mimo seskupení, má se za to, že neexistují žádné záznamy. Pokud například existují 3 záznamy a chcete získat První(4), má se za to, že neexistují žádné záznamy.

    · Poslední (poslední). Musíte získat poslední záznam seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako posun od konce seskupení. Výsledná hodnota musí být celé číslo větší než nula. Například Last(3) - příjem třetího záznamu od konce skupiny.

    Pokud je poslední záznam mimo seskupení, má se za to, že neexistují žádné záznamy. Pokud například existují 3 záznamy a chcete získat Last(4), má se za to, že neexistují žádné záznamy.

    · Předchozí. Musíte získat předchozí záznam seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako zpětný posun od aktuálního záznamu seskupení. Například Předchozí(2) - získání předchozího z předchozího záznamu.

    Pokud předchozí záznam přesahuje seskupení (například pro druhý záznam seskupení potřebujete získat Předchozí(3)), získá se první záznam seskupení.

    Při načítání předchozího záznamu pro součet seskupení se má za to, že je získán první záznam.

    · Další (Další). Musíte získat další záznam seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako posun vpřed od aktuální položky seskupení. Například Next(2) - získání dalšího z dalšího záznamu.

    Pokud další záznam přesahuje seskupení, má se za to, že neexistují žádné záznamy. Pokud jsou například 3 položky a třetí položka obdrží Next() , má se za to, že neexistují žádné položky.

    Když je přijat další záznam pro celkový součet seskupení, má se za to, že neexistuje žádný záznam.

    · Aktuální. Musíte získat aktuální záznam.

    Při načítání celkového součtu seskupení se získá první záznam.

    · LimitingValue(Hodnota hranice). Potřeba získat záznam o zadané hodnotě. Po slově LimitingValue v hranatých závorkách musíte uvést výraz, jehož hodnotou chcete začít fragment, první pole řazení.

    Jako záznam bude vrácen první záznam, jehož hodnota pole řazení je větší nebo rovna zadané hodnotě. Pokud je například pole Období použito jako pole pro objednávání a má hodnoty 01/01/2010, 02/01/2010, 03/01/2010 a chcete získat LimitingValue(DateTime(2010, 1, 15)), pak bude přijat záznam s datem 02.01.2010.

    Typ: Čára. Uvádí výrazy, oddělené čárkami, které popisují pravidla řazení. Pokud není zadáno, pak se řazení provádí stejným způsobem jako u seskupení, pro které se výraz vyhodnocuje. Za každým výrazem můžete zadat klíčové slovo Stáří(pro vzestupnou objednávku), Klesající(pro objednání v sestupném pořadí) a Automatická objednávka(chcete-li seřadit referenční pole podle polí, podle kterých chcete seřadit odkazovaný objekt). Slovo Automatická objednávka lze použít jako se slovem Stáří, tak se slovem Klesající.

    Typ: Čára. Stejné jako parametr Řazení. Používá se k uspořádání hierarchických záznamů. Pokud není zadáno, tvůrce rozvržení vygeneruje pořadí podle pořadí zadaného v parametru Řazení.

    Typ: Čára. Určuje pravidlo pro určení předchozího nebo dalšího záznamu v případě, že existuje několik záznamů se stejnou hodnotou řazení:

    · Odděleně označuje, že k určení předchozích a následujících záznamů se používá sekvence uspořádaných záznamů. Výchozí hodnota.

    · Spolu označuje, že předchozí a následující záznamy jsou určeny na základě hodnot objednávkových výrazů.

    Pokud je například výsledná sekvence seřazena podle data:

    datum Celé jméno Význam
    1 1. ledna 2001

    Ivanov M.

    10
    2 2. ledna 2001 Petrov S. 20
    3 3. ledna 2001 Sidorov R. 30
    4 4. ledna 2001 Petrov S. 40

    Odděleně, Že:

    § předchozí záznam k záznamu 3 bude záznam 2.

    Aktuální, aktuální(podle toho parametry Start A Konec), pak pro záznam 2 bude tento fragment sestávat z jednoho záznamu 2. Výraz bude roven 20.

    Pokud je hodnota parametru Spolu, Že:

    § předchozí záznam k záznamu 3 bude záznam 1.

    § pokud je fragment výpočtu definován jako Aktuální, aktuální(podle toho parametry Start A Konec), pak pro záznam 2 bude tento fragment sestávat ze záznamů 2 a 3. Výraz CalculateExpression("Součet(hodnota)", Aktuální, Aktuální) se bude rovnat 50.

    Při zadávání hodnoty parametru rovné Spolu, v parametrech Start A Konec nemůžete určit posun pro pozice První, Poslední, Předchozí, Další.

    CalculateExpression("Sum(sumTurnover)", "First", "Current")

    Pokud chcete získat hodnotu seskupení v předchozím řádku, můžete použít následující výraz:

    CalculateExpression("Sazba", "Předchozí")

    Seznam Nový funkce:

    CalculateExpressionWithGroupArray(,) -

    Funkce vrací pole, jehož každý prvek obsahuje výsledek vyhodnocení výrazu pro seskupení podle zadaného pole.

    CalculateExpressionWithGroupValueTable(,) -

    Funkce vrací tabulku hodnot, jejíž každý řádek obsahuje výsledek vyhodnocení výrazů pro seskupení podle zadaného pole

    ValueFilled() - Vrátí True, pokud je hodnota jiná než výchozí hodnota tohoto typu, jiná než NULL, jiná než prázdná reference, jiná než Nedefinováno. Booleovské hodnoty jsou kontrolovány na hodnoty NULL. Řetězce jsou kontrolovány na nepřítomnost znaků, které nejsou prázdné

    Formát(, ) - Příjem formátovaného řetězce předané hodnoty. Formátovací řetězec je nastaven v souladu s formátovacím řetězcem systému 1C:Enterprise.

    Podřetězec(, , ) - Tato funkce je navržena k extrahování podřetězce z řetězce.

    Délka čáry() - Funkce je určena k určení délky řetězce. Parametr je řetězcový výraz

    Čára() - Pokud je jako parametr předáno pole, funkce vrátí řetězec obsahující řetězcové reprezentace všech prvků pole, oddělené znaky ";". Pokud je jako parametr předána tabulka hodnot, funkce vrátí řetězec obsahující řetězcové reprezentace všech řádků tabulky hodnot, přičemž reprezentace buněk každého řádku jsou odděleny znaky „;“ a řádky novým řádkem. charakter. Pokud je řetězcová reprezentace prvku prázdná, pak se místo jeho reprezentace zobrazí řetězec.

    Jednou z nejdůležitějších oblastí podnikového softwaru je reporting. Osud podniku může záviset (a ne v přeneseném slova smyslu!) na tom, jak snadné je přizpůsobit stávající výkaz měnícím se potřebám podniku (a legislativy) nebo vytvořit nový, ať už je to výkaz pro finanční úřad. nebo diagram závislosti poptávky po zboží na sezóně a dalších faktorech . Výkonný a flexibilní systém hlášení, který usnadňuje extrahovat potřebná data ze systému, prezentovat je ve srozumitelné formě, což koncovému uživateli umožňuje překonfigurovat standardní hlášení, aby viděl data v novém světle – to je ideální, obchodní systém by se měl snažit.

    V platformě 1C:Enterprise je za generování zpráv zodpovědný mechanismus zvaný „Systém skládání dat“ (zkráceně DCS). V tomto článku se pokusíme stručně popsat myšlenku a architekturu mechanismu ACS a jeho schopnosti.


    ACS je mechanismus založený na deklarativním popisu zpráv. Systém kontroly přístupu je určen pro generování reportů a pro zobrazování informací s komplexní strukturou. Mimochodem, kromě vývoje sestav se mechanismus ACS používá také v 1C:Enterprise v dynamickém seznamu, nástroji pro zobrazování informací o seznamech s bohatou funkčností (zobrazení plochých a hierarchických seznamů, podmíněný návrh řádků, seskupení atd. ).

    Trocha historie

    V úplně první verzi platformy 1C:Enterprise 8, verze 8.0, byly zprávy vytvořeny takto:
    1. Jeden nebo více dotazů bylo napsáno v dotazovacím jazyce 1C (jazyk podobný SQL, více o něm níže).
    2. Byl napsán kód, který přenesl výsledky provedených dotazů do tabulkového dokumentu nebo grafu. Kód mohl také provádět práci, kterou nebylo možné provést v dotazu - například vypočítal hodnoty pomocí vestavěného jazyka 1C.
    Přístup je přímočarý, ale ne nejpohodlnější – vizuální nastavení je minimální, vše se musí naprogramovat „z ruky do ruky“. A jedním z tehdejších trumfů zcela nové platformy „1C:Enterprise 8“ byla minimalizace v aplikačním řešení množství kódu, který bylo nutné psát ručně, zejména prostřednictvím vizuálního designu. Bylo by logické jít stejnou cestou v mechanismu podávání zpráv. To bylo provedeno vyvinutím nového mechanismu - systému skládání dat.

    Jednou z myšlenek, které tvořily základ systému kontroly přístupu, byla flexibilita a přizpůsobení reportů, které byly přístupné jak pro vývojáře, tak pro koncového uživatele. V ideálním případě bych chtěl poskytnout koncovému uživateli přístup ke stejné sadě nástrojů pro návrh sestav jako vývojář. Bylo by logické vytvořit jednotnou sadu nástrojů dostupných všem. Protože nástroje vyžadují účast koncového uživatele, znamená to, že používání programování v nich by mělo být omezeno na minimum (nejlépe je úplně odstranit) a měla by být použita vizuální nastavení na maximum.

    Formulace problému

    Úkolem vývojového týmu bylo vytvořit reportovací systém založený nikoli na algoritmu (tj. prostřednictvím psaní kódu), ale na deklarativním přístupu k vytváření reportů. A věříme, že problém byl úspěšně vyřešen. Podle našich zkušeností lze asi 80 % požadovaného reportingu implementovat pomocí ACS bez jediného řádku kódu (kromě psaní vzorců pro počítaná pole), většinou prostřednictvím vizuálního nastavení.
    Vývoj první verze SDS trval asi 5 osoboroků.

    Dva jazyky

    Při vytváření sestav se používají dva jazyky. Jedním z nich je dotazovací jazyk používaný k načítání dat. Druhým je jazyk výrazů skládání dat, určený pro psaní výrazů používaných v různých částech systému, například v nastavení skládání dat, k popisu výrazů uživatelských polí.

    Jazyk dotazu

    Dotazovací jazyk je založen na SQL a pro znalé SQL se snadno naučí. Příklad požadavku:

    Je snadné vidět analogy sekcí standardních pro SQL dotazy - SELECT, FROM, GROUP BY, ORDER BY.

    Dotazovací jazyk zároveň obsahuje značné množství rozšíření, jejichž cílem je reflektovat specifika finančních a ekonomických problémů a maximalizovat snížení úsilí o vývoj aplikačních řešení:

    • Přístup k polím pomocí tečky. Pokud jsou pole tabulky referenčního typu (ukládají odkazy na objekty jiné tabulky), může na ně vývojář odkazovat v textu požadavku pomocí „.“ a systém neomezuje počet úrovní vnoření. takových odkazů (například Objednávka zákazníka. Smlouva. Organizace. Telefon).
    • Vícerozměrné a víceúrovňové formování výsledků. Součty a mezisoučty jsou tvořeny s ohledem na seskupení a hierarchii, úrovně lze procházet v libovolném pořadí se sčítáním a je zajištěna správná konstrukce součtů podle časových dimenzí.
    • Podpora virtuálních stolů. Virtuální tabulky poskytované systémem umožňují získat téměř hotová data pro většinu aplikačních úloh bez nutnosti vytvářet složité dotazy. Virtuální tabulka tak může poskytovat data o zůstatcích produktů podle období v určitém časovém okamžiku. Virtuální tabulky zároveň maximálně využívají uložené informace, například dříve vypočítané součty atd.
    • Dočasné tabulky. Dotazovací jazyk umožňuje používat v dotazech dočasné tabulky. S jejich pomocí můžete zlepšit výkon dotazu, v některých případech snížit počet blokování a usnadnit čtení textu dotazu.
    • Dávkové požadavky. Aby byla práce s dočasnými tabulkami pohodlnější, dotazovací jazyk podporuje práci s dávkovými dotazy – vytvoření dočasné tabulky a její použití je tedy umístěno do jednoho dotazu. Dávkový požadavek je posloupnost požadavků oddělených středníkem (";"). Požadavky v dávce jsou prováděny jeden po druhém. Výsledkem provedení dávkového požadavku bude v závislosti na použité metodě buď výsledek vrácený posledním požadavkem v dávce, nebo pole výsledků ze všech dotazů v dávce v pořadí, v jakém následují dotazy v dávce. .
    • Získávání reprezentací referenčních polí. Každá tabulka objektů (ve které je uložena referenční kniha nebo dokument) má virtuální pole – „View“. Toto pole obsahuje textovou reprezentaci objektu a usnadňuje tvůrci sestavy práci. V případě dokumentu tedy toto pole obsahuje všechny klíčové informace - název typu dokumentu, jeho číslo a datum (například „Prodej 000000003 od 07/06/2017 17:49:14“), čímž se vývojář ukládá z psaní vypočítaného pole.
    • atd.
    Mechanismus požadavku automaticky upravuje požadavek s přihlédnutím k rolím, do kterých uživatel, v jehož zastoupení je požadavek realizován (tj. uživatel uvidí pouze data, která má právo vidět), a funkčním možnostem (tj. s těmi, které jsou konfigurovány ve funkcionalitě řešení aplikace).

    Existují také speciální rozšíření dotazovacího jazyka pro systémy řízení přístupu. Rozšíření se provádí pomocí speciálních syntaktických instrukcí uzavřených ve složených závorkách a umístěných přímo v těle požadavku. Pomocí rozšíření vývojář určuje, jaké operace bude moci koncový uživatel provádět při přizpůsobení sestavy.

    Například:

    • VYBRAT. Tato věta popisuje pole, která bude uživatel moci vybrat pro výstup. Za tímto klíčovým slovem jsou uvedeny aliasy polí z hlavního výběrového seznamu dotazů, které budou dostupné pro konfiguraci, oddělené čárkami. Příklad: (VYBRAT položku, sklad)
    • KDE. Jsou popsána pole, na která může uživatel použít výběr. Tento návrh používá pole tabulky. Použití aliasů polí výběrového seznamu není povoleno. Každá část sjednocení může obsahovat vlastní prvek WHERE. Příklady: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • atd.
    Příklad použití rozšíření:

    Data Composition Expression Language

    Data Composition Expression Language je určen k psaní výrazů používaných zejména k popisu výrazů vlastních polí. SKD umožňuje definovat uživatelská pole v sestavě buď pomocí vlastních výrazů, nebo sad voleb s podmínkami pro jejich výběr (analogicky jako CASE v SQL). Vlastní pole jsou podobná počítaným polím. Lze je nastavit jak v konfigurátoru, tak v režimu 1C:Enterprise, ale funkce běžných modulů nelze použít ve výrazech vlastních polí. Vlastní pole jsou proto určena spíše pro uživatele než pro vývojáře.

    Příklad:

    Proces vytváření zprávy o systému kontroly přístupu

    Při vytváření sestavy musíme vytvořit rozložení, které definuje, jak se budou data v sestavě zobrazovat. Rozvržení můžete vytvořit na základě diagramu rozvržení dat. Diagram rozložení dat popisuje podstatu dat, která jsou poskytována do sestavy (odkud data získat a jak můžete ovládat jejich rozložení). Schéma složení dat je základem, na kterém lze generovat všechny druhy zpráv. Schéma složení dat může obsahovat:
    • text požadavku s pokyny pro systém skládání dat;
    • popis více sad dat;
    • podrobný popis dostupných polí;
    • popis vztahů mezi více datovými soubory;
    • popis parametrů sběru dat;
    • popis rozložení a seskupení polí;
    • atd.

    Můžete například přidat dotaz do schématu kompozice dat jako sadu dat a zavolat konstruktor dotazu, který vám umožní graficky vytvořit dotaz libovolné složitosti:

    Výsledkem spuštění návrháře dotazů bude text dotazu (v dotazovacím jazyce 1C:Enterprise). Tento text lze v případě potřeby upravit ručně:

    Ve schématu rozvržení dat může být několik datových sad, datové sady lze v rozvržení jakkoli propojit, lze přidávat počítaná pole, specifikovat parametry sestavy atd. Za zmínku stojí zajímavá funkce mechanismu dotazů v 1C:Enterprise. Dotazy jsou nakonec přeloženy do dialektu SQL specifického pro DBMS, se kterým aplikace přímo pracuje. Obecně se snažíme maximálně využít možnosti DBMS serverů (jsme limitováni tím, že využíváme pouze ty schopnosti, které jsou současně dostupné ve všech DBMS podporovaných platformou 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL). Na úrovni dotazu ve výpočtových polích tedy můžeme použít pouze ty funkce, které jsou přeloženy do SQL.

    Ale na úrovni schématu skládání dat již můžeme přidávat vlastní pole a používat v nich funkce ve vestavěném vývojovém jazyce 1C (včetně těch námi napsaných), což značně rozšiřuje možnosti sestav. Technicky to vypadá takto - vše, co lze přeložit do SQL, se přeloží do SQL, dotaz se provede na úrovni DBMS, výsledky dotazu se uloží do paměti aplikačního serveru 1C a SKD vypočítá pro každý záznam hodnoty ​​výpočtových polí, jejichž vzorce jsou napsány v jazyce 1C.


    Přidání vlastních polí

    Do sestavy můžete přidat libovolný počet tabulek a grafů:


    Návrhář sestav


    Přehled za běhu

    Pomocí SKD může uživatel do sestavy přidávat složité výběry (které budou přidány do požadavku na správná místa), podmíněný design (umožňující různé formátování zobrazených polí - písmem, barvou atd. v závislosti na jejich hodnotách). ) a mnohem víc. .

    Proces vytváření a generování zprávy lze stručně popsat takto:

    • Vývojář v době návrhu s pomocí návrháře (nebo za běhu pomocí kódu) určuje schéma rozložení dat:
      • Text žádosti/požadavků
      • Popis počítaných polí
      • Vztahy mezi požadavky (pokud jich je několik)
      • Možnosti přehledu
      • Výchozí nastavení
      • Atd.
    • Výše uvedená nastavení jsou uložena v rozložení
    • Uživatel otevře přehled
      • Možná provádí další nastavení (například mění hodnoty parametrů)
      • Klikněte na tlačítko „Generovat“.
    • Uživatelská nastavení se použijí na schéma složení dat definované vývojářem.
    • Vytvoří se mezilehlé rozložení dat obsahující pokyny, odkud data přijímat. Upravují se zejména dotazy uvedené v rozložení. Pole, která nejsou v sestavě použita, jsou tedy z požadavku odstraněna (to se děje za účelem minimalizace množství přijatých dat). Do dotazu se přidají všechna pole, která se účastní vzorců vypočítaných polí.
    • Do hry vstupuje procesor skládání dat. Procesor rozložení provádí dotazy, propojuje datové sady, vypočítává hodnoty pro vypočítaná pole a zdroje a provádí seskupování. Stručně řečeno, provádí všechny výpočty, které nebyly provedeny na úrovni DBMS.
    • Procesor výstupu dat spustí požadavek na provedení a zobrazí přijatá data v tabulkovém dokumentu, grafu atd.


    Proces generování zprávy pomocí mechanismu ACS

    Snažíme se minimalizovat množství dat sestav přenášených ze serveru do klientské aplikace. Při zobrazení dat v tabulkovém dokumentu při otevírání tabulkového dokumentu přenášíme ze serveru pouze ty řádky, které uživatel vidí na začátku dokumentu. Když se uživatel pohybuje po řádcích dokumentu, chybějící data se stahují ze serveru do klienta.

    Vlastní nastavení

    Všechny nástroje ACS jsou dostupné jak pro vývojáře, tak pro koncového uživatele. Praxe však ukázala, že koncový uživatel je často zastrašen množstvím možností nástroje. Navíc ve většině případů koncový uživatel nepotřebuje veškerou sílu nastavení - stačí mu rychlý přístup k nastavení jednoho nebo dvou parametrů sestavy (například období a protistrana). Počínaje určitou verzí platformy má vývojář sestav možnost označit, která nastavení sestavy má uživatel k dispozici. To se provádí pomocí zaškrtávacího políčka „Zahrnout do uživatelského nastavení“. Nastavení přehledu má nyní také příznak „Režim zobrazení“, který nabývá jedné ze tří hodnot:
    • Rychlý přístup. Nastavení se zobrazí přímo v horní části okna sestavy.
    • Obyčejný. Nastavení bude dostupné přes tlačítko „Nastavení“.
    • Není dostupný. Nastavení nebude dostupné pro koncového uživatele.


    Nastavení režimu zobrazení v době návrhu


    Zobrazení nastavení v režimu rychlého přístupu za běhu (pod tlačítkem Generovat)

    Rozvojové plány

    Jednou z našich prioritních oblastí při vývoji systémů kontroly přístupu je zjednodušení uživatelského nastavení. Naše zkušenosti ukazují, že pro některé koncové uživatele je práce s uživatelským nastavením stále velkým počinem. Bereme to v úvahu a pracujeme tímto směrem. V souladu s tím bude také pro vývojáře jednodušší pracovat se systémy kontroly přístupu, protože Stejně jako dříve chceme poskytnout jediný nástroj pro nastavení přehledů pro vývojáře i koncového uživatele.

    1. Vypočítejte (vyhodnoťte)- je určen k vyhodnocení výrazu v kontextu nějakého seskupení. Funkce se používá pro kompatibilitu s předchozími verzemi platformy. Místo toho se doporučuje použít funkci CalculateExpression.

    Syntax:
    Vypočítat (výraz, seskupení, typ výpočtu)

    Možnosti :

    • Výraz(Čára). Obsahuje vypočítaný výraz;
    • Seskupování(Čára). Obsahuje název seskupení, v jehož kontextu má být výraz vyhodnocen. Pokud je jako název seskupení použit prázdný řetězec, výpočet bude proveden v kontextu aktuálního seskupení. Pokud je jako název skupiny použit řetězec GrandTotal, výpočet bude proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení se stejným názvem.
      Například:
      Součet(Prodej.SoučetObrat) / Spočítat("Součet(Prodej.SoučetObrat)", "Celkem").
      V tomto příkladu bude výsledkem poměr částky pro pole "Sales.AmountTurnover" záznamu seskupení k částce stejného pole v celém rozložení.
    • Typ výpočtu(Čára). Pokud je tento parametr nastaven na "TotalTotal", bude výraz vypočítán pro všechny záznamy seskupení. Pokud je hodnota parametru "Seskupení", budou hodnoty vypočteny pro aktuální záznam skupiny seskupení.
    2. Vyhodnoťte výraz (EvalExpression) - je určen k vyhodnocení výrazu v kontextu nějakého seskupení. Funkce zohledňuje výběr seskupení, ale nebere v úvahu hierarchické výběry. Funkci nelze použít na seskupení ve výběru skupiny tohoto seskupení.

    Syntax:
    CalculateExpression(Výraz, Seskupení, Typ výpočtu, Začátek, Konec, Seřadit, Hierarchické řazení, ProcessingIdenticalOrderValues)

    Možnosti :

    • Výraz(Čára). Obsahuje vypočítaný výraz;
    • Seskupování(Čára). Obsahuje název seskupení, v jehož kontextu má být výraz vyhodnocen. Pokud je jako název seskupení použit prázdný řetězec, výpočet bude proveden v kontextu aktuálního seskupení. Pokud je jako název skupiny použit řetězec GrandTotal, výpočet bude proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení s tímto názvem;
    • Typ výpočtu(Čára). Pokud je tento parametr nastaven na "TotalTotal", bude výraz vypočítán pro všechny záznamy seskupení. Pokud je hodnota parametru "Seskupení", budou hodnoty vypočteny pro aktuální záznam skupiny seskupení. Pokud je parametr nastaven na "Non-Resource Grouping", pak při výpočtu funkce pro záznam skupiny podle zdroje bude výraz vyhodnocen pro první záznam skupiny původního seskupení. Při vyhodnocení funkce CalculateExpression s hodnotou "GroupingNonResource" pro skupinové záznamy, které nejsou seskupení podle zdroje, je funkce vyhodnocena stejně, jako by byla vyhodnocena s hodnotou parametru "Grouping". Tvůrce rozložení kompozice dat při generování rozložení kompozice dat při výstupu pole - zdroje, pomocí kterého se seskupení provádí, do rozložení, vygeneruje do rozložení výraz vypočítaný pomocí funkce CalculateExpression se zadaným parametrem "GroupingNon-Resource". Pro ostatní prostředky seskupené podle prostředku jsou vráceny normální výrazy prostředků. Pokud je parametr nastaven na "Hierarchy", pak musí být výraz vyhodnocen pro nadřazený hierarchický záznam, pokud existuje, a pro celé seskupení, pokud žádný nadřazený hierarchický záznam neexistuje. Tvůrce rozložení při generování výrazu pro pole % ve skupině hierarchie vygeneruje výraz obsahující vztah výrazu zdroje k funkci CalculateExpression pro výraz zdroje, který se počítá pro aktuální seskupení s typem výpočtu Hierarchie.
    • Start. Označuje, ze kterého záznamu by měl fragment začínat, ve kterých agregačních výrazových funkcích by se měly vypočítat a ze kterého záznamu získat hodnoty polí mimo agregační funkce. Řetězec obsahující jeden z:
      • "První" Je nutné získat první záznam o seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako posun od začátku seskupení. Výsledná hodnota musí být celé číslo větší než nula. Například First(3) – příjem třetího záznamu od začátku seskupení. Pokud je první záznam mimo seskupení, má se za to, že neexistují žádné záznamy. Pokud například existují 3 záznamy a chcete získat První(4), má se za to, že neexistují žádné záznamy.
      • "Poslední" Musíte získat poslední záznam seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako posun od konce seskupení. Výsledná hodnota musí být celé číslo větší než nula. Například Last(3) – příjem třetího záznamu od konce skupiny. Pokud je poslední záznam mimo seskupení, má se za to, že neexistují žádné záznamy. Pokud například existují 3 záznamy a chcete získat Last(4), má se za to, že neexistují žádné záznamy.
      • "Předchozí" Musíte získat předchozí záznam seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako zpětný posun od aktuálního záznamu seskupení. Například Předchozí(2) – získání předchozího z předchozího záznamu. Pokud je předchozí záznam mimo seskupení (například druhý záznam seskupení vyžaduje získání Předchozí(3)), získá se první záznam seskupení. Při příjmu předchozího záznamu pro celkový součet seskupení se získá první záznam.
      • "Další" Musíte získat další záznam seskupení. Za slovem v závorkách můžete zadat výraz, jehož výsledek bude použit jako posun vpřed od aktuální položky seskupení. Například Next(2) – získání dalšího z dalšího záznamu. Pokud další záznam přesahuje seskupení, má se za to, že neexistují žádné záznamy. Pokud jsou například 3 položky a třetí položka obdrží Další, má se za to, že neexistují žádné položky. Když je přijat další záznam pro celkový součet seskupení, má se za to, že neexistuje žádný záznam.
      • "Aktuální". Musíte získat aktuální záznam. Při načítání celkového součtu seskupení se získá první záznam.
      • "Hodnota hranice". Potřeba získat záznam o zadané hodnotě. Za slovem LimitingValue v závorce musíte uvést výraz, jehož hodnotou chcete fragment začínat, první objednávkové pole. Jako záznam bude vrácen první záznam, jehož hodnota pole řazení je větší nebo rovna zadané hodnotě. Pokud je například pole Období použito jako pole pro objednávání a má hodnoty 01/01/2010, 02/01/2010, 03/01/2010 a chcete získat LimitingValue(DateTime(2010) , 1, 15)), pak bude získán záznam s datem 02/01. 2010.
    • Konec. Označuje, do kterého záznamu by měl fragment pokračovat, ve kterém by se měl vypočítat agregační výraz. Řetězec obsahující jeden z:
      • "První"
      • "Poslední"
      • "Předchozí"
      • "Další"
      • "Aktuální".
      • "Hodnota hranice".
    • Řazení. Řetězec, který uvádí výrazy oddělené čárkami, v jejichž směru má být sekvence uspořádána. Pokud není zadáno, pak se řazení provádí stejným způsobem jako u seskupení, pro které se výraz vyhodnocuje. Za každým výrazem můžete zadat klíčové slovo Vzestupně, pro řazení ve vzestupném pořadí, Sestupně, pro sestupné řazení, Automatické řazení, pro řazení referenčních polí podle polí, podle kterých chcete seřadit odkazovaný objekt. Slovo Auto Order lze použít jak se slovem Ascending, tak se slovem Descending.
    • Hierarchické řazení. Podobně jako u třídění. Používá se k uspořádání hierarchických záznamů. Pokud není zadáno, sestava rozvržení vygeneruje pořadí podle pořadí zadaného v parametru Sort.
    • Zpracování stejných hodnot objednávky. Řetězec obsahující jeden z:
      • "Společně" znamená, že k určení předchozích a následujících záznamů se používá sekvence uspořádaných záznamů;
      • "Odděleně" znamená, že předchozí a následující záznamy jsou určeny na základě hodnot objednávkových výrazů;
      Pokud je například výsledná sekvence seřazena podle data:
      1. ledna 2001 Ivanov M. 10
      2. ledna 2001 Petrov S. 20
      3. 2. ledna 2001 Sidorov R. 30
      4. ledna 03, 2001 Petrov S. 40
      Při použití zpracování identických hodnot objednávky "Odděleně" bude předchozí pro záznam 3 záznam 2 a při použití "Spolu" - záznam 1. A fragment pro aktuální záznam pro záznam 2 pro "Odděleně" bude záznam 2 a pro "Společně" - záznamy 2 a 3. Součet pro aktuální záznam pro "Odděleně" bude tedy 20 a pro "Společně" - 50. Když je v Start a Koncové parametry, nemůžete zadat posun pro pozice „První“, „Poslední“, „Předchozí“, „Další“. Výchozí hodnota je "Oddělit".
    Příklad:
    Získání poměru částky pro pole „Sales.AmountTurnover“ seskupovacího záznamu k částce ve stejném poli v celém rozvržení:
    Sum(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Total").

    Tento příklad vypočítá hodnotu aktuální hierarchie:
    Výběr
    Když Level() > 0
    Potom EvaluateExpression("Reference", "Hierarchie")
    Jinak Null
    Konec

    Poznámky:
    Funkce zohledňuje výběr seskupení, ale nebere v úvahu hierarchické výběry. Funkci nelze použít na seskupení ve výběru skupiny tohoto seskupení. Například při výběru seskupení Nomenklatura nemůžete použít výraz CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Ale takový výraz lze použít v hierarchickém výběru. Pokud koncový záznam předchází počátečnímu záznamu, má se za to, že neexistují žádné záznamy pro výpočet podrobných dat a výpočet agregačních funkcí. Při výpočtu intervalových výrazů pro celkový součet (parametr Grouping je nastaven na "GrossTotal") se předpokládá, že neexistují žádné záznamy pro výpočet podrobných dat a výpočet agregačních funkcí. Při generování výrazu pro funkci CalculateExpression nahradí sazeč rozvržení, pokud výraz řazení obsahuje pole, která nelze použít při seskupování, funkci CalculateExpression hodnotou NULL.

    3. Vyhodnoťte výraz s polem skupiny (EvalExpression s polem skupiny) - funkce vrací pole, jehož každý prvek obsahuje výsledek výpočtu výrazu pro seskupení podle zadaného pole.

    Syntax:
    CalculateExpressionWithGroupArray (výraz, GroupFieldExpressions, SelectRecords, SelectGroups)

    Možnosti :

    • Výraz(String) – výraz, který se má vyhodnotit. Například "Částka(ČástkaObrat)";
    • FieldExpressionsGroups
    • Výběr záznamů
    • Výběr seskupení- výběr aplikovaný na záznamy skupiny. Například: "Částka(ČástkaObrat) > &Parametr1".
    Příklad:
    Maximum(CalculateExpressionWithGroupArray("Částka(ČástkaTurnover)", "Protistrana"));


    Tvůrce rozvržení při generování výrazů pro zobrazení vlastního pole, jehož výraz obsahuje pouze funkci CalculateArrayWithGroup, generuje výraz zobrazení tak, aby data zobrazovaná pohledy a data byla uspořádána.
    Například pro vlastní pole s výrazem:
    CalculateExpressionWithGroupArray("Částka(ČástkaTurnover)", "Protistrana")
    Tvůrce rozložení vygeneruje pro výstup následující výraz:
    ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)), Amount (DataSet.AmountTurnover)", "DataSet.Account"), "2")))

    4. Výpočet výrazu pomocí GroupValueTable (EvalExpressionWithGroupValueTable) - funkce vrací tabulku hodnot, jejíž každý prvek obsahuje výsledek výpočtu výrazu pro seskupení podle zadaného pole.

    Syntax:
    CalculateExpressionWithGroupValueTable (výraz, výrazy pole skupiny, výběr záznamů, výběr skupiny)

    Možnosti :

    • Výraz(String) – výraz, který se má vyhodnotit. Řádek může obsahovat více výrazů oddělených čárkami. Za každým výrazem může být nepovinné klíčové slovo AS a název sloupce tabulky hodnot. Například: "Protistrana, částka (částka obratu) jako objem prodeje."
    • FieldExpressionsGroups- výrazy seskupení polí oddělené čárkami. Například "protistrana, strana";
    • Výběr záznamů- výraz aplikovaný na detailní záznamy. Například "Příznak odstranění = False." Pokud tento parametr používá agregační funkci, dojde při skládání dat k chybě;
    • Výběr seskupení- výběr aplikovaný na záznamy skupiny. Například: "Částka(ČástkaObrat) > &Parametr1".
    Příklad:
    Vypočítat výraz se seskupovací tabulkou hodnot ("účet jako protistrana, částka (obrat) jako objem prodeje", "účet")

    Výsledkem této funkce bude tabulka hodnot se sloupci Protistrana a Objem prodeje, která bude obsahovat protistrany s jejich objemy prodeje.
    Kompozitor rozvržení při generování rozvržení převádí parametry funkcí na pole rozvržení kompozice dat. Například pole Účet bude převedeno na DataSet.Account.
    Například vlastní pole s výrazem:
    CalculateExpressionWithGroupValueTable("účet, částka (částka obratu)", "účet")
    Tvůrce rozložení vygeneruje pro výstup následující výraz:
    ConnectRows(GetPart(Order(CalculateExpressionWithGroupValueTable)("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "ccount"),5Set. ), "2, 4"))

    5. Úroveň - funkce je navržena pro získání aktuální úrovně záznamu.

    Syntax:
    Úroveň()

    Příklad:
    Úroveň()

    6. SequenceNumber - získat další sériové číslo.

    Syntax:
    NumberByOrder()

    Příklad:
    NumberByOrder()

    7. SequenceNumberInGrouping - vrátí další pořadové číslo v aktuálním seskupení.

    Příklad:
    NumberByOrderInGroup()

    8. Formát - získat formátovaný řetězec předané hodnoty.

    Syntax:
    Formát (hodnota, řetězec formátu)

    Možnosti :

    • Význam- výraz, který je třeba formátovat;
    • FormatString- formátovací řetězec je nastaven v souladu s formátovacím řetězcem 1C:Enterprise.
    Příklad:
    Format (Consumable Invoices.Doc Amount, "NPV=2")

    9. BeginOfPeriod

    Syntax:
    StartPeriod(Datum, PeriodType)

    Možnosti :

    • datum(Datum). Specifikované datum;
    • Typ období
    Příklad:
    StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Month")
    Výsledek: 10/01/2002 0:00:00

    10. EndOfPeriod - funkce je určena k výběru konkrétního data z daného data.

    Syntax:
    EndPeriod (datum, typ období)

    Možnosti :

    • datum(Datum). Specifikované datum;
    • Typ období(Čára). Obsahuje jednu z následujících hodnot: Minuta; Hodina; Den; Týden; Měsíc; Čtvrťák; Rok; Desetiletí; Půl roku.
    Příklad:
    EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Týden")
    Výsledek: 13. 10. 2002 23:59:59

    11. AddKDate (DateAdd) - funkce je navržena tak, aby k datu přidala určitou hodnotu.

    Syntax:
    AddToDate (výraz, typ přírůstku, velikost)

    Možnosti :

    • Výraz(Datum). Původní datum;
    • Zvětšení typu(Čára). Obsahuje jednu z následujících hodnot: Minuta; Hodina; Den; Týden; Měsíc; Čtvrťák; Rok; Desetiletí; Půl roku.
    • Velikost(Číslo). O kolik je třeba datum zvýšit, zlomková část se ignoruje.
    Příklad:
    AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)
    Výsledek: 11. 12. 2002 10:15:34

    12. DateDifference - funkce je navržena tak, aby získala rozdíl mezi dvěma daty.

    Syntax:
    Datum rozdílu (Výraz1, Výraz2, Typ rozdílu)

    Možnosti :

    • Výraz1(Datum). Odečtené datum;
    • Výraz2(Datum). Původní datum;
    • Typový rozdíl(Čára). Obsahuje jednu z hodnot: Second; Minuta; Hodina; Den; Měsíc; Čtvrťák; Rok.
    Příklad:
    DATEDIFFERENCE(DATETIME(2002; 10; 12; 10; 15; 34);
    DATETIME(2002, 10, 14, 9, 18, 06); "DEN")
    Výsledek: 2

    13. Podřetězec - tato funkce je navržena k extrahování podřetězce z řetězce.

    Syntax:
    Podřetězec (řetězec, pozice, délka)

    Možnosti :

    • Čára(Čára). Řetězec, ze kterého je podřetězec extrahován;
    • Pozice(Číslo). Pozice znaku, od které začíná podřetězec, který má být z řetězce extrahován;
    • Délka(Číslo). Délka přiděleného podřetězce.
    Příklad:
    SUBSTRING(Accounts.Address, 1, 4)

    14. Délka řetězce - funkce je určena k určení délky řetězce.

    Syntax:
    StringLength (String)

    Parametr :

    • Čára(Čára). Řetězec, jehož délka je určena.
    Příklad:
    Řádek (Protistrany.Adresa)

    15. Ročník- tato funkce je navržena k extrahování roku z hodnoty typu Datum.

    Syntax:
    rok (datum)

    Parametr :

    • datum(Datum). Datum, do kterého je určen rok.
    Příklad:
    ROK(výdaj.datum)

    16. Čtvrtletí - tato funkce je navržena k extrahování čísla čtvrtletí z hodnoty typu Datum. Číslo čtvrtletí se obvykle pohybuje od 1 do 4.

    Syntax:
    čtvrtletí (datum)

    Parametr :

    • datum(Datum). Datum, do kterého je stanoveno čtvrtletí
    Příklad:
    ČTVRTLETÍ (Datum výdajů)

    17. měsíc - tato funkce je navržena k extrahování čísla měsíce z hodnoty typu Datum. Číslo měsíce se obvykle pohybuje od 1 do 12.

    Syntax:
    měsíc (datum)

    Parametr :

    • datum(Datum). Datum, do kterého je určen měsíc.
    Příklad:
    MĚSÍC(výdaj.datum)

    18. Den v roce (DayOfYear) - tato funkce je navržena k získání dne v roce z hodnoty typu Date. Den v roce se obvykle pohybuje od 1 do 365 (366).

    Syntax:
    Den v roce (datum)

    Parametr :

    • datum(Datum). Datum, do kterého je určen den v roce.
    Příklad:
    DAYYEAR(ExpenseAccount.Date)

    19. den- tato funkce je navržena k získání dne v měsíci z hodnoty typu Date. Den v měsíci se obvykle pohybuje od 1 do 31.

    Syntax:
    den (datum)

    Parametr :

    • datum(Datum). Datum, do kterého je určen den v měsíci.
    Příklad:
    DAY(Datum výdajů)

    20. týden - tato funkce je navržena k získání čísla týdne v roce z hodnoty typu Datum. Týdny v roce se číslují od 1.

    Syntax:
    týden (datum)

    Parametr :

    • datum(Datum). Datum, podle kterého se určují čísla týdnů.
    Příklad:
    WEEK(Datum výdajů)

    21. Den v týdnu - tato funkce je navržena k získání dne v týdnu z hodnoty typu Date. Normální den v týdnu se pohybuje od 1 (pondělí) do 7 (neděle).

    Syntax:
    Den v týdnu (datum)

    Parametr :

    • datum(Datum). Datum, podle kterého je určen den v týdnu.
    Příklad:
    DEN V TÝDNU (Datum výdajů)

    22. hodina- tato funkce je navržena k získání hodiny dne z hodnoty typu Date. Denní hodina se pohybuje od 0 do 23.

    Syntax:
    hodina (datum)

    Parametr :

    • datum(Datum). Datum, podle kterého je určena hodina dne.
    Příklad:
    HODINA (Datum výdajů)

    23. minuta - tato funkce je navržena k získání minuty v hodině z hodnoty typu Date. Minuta v hodině se pohybuje od 0 do 59.

    Syntax:
    minuta (datum)

    Parametr :

    • datum(Datum). Datum, podle kterého je určena minuta v hodině.
    Příklad:
    MINUTA (datum výdajů)

    24. Druhý - tato funkce je navržena k získání sekundy minuty z hodnoty typu Date. Sekunda minuty se pohybuje od 0 do 59.

    Syntax:
    Druhý (datum)

    Parametr :

    • datum(Datum). Datum, podle kterého jsou určeny sekundy minuty.
    Příklad:
    DRUHÉ (Datum výdajů)

    25. Obsazení - tato funkce je navržena k extrahování typu z výrazu, který může obsahovat složený typ. Pokud výraz obsahuje jiný než požadovaný typ, bude vrácena hodnota NULL.

    Syntax:
    Express(expression, TypeIndication)

    Možnosti :

    • Výraz- výraz, který má být převeden;
    • Označení typu(Čára). Obsahuje typový řetězec. Například "Číslo", "Řetězec" atd. Kromě primitivních typů může tento řádek obsahovat název tabulky. V tomto případě bude učiněn pokus o vyjádření odkazu na zadanou tabulku.
    Příklad:
    Express(Data.Props1, "Number(10;3)")

    26. IsNull (IsNull) - tato funkce vrací hodnotu druhého parametru, pokud je hodnota prvního parametru NULL. V opačném případě bude vrácena hodnota prvního parametru.

    Syntax:
    JeNull(Výraz1, Výraz2)

    Možnosti :

    • Výraz1- hodnota ke kontrole;
    • Výraz2- návratová hodnota, pokud má Výraz1 hodnotu NULL.
    Příklad:
    AnoNULL(Částka(Prodej.ČástkaObrat); 0)

    27.ACos- vypočítá arc cosinus v radiánech.

    Syntax:
    ACos (výraz)

    Parametr :

    • Výraz(Číslo). Hodnota kosinusu (v rozsahu -1 ... 1), kterou je úhel určen.
    28.ASin- vypočítá arkussinus v radiánech.

    Syntax:
    ASin (výraz)

    Parametr :

    • Výraz(Číslo). Sinusová hodnota (v rozsahu -1 ... 1), kterou je úhel určen.
    29.ATan- vypočítá arkustangens v radiánech.

    Syntax:
    ATan (výraz)

    Parametr :

    • Výraz(Číslo). Hodnota tečny, kterou je úhel určen.
    30.Cos- vypočítá kosinus.

    Syntax:
    cos (výraz)

    Parametr :

    • Výraz
    31. Exp- zvýšení čísla e na mocninu.

    Syntax:
    Exp (výraz)

    Parametr :

    • Výraz(Číslo). Význam stupně.
    32.Protokol- vypočítá přirozený logaritmus.

    Syntax:
    Protokol (výraz)

    Parametr :

    • Výraz
    33.Protokol10- vypočítá logaritmus X se základem 10.

    Syntax:
    Log10 (výraz)

    Parametr :

    • Výraz(Číslo). Původní číslo je větší než 0.
    34. Pow- umocňování.

    Syntax:
    Pow (základ, indikátor)

    Možnosti :

    • Základna(Číslo). Základ operace umocňování.
    • Index(Číslo). Exponent.
    35. Hřích- vypočítá sinus.

    Syntax:
    hřích (výraz)

    Parametr :

    • Výraz(Číslo). Udává se v radiánech.
    36. Sqrt- vypočítá druhou odmocninu.

    Syntax:
    Sqrt (výraz)

    Parametr :

    • Výraz(Číslo). Nezáporné číslo.
    37. Tan- vypočítá tečnu.

    Syntax:
    Tan (výraz)

    Parametr :

    • Výraz(Číslo). Sinusová hodnota, kterou je úhel určen.
    38. Kolo- zaokrouhlí původní číslo na požadovanou bitovou hloubku. Režim zaokrouhlení je standardní (1,5 jako 2).

    Syntax:
    Env (výraz, bitová hloubka)

    Možnosti :

    • Výraz(Číslo). Původní číslo;
    • Bitová hloubka(Číslo). Počet desetinných míst, na který se má zaokrouhlit.
    39. Int- odřízne zlomkovou část čísla.

    Syntax:
    Objekt (výraz)

    Parametr :

    • Výraz(Číslo). Zlomkové číslo.
    40. Funkce běžných modulů

    Výraz modulu pro skládání dat může obsahovat volání funkcí globálních společných konfiguračních modulů. K volání takových funkcí není vyžadována žádná další syntaxe.

    Příklad:
    Zkrácený název(Documents.Link, Documents.Date, Documents.Number)

    V tomto příkladu bude funkce "AbbreviatedName" volána z modulu obecné konfigurace.
    Všimněte si, že použití společných funkcí modulu je povoleno pouze v případě, že je specifikován příslušný parametr procesoru pro složení dat.
    Navíc funkce běžných modulů nelze použít ve výrazech vlastních polí.

    41. Odpor - tato funkce vrací řetězcovou reprezentaci předané hodnoty neprimitivního typu. U hodnot primitivního typu vrací samotnou hodnotu.

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

    Příklad:
    Prezentace (protistrana)

    42. Řetězec - tato funkce převede předávanou hodnotu na řetězec.

    Pokud je jako parametr použito pole nebo tabulka hodnot, funkce vrátí řetězec obsahující řetězcovou reprezentaci všech prvků pole oddělené znaky "; ". Pokud má jakýkoli prvek prázdnou reprezentaci řetězce, pak řetězec "<Пустое значение>".

    Příklad:
    Řádek (datum prodeje)

    43. ValueIsFilled

    U hodnot NULL vrací Undefined vždy hodnotu False.
    Pro booleovské hodnoty vždy vrací True.
    U ostatních typů vrátí True, pokud se hodnota liší od výchozí hodnoty pro daný typ.

    Příklad:
    ValueFilled(DeliveryDate)

    44. LevelInGroup - tato funkce získá aktuální úroveň nahrávání vzhledem k seskupení.

    Lze jej použít k získání úrovně vnoření záznamu v hierarchickém seskupení.

    Příklad:
    LevelInGroup()

    45. ValueType

    Syntax:
    ValueType (výraz)

    Parametr :

    • Výraz(Čára). Typ hodnoty řetězce.
    Vrátí hodnotu typu Type obsahující typ hodnoty parametru funkce.

    V této krátké poznámce chci ukázat, jak můžete shrnout hodnoty na různých úrovních seskupení v sestavě pomocí systému skládání dat.
    Jak je znázorněno na obrázku, pouze na úrovni seskupení „Skupiny položek“ se počítá zdroj „Objednávka“, který zobrazuje, kolik je třeba objednat pro aktuální skupinu položek na základě určitých podmínek:


    Tuto hodnotu lze vypočítat pouze na této úrovni seskupení, protože pro výpočet neexistují žádné hodnoty nad nebo pod. Například na úrovni podrobné evidence chybí údaje o maximálním množství ve skupině, protože tyto údaje platí pouze pro skupinu jako celek, nikoli pro její jednotlivé složky.

    V souladu s tím je nyní nutné vypočítat součty pro výše uvedená seskupení („Sklady“, „Typy skladů“) a celkový součet.
    K tomu použijte funkci CalculateExpressionWithGroupArray:
    VYHODNOTIT VÝRAZ S GROUPARRAY (EVALEXPRESSIONWITHGROUPARRAY)
    Syntax:
    EvaluateExpressionWithGroupArray(,)
    Popis:
    Funkce vrací pole, jehož každý prvek obsahuje výsledek vyhodnocení výrazu pro seskupení podle zadaného pole.
    Kompozitor rozvržení při generování rozvržení převádí parametry funkcí na pole rozvržení kompozice dat. Například pole Účet bude převedeno na DataSet.Account.
    Tvůrce rozvržení při generování výrazů pro výstup vlastního pole, jehož výraz obsahuje pouze funkci CalculateArrayWithGroupArray(), generuje výstupní výraz, takže výstupní informace jsou seřazeny. Například pro vlastní pole s výrazem:

    CalculateExpressionWithGroupArray("Částka(ČástkaTurnover)", "Protistrana")
    Tvůrce rozložení vygeneruje pro výstup následující výraz:

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

    Možnosti:

    Typ: Řetězec. Výraz, který má být vyhodnocen. Řetězec, například Amount(AmountTurnover).

    Typ: Řetězec. Výrazy seskupení polí – výrazy seskupení polí oddělené čárkami. Například Dodavatel, Strana.

    Typ: Řetězec. Výraz popisující výběr aplikovaný na podrobné záznamy. Výraz nepodporuje použití agregačních funkcí. Například DeletionFlag = False.

    Typ: Řetězec. Výraz popisující výběr aplikovaný na záznamy skupiny. Například Částka(částkaObrat) > &Parametr1.
    Příklad:

    Maximum(CalculateExpressionWithGroupArray("Částka(ČástkaTurnover)", "Protistrana"));

    Podrobný popis syntaxe funkce lze nalézt na http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
    Nyní pro výpočet duplikujeme pole „Objednávka“ s různými hodnotami „Vypočítat podle...“ pomocí následujících výrazů, všimněte si, že v každé vyšší úrovni jsou použity hodnoty úrovní pod seskupeními .

    Výsledkem je následující konstrukce:

    Obsah
    1 Vyjadřovací jazyk systému skládání dat
    2 literály
    2.1 Řetězec
    2.2 Číslo
    2.3 Datum
    2.4 Boolean
    2.5 Význam
    3 Operace s čísly
    3.1 unární –
    3.2 Unární +
    3.3 Binární -
    3.4 Binární+
    3.5 Práce
    3.6 Rozdělení
    3.7 Zbytek
    4 operace s řetězci
    4.1 Zřetězení (binární +)
    4.2 Podobné
    5 Porovnávací operace
    5.1 Rovné
    5.2 Nerovná se
    5.3 Méně
    5.4 Více
    5.5 Menší nebo rovno
    5.6 Větší nebo rovno
    5.7 Provoz B
    5.8 Operace kontroly přítomnosti hodnoty v souboru dat
    5.9 Operace kontroly hodnoty pro NULL
    5.10 Operace kontroly hodnoty pro NULL nerovnost
    6 Logické operace
    6.1 Provoz NE
    6.2 Provoz I
    6.3 Provoz NEBO
    7 Agregační funkce
    7.1 Částka
    7.2 Množství
    7.3 Počet různých
    7.4 Maximum
    Minimálně 7,5
    7,6 Průměr
    8 Další operace
    8.1 Operace SELECT
    9 Pravidla pro porovnávání dvou hodnot
    10 Práce s hodnotou NULL
    11 Operační priority
    12 Funkce výrazového jazyka systému skládání dat
    12.1 Vypočítejte
    12.2 Úroveň
    12.3 Číslo v objednávce
    12.4 Číslo v objednávce v seskupení
    12.5 Formát
    12.6 Začátek Období
    12.7 Konec období
    12.8 AddToDate
    12.9 Rozdíl v datu
    12.10 Podřetězec
    12.11 Délka čáry
    12.12 Rok
    12.13 čtvrtletí
    12.14 měsíc
    12.15 Den v roce
    12.16 den
    12.17 týden
    12.18 Den v týdnu
    12.19 hodin
    12.20 minut
    12.21 sekund
    12.22 Expres
    12.23 AnoNull
    12.24 Funkce společných modulů

    Data Composition System Expression Language

    Jazyk výrazů systému skládání dat je navržen tak, aby zapisoval výrazy používané v různých částech systému.

    Výrazy se používají v následujících podsystémech:

    • diagram rozložení dat - k popisu počítaných polí, celkových polí, výrazů spojení atd.;
    • nastavení rozložení dat - k popisu výrazů vlastních polí;
    • rozložení dat - pro popis výrazů pro spojování datových sad, popis parametrů rozložení atd.

    Doslovy

    Výraz může obsahovat literály. Jsou možné následující typy literálů:

    • Čára;
    • Číslo;
    • Datum;
    • Boolean.

    Čára

    Řetězcový literál se zapisuje pomocí znaků „“, například:

    "Řetězcový doslovný"


    Pokud potřebujete použít znak „“ uvnitř řetězcového literálu, měli byste použít dva takové znaky.

    Například:

    "Doslovné ""v uvozovkách"""

    Číslo

    Číslo se zapisuje bez mezer, v desítkovém formátu. Zlomková část se odděluje pomocí symbolu ".". Například:

    datum

    Datumový literál se zapisuje pomocí klíčového literálu DATETIME. Za tímto klíčovým slovem jsou v závorkách uvedeny rok, měsíc, den, hodiny, minuty, sekundy oddělené čárkami. Časová specifikace není vyžadována.

    Například:
    DATETIME(1975, 1, 06) – 6. ledna 1975
    DATETIME(2006, 12, 2, 23, 56, 57) – 2. prosince 2006, 23 hodin 56 minut 57 sekund, 23 hodin 56 minut 57 sekund

    Boolean

    Booleovské hodnoty lze zapsat pomocí literálů True (True), False (False).

    Význam

    Pro specifikaci literálů jiných typů (systémové výčty, předdefinovaná data) se používá klíčové slovo Hodnota a za ním název literálu v závorce.
    Hodnota (Typ účtu. Aktivní)

    Operace s čísly

    Unární –

    Tato operace je určena ke změně znaménka čísla na opačné znaménko. Například:
    - Prodej. Množství

    Unární +

    Tato operace neprovádí s číslem žádné akce. Například:
    +Prodej.Množství

    binární -

    Tato operace je určena k výpočtu rozdílu dvou čísel. Například:
    RemainsAndTurnover.InitialRemainder – RemainsAndTurnover.FinalRemainder
    RemainsAndTurnover.InitialRemaining – 100
    400 – 357

    Binární +

    Tato operace je určena k výpočtu součtu dvou čísel. Například:
    RemainsAndTurnover.InitialRemaining + RemainsAndTurnover.Turnover
    RemainsAndTurnover.InitialRemaining + 100
    400 + 357

    Práce

    Tato operace je určena k výpočtu součinu dvou čísel. Například:
    Nomenklatura.Cena * 1.2
    2 * 3.14

    Divize

    Tato operace je navržena tak, aby získala výsledek dělení jednoho operandu druhým. Například:
    Nomenklatura.Cena / 1.2
    2 / 3.14

    Zbytek divize

    Tato operace je navržena tak, aby získala zbytek, když je jeden operand rozdělen jiným. Například:
    Nomenklatura.Cena% 1.2
    2 % 3.14

    Řetězcové operace

    Zřetězení (binární +)

    Tato operace je navržena pro zřetězení dvou řetězců. Například:
    Nomenklatura.Článek + “: ”+ Nomenklatura.Název

    Jako

    Tato operace zkontroluje, zda řetězec odpovídá předanému vzoru.

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

    Následující znaky v<Строке_шаблона>mají jiný význam než jen jiný znak v řádku:

    • % - procento: sekvence obsahující nula nebo více libovolných znaků;
    • _ - podtržítko: jeden libovolný znak;
    • […] - jeden nebo více znaků v hranatých závorkách: jeden znak, kterýkoli ze znaků uvedených v hranatých závorkách. Výčet může obsahovat rozsahy, například a-z, což znamená libovolný znak zahrnutý v rozsahu, včetně konců rozsahu;
    • [^...] - v hranatých závorkách ikona negace následovaná jedním nebo více znaky: jakýkoli znak kromě těch, které jsou uvedeny za ikonou negace;

    Jakýkoli jiný symbol znamená sám sebe a nenese žádnou další zátěž. Pokud je třeba jeden z uvedených znaků zapsat jako samotný, pak mu musí předcházet<Спецсимвол>, zadaný za klíčovým slovem SPECIAL CHARACTER (ESCAPE).

    Například šablona
    „%ABV[abvg]\_abv%“ ZVLÁŠTNÍ CHARAKTER „\“

    znamená podřetězec sestávající z posloupnosti znaků: písmeno A; písmena B; písmena B; jedna číslice; jedno z písmen a, b, c nebo d; podtržítko; písmena a; písmena b; písmena v. Navíc může být tato sekvence umístěna od libovolné pozice v řádku.

    Srovnávací operace

    Rovná se

    Tato operace je určena k porovnání dvou operandů pro rovnost. Například:
    Sales.Counterparty = Prodej.NomenklaturaHlavní dodavatel

    Ne rovné

    Tato operace je určena k porovnání dvou operandů pro nerovnost. Například:
    Prodej Prodej protistrany Nomenklatura Hlavní dodavatel

    Méně

    Tato operace je navržena tak, aby zkontrolovala, zda je první operand menší než druhý. Například:
    ProdejAktuální.Částka

    Více

    Tato operace je navržena tak, aby zkontrolovala, zda je první operand větší než druhý. Například:
    Aktuální.součet prodeje >Minulý součet prodeje

    Méně nebo stejně

    Tato operace je navržena tak, aby zkontrolovala, zda je první operand menší nebo roven druhému. Například:
    ProdejAktuální.Částka

    Více nebo stejné

    Tato operace je navržena tak, aby zkontrolovala, zda je první operand větší nebo roven druhému. Například:
    ProdejAktuální.Částka >=Minulá Prodej.Částka

    Operace B

    Tato operace kontroluje přítomnost hodnoty v předávaném seznamu hodnot. Výsledek operace bude True, pokud je hodnota nalezena, nebo False v opačném případě. Například:
    Položka B (&Produkt1, &Produkt2)

    Operace kontroly přítomnosti hodnoty v souboru dat

    Operace zkontroluje přítomnost hodnoty v zadané sadě dat. Ověřovací datová sada musí obsahovat jedno pole. Například:
    Prodej Protistrana Protistranám

    Operace kontroly hodnoty pro NULL

    Tato operace vrátí True, pokud je hodnota NULL. Například:
    Prodej. Protistrana JE NULL

    Operace kontroly hodnoty pro NULL nerovnost

    Tato operace vrátí hodnotu True, pokud hodnota není NULL. Například:
    Prodej. Protistrana NENÍ NULL

    Logické operace

    Logické operace přijímají výrazy typu Boolean jako operandy.

    Operace NE

    Operace NOT vrátí True, pokud je její operand False, a False, pokud je její operand True. Například:
    NOT Document.Consignee = Dokument.Odesílatel

    Operace I

    Operace AND vrací True, pokud jsou oba operandy True, a False, pokud je jeden z operandů False. Například:
    Dokument.Příjemce = Dokument. Odesílatel A Dokument. Příjemce = &Protistrana

    NEBO operace

    Operace OR vrátí True, pokud je jeden z jejích operandů True, a False, pokud jsou oba operandy False. Například:
    Dokument.Příjemce = Dokument. Odesílatel NEBO Dokument. Příjemce = &Protistrana

    Agregační funkce

    Agregační funkce provádějí nějakou akci na množině dat.

    Součet

    Agregační funkce Sum vypočítá součet hodnot výrazů, které jí byly předány jako argument pro všechny podrobné záznamy. Například:
    Částka (Sales.AmountTurnover)

    Množství

    Funkce Count vypočítá počet hodnot jiných než NULL. Například:
    Množství (prodej. Protistrana)

    Počet různých

    Tato funkce vypočítá počet různých hodnot. Například:
    Množství (různé prodeje. Protistrana)

    Maximum

    Funkce získá maximální hodnotu. Například:
    Maximum (Remaining.Quantity)

    Minimální

    Funkce získá minimální hodnotu. Například:
    Minimum (Zbývající. Množství)

    Průměrný

    Funkce získá průměr hodnot, které nejsou NULL. Například:
    Průměr (Zbývající. Množství)

    Jiné operace

    Operace SELECT

    Operace Select je určena k výběru jedné z několika hodnot, pokud jsou splněny určité podmínky. Například:
    Vyberte Když Částka > 1000, Pak Částka Jinak 0 Konec

    Pravidla pro porovnávání dvou hodnot

    Pokud se typy porovnávaných hodnot od sebe liší, pak se vztahy mezi hodnotami určují na základě priority typů:
    NULL (nejnižší);
    Boolean;
    Číslo;
    Datum;
    Čára;
    Referenční typy

    Vztahy mezi různými referenčními typy jsou určeny na základě referenčních čísel tabulek odpovídajících konkrétnímu typu.

    Pokud jsou datové typy stejné, pak se hodnoty porovnávají podle následujících pravidel:
    pro booleovský typ je hodnota TRUE větší než hodnota FALSE;
    typ Číslo má obvyklá pravidla porovnávání čísel;
    pro typ Datum jsou dřívější data menší než pozdější;
    pro typ String - porovnání řetězců v souladu se stanovenými národními charakteristikami databáze;
    referenční typy jsou porovnávány na základě jejich hodnot (číslo záznamu atd.).

    Práce s hodnotou NULL

    Jakákoli operace, ve které je jeden z operandů NULL, vytvoří výsledek NULL.

    Existují výjimky:
    Operace AND vrátí hodnotu NULL pouze v případě, že žádný z operandů není False;
    Operace OR vrátí hodnotu NULL pouze v případě, že žádný z jejích operandů není pravdivý.

    Operační priority

    Operace mají následující priority (první řádek má nejnižší prioritu):
    NEBO;
    A;
    NE;
    B, IS NULL, IS NOT NULL;
    =, <>, <=, <, >=, >;
    Binární +, Binární – ;
    *, /, %;
    Unární +, Unární -.

    Skládání dat Funkce jazyka výrazů systému

    Vypočítat

    Funkce Vypočítat je určena k výpočtu výrazu v kontextu určitého seskupení. Funkce má následující parametry:
    Výraz. Zadejte řetězec. Obsahuje vypočítaný výraz;
    Seskupování. Zadejte řetězec. Obsahuje název seskupení, v jehož kontextu má být výraz vyhodnocen. Pokud je jako název seskupení použit prázdný řetězec, výpočet bude proveden v kontextu aktuálního seskupení. Pokud je jako název skupiny použit řetězec GrandTotal, výpočet bude proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení se stejným názvem. Například:
    Součet(prodej.SoučetObrat) / Vypočítat("Součet(Prodej.SoučetObrat)", "Celkem")

    V tomto příkladu bude výsledkem poměr částky pro pole "Sales.AmountTurnover" záznamu seskupení k částce stejného pole v celém rozložení.

    Úroveň

    Funkce je navržena pro získání aktuální úrovně záznamu.

    Příklad:
    Úroveň()

    NumberInOrder

    Získejte další pořadové číslo.

    Příklad:
    NumberByOrder()

    NumberInOrderInGrouping

    Vrátí další pořadové číslo v aktuálním seskupení.

    Příklad:
    NumberByOrderInGroup()

    Formát

    Získejte formátovaný řetězec předané hodnoty.

    Formátovací řetězec je nastaven v souladu s formátovacím řetězcem 1C:Enterprise.

    Možnosti:
    Význam;
    Formátovat řetězec.

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

    Začátek období

    Možnosti:

      • Minuta;
      • Den;
      • Týden;
      • Měsíc;
      • Čtvrťák;
      • Desetiletí;
      • Půl roku.

    Příklad:
    StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Month")

    Výsledek:

    01.10.2002 0:00:00

    Konec období

    Funkce je navržena tak, aby extrahovala konkrétní datum z daného data.

    Možnosti:

    • Datum. Typ Datum. Specifikované datum;
    • Typ období. Zadejte řetězec. Obsahuje jednu z následujících hodnot:
      • Minuta;
      • Den;
      • Týden;
      • Měsíc;
      • Čtvrťák;
      • Desetiletí;
      • Půl roku.

    Příklad:
    EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Týden")

    Výsledek:

    13.10.2002 23:59:59

    AddToDate

    Funkce je navržena tak, aby k datu přidala určitou hodnotu.

    Možnosti:

    • Typ zvětšení. Zadejte řetězec. Obsahuje jednu z následujících hodnot:
      • Minuta;
      • Den;
      • Týden;
      • Měsíc;
      • Čtvrťák;
      • Desetiletí;
      • Půl roku.
    Částka – o kolik potřebujete zvýšit datum. Typ Číslo. Zlomková část je ignorována.

    Příklad:
    AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)

    Výsledek:

    12.11.2002 10:15:34

    Datum rozdíl

    Funkce je navržena tak, aby získala rozdíl mezi dvěma daty.

    Možnosti:

    • Výraz. Typ Datum. Původní datum;
    • Výraz. Typ Datum. Odečtené datum;
    • Typ rozdílu. Zadejte řetězec. Obsahuje jednu z následujících hodnot:
      • Druhý;
      • Minuta;
      • Den;
      • Měsíc;
      • Čtvrťák;

    Příklad:
    DATEDIFFERENCE(DATETIME(2002; 10; 12; 10; 15; 34);
    DATETIME(2002, 10, 14, 9, 18, 06); "DEN")

    Výsledek:

    Podřetězec

    Tato funkce je navržena tak, aby extrahovala podřetězec z řetězce.

    Možnosti:

    • Čára. Zadejte řetězec. Řetězec, ze kterého je podřetězec extrahován;
    • Pozice. Typ Číslo. Pozice znaku, od které začíná podřetězec, který má být z řetězce extrahován;
    • Délka. Typ Číslo. Délka přiděleného podřetězce.

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

    Délka čáry

    Funkce je určena k určení délky řetězce.

    Parametr:
    Čára. Zadejte řetězec. Řetězec, jehož délka je určena.

    Příklad:
    Řádek (Protistrany.Adresa)

    Tato funkce je navržena tak, aby extrahovala rok z hodnoty typu Datum.

    Parametr:
    Datum. Typ Datum. Datum, do kterého je určen rok.

    ROK(výdaj.datum)

    Čtvrťák

    Tato funkce je navržena k extrahování čísla čtvrtletí z hodnoty typu Datum. Číslo čtvrtletí se obvykle pohybuje od 1 do 4.

    Parametr
    Datum. Typ Datum. Datum, do kterého je stanoveno čtvrtletí

    ČTVRTLETÍ (Datum výdajů)

    Měsíc

    Tato funkce je navržena k extrahování čísla měsíce z hodnoty typu Datum. Číslo měsíce se obvykle pohybuje od 1 do 12.
    Datum. Typ Datum. Datum, do kterého je určen měsíc.
    MĚSÍC(výdaj.datum)

    den v roce

    Tato funkce je navržena k získání dne v roce z hodnoty typu Date. Den v roce se obvykle pohybuje od 1 do 365 (366).
    Datum. Typ Datum. Datum, do kterého je určen den v roce.
    DAYYEAR(ExpenseAccount.Date)

    Den

    Tato funkce je navržena k získání dne v měsíci z hodnoty typu Date. Den v měsíci se obvykle pohybuje od 1 do 31.
    Datum. Typ Datum. Datum, do kterého je určen den v měsíci.
    DAY(Datum výdajů)

    Týden

    Tato funkce je navržena k získání čísla týdne v roce z hodnoty typu Date. Týdny v roce se číslují od 1.
    Datum. Typ Datum. Datum, podle kterého se určují čísla týdnů.
    WEEK(Datum výdajů)

    Den v týdnu

    Tato funkce je navržena k získání dne v týdnu z hodnoty typu Date. Normální den v týdnu se pohybuje od 1 (pondělí) do 7 (neděle).
    Datum. Typ Datum. Datum, podle kterého je určen den v týdnu.
    DEN V TÝDNU (Datum výdajů)

    Tato funkce je navržena k získání hodiny dne z hodnoty typu Date. Denní hodina se pohybuje od 0 do 23.
    Datum. Typ Datum. Datum, podle kterého je určena hodina dne.
    HODINA (Datum výdajů)

    Minuta

    Tato funkce je navržena k získání minuty v hodině z hodnoty typu Date. Minuta v hodině se pohybuje od 0 do 59.
    Datum. Typ Datum. Datum, podle kterého je určena minuta v hodině.
    MINUTA (datum výdajů)

    Druhý

    Tato funkce je navržena k získání sekundy minuty z hodnoty typu Date. Sekunda minuty se pohybuje od 0 do 59.
    Datum. Typ Datum. Datum, podle kterého jsou určeny sekundy minuty.
    DRUHÉ (Datum výdajů)

    Vyjádřit

    Tato funkce je navržena tak, aby extrahovala typ z výrazu, který může obsahovat složený typ. Pokud výraz obsahuje jiný než požadovaný typ, bude vrácena hodnota NULL.

    Možnosti:
    Výraz k převodu;
    Označení typu. Zadejte řetězec. Obsahuje typový řetězec. Například "Číslo", "Řetězec" atd. Kromě primitivních typů může tento řádek obsahovat název tabulky. V tomto případě bude učiněn pokus o vyjádření odkazu na zadanou tabulku.

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

    JeNull

    Tato funkce vrací hodnotu druhého parametru, pokud je hodnota prvního parametru NULL.

    V opačném případě bude vrácena hodnota prvního parametru.

    Příklad:
    AnoNULL(Částka(Prodej.ČástkaObrat); 0)

    Funkce běžných modulů

    Výraz modulu pro skládání dat může obsahovat volání funkcí globálních společných konfiguračních modulů. K volání takových funkcí není vyžadována žádná další syntaxe.

    Příklad:
    Zkrácený název(Documents.Link, Documents.Date, Documents.Number)

    V tomto příkladu bude funkce "AbbreviatedName" volána z modulu obecné konfigurace.

    Všimněte si, že použití společných funkcí modulu je povoleno pouze v případě, že je specifikován příslušný parametr procesoru pro složení dat.

    Navíc funkce běžných modulů nelze použít ve výrazech vlastních polí.

    [pro zobrazení odkazu se musíte zaregistrovat]