1s 8 ckd výraz vypočítaných polí. Data Composition System Expression Language (1Cv8). Čo je to vypočítané pole

Vo svetle nadchádzajúceho vydania 8.2.14 sa pokúsim popísať niektoré nové funkcie systému na zostavovanie údajov.

Otvorte schému zloženia údajov, najlepšie v externej zostave, aby ste ju mohli jednoduchšie upravovať.

Pridáme množinu údajov typu dotazu a napíšeme, buď manuálne alebo pomocou konštruktora dotazov, najjednoduchší dotaz:

1. Nastavte požiadavku v ACS.

2. Konfigurácia vypočítaných polí v ACS

3. Zloženie údajov nakonfigurujeme na karte nastavení

4. Spustenie 1C Enterprise 8.2.14. Otvárame správu. Formujeme, dostávame.

Popis samotných nových funkcií:

1. Aktuálny dátum ()

Vráti systémový dátum. Keď je rozloženie rozloženia prepojené, vo všetkých výrazoch, ktoré sa nachádzajú v rozložení, sa funkcia CurrentDate () nahradí hodnotou aktuálneho dátumu.

2. VYPOČÍTAŤ VÝRAZ ()

Syntax:

Vyhodnotiť výraz (<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Popis:

Funkcia je určená na vyhodnotenie výrazu v kontexte nejakého zoskupenia.

Funkcia berie do úvahy výber zoskupení, ale nezohľadňuje hierarchické výbery.

Funkciu nemožno použiť na zoskupenie vo výbere skupiny tohto zoskupenia. Napríklad pri výbere zoskupenia Nomenklatúra nemôžete použiť výraz CalculateExpression ("Sum (SumTurnover)", "TotalTotal")> 1000. Ale takýto výraz možno použiť v hierarchickom výbere.

Ak koncový záznam predchádza počiatočnému záznamu, predpokladá sa, že neexistujú žiadne záznamy na výpočet podrobných údajov a výpočet súhrnných funkcií.

Pri výpočte intervalových výrazov pre celkový súčet (parameter Zoskupenie je nastavený na Všeobecný súčet) sa predpokladá, že neexistujú žiadne záznamy na výpočet podrobných údajov a výpočet súhrnných funkcií.

Skladateľ rozloženia pri generovaní výrazu pre funkciu EvaluateExpression, ak výraz zoradenia obsahuje polia, ktoré nemožno použiť v zoskupení, nahradí funkciu EvaluateExpression hodnotou NULL.

Parametre

<Выражение>

Typ: Reťazec. Výraz na vyhodnotenie.

<Группировка>

Typ: 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 zoskupenia použije riadok GeneralTotal, výpočet sa vykoná v kontexte celkového súčtu. V opačnom prípade sa výpočet vykoná v kontexte nadradeného zoskupenia s rovnakým názvom.

Napríklad:

Suma (Sales.SumTurnover) / Vypočítať (“Suma (Sales.SumTurnover)”, “TotalTotal”)

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

<ОбластьВычисления>

Typ: Reťazec. Parameter môže nadobúdať nasledujúce hodnoty:

  • GeneralTotal - výraz bude vyhodnotený pre všetky záznamy zoskupenia.
  • Hierarchia - výraz sa vyhodnotí pre nadradený hierarchický záznam, ak existuje, a pre celé zoskupenie, ak nadradený hierarchický záznam neexistuje.
  • Zoskupenie - výraz bude vyhodnotený pre aktuálny záznam zoskupenia.
  • GroupingNonResource - pri vyhodnocovaní funkcie pre skupinový záznam podľa zdrojov sa výraz vypočíta pre prvý skupinový záznam pôvodného zoskupenia.

Pri výpočte funkcie EvaluateExpression () s hodnotou GroupNoResource pre skupinové záznamy, ktoré nie sú zoskupené podľa zdroja, sa funkcia vypočíta rovnakým spôsobom, ako by sa vypočítala, keby sa hodnota parametra rovnala zoskupeniu.

Skladateľ šablóny zloženia údajov pri generovaní šablóny zloženia údajov pri zobrazení poľa zdroja, pomocou ktorého sa zoskupenie vykonáva v šablóne, umiestni výraz vypočítaný pomocou funkcie EvaluateExpression () s uvedením parametra GroupNoResource. Pre zvyšok zdrojov sú výrazy regulárnych prostriedkov zoskupené podľa zdroja.

<Начало>

Typ: Reťazec. Označuje, ktorým záznamom sa má začať fragment, v ktorom sa majú vypočítať agregované funkcie výrazu a z ktorého záznamu sa majú získať hodnoty polí mimo agregačných funkcií. Hodnota môže byť jedna z nasledujúcich:

<Конец>

Typ: Reťazec. Označuje, na ktorý záznam má pokračovať fragment, v ktorom sa majú vyhodnotiť agregované funkcie výrazu. Hodnota môže byť jedna z nasledujúcich:

  • Prvý (Prvý). Musíte získať prvý záznam o zoskupení. Za slovom v zátvorkách môžete zadať výraz, ktorého výsledok sa použije ako posun od začiatku zoskupenia. Výsledná hodnota musí byť celé číslo väčšie ako nula. Napríklad First (3) - získanie tretieho záznamu od začiatku zoskupenia.

Ak je prvý záznam mimo limitov zoskupenia, má sa za to, že neexistujú žiadne záznamy. Napríklad, ak existujú 3 záznamy a chcete získať Prvý (4), predpokladá sa, že neexistujú žiadne záznamy.

  • Posledný (Posledný). Musíte získať najnovší záznam o zoskupení. Za slovom v zátvorkách možno zadať výraz, ktorého výsledok sa použije ako posun od konca zoskupenia. Výsledná hodnota musí byť celé číslo väčšie ako nula. Napríklad Last (3) - získanie tretieho záznamu od konca zoskupenia.

Ak je posledný záznam mimo limitov zoskupenia, má sa za to, že neexistujú žiadne záznamy. Napríklad, ak existujú 3 záznamy a chcete získať posledný (4), predpokladá sa, že neexistujú žiadne záznamy.

  • Predchádzajúce. Musíte získať predchádzajúci záznam zoskupenia. Za slovom v zátvorkách možno zadať výraz, ktorého výsledok sa použije ako spätný posun od aktuálneho záznamu zoskupenia. Napríklad Predchádzajúci (2) – získa predchádzajúci záznam z predchádzajúceho záznamu.

Ak je predchádzajúci záznam mimo zoskupenia (napríklad pre druhý záznam zoskupenia chcete získať predchádzajúci (3), získa sa prvý záznam zoskupenia.

Pri získavaní predchádzajúceho záznamu pre súčet zoskupenia sa prvý záznam považuje za získaný.

  • Ďalej (Next). Musíte získať ďalší záznam zoskupenia. Za slovom v zátvorkách možno zadať výraz, ktorého výsledok sa použije ako posun vpred od aktuálneho záznamu zoskupenia. Napríklad Next (2) - získať ďalší z nasledujúceho záznamu.

Ak nasledujúci záznam vypadne zo zoskupenia, má sa za to, že neexistujú žiadne záznamy. Napríklad, ak existujú 3 záznamy a pre tretí záznam sa prijme Next (), potom neexistujú žiadne záznamy.

Keď je prijatý ďalší záznam pre súčet zoskupenia, považuje sa to za neexistujúce žiadne záznamy.

  • Aktuálny (Aktuálny). Potrebujete získať aktuálny záznam.

Pri získavaní celkového súčtu zoskupení sa získa prvý záznam.

  • Hraničná hodnota. Potreba získať záznam v zadanej hodnote. Za slovom BoundingValue v zátvorkách musíte zadať výraz, ktorého hodnotou chcete začať fragment, prvé pole usporiadania.

Ako záznam sa získa prvý záznam, ktorého hodnota poľa objednávky je väčšia alebo rovná zadanej hodnote. Napríklad, ak sa pole Obdobie používa ako pole objednávky a má hodnoty 01/01/2010, 01/02/2010, 01/03/2010 a chcete získať BoundingValue (DateTime (2010 , 1, 15)), potom dostanete záznam s dátumom 01.02.2010.

<Сортировка>

Typ: Reťazec. Čiarkami oddelený zoznam výrazov, ktoré popisujú pravidlá porovnávania. Ak nie je uvedené, zoradenie sa vykoná rovnakým spôsobom ako pri zoskupení, pre ktoré sa výraz vyhodnocuje. Po každom výraze môžete zadať kľúčové slovo Vzostupne (pre vzostupné poradie), Zostupne (pre zostupné poradie) a Automatické zoradenie (pre zoradenie odkazovaných polí podľa polí, podľa ktorých chcete zoradiť odkazovaný objekt). Slovo Automaticky usporiadať možno použiť s Vzostupne aj Zostupne.

<ИерархическаяСортировка>

Typ: Reťazec. Rovnako ako triedenie. Používa sa na usporiadanie hierarchických záznamov. Ak nie je zadané, zostavovateľ rozloženia vygeneruje poradie podľa poradia zadaného v parametri Zoradiť.

<ОбработкаОдинаковыхЗначенийПорядка>

Typ: Reťazec. Určuje pravidlo na určenie predchádzajúceho alebo nasledujúceho záznamu v prípade, že existuje niekoľko záznamov s rovnakou hodnotou zoradenia:

  • Samostatne znamená, že postupnosť usporiadaných záznamov sa používa na definovanie predchádzajúcich a nasledujúcich záznamov. Predvolená hodnota.
  • Spolu znamená, že predchádzajúce a nasledujúce záznamy sú určené na základe hodnôt výrazov porovnávania.

Napríklad, ak je výsledná sekvencia zoradená podľa dátumu:

dátum Celé meno Význam
1 1. januára 2001 Ivanov M. 10
2 2. januára 2001 Petrov S. 20
3 3. januára 2001 R. 30
4 4. januára 2001 Petrov S. 40

Ak je hodnota parametra Samostatná, potom:

Predchádzajúci záznam k záznamu 3 bude záznam 2.

§ ak je vypočítaný fragment definovaný ako Current, Current (respektíve parametre Start a End), potom pre záznam 2 bude tento fragment pozostávať z jedného záznamu 2. Výraz Calculate Expression („Sum (Value)“, Current, Current) bude byť rovný 20.

Ak je hodnota parametra Spolu, potom:

Predchádzajúci záznam k záznamu 3 bude záznam 1.

§ ak je vypočítaný fragment definovaný ako Aktuálny, Aktuálny (respektíve parametre Začiatok a Koniec), potom pre záznam 2 bude tento fragment pozostávať zo záznamov 2 a 3. Výraz Calculate Expression (“Sum (Value)”, Current, Current) sa bude rovnať 50.

Pri zadávaní hodnoty parametra rovnajúcej sa Spolu v parametroch Začiatok a Koniec nemôžete určiť posun pre prvé, posledné, predchádzajúce, nasledujúce pozície.

Vypočítať výraz („Súčet (SumTurnover)“, „Prvý“, „Aktuálny“)

Ak chcete získať hodnotu zoskupenia v predchádzajúcom riadku, môžete použiť nasledujúci výraz:

EvaluateExpression ("Kurz", "Predchádzajúci")

Zoznam Nový funkcie:

EvaluateExpressionGroupedArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funkcia vracia pole, ktorého každý prvok obsahuje výsledok vyhodnotenia výrazu, ktorý má byť zoskupený podľa zadaného poľa.

EvaluateExpressionGroupedValuesTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funkcia vráti tabuľku hodnôt, ktorej každý riadok obsahuje výsledok vyhodnotenia výrazov na zoskupenie podľa zadaného poľa

ValueFilled(<Выражение>) - Vráti True, ak sa hodnota líši od predvolenej hodnoty daného typu, iná ako NULL, iná ako prázdna referencia, iná ako Nedefinované. Pre boolovské hodnoty sa vykoná kontrola nuly. V prípade reťazcov sa kontroluje absencia znakov, ktoré nie sú medzerami

Formátovať(<Выражение>, <Форматная строка>) - Získa naformátovaný reťazec odovzdanej hodnoty. Formátovací reťazec je nastavený v súlade s formátovacím reťazcom systému 1C: Enterprise.

Podreťazec(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Táto funkcia je určená na extrahovanie podreťazca z reťazca.

Dĺžka riadku(<Выражение>) - Funkcia je určená na určenie dĺžky reťazca. Parameter je výraz typu reťazec

Linka(<Выражение>) - Ak je pole odovzdané ako parameter, funkcia vráti reťazec obsahujúci reťazcové reprezentácie všetkých prvkov poľa oddelené symbolmi “; “. Ak sa ako parameter odovzdá tabuľka hodnôt, funkcia vráti reťazec obsahujúci reťazcové reprezentácie všetkých riadkov tabuľky hodnôt a reprezentácie buniek v každom riadku sú oddelené znakom „; “, A reťazce - so znakom posunu riadkov. Ak má niektorý prvok prázdnu reprezentáciu reťazca, potom sa namiesto jeho reprezentácie zobrazí reťazec<Пустое значение>.

EvaluateExpression- pomerne zložitá funkcia ACS na pochopenie a príklady použitia v referenčných informáciách sú dosť zriedkavé. Tento článok popisuje príklady, ktoré budú určite užitočné pre každého vývojára:

  1. kumulatívny súčet v zoskupení;
  2. priebežný súčet v krížovej tabuľke;
  3. získanie predchádzajúcej hodnoty;
  4. výstup PM v jednom riadku.

1. Získanie ukazovateľa na kumulatívnom súčte

Poďme získať počet tovarov na kumulatívnom základe na úrovni zoskupenia. Na tento účel vytvoríme vypočítané pole (pozri obrázok 1).
Na karte „Zdroje“ nastavte funkciu pre vypočítané pole:
CalculateExpression ("Súčet (čísloObrat)", "Prvý", "Aktuálny")
ktorý bude sumarizovať počet produktov od prvého záznamu po aktuálny (pozri obrázok 2).

Ak chcete získať množstvo tovaru kumulovane na úrovni podrobnej evidencie, potom je pre kalkulované pole nastavená funkcia Vypočítať výraz na záložke „Vypočítané polia“ (pozri obrázok 3).
V závislosti od úrovne získania kumulatívneho súčtu vytvoríme zoskupenie (pozri obrázok 4): na úrovni zdroja - zoskupenie podľa tovaru, na úrovni DZ - zoskupenie podrobných záznamov.
Obrázok 4. Zoskupenia správy s kumulatívnym súčtom

2. Získanie hodnoty ukazovateľa z predchádzajúceho riadku

Získajte kurz meny pre dátum a predchádzajúci dátum. Ak to chcete urobiť, vytvorte vypočítané pole a do poľa výrazu napíšte nasledujúci výraz (pozri obrázok 5):
CalculateExpression (kurz, predchádzajúci, predchádzajúci)
ktorý prevezme predchádzajúcu hodnotu kurzu meny pre aktuálny riadok, posledný parameter funkcie obmedzí získavanie údajov.
Keďže pracujeme na úrovni podrobných záznamov, prejdite priamo na záložku „Nastavenia“ a vytvorte zoskupenie – podrobné záznamy.

3. Získanie ukazovateľa kumulatívneho súčtu v krížovej karte

Poďme získať počet tovarov na kumulatívnom základe v kontexte obdobia. Na tento účel vytvoríme vypočítané pole (pozri obrázok 1). Na karte „Zdroje“ pre vypočítané pole zadáme nasledujúci výraz (pozri obrázok 6):
Vypočítať výraz ("Súčet (čísloObrat)", "Obdobie", "Prvé", "Aktuálne")
ktorý na úrovni zoskupenia vypočíta množstvo tovaru v intervale od prvého riadku po aktuálny v kontexte obdobia pre každú položku.
Na karte „Nastavenia“ vytvorte tabuľku zoskupenú podľa položiek v riadku a zoskupenú podľa obdobia v stĺpci (pozri obrázok 7).

4. Výstup údajov tabuľkového rezu v jednom riadku

Metódy zobrazovania údajov tabuľkových sekcií v jednom riadku vrátane metódy pomocou funkcie EvaluateExpression rozoberáme v článku

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:

  • schéma zloženia údajov - na popis vypočítaných polí, polí súčtov, výrazov vzťahov atď.
  • nastavenia zloženia údajov – pre popis vlastných výrazov polí;
  • Šablóna zloženia dát - pre popis výrazov vzťahu dátových množín, popis parametrov šablóny atď.

Doslovy

Výrazy môžu obsahovať literály. Možné sú literály nasledujúcich typov:

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

Linka

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

"Stringový doslov"

Ak potrebujete použiť znak "" "v reťazcovom literáli, 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 oddelených čiarkami uvedený rok, mesiac, deň, hodiny, minúty, sekundy. Čas je voliteľný.

Napríklad:

DÁTUM ČAS (1975, 1, 06) - 6. januára 1975 DÁTUM (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, False.

Význam

Na špecifikovanie literálov iných typov (systémové enumerácie, preddefinované údaje) sa používa kľúčové slovo Value, 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 obrátenie znamienka čísla. Napríklad:

Predaj.Číslo

Unárne +

Táto operácia nevykoná žiadnu akciu s číslom. Napríklad:

Predaj.Číslo

binárne -

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

Zostatky a obraty. Počiatočný zostatok - Zostatky a obraty. Konečný zostatok a obraty. Počiatočný zostatok - 100 400 - 357

Binárne +

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

Zostatky a obraty. Počiatočný zostatok + zostatky a obraty. Zostatky a obraty obratu. Počiatočný zostatok + 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 určená na získanie zvyšku delenia jedného operandu 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 určená 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<Выражения>sa zhoduje so vzorom a v opačnom prípade je FALSE.

Nasledujúce znaky v<Строке_шаблона>dáva zmysel okrem znaku ďalšieho 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 nemá žiadny ďalší význam. Ak je potrebné napísať jeden z uvedených znakov ako seba, potom mu musí predchádzať<Спецсимвол>špecifikované za kľúčovým slovom ESCAPE.

Napríklad šablóna

"% ABC [abvg] \ _ abc%" ŠPECIÁLNY SYMBOL "\"

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; znak podčiarknutia; písmená a; písmená b; písmená c. 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:

Predaj.Dodávateľ = Predaj.NomenklatúraHlavnýdodávateľ

Nerovná sa

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

Predaj, dodávateľ<>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:

Aktuálny predaj. Celkom>Minulý predaj.Suma

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:

SalesCurrent.Amount> = SalesPast.Amount

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 (& Položka 1 a Položka 2)

Operácia kontroly existencie hodnoty v množine údajov

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

Predaj. Protistrana protistranám

Operácia kontroly hodnoty pre NULL

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

Sales.Contractor IS NULL

Operácia kontroly hodnoty pre nerovnosť NULL

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

Sales.Contractor NIE JE NULL

Logické operácie

Logické operácie berú booleovské výrazy ako operandy.

Operácia NIE

Operácia NEVRÁTA True, ak je jej operand False, a False, ak je jej operand True. Napríklad:

NIE Dokument. Príjemca = Dokument. Odosielateľ

Prevádzka AND

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

Document.Consignee = Document.Shipper AND Document.Consignee = & Protistrana

ALEBO operácia

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

Dokument. Príjemca = Dokument. Prepravca 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ýrazu, ktoré jej boli odovzdané ako argument pre všetky podrobné záznamy. Napríklad:

Suma (Sales.SumTurnover)

množstvo

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

Množstvo (predaj. Dodávateľ)

Počet rôznych

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

Množstvo (rôzny predaj. Dodávateľ)

Maximálne

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

Maximum (Zostatky. Množstvo)

Minimum

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

Minimum (zostatky. Množstvo)

Priemerný

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

Priemer (zostatky.Suma)

Iné operácie

Operácia SELECT

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

Voľba Keď Suma> 1000 Potom Suma iná 0 Koniec

Pravidlá porovnávania dvoch hodnôt

Ak sa typy porovnávaných hodnôt navzájom líšia, potom sa vzťah medzi hodnotami určuje 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 sa typy údajov zhodujú, hodnoty sa porovnávajú podľa nasledujúcich pravidiel:

  • Booleovský typ má hodnotu TRUE väčšiu ako hodnotu FALSE;
  • typ Číslo má obvyklé pravidlá porovnávania čísel;
  • typ Dátum má skoršie dátumy menej ako neskoršie;
  • pre typ String - porovnania 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 (čísla záznamov atď.).

Práca s hodnotami NULL

Akákoľvek operácia, v ktorej je hodnota jedného z operandov NULL, bude mať za následok hodnotu NULL.

Existujú výnimky:

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

Operačné priority

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

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

Funkcie jazyka výrazov systému skladania údajov

Vypočítajte

Funkcia Vypočítať je určená na vyhodnotenie výrazu v kontexte nejaké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 zoskupenia použije riadok GeneralTotal, výpočet sa vykoná v kontexte celkového súčtu. V opačnom prípade sa výpočet vykoná v kontexte nadradeného zoskupenia s rovnakým názvom. Napríklad:
Suma (Sales.SumTurnover) / Vypočítať ("Suma (Sales.SumTurnover)", "TotalTotal")

V tomto príklade bude výsledkom pomer sumy pre pole Sales.SumTurnover 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ň()

ČísloObjednávka

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

ČísloObjednávka ()

NumberOrderInGroup

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

NumberOrderInGrouping ()

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.

Parametre:

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

Formát (Invoices.SumDoc, "NPT = 2")

Začiatok obdobia

Parametre:

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

Začiatok obdobia (Dátum Čas (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.

Parametre:

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

EndPeriod (DateTime (2002, 10, 12, 10, 15, 34), "Week")

výsledok:

13.10.2002 23:59:59

Pridať k dátumu

Funkcia je určená na pridanie určitej hodnoty k dátumu.

Parametre:

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

Pridať k dátumu (DateTime (2002, 10, 12, 10, 15, 34), "Mesiac", 1)

výsledok:

12.11.2002 10:15:34

Dátumový rozdiel

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

Parametre:

  • 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;

ROZDIEL (DÁTUM ČAS (2002, 10, 12, 10, 15, 34), DÁTUM ČAS (2002, 10, 14, 9, 18, 06), "DEŇ")

výsledok:

Podreťazec

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

Parametre:

  • Linka. Zadajte reťazec. Reťazec, z ktorého sa má extrahovať 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 podreťazca, ktorý sa má vybrať.

PODKLAD (Dodávatelia. Adresa, 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 sa určí.

Reťazec (Accounts.Address)

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 (dátum faktúry)

Štvrťrok

Táto funkcia je určená na extrahovanie štvrťročného čísla z hodnoty typu Dátum. Číslo štvrťroka je zvyčajne v rozsahu od 1 do 4.

Parameter

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

mesiac

Táto funkcia je určená na extrahovanie čísla mesiaca z hodnoty typu Dátum. Číslo mesiaca je zvyčajne v rozsahu od 1 do 12.

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

deň v roku

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

  • Dátum. Typ Dátum. Dátum, ktorým sa určuje deň v roku.
DEŇ V ROKU (dátum faktúry)

deň

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

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

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.
TÝŽDEŇ (dátum faktúry)

Deň v týždni

Táto funkcia je určená na získanie dňa v týždni z hodnoty typu Dátum. Deň v týždni je zvyčajne medzi 1 (pondelok) a 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)

hodina

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

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

Minúta

Táto funkcia je určená na získanie minúty v hodine z hodnoty typu Dátum. Minúta hodiny je v rozsahu od 0 do 59.

  • Dátum. Typ Dátum. Dátum, podľa ktorého je určená minúta hodiny.
MINÚTA (dátum faktúry)

Po druhé

Táto funkcia je určená 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 faktúry)

expresné

Táto funkcia je určená na extrahovanie typu z výrazu, ktorý môže obsahovať komplexný typ. Ak výraz obsahuje iný než požadovaný typ, vráti sa hodnota NULL.

Parametre:

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

Express (Data.Props1, "Number (10.3)")

ÁnoNull

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.SumTurnover), 0)

Bežné funkcie modulu

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 funkcií bežných modulov je povolené len vtedy, keď je špecifikovaný zodpovedajúci parameter procesora na kompozíciu údajov.

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

1. Vypočítať (hodnotiť)- je určený na hodnotenie výrazu v kontexte nejakého zoskupenia. Funkcia sa používa na kompatibilitu s predchádzajúcimi verziami platformy. Namiesto toho sa odporúča použiť funkciu EvaluateExpression.

Syntax:
Vypočítať (výraz, zoskupenie, typ výpočtu)

parametre:

  • Výraz(Čiarka). Obsahuje vypočítaný výraz;
  • Zoskupovanie(Čiarka). 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 zoskupenia použije riadok GeneralTotal, výpočet sa vykoná v kontexte celkového súčtu. V opačnom prípade sa výpočet vykoná v kontexte nadradeného zoskupenia s rovnakým názvom.
    Napríklad:
    Suma (Sales.Turnover Amount) / Vypočítať ("Amount (Sales.Turnover Amount)", "TotalTotal").
    V tomto príklade bude výsledkom pomer sumy pre pole Sales.SumTurnover záznamu zoskupenia k sume rovnakého poľa v celom rozložení.
  • Typ vysporiadania(Čiarka). Ak je tento parameter nastavený na "OverallTotal", výraz sa vypočíta pre všetky záznamy zoskupenia. Ak je hodnota parametra "Zoskupenie", hodnoty sa vypočítajú pre aktuálny záznam skupiny zoskupenia.
2. Vyhodnoťte výraz - je určený na hodnotenie výrazu v kontexte nejakého zoskupenia. Funkcia berie do úvahy výber zoskupení, ale nezohľadňuje hierarchické výbery. Funkciu nemožno použiť na zoskupenie vo výbere skupiny tohto zoskupenia.

Syntax:
EvaluateExpression (výraz, zoskupenie, typ výpočtu, začiatok, koniec, zoradenie, hierarchické zoradenie, podobné hodnoty objednávky)

parametre:

  • Výraz(Čiarka). Obsahuje vypočítaný výraz;
  • Zoskupovanie(Čiarka). 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 zoskupenia použije riadok GeneralTotal, výpočet sa vykoná v kontexte celkového súčtu. V opačnom prípade sa výpočet vykoná v kontexte nadradeného zoskupenia s rovnakým názvom;
  • Typ vysporiadania(Čiarka). Ak je tento parameter nastavený na "OverallTotal", výraz sa vypočíta pre všetky záznamy zoskupenia. Ak je hodnota parametra "Zoskupenie", hodnoty sa vypočítajú pre aktuálny záznam skupiny zoskupenia. Ak je parameter nastavený na "GroupingNonResource", potom pri výpočte funkcie pre záznam skupiny podľa zdrojov sa výraz vypočíta pre prvý záznam skupiny pôvodného zoskupenia. Pri vyhodnocovaní funkcie Evaluate Expression s hodnotou Non-Resource Grouping pre skupinové záznamy, ktoré nie sú zoskupeniami zdrojov, sa funkcia vyhodnotí rovnakým spôsobom ako pri hodnote parametra Grouping. Skladateľ šablóny kompozície údajov pri generovaní šablóny kompozície údajov pri výstupe do šablóny poľa – zdroja, pomocou ktorého sa zoskupovanie vykonáva, vydá výraz vypočítaný pomocou funkcie EvaluateExpression s parametrom „GroupingNoResource“ špecifikovaným v šablóne. Pre zvyšok zdrojov zoskupených podľa zdroja sa vrátia bežné výrazy prostriedkov. Ak je parameter nastavený na Hierarchy, potom sa výraz musí vyhodnotiť pre nadradený hierarchický záznam, ak nejaký existuje, a pre celé zoskupenie, ak nadradený hierarchický záznam neexistuje. Skladateľ rozloženia pri generovaní výrazu pre pole % v skupine hierarchie vygeneruje výraz obsahujúci vzťah výrazu zdroja k funkcii EvaluateExpression pre výraz zdroja vyhodnotený pre aktuálne zoskupenie s typom výpočtu Hierarchy.
  • Štart... Označuje, ktorým záznamom sa má začať fragment, v ktorom sa majú vypočítať agregované funkcie výrazu a z ktorého záznamu sa majú získať hodnoty polí mimo agregačných funkcií. Reťazec obsahujúci jeden z:
    • "Prvý" ("Prvý"). Musíte získať prvý záznam o zoskupení. Za slovom v zátvorkách môžete zadať výraz, ktorého výsledok sa použije ako posun od začiatku zoskupenia. Výsledná hodnota musí byť celé číslo väčšie ako nula. Napríklad First (3) - získanie tretieho záznamu od začiatku zoskupenia. Ak je prvý záznam mimo limitov zoskupenia, má sa za to, že neexistujú žiadne záznamy. Napríklad, ak existujú 3 záznamy a chcete získať Prvý (4), predpokladá sa, že neexistujú žiadne záznamy.
    • "Posledný" ("Posledný"). Musíte získať najnovší záznam o zoskupení. Za slovom v zátvorkách možno zadať výraz, ktorého výsledok sa použije ako posun od konca zoskupenia. Výsledná hodnota musí byť celé číslo väčšie ako nula. Napríklad Last (3) - získanie tretieho záznamu od konca zoskupenia. Ak je posledný záznam mimo limitov zoskupenia, má sa za to, že neexistujú žiadne záznamy. Napríklad, ak existujú 3 záznamy a chcete získať posledný (4), predpokladá sa, že neexistujú žiadne záznamy.
    • "Predchádzajúci" ("Predchádzajúci"). Musíte získať predchádzajúci záznam zoskupenia. Za slovom v zátvorkách možno zadať výraz, ktorého výsledok sa použije ako spätný posun od aktuálneho záznamu zoskupenia. Napríklad Predchádzajúci (2) – získa predchádzajúci záznam z predchádzajúceho záznamu. Ak predchádzajúci záznam presahuje rámec zoskupenia (napríklad pre druhý záznam zoskupenia chcete získať predchádzajúci (3)), získa sa prvý záznam zoskupenia. Pri získavaní predchádzajúceho záznamu pre súčet zoskupenia sa považuje za získaný prvý záznam.
    • "Ďalšie". Musíte získať ďalší záznam zoskupenia. Za slovom v zátvorkách možno zadať výraz, ktorého výsledok sa použije ako posun vpred od aktuálneho záznamu zoskupenia. Napríklad Next (2) - získať ďalší z nasledujúceho záznamu. Ak nasledujúci záznam vypadne zo zoskupenia, má sa za to, že neexistujú žiadne záznamy. Napríklad, ak existujú 3 záznamy a pre tretí záznam sa prijme Ďalej, potom neexistujú žiadne záznamy. Keď je prijatý ďalší záznam pre súčet zoskupenia, považuje sa to za neexistujúce žiadne záznamy.
    • "Aktuálny". Potrebujete získať aktuálny záznam. Pri získavaní celkového súčtu zoskupení sa získa prvý záznam.
    • "Hraničná hodnota". Potreba získať záznam v zadanej hodnote. Za slovom BoundedValue v zátvorkách musíte zadať výraz, ktorého hodnotou chcete začať fragment, prvé pole usporiadania. Ako záznam sa získa prvý záznam, ktorého hodnota poľa objednávky je väčšia alebo rovná zadanej hodnote. Napríklad, ak sa pole Obdobie používa ako pole objednávky a má hodnoty 01/01/2010, 01/02/2010, 01/03/2010 a chcete získať BoundingValue (DateTime (2010 , 1, 15)), potom dostanete záznam s dátumom 01.02.2010.
  • Koniec... Označuje, do ktorého záznamu sa má pokračovať v bloku, v ktorom sa má vyhodnotiť agregovaný výraz. Reťazec obsahujúci jeden z:
    • "Prvý" ("Prvý").
    • "Posledný" ("Posledný").
    • "Predchádzajúci" ("Predchádzajúci").
    • "Ďalšie".
    • "Aktuálny".
    • "Hraničná hodnota".
  • Triedenie... Reťazec, ktorý uvádza výrazy oddelené čiarkami v smere, v ktorom chcete poradie usporiadať. Ak nie je uvedené, zoradenie sa vykoná rovnakým spôsobom ako pri zoskupení, pre ktoré sa výraz vyhodnocuje. Za každým výrazom môžete zadať kľúčové slovo Vzostupne, pre vzostupné zoradenie, Zostupne, pre zostupné zoradenie, Automatické zoradenie, pre zoradenie odkazovaných polí podľa polí, podľa ktorých chcete zoradiť odkazovaný objekt. Slovo Automaticky usporiadať možno použiť s Vzostupne aj Zostupne.
  • Hierarchické zoradenie... Podobne ako pri triedení. Používa sa na usporiadanie hierarchických záznamov. Ak nie je zadané, zostavovateľ rozloženia vygeneruje poradie podľa poradia zadaného v parametri Zoradiť.
  • Spracovanie identických hodnôt objednávky... Reťazec obsahujúci jeden z:
    • "Spolu" označuje, že postupnosť usporiadaných záznamov sa používa na definovanie predchádzajúcich a nasledujúcich záznamov;
    • "Samostatne" - označuje, že predchádzajúci a nasledujúci záznam sú určené na základe hodnôt výrazov usporiadania;
    Napríklad, ak je výsledná sekvencia zoradená podľa dátumu:
    1. 1. januára 2001 Ivanov M. 10
    2. januára 2001 Petrov S. 20
    3.02. januára 2001 Sidorov R. 30
    4. 3. januára 2001 Petrov S. 40
    Pri použití spracovania rovnakých hodnôt objednávky "Oddelene" bude predchádzajúci záznam pre záznam 3 záznamom 2 a pri použití "Spolu" - záznam 1. A fragment pre aktuálny záznam pre záznam 2 pre "Oddelene" bude záznam 2 a pre "Spolu" - záznamy 2 a 3. Čiže súčet pre aktuálny záznam pre "Oddelene" bude 20 a pre "Spolu" - 50. Ak je "Spolu" špecifikované v poli Štart a Koncové parametre, nemôžete určiť posun pre pozície "Prvý", "Posledný", "Predchádzajúci", "Nasledujúci". Predvolená hodnota je Oddelená.
Príklad:
Získanie pomeru sumy pre pole „Sales.SumTurnover“ záznamu zoskupenia k sume v rovnakom poli v celom rozložení:
Suma (Sales.SumTurnover) / CalculateExpression ("Suma (Sales.SumTurnover)", "TotalTotal").

Tento príklad vypočítava hodnotu aktuálnej hierarchie:
Voľba
Keď úroveň ()> 0
Potom EvaluateExpression ("Referencia", "Hierarchia")
Inak Null
Koniec

Poznámky:
Funkcia berie do úvahy výber zoskupení, ale nezohľadňuje hierarchické výbery. Funkciu nemožno použiť na zoskupenie vo výbere skupiny tohto zoskupenia. Napríklad pri výbere nomenklatúrneho zoskupenia nemôžete použiť výraz CalculateExpression ("Súčet (SumTurnover)", "TotalTotal")> 1000. Ale takýto výraz možno použiť pri hierarchickom výbere. Ak koncový záznam predchádza počiatočnému záznamu, predpokladá sa, že neexistujú žiadne záznamy na výpočet podrobných údajov a výpočet súhrnných funkcií. Pri výpočte intervalových výrazov pre celkový súčet (parameter Zoskupenie je nastavený na "Total") sa predpokladá, že neexistujú žiadne záznamy na výpočet podrobných údajov a výpočet agregovaných funkcií. Skladateľ rozloženia pri generovaní výrazu pre funkciu EvaluateExpression, ak výraz zoradenia obsahuje polia, ktoré nemožno použiť v zoskupení, nahradí funkciu EvaluateExpression hodnotou NULL.

3. EvaluateExpressionWithGroupArray (EvalExpressionWithGroupArray) - funkcia vracia pole, ktorého každý prvok obsahuje výsledok vyhodnotenia výrazu na zoskupenie podľa zadaného poľa.

Syntax:
EvaluateGroupExpressionArray (výraz, GroupFieldExpressions, RecordSelection, GroupSelection)

parametre:

  • Výraz(String) – výraz, ktorý sa má vyhodnotiť. Napríklad "Suma (Suma obratu)";
  • Pole výrazy
  • Výber záznamov
  • Výber skupín- výber aplikovaný na záznamy skupiny. Napríklad: "Suma (SumaTurnover)> & Parameter1".
Príklad:
Maximum (CalculateExpressionWithGroupArray ("Súčet (SumTurnover)", "Protistrana"));


Skladateľ layoutu pri generovaní výrazov na zobrazenie vlastného poľa, vo výraze ktorého je prítomná len funkcia EvaluateArrayWithGrouping, vygeneruje zobrazený výraz tak, že údaje na zobrazenie pohľadov a údaje sú zoradené.
Napríklad pre vlastné pole s výrazom:
CalculateExpressionWithGroupingArray („Súčet (SumTurnover)“, „Protistrana“)
linker rozloženia vygeneruje pre výstup nasledujúci výraz:
ConnectRows (Array (Arrange (EvaluateExpressionWithGroupValuesTable) ("Zobraziť (Sum (Dataset.SumTurnover)), Sum (Dataset.SumTurnover)", "Dataset.Contractor"), "2")))

4. EvaluateExpressionWithGroupValueTable (EvalExpressionWithGroupValueTable) - funkcia vracia tabuľku hodnôt, ktorej každý prvok obsahuje výsledok vyhodnotenia výrazu na zoskupenie podľa zadaného poľa.

Syntax:
EvaluateGroupExpressionValueTable (výraz, výrazy v poli GroupField, výber záznamu, výber skupiny)

parametre:

  • Výraz(String) – výraz, ktorý sa má vyhodnotiť. Niekoľko výrazov môže byť uvedených v riadku oddelených čiarkami. Za každým výrazom môže nasledovať voliteľné kľúčové slovo AS a názov stĺpca tabuľky hodnôt. Napríklad: „Protistrana, suma (suma obratu) ako objem predaja“.
  • Pole výrazy- výrazy zoskupení polí, oddelené čiarkami. Napríklad „Protistrana, strana“;
  • Výber záznamov- výraz aplikovaný na podrobné záznamy. Napríklad „Značka vymazania = False“. Ak sa v tomto parametri použije agregačná funkcia, pri vykonávaní kompozície údajov sa vyskytne chyba;
  • Výber skupín- výber aplikovaný na záznamy skupiny. Napríklad: "Suma (SumaTurnover)> & Parameter1".
Príklad:
CalculateExpressionWithGroupValuesTable („Protistrana ako protistrana, Suma (AmountTurnover) ako objem predaja“, „Protistrana“)

Výsledkom tejto funkcie bude tabuľka hodnôt so stĺpcami Counterparty a SalesVolume, v ktorej budú umiestnené protistrany s ich objemami predaja.
Skladateľ rozloženia pri generovaní rozloženia prevedie parametre funkcie na podmienky polí rozloženia kompozície údajov. Napríklad pole Účet sa skonvertuje na Dataset.Contractor.
Napríklad vlastné pole s výrazom:
CalculateExpressionWithGroupValuesTable ("účet, čiastka (suma obratu)", "účet")
Skladateľ rozloženia vygeneruje pre výstup nasledujúci výraz:
ConnectRows (GetPart (Usporiadať (EvaluateExpressionWith GroupingValuesTable) ("Dataset.Contractor, Dataset.ContractorPresentation, Sum (Dataset.SumTurnover), Prezentácia (Dataset.TotalTurnover), Dataset.Field" OrderedSet. "")), "2, 4

5. Úroveň - funkcia je určená na získanie aktuálnej úrovne nahrávania.

Syntax:
úroveň()

Príklad:
úroveň()

6. SequenceNumber - získajte ďalšie sériové číslo.

Syntax:
ČísloObjednávka ()

Príklad:
ČísloObjednávka ()

7. SequenceNumberInGrouping - vráti ďalšie poradové číslo v aktuálnom zoskupení.

Príklad:
NumberOrderInGrouping ()

8. Formátovať - získať naformátovaný reťazec odovzdanej hodnoty.

Syntax:
Formát (Value, FormatString)

parametre:

  • Význam- výraz, ktorý sa má formátovať;
  • FormatString- formátovací reťazec je nastavený v súlade s formátovacím reťazcom 1C: Enterprise.
Príklad:
Formát (Invoices.SumDoc, "NPT = 2")

9. Začiatok obdobia (BeginOfPeriod)

Syntax:
Začiatok obdobia (dátum, typ obdobia)

parametre:

  • dátum(Dátum). Určený dátum;
  • Typ obdobia
Príklad:
Začiatok obdobia (Dátum Čas (2002, 10, 12, 10, 15, 34), "Mesiac")
Výsledok: 01.10.2002 0:00:00

10. EndOfPeriod (EndOfPeriod) - funkcia je navrhnutá tak, aby extrahovala konkrétny dátum z daného dátumu.

Syntax:
EndPeriod (dátum, typ obdobia)

parametre:

  • dátum(Dátum). Určený dátum;
  • Typ obdobia(Čiarka). Obsahuje jednu z hodnôt: Minúta; hodina; deň; Týždeň; mesiac; štvrťrok; Rok; desaťročie; Pol roka.
Príklad:
EndPeriod (DateTime (2002, 10, 12, 10, 15, 34), "Week")
Vysledok: 13.10.2002 23:59:59

11.AddKDate (DateAdd) - funkcia je určená na pridanie určitej hodnoty k dátumu.

Syntax:
AddKDate (výraz, typ prírastku, hodnota)

parametre:

  • Výraz(Dátum). Pôvodný dátum;
  • Typ zväčšenia(Čiarka). Obsahuje jednu z hodnôt: Minúta; hodina; deň; Týždeň; mesiac; štvrťrok; Rok; desaťročie; Pol roka.
  • Veľkosť(Číslo). O koľko je potrebné dátum zvýšiť, zlomková časť sa ignoruje.
Príklad:
Pridať k dátumu (DateTime (2002, 10, 12, 10, 15, 34), "Mesiac", 1)
Vysledok: 12.11.2002 10:15:34

12.DifferenceDate (DateDifference) - funkcia je navrhnutá tak, aby získala rozdiel medzi dvoma dátumami.

Syntax:
Dátumový rozdiel (Výraz1, Výraz2, Typ rozdielu)

parametre:

  • Výraz1(Dátum). Odpočítaný dátum;
  • Výraz2(Dátum). Pôvodný dátum;
  • Typový rozdiel(Čiarka). Obsahuje jednu z hodnôt: Druhá; minúta; hodina; deň; mesiac; štvrťrok; rok.
Príklad:
ROZDIEL (DÁTUM ČAS (2002, 10, 12, 10, 15, 34),
DÁTUM (2002, 10, 14, 9, 18, 06), "DAY")
Výsledok: 2

13. Podreťazec - táto funkcia je určená na extrahovanie podreťazca z reťazca.

Syntax:
Podreťazec (reťazec, poloha, dĺžka)

parametre:

  • Linka(Čiarka). Reťazec, z ktorého sa má extrahovať podreťazec;
  • pozícia(Číslo). Pozícia znaku, od ktorej začína podreťazec, ktorý sa má z reťazca extrahovať;
  • Dĺžka(Číslo). Dĺžka podreťazca, ktorý sa má vybrať.
Príklad:
PODKLAD (Dodávatelia. Adresa, 1, 4)

14.StringLength (StringLength) - funkcia je určená na určenie dĺžky reťazca.

Syntax:
Dĺžka čiary (reťazec)

Parameter:

  • Linka(Čiarka). Reťazec, ktorého dĺžka sa určí.
Príklad:
Reťazec (Accounts.Address)

15. Ročník- táto funkcia je navrhnutá tak, aby extrahovala rok z hodnoty typu Dátum.

Syntax:
rok (dátum)

Parameter:

  • dátum(Dátum). Dátum, do ktorého je určený rok.
Príklad:
ROK (dátum faktúry)

16. Štvrťrok - táto funkcia je určená na extrahovanie štvrťročného čísla z hodnoty typu Dátum. Číslo štvrťroka je zvyčajne v rozsahu od 1 do 4.

Syntax:
štvrťrok (dátum)

Parameter:

  • dátum(Dátum). Dátum, do ktorého je určený štvrťrok
Príklad:
ŠTVRŤROVEK (dátum odoslania)

17. mesiac - táto funkcia je určená na extrahovanie čísla mesiaca z hodnoty typu Dátum. Číslo mesiaca je zvyčajne v rozsahu od 1 do 12.

Syntax:
mesiac (dátum)

Parameter:

  • dátum(Dátum). Dátum, do ktorého je určený mesiac.
Príklad:
MESIAC (dátum faktúry)

18. Deň v roku (DayOfYear) - táto funkcia je určená na získanie dňa v roku z hodnoty typu Dátum. Deň v roku je zvyčajne v rozsahu od 1 do 365 (366).

Syntax:
Deň v roku (dátum)

Parameter:

  • dátum(Dátum). Dátum, ktorým sa určuje deň v roku.
Príklad:
DEŇ V ROKU (dátum faktúry)

19. deň- táto funkcia je určená na získanie dňa v mesiaci z hodnoty typu Dátum. Deň v mesiaci je zvyčajne v rozsahu od 1 do 31.

Syntax:
deň (dátum)

Parameter:

  • dátum(Dátum). Dátum, ktorým sa určuje deň v mesiaci.
Príklad:
DAY (dátum faktúry)

20. 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.

Syntax:
týždeň (dátum)

Parameter:

  • dátum(Dátum). Dátum, podľa ktorého sa určujú čísla týždňov.
Príklad:
TÝŽDEŇ (dátum faktúry)

21. Deň v týždni - táto funkcia je určená na získanie dňa v týždni z hodnoty typu Dátum. Deň v týždni je zvyčajne medzi 1 (pondelok) a 7 (nedeľa).

Syntax:
Deň v týždni (dátum)

Parameter:

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

22. hodina- táto funkcia je určená na získanie hodiny dňa z hodnoty typu Dátum. Denná hodina sa pohybuje od 0 do 23.

Syntax:
hodina (dátum)

Parameter:

  • dátum(Dátum). Dátum, podľa ktorého je určená hodina dňa.
Príklad:
HODINA (dátum odoslania)

23. Minúta - táto funkcia je určená na získanie minúty v hodine z hodnoty typu Dátum. Minúta hodiny je v rozsahu od 0 do 59.

Syntax:
minúta (dátum)

Parameter:

  • dátum(Dátum). Dátum, podľa ktorého je určená minúta hodiny.
Príklad:
MINÚTA (dátum faktúry)

24. Po druhé - táto funkcia je určená na získanie sekundy minúty z hodnoty typu Dátum. Sekunda minúty je v rozsahu od 0 do 59.

Syntax:
sekunda (dátum)

Parameter:

  • dátum(Dátum). Dátum, podľa ktorého sa určujú sekundy minúty.
Príklad:
DRUHÝ (dátum faktúry)

25. Obsadenie - táto funkcia je určená na extrahovanie typu z výrazu, ktorý môže obsahovať komplexný typ. Ak výraz obsahuje iný než požadovaný typ, vráti sa hodnota NULL.

Syntax:
Express (výraz, špecifikácia typu)

parametre:

  • Výraz- výraz, ktorý sa má previesť;
  • Označenie typu(Čiarka). Obsahuje reťazec typu. Napríklad „Číslo“, „Reťazec“ atď. Okrem primitívnych typov môže tento reťazec obsahovať názov tabuľky. V tomto prípade sa pokúsime vyjadriť sa k odkazu na zadanú tabuľku.
Príklad:
Express (Data.Props1, "Number (10.3)")

26. IsNull (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.

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

parametre:

  • Výraz1- kontrolovaná hodnota;
  • Výraz2- návratová hodnota, ak má výraz1 hodnotu NULL.
Príklad:
ÁnoNULL (Suma (Sales.SumTurnover), 0)

27. ACos- vypočíta arkkozín v radiánoch.

Syntax:
ACos (výraz)

Parameter:

  • Výraz(Číslo). Kosínusová hodnota (v rozsahu -1 ... 1), podľa ktorej je určený uhol.
28. ASin- vypočíta arcsínus v radiánoch.

Syntax:
ASin (výraz)

Parameter:

  • Výraz(Číslo). Sínusová hodnota (v rozsahu -1 ... 1), ktorou je určený uhol.
29. ATan- vypočíta arkustangens v radiánoch.

Syntax:
ATan (výraz)

Parameter:

  • Výraz(Číslo). Hodnota dotyčnice, podľa ktorej je určený uhol.
30. Cos- vypočíta kosínus.

Syntax:
Cos (výraz)

Parameter:

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

Syntax:
Exp (výraz)

Parameter:

  • Výraz(Číslo). Hodnota stupňa.
32. Log- vypočíta prirodzený logaritmus.

Syntax:
Denník (výraz)

Parameter:

  • Výraz
33. Log10- vypočíta logaritmus X so základom 10.

Syntax:
Log10 (výraz)

Parameter:

  • Výraz(Číslo). Pôvodné číslo je väčšie ako 0.
34. Pow- umocňovanie.

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

parametre:

  • Základňa(Číslo). Základ operácie umocňovania.
  • Indikátor(Číslo). Exponent.
35. Hriech- vypočíta sínus.

Syntax:
hriech (výraz)

Parameter:

  • Výraz(Číslo). Udáva sa v radiánoch.
36. Sqrt- vypočíta druhú odmocninu.

Syntax:
Sqrt (výraz)

Parameter:

  • Výraz(Číslo). Nezáporné číslo.
37. Tan- vypočíta tangens.

Syntax:
Tan (výraz)

Parameter:

  • Výraz(Číslo). Sínusová hodnota, podľa ktorej je uhol určený.
38. Ok (kolo)- zaokrúhli pôvodné číslo na požadovanú bitovú hĺbku. Režim zaokrúhľovania je štandardný (1,5 ako 2).

Syntax:
Okr (výraz, bitová hĺbka)

parametre:

  • Výraz(Číslo). Pôvodné číslo;
  • Bitová hĺbka(Číslo). Počet desatinných miest na zaokrúhlenie.
39. Int- odreže zlomkovú časť čísla.

Syntax:
Int (výraz)

Parameter:

  • Výraz(Číslo). Zlomkové číslo.
40. Funkcie spoloč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 funkcií bežných modulov je povolené len vtedy, keď je špecifikovaný zodpovedajúci parameter procesora na kompozíciu údajov.
Okrem toho funkcie bežných modulov nemožno použiť vo výrazoch vlastných polí.

41. Odpor - táto funkcia vracia reťazcovú reprezentáciu odovzdanej hodnoty neprimitívneho typu. Pre hodnoty primitívneho typu vráti samotnú hodnotu.

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

Príklad:
Podanie (protistrana)

42. Šnúrka - táto funkcia konvertuje odovzdanú hodnotu na reťazec.

Ak sa ako parameter použije pole alebo tabuľka hodnôt, funkcia vráti reťazec obsahujúci reťazec reprezentujúci všetky prvky poľa oddelené znakmi „;“. Ak má akýkoľvek prvok prázdnu reprezentáciu reťazca, potom reťazec "<Пустое значение>".

Príklad:
Reťazec (dátum predaja)

43. ValueIsFilled

Pre hodnoty NULL, Undefined vždy vráti False.
Pre hodnoty Boolean vždy vráti hodnotu True.
Pre ostatné typy vráti True, ak sa hodnota líši od predvolenej hodnoty pre tento typ.

Príklad:
ValueFilled (dátum doručenia)

44. LevelInGroup (LevelInGroup) - táto funkcia získa aktuálnu úroveň nahrávania vzhľadom na zoskupenie.

Môže sa použiť na získanie úrovne vnorenia záznamu v hierarchickom zoskupení.

Príklad:
LevelInGroup ()

45. ValueType

Syntax:
ValueType (výraz)

Parameter:

  • Výraz(Čiarka). Reťazcová hodnota typu.
Vráti hodnotu typu Type obsahujúcu typ hodnoty parametra funkcie.

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

  • výrazne skrátiť čas potrebný na vypracovanie správy;
  • zbaviť sa potreby vytvárať spravovaný obslužný program formulárov;
  • získať krásny výsledok na výstupe 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 obvodu, pretože nie všetky jeho nastavenia sú zrejmé a intuitívne. Najmä veľa ľudí vie, že v 1C ACS sú vypočítané polia, ktoré však úplne nepredstavujú oblasť ich použitia a metódy práce s nimi.

Čo je to vypočítané pole

Vo väčšine prípadov dotaz funguje ako zdroj údajov v schéme rozloženia. V zásade už v rámci samotného dotazu môžete použiť rôzne vzorce, konštrukcie a výrazy. Vynára sa prirodzená otázka, prečo potrebujeme duplicitné funkcie?

Faktom je, že ACS je viac než len zobrazenie výsledku vykonania dotazu a je to dokonale viditeľné z formulára na vytvorenie schémy (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 dotazom do špecifickej bunky zreťazením niekoľkých riadkov do jedného;
  • Prístup k exportným funkciám spoločného modulu;
  • Spustite rôzne výrazy dostupné pre jazyk rozloženia a použite špeciálne funkcie EvaluateExpression.

Sledujme tento zoznam a ideme.

Pole hodnôt v jednej bunke

Simulujme situáciu, keď je potrebné dostať do samostatnej bunky všetky čísla účteniek pre protistranu:


preto sme v našej schéme vytvorili ďalšie vypočítané pole;


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 JoinStrings ().

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

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

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

Funkcie všeobecné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 príznakom "Globálne", volá sa priamo menom, v opačnom prípade by sa mala funkcia volať podľa schémy "Spoločný názov modulu". Názov volanej funkcie.

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


Vidíme teda, že z ACS je možné inicializovať takmer každý data handler, čo značne rozširuje možnosti použitia schémy.

Prepojenie jazykových výrazov

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

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

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

Dá sa to urobiť pomocou konštrukcie "Voľba kedy .... Potom ... Inak ... Koniec".

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

Povedzme, že môžete získať čiastku dokumentu z predchádzajúceho riadku nášho dotazu zadaním hodnoty Vypočítať výraz ("Suma dokumentu", "Predchádzajúci súčet") v poli "Výraz".