1s SKD nezobrazuje celkové výsledky. Příklady použití funkce scd - výpočet výrazu. Vytváření nastavení prezentace sestav

Při tvorbě reportů existuje řada úkolů, které při přímém řešení často vedou k psaní těžké dotazy nebo dotazy ve smyčce nebo ruční výstup dat do tabulky.

Zde jsou příklady takových úkolů:

  • Získání rostoucího objemu prodeje po měsíci, například pro výstup ve formě grafu
  • Výpočet rozdílu tržeb běžného a předchozího období - pro všechny řádky výkazu
  • Porovnání objemu prodeje každého manažera s referenční hodnotou, která je vypočítána při generování tohoto reportu
  • Získávání kumulativních součtů vodorovně a svisle v křížových kartách

A všechny tyto problémy jsou vyřešeny jednoduše pomocí funkcí ACS - doslova za pár minut. Bez dotazů ve smyčce a křivého kódu.

Dnes se na konkrétních příkladech podíváme na využití některých funkcí ACS.

Video 1. Jak získat částku v přehledu jako kumulativní součet?

S podobnými problémy se v praxi často setkáváme. Nejtypičtějším příkladem je, že sestava by měla zobrazovat tržby za období, potřebujete znát nejen výši tržeb za aktuální měsíc, ale i kumulativní součet od začátku generování sestavy.

Ve skutečnosti lze tento problém vyřešit pomocí dotazu (bez funkcí ACS), ale existují 2 problémy:

  • Sám o sobě bude takový požadavek složitý – jeho vývoj a odladění bude nějakou dobu trvat.
  • Takový požadavek vážně zatíží systém – a čím více dat, tím pomaleji bude fungovat.

Pomocí funkcí ACS je tento úkol vyřešen pomocí jednoho řádku kódu a sestava bude fungovat co nejrychleji, podívejte se:

Video 2. Jak získat hodnotu z předchozího řádku sestavy?

Tato funkcionalita může být užitečná, když je potřeba sledovat trend určitého zdroje – dochází k poklesu nebo nárůstu oproti předchozímu stavu, plus je třeba vypočítat deltu.

Zde je několik příkladů, kde by to mohlo být užitečné:

  • Analýza pohledávek po dnech - vypočítáme trend a absolutní nárůst či pokles dluhu oproti předchozímu období
  • Analýza směnných kurzů a posouzení zisků či ztrát z kurzových rozdílů – je potřeba získat deltu mezi aktuálním a předchozím kurzem a vynásobit zůstatkem prostředků v dané měně.

Řešení takových problémů je také náročné na práci pomocí dotazu, ale v ACS se to děje na jednom řádku:

Video 3. Jak porovnat součet pro aktuální řádek s referenční hodnotou?

Příklad, kdy může být tato funkce užitečná:

  • Systém vede evidenci tržeb podle manažerů
  • Vedoucí oddělení provádí osobní prodej spolu s manažery
  • Je vyžadováno zobrazení zprávy o prodeji podle manažera
  • Sestava také musí zobrazovat rozdíl vzhledem k objemu prodeje vedoucího oddělení.

To znamená, že mluvíme o potřebě porovnat každý řádek prodeje manažera s prodejem vedoucího oddělení.

A tato data lze například použít pro výpočet bonusů.

A opět s pomocí SKD je tento problém vyřešen v jednom řádku:

Video 4. Získání kumulativního součtu na křížové kartě

V přehledu křížových karet lze průběžný součet vypočítat svisle (po řádcích) i vodorovně (po sloupcích).

Ukážeme si, jak ovládat směr výpočtu součtů pomocí jednoho parametru ACS:

Video 5. Zobrazení tabulkové části v samostatné buňce sestavy

Řekněme, že potřebujete vytvořit sestavu, která zobrazuje informace o dokumentech. V tomto případě musí samostatná buňka obsahovat tabulkovou část dokumentu.

Chcete-li vyřešit podobný problém pomocí běžného dotazu, budete muset ručně zapsat výsledek do tabulkového dokumentu.

Podívejme se na příklad:

Klientovi je zasíláno několik jednotek zboží s různými slevami. Je třeba zobrazit hodnoty slev pro každý produkt v přehledu a vypočítat průměrnou slevu. Vytvořme zprávu o systému kontroly přístupu.
U všech polí, u kterých potřebujeme zobrazit součty, nastavíme na záložce „Zdroje“ výraz (metodu) pro jejich výpočet. Pro pole "Sleva" nastavte způsob výpočtu jako "Průměr".

Vydáváme zprávu:

Jak vidíte, součet pro pole „Sleva“ se vypočítá jako aritmetický průměr hodnot polí, tzn. součet všech hodnot dělený počtem hodnot. Ale protože Vzhledem k tomu, že objemy expedovaného zboží s různými slevami jsou různé, lze průměrnou slevu vypočítat i jiným způsobem: např. jako poměr celkového množství expedovaného zboží s přihlédnutím ke slevě k celkovému množství expedovaného zboží. Zde však vyvstává otázka: pokud můžete napsat vzorec pro výpočet hodnot polí podrobných záznamů v ACS, pak se součty vypočítají automaticky podle výrazu zadaného na kartě „Zdroje“ a tam, jako Jak jsme viděli dříve, „Průměr“ se vypočítá jako aritmetický průměr zobrazených hodnot, jako V tomto případě mám vypočítat součet v tomto sloupci pomocí vlastního vzorce?
Ve skutečnosti to není těžké. Za tímto účelem upravíme naši sestavu tak, že do ní přidáme potřebná pole, která se budou podílet na výpočtu, v našem případě to jsou „ČástkaSleva“ a „ČástkaAtCena“.

Abychom „naučili“ ACS zobrazovat naše výsledky, provádíme následující kroky:
1. na záložce „Nastavení“ přiřaďte název seskupení „“, například „ResultSKD“, za tímto účelem vyvolejte kontextové menu pro seskupení a klikněte na „přiřadit název“;

2. na záložce „Rozvržení“ přidáme „rozvržení hlavičky seskupení“, kde vybereme dříve přiřazený název „TotalSKD“;

3. nakreslíme čáru layoutu, kde necháme všechny výsledky, jejichž výpočet nám vyhovuje, tak jak jsou a pro výpočet průměrného procenta slevy napíšeme vzorec pro výpočet;

Pokud je vše v pořádku, tak se při zobrazení reportu pod ním zobrazí dva součtové řádky, nejprve ten, který se generuje automaticky, pak ten vámi vytvořený.

Chcete-li ponechat výstup pouze vašeho součtového řádku, musíte na kartě „Nastavení“ v části „Další nastavení“ výstupu rozvržení zakázat výstup pro „Horizontální rozvržení celkového součtu“ a „Vertikální rozvržení celkového součtu“

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:

CalculateExpression je poměrně obtížně pochopitelná funkce ACS a příklady použití v referenčních informacích jsou poměrně vzácné. Tento článek popisuje příklady, které budou jistě užitečné pro každého vývojáře:

  1. kumulativní součet v seskupení;
  2. kumulativní součet v křížové kartě;
  3. získání předchozí hodnoty;
  4. Výstup PM v jednom řádku.

1. Získání ukazatele na akruální bázi

Dostaneme množství zboží jako kumulativní součet na úrovni seskupení. Chcete-li to provést, vytvořte počítané pole (viz obrázek 1).
Na záložce "Zdroje" nastavte funkci pro počítané pole:
CalculateExpression("Součet(množstvíObrat)", "První", "Aktuální")
který sečte počet produktů z prvního záznamu do aktuálního (viz obrázek 2).

Pokud je potřeba získat kumulativní celkové množství položky na úrovni podrobných záznamů, pak nastavíme funkci CalculateExpression pro kalkulované pole na záložce „Vypočítaná pole“ (viz obrázek 3).
V závislosti na úrovni získání kumulativního součtu vytvoříme seskupení (viz obrázek 4): na úrovni zdroje - seskupení podle zboží, na úrovni dálkového ovládání - seskupení podrobných záznamů.
Obrázek 4. Seskupení sestav s kumulativními součty

2. Získání hodnoty indikátoru z předchozího řádku

Pojďme získat směnný kurz pro datum a předchozí datum. Chcete-li to provést, vytvořte vypočítané pole a do pole výrazu napište následující výraz (viz obrázek 5):
CalculateExpression("Sazba", "Předchozí", "Předchozí")
který bude přebírat předchozí hodnotu směnného kurzu pro aktuální řádek, poslední parametr funkce omezuje příjem dat.
Protože pracujeme na úrovni podrobných záznamů, okamžitě přejdeme na kartu „Nastavení“ a vytvoříme seskupení - podrobné záznamy.

3. Získání ukazatele jako kumulativního součtu v křížové kartě

Pojďme získat množství zboží na akruální bázi podle období. Chcete-li to provést, vytvořte počítané pole (viz obrázek 1). Na záložce „Zdroje“ určíme pro počítané pole následující výraz (viz obrázek 6):
CalculateExpression("Součet (množstvíObrat)", "Období", "První", "Aktuální")
který na úrovni seskupení vypočítá množství zboží v intervalu od prvního řádku po aktuální v kontextu období pro každou položku.
Na záložce „Nastavení“ vytvořte tabulku se seskupením podle položky v řádku a seskupením podle období ve sloupci (viz obrázek 7).

4. Výstup tabulkových dat na jeden řádek

Metody zobrazení tabulkových dat v jednom řádku včetně metody pomocí funkce CalculateExpression pojednává článek

Ve složení dat nastavení součtů vypadá trochu jinak než v žádostech. Definujme datovou sadu „Query“ v systému skládání dat.

V samotném požadavku nekonfigurujeme součty, ale přejdeme na kartu „Zdroje“ kompozice dat. Na úrovni schématu složení dat jsme určit zdroje. Toto jsou pole, která je třeba počítat na úrovni seskupení. Klikněte na tlačítko „>>“ a systém sám přenese všechna číselná pole a definuje je jako zdroje.

Ve zdrojích můžete také zadat nečíselná pole. Pokud například vyberete atribut „Odkaz“, systém spočítá počet dokumentů v našich skupinách. Tyto informace mohou být také užitečné. Tak, v layout diagramu definujeme pouze zdroje a samotná seskupení jsou konfigurována na úrovni variant sestavy. Uživatel může také vytvořit seskupení, která chce vidět v nastavení možností sestavy.

Vytvořme standardní nastavení složení dat.
Klikněte na tlačítko „Otevřít návrháře nastavení“.

Vyberme typ sestavy – seznam. Klikněte na tlačítko „Další“.

Vybereme všechna pole a pole protistrany přesuneme na nejvyšší pozici. Klikněte na tlačítko „Další“.

Vybereme všechna pole a pole protistrany přesuneme na nejvyšší pozici. Klikněte na tlačítko „OK“.

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

Jak vidíte, při nastavování možnosti sestavy jsou zdroje zvýrazněny zelenou ikonou, takže je lze rychle odlišit od ostatních polí.

Pokud otevřeme naši sestavu v režimu 1C:Enterprise a vygenerujeme ji, uvidíme, že konečná data jsou generována na úrovni seskupení. Výsledky podle položek a protistran.

Nastavení zdrojů ve schématu složení dat 1C

Nyní obraťme svou pozornost nastavení, která existují pro zdroje. V poli „Výraz“ můžeme zadat agregační funkci, kterou lze použít k získání hodnoty zdroje. V rozevíracím seznamu můžete vidět řadu standardních funkcí, ale ne všechny. Nejsou zde například žádné funkce.

Zde do pole „Výraz“ můžeme napsat vlastní výraz.

V poli "Výraz" máme také přístup k funkcím běžných modulů.

Kromě toho můžete v poli „Vypočítat podle...“ určit, podle kterých seskupení se má zdroj vypočítat. Pokud pole „Vypočítat podle...“ není vyplněno, bude výsledná hodnota zdroje vypočtena na všech úrovních seskupení, které jsou definovány v nastavení volby sestavy. V našem případě musíme vyplnit pole „Vypočítat podle...“ zdroje „Množství“, protože můžeme prodávat zboží s různými měrnými jednotkami. Například: olej v litrech a kola v kusech. Není pravda, že by bylo nelogické množství tohoto zboží sčítat? Proto musíme ponechat součet množství na úrovni položky a na úrovni protistrany
Odeberme součet.

Pokud vygenerujeme sestavu, uvidíme, že součty množství se počítají pouze podle položky a součty množství pro dodavatele jsou prázdné.

Možnosti při popisu zdrojů ve schématu složení dat 1C

uvažujme řada nesamozřejmých funkcí souvisejících s popisem zdrojů.

  • Každý zdroj může definovat několikrát. Ale to má smysl jen tehdy, když
    zdroj bude vypočítán na různých úrovních seskupení. Například pokud množství, v jednom případě
    je sečtena pro položku a pro dodavatele získáme minimální hodnotu.

Pokud vygenerujeme zprávu, uvidíme, že pro protistranu „Deriya“ je minimální nákup pět jednotek z produktové řady „Samolepicí papír“.

  • V poli „Výraz“ můžete kromě psaní vzorce použít speciální funkce pro skládání dat s názvem „Vypočítat“. Tato funkce umožňuje vypočítat nějakou konečnou hodnotu pomocí určitého vzorce. Například pro každou protistranu je nutné znát procento nákupů ve fyzických jednotkách vzhledem k celkovému objemu. Jak ale získat celkový objem nákupů podle množství? Chcete-li to provést, použijte funkci „Vypočítat“ a do pole „Výraz“ napište následující výraz:
Součet(množství)/Vypočítat("Součet (množství)", "celkemCelkem")*100

Jak je vidět, všechny parametry funkce "Vypočítat" jsou řetězce. Aby se pole množství v přehledu krásně zobrazilo, nakonfigurujeme ho na kartě „Soubory dat“. V řádku množství najdeme pole „Možnosti úprav“. Otevřeme dialog, najdeme řádek „Formát“ a upravíme v něm řádek formátu, přičemž na záložce „Číslo“ nastavíme hodnotu „Přesnost“ na dvě.

Spusťte přehled a podívejte se na výsledek výpočtu procenta nákupů pro protistranu „AUPP KOS LLP“ vzhledem k
celkový objem:


Na konci článku vám chci doporučit jeden zdarma od Anatolije Sotnikova. Jedná se o kurz od zkušeného programátora. Na samostatném základě vám ukáže, jak vytvářet sestavy v systému řízení přístupu. Stačí jen pozorně naslouchat a pamatovat si! Obdržíte odpovědi na následující otázky:
  • Jak vytvořit jednoduchou sestavu seznamu?
  • K čemu slouží sloupce Pole, Cesta a Název na kartě Pole?
  • Jaká jsou omezení pro pole rozložení?
  • Jak správně nakonfigurovat role?
  • Jaké jsou role pro pole rozložení?
  • Kde najdu kartu složení dat v dotazu?
  • Jak nakonfigurovat parametry v systému řízení přístupu?
  • Stává se to ještě zajímavější...
Možná byste se neměli snažit sami brouzdat po internetu a hledat potřebné informace? Navíc je vše připraveno k použití. Jen začněte! Všechny podrobnosti o tom, co je v bezplatných videolekcích

Zde je jedna z lekcí o záložkách složení dat v dotazu:

KATEGORIE

OBLÍBENÉ ČLÁNKY

2024 „kuroku.ru“ - Hnojivo a krmení. Zelenina ve sklenících. Konstrukce. Choroby a škůdci