1c ckd příklady vypočítaných polí. Schéma složení dat (1C ACS)

1. Vypočítat (Eval) - je určen k vyhodnocení výrazu v kontextu nějakého seskupení. Tato funkce se používá pro kompatibilitu s předchozími verzemi platformy. Místo toho se doporučuje použít funkci EvaluateExpression.

Syntax:
Calculate (Expression, Grouping, CalculationType)

Možnosti:

  • Výraz (Čára). Obsahuje vypočítaný výraz;
  • Seskupení (Čá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, bude výpočet proveden v kontextu aktuálního seskupení. Pokud je jako název seskupení použit řetězec GeneralTotal, bude výpočet proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení s tímto názvem.
    Například:
    Částka (částka obratu) / vypočítat ("částka (částka obratu)", "celkem").
    V tomto příkladu bude výsledkem poměr částky pro pole Sales.SumTurnover záznamu seskupení k součtu stejného pole v celém rozložení.
  • Typ vypořádání (Čára). Pokud je tento parametr nastaven na „OverallTotal“, bude se výpočet počítat pro všechny záznamy seskupení. Pokud je hodnota parametru „Seskupení“, budou hodnoty vypočítány pro aktuální skupinový záznam seskupení.
2. Vyhodnoťte výraz (EvalExpression) - je určen k vyhodnocení výrazu v kontextu nějakého seskupení. Funkce bere v úvahu výběr seskupení, ale nebere v úvahu hierarchické výběry. Tuto funkci nelze použít na seskupení při výběru skupiny tohoto seskupení.

Syntax:
CalculateExpression (Expression, Grouping, CalculationType, Start, End, Sort, HierarchicalSort, ProcessSimilarOrderValues)

Možnosti:

  • Výraz (Čára). Obsahuje vypočítaný výraz;
  • Seskupení (Čá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, bude výpočet proveden v kontextu aktuálního seskupení. Pokud je jako název seskupení použit řetězec GeneralTotal, bude výpočet proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení se stejným názvem;
  • Typ vypořádání (Čára). Pokud je tento parametr nastaven na „OverallTotal“, bude se výpočet počítat pro všechny záznamy seskupení. Pokud je hodnota parametru „Seskupení“, budou hodnoty vypočítány pro aktuální skupinový záznam seskupení. Pokud je parametr nastaven na "Neseskupování zdrojů", bude při výpočtu funkce pro skupinový záznam podle prostředků vypočítán výraz pro první skupinový záznam původního seskupení. Při hodnocení funkce Vyhodnotit výraz s hodnotou seskupení bez prostředků pro záznamy skupiny, které nejsou seskupeními prostředků, se funkce vyhodnotí stejným způsobem, jako by to bylo s hodnotou parametru seskupení. Skladatel šablony pro složení dat při generování šablony pro složení dat při výstupu do šablony pole - prostředek, pomocí kterého se seskupení provádí, odešle do šablony výraz vypočítaný pomocí funkce EvaluateExpression se zadaným parametrem "GroupingNoResource". Pro zbývající prostředky seskupené podle prostředků se vrací regulární výrazy prostředků. Pokud je parametr nastaven na Hierarchii, pak musí být výraz vyhodnocen pro nadřazený hierarchický záznam, pokud existuje, a pro celé seskupení, pokud neexistuje žádný nadřazený hierarchický záznam. Skladatel rozvržení při generování výrazu pro pole% ve skupině hierarchie generuje výraz obsahující vztah výrazu prostředku k funkci EvaluateExpression pro výraz prostředku vyhodnoceného pro aktuální seskupení s typem výpočtu Hierarchie.
  • Start... Určuje, se kterým záznamem spustit fragment, ve kterém se mají vypočítat agregační funkce výrazu a ze kterého záznamu se mají získat hodnoty polí mimo agregační funkce. Řetězec obsahující jednu z:
    • „První“ („První“). Musíte získat první záznam o seskupení. Za slovo v závorkách lze 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) - získání třetího záznamu od začátku seskupení. Pokud první záznam překročí limity seskupení, má se za to, že neexistují žádné záznamy. Například pokud existují 3 záznamy a chcete získat první (4), pak se má za to, že neexistují žádné záznamy.
    • "Poslední". Musíte získat nejnovější záznam o seskupení. Za slovo v závorkách lze 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) - získání třetího záznamu od konce seskupení. Pokud je poslední záznam mimo limity seskupení, má se za to, že neexistují žádné záznamy. Například pokud existují 3 záznamy a chcete získat poslední (4), pak se má za to, že neexistují žádné záznamy.
    • „Předchozí“ („Předchozí“). Musíte získat předchozí záznam o seskupení. Za slovo v závorkách lze zadat výraz, jehož výsledek bude použit jako posun zpět od aktuálního záznamu seskupení. Například Předchozí (2) - získejte předchozí z předchozího záznamu. Pokud předchozí záznam přesahuje seskupení (například pro druhý seskupovací záznam, který chcete získat Předchozí (3)), získá se první seskupovací záznam. Při získávání předchozího záznamu pro souhrnný součet se má za to, že se získá první záznam.
    • "Další". Musíte získat další záznam o seskupení. Za slovo v závorkách lze zadat výraz, jehož výsledek bude použit jako posun vpřed od aktuálního záznamu seskupení. Například Next (2) - získat další z dalšího záznamu. Pokud další záznam zmizí ze seskupení, má se za to, že neexistují žádné záznamy. Například pokud existují 3 záznamy a pro třetí záznam je přijato Next, pak neexistují žádné záznamy. Když je přijat další záznam pro souhrnný součet, má se za to, že neexistuje žádný záznam.
    • „Aktuální“ („Aktuální“). Musíte získat aktuální záznam. Při načítání pro seskupovací součet se získá první záznam.
    • "BoundaryValue". Potřeba získat záznam na zadanou hodnotu. Za slovem LimitingValue v závorkách musíte zadat výraz s hodnotou, kterou chcete spustit fragment, první objednávkové pole. Jako záznam bude získán první záznam, jehož hodnota v objednávkovém poli je větší nebo rovna zadané hodnotě. Pokud je například pole Období použito jako objednávací pole a má hodnoty 01/01/2010, 01/02/2010, 01/03/2010 a chcete získat BoundingValue (DateTime (2010, 1, 15)), obdržíte záznam s datem 01.02. 2010.
  • konec... Označuje, ke kterému záznamu bude pokračovat fragment, ve kterém se má vyhodnotit agregovaný výraz. Řetězec obsahující jednu z:
    • „První“ („První“).
    • "Poslední".
    • „Předchozí“ („Předchozí“).
    • "Další".
    • „Aktuální“ („Aktuální“).
    • "BoundaryValue".
  • Třídění... Řetězec, který obsahuje seznam výrazů oddělených čárkami ve směru, ve kterém chcete pořadí objednat. Pokud není zadáno, řazení se provádí stejným způsobem jako pro seskupení, pro které se výraz vyhodnocuje. Po každém výrazu můžete zadat klíčové slovo Vzestupně, pro vzestupné pořadí, Sestupně, pro sestupné pořadí, Automatické řazení, pro řazení odkazovaných polí podle polí, podle kterých chcete objednat odkazovaný objekt. Slovo Auto-Arrange lze použít jak s Ascending, tak s Descending.
  • Hierarchické řazení... Podobně jako třídění. Slouží k uspořádání hierarchických záznamů. Pokud není zadán, skladatel rozložení vygeneruje řazení podle pořadí uvedeného v parametru Sort.
  • Zpracování stejných hodnot objednávek... Řetězec obsahující jednu z:
    • „Společně“ označuje, že k definování předchozího a následujícího záznamu je použita posloupnost seřazených záznamů;
    • "Samostatně" - označuje, že předchozí a následující záznamy jsou určeny na základě hodnot výrazů řazení;
    Například pokud je výsledná sekvence seřazená podle data:
    01.01.2001 Ivanov M. 10.
    2. ledna 2001 Petrov S. 20
    3. 02. ledna 2001 Sidorov R. 30
    4. 3. ledna 2001 Petrov S. 40
    Při použití zpracování hodnot stejné hodnoty „Samostatně“ bude předchozí pro záznam 3 záznam 2 a při použití „Společně“ - záznam 1. A fragment aktuálního záznamu pro záznam 2 pro „Samostatně“ bude záznam 2 a pro „Společně“ - záznamy 2 a 3. Tedy součet pro aktuální záznam pro „Samostatně“ bude 20 a pro „Společně“ - 50. Pokud je v parametrech Počátek a Konec zadán „Společně“, nemůžete určit posun pro pozice „První“, „Poslední“, "Předchozí další". Výchozí hodnota je Samostatná.
Příklad:
Získání poměru částky pro pole „Sales.SumTurnover“ seskupovacího záznamu k množství stejného pole v celém rozložení:
Částka (Sales.SumTurnover) / CalculateExpression ("Částka (Sales.SumTurnover)", "TotalTotal").

Tento příklad vypočítá hodnotu aktuální hierarchie:
Výběr
Když úroveň ()\u003e 0
Pak EvaluateExpression ("Reference", "Hierarchie")
Jinak Null
konec

Poznámky:
Funkce bere v úvahu výběr seskupení, ale nebere v úvahu hierarchické výběry. Tuto funkci nelze použít na seskupení při výběru skupiny tohoto seskupení. Například při výběru seskupení nomenklatury nemůžete použít výraz CalculateExpression ("Sum (SumTurnover)", "TotalTotal")\u003e 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, pak se má 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 výrazů intervalu pro celkový součet (parametr seskupení je nastaven na "Celkem") se předpokládá, že neexistují žádné záznamy pro výpočet podrobných dat a výpočet agregačních funkcí. Skladatel rozložení při generování výrazu funkce EvaluateExpression, pokud objednávkový výraz obsahuje pole, která nelze použít ve seskupení, nahradí funkci EvaluateExpression hodnotou NULL.

3. EvaluateExpressionWithGroupArray (EvalExpressionWithGroupArray) - funkce vrací pole, jehož každý prvek obsahuje výsledek vyhodnocení výrazu pro seskupení podle zadaného pole.

Syntax:
EvaluateGroupExpressionArray (Expression, GroupFieldExpressions, RecordSelection, GroupSelection)

Možnosti:

  • Výraz (String) - výraz, který se má vyhodnotit. Například „Částka (AmountTurnover)“;
  • Polní výrazy
  • Výběr záznamů
  • Výběr skupin - výběr aplikovaný na skupinové záznamy. Například: „Částka (AmountTurnover)\u003e & Parametr1“.
Příklad:
Maximum (CalculateExpressionWithGroupArray ("Sum (SumTurnover)", "Counterparty"));


Skladatel rozložení při generování výrazů pro zobrazení vlastního pole, ve výrazu kterého je přítomna pouze funkce EvaluateArrayWithGrouping, vygeneruje zobrazený výraz takovým způsobem, že data zobrazují pohledy a data jsou uspořádána.
Například pro vlastní pole s výrazem:
CalculateExpressionGroupedArray ("Sum (SumTurnover)", "Counterparty")
linker rozložení vygeneruje pro výstup následující výraz:
ConnectRows (Array (Arrange (EvaluateExpressionWith GroupedValuesTable ("Representation (Sum (Dataset.SumTurnover)), Sum (Dataset.SumTurnover)", "Dataset.Contractor"), "2")))

4. EvaluateExpressionWithGroupValueTable (EvalExpressionWithGroupValueTable) - funkce vrací tabulku hodnot, z nichž každý prvek obsahuje výsledek vyhodnocení výrazu pro seskupení podle zadaného pole.

Syntax:
EvaluateGroupExpressionValueTable (Expression, GroupField Expressions, RecordSelection, GroupSelection)

Možnosti:

  • Výraz (String) - výraz, který se má vyhodnotit. Na řádku může být uvedeno několik výrazů oddělených čárkami. Za každým výrazem může následovat volitelné klíčové slovo AS a název sloupce tabulky hodnot. Například: „Protistrana, částka (AmountTurnover) jako částka prodeje“.
  • Polní výrazy - výrazy seskupovacích polí oddělené čárkami. Například „Counterparty, Party“;
  • Výběr záznamů - výraz aplikovaný na podrobné záznamy. Například „Značka pro odstranění \u003d False“. Pokud je v tomto parametru použita agregační funkce, dojde při sestavování dat k chybě;
  • Výběr skupin - výběr aplikovaný na skupinové záznamy. Například: „Částka (AmountTurnover)\u003e & Parametr1“.
Příklad:
CalculateExpressionWithGroupValuesTable ("Counterparty AS Counterparty, Amount (AmountTurnover) As Volume Volume", "Counterparty")

Výsledkem této funkce bude tabulka hodnot se sloupci Counterparty a SalesVolume, která bude obsahovat protistrany s jejich objemy prodeje.
Skladatel rozvržení při generování rozvržení převádí parametry funkce na podmínky polí rozvržení datové kompozice. Například pole Účet bude převedeno na Dataset.Contractor.
Například vlastní pole s výrazem:
CalculateExpressionWithGroupValuesTable ("Účet, částka (SumTurnover)", "Účet")
Skladatel rozvržení vygeneruje pro výstup následující výraz:
ConnectRows (GetPart (Arrange (EvaluateExpressionWith GroupingValuesTable ("Dataset.Contractor, Dataset.ContractorPresentation, Sum (Dataset.SumTurnover), View (Dataset.TotalTurnover), Dataset.Field" Arranged "," 3) ") ), „2, 4“))

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

Syntax:
Úroveň()

Příklad:
Úroveň()

6. Pořadové číslo - získejte další sériové číslo.

Syntax:
NumberOrder ()

Příklad:
NumberOrder ()

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

Příklad:
NumberOrderInGrouping ()

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

Syntax:
Format (Value, FormatString)

Možnosti:

  • Hodnota - výraz, který má být formátován;
  • FormatString - řetězec formátu je nastaven v souladu s řetězcem formátu 1C: Enterprise.
Příklad:
Formát (Invoices.SumDoc, "NPT \u003d 2")

9. Začátek období (BeginOfPeriod)

Syntax:
Začátek období (datum, typ období)

Možnosti:

  • datum (Datum). Stanovené datum;
  • Typ období
Příklad:
Začátek období (DateTime (2002, 10, 12, 10, 15, 34), „měsíc“)
Výsledek: 01.10.2002 0:00:00

10. EndOfPeriod (EndOfPeriod) - funkce je navržena tak, aby extrahovala konkrétní datum z daného data.

Syntax:
EndPeriod (Date, PeriodType)

Možnosti:

  • datum (Datum). Stanovené 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), "Week")
Výsledek: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - funkce je určena pro přidání určité hodnoty k datu.

Syntax:
AddKDate (Expression, IncrementType, Value)

Možnosti:

  • Výraz (Datum). Původní datum;
  • Typ zvětšení (Čára). Obsahuje jednu z následujících hodnot: Minuta; Hodina; Den; Týden; Měsíc; Čtvrťák; Rok; Desetiletí; Půl roku.
  • Množství (Číslo). O kolik by se mělo datum zvýšit, je zlomková část ignorována.
Příklad:
Přidat k datu (DateTime (2002, 10, 12, 10, 15, 34), "Měsíc", 1)
Výsledek: 12.11.2002 10:15:34

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

Syntax:
Rozdíl v datech (Výraz1, Výraz2, Typ rozdílu)

Možnosti:

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

13. Podřetězec - tato funkce je navržena tak, aby extrahovala podřetězec z řetězce.

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

Možnosti:

  • Čára (Čára). Řetězec, ze kterého se má extrahovat podřetězec;
  • Pozice (Číslo). Pozice znaku, od kterého začíná podřetězec, který má být extrahován z řetězce;
  • Délka (Číslo). Délka podřetězce, který se má vybrat.
Příklad:
SUBSTRATE (Contractors.Address, 1, 4)

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

Syntax:
Délka řádku (řetězec)

Parametr:

  • Čára (Čára). Řetězec, který má být zadán v délce.
Příklad:
Řetězec (Accounts.Address)

15. rok - tato funkce je určena k extrakci roku z hodnoty typu Datum.

Syntax:
Rok (datum)

Parametr:

  • datum (Datum). Datum, ke kterému je rok určen.
Příklad:
YEAR (datum odeslání)

16. Čtvrtletí - tato funkce je určena k extrakci čísla čtvrtiny z hodnoty typu Datum. Číslo čtvrtiny je obvykle v rozmezí od 1 do 4.

Syntax:
Čtvrtletí (datum)

Parametr:

  • datum (Datum). Datum, ke kterému je čtvrtletí určeno
Příklad:
ČTVRTLETÍ (datum odeslání)

17. Měsíc - tato funkce je určena k extrakci čísla měsíce z hodnoty typu Datum. Číslo měsíce je obvykle v rozmezí od 1 do 12.

Syntax:
Měsíc (datum)

Parametr:

  • datum (Datum). Datum, ke kterému je měsíc určen.
Příklad:
MĚSÍC (datum faktury)

18. Den v roce (DayOfYear) - tato funkce je navržena tak, aby získala den v roce z hodnoty typu Datum. Den v roce je obvykle v rozmezí od 1 do 365 (366).

Syntax:
Den v roce (datum)

Parametr:

  • datum (Datum). Datum, ke kterému je určen den v roce.
Příklad:
DEN ROKU (Datum faktury)

19. den - tato funkce je určena k získání dne v měsíci z hodnoty typu Datum. Den v měsíci je obvykle v rozmezí od 1 do 31.

Syntax:
Den (datum)

Parametr:

  • datum (Datum). Datum, ke kterému je určen den v měsíci.
Příklad:
DEN (datum faktury)

20. týden - tato funkce je určena k získání čísla týdne roku z hodnoty typu Datum. Týdny v roce jsou očíslovány od 1.

Syntax:
Týden (datum)

Parametr:

  • datum (Datum). Datum, do kterého jsou určena čísla týdnů.
Příklad:
TÝDEN (datum faktury)

21. WeekDay - tato funkce je určena k získání dne v týdnu z hodnoty typu Datum. Den v týdnu je obvykle mezi 1 (pondělí) a 7 (neděle).

Syntax:
Den v týdnu (datum)

Parametr:

  • datum (Datum). Datum, ke kterému je určen den v týdnu.
Příklad:
DEN TÝDNE (datum faktury)

22. Hodina - tato funkce je navržena tak, aby získala hodinu dne z hodnoty typu Datum. Hodina dne se pohybuje od 0 do 23.

Syntax:
Hodina (datum)

Parametr:

  • datum (Datum). Datum, do kterého se určuje denní hodina.
Příklad:
HOUR (datum odeslání)

23. minuta - tato funkce je určena k získání minuty hodiny z hodnoty typu Datum. Minuta hodiny se pohybuje od 0 do 59.

Syntax:
Minuta (datum)

Parametr:

  • datum (Datum). Datum, do kterého se určuje minuta hodiny.
Příklad:
MINUTA (datum faktury)

24. Zadruhé - tato funkce je určena k získání sekundy minuty z hodnoty typu Datum. Druhá minuta se pohybuje od 0 do 59.

Syntax:
Druhý (datum)

Parametr:

  • datum (Datum). Datum, do kterého jsou určeny sekundy minuty.
Příklad:
DRUHÉ (datum faktury)

25. Obsazení - tato funkce je určena k extrakci typu z výrazu, který může obsahovat složitý typ. V případě, že výraz obsahuje jiný než požadovaný typ, bude vrácena hodnota NULL.

Syntax:
Express (výraz, specifikace typu)

Možnosti:

  • Výraz - výraz, který má být převeden;
  • Typové označení (Čára). Obsahuje řetězec typu. Například „Number“, „String“ atd. Kromě primitivních typů může tento řetězec obsahovat název tabulky. V takovém případě bude proveden 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:
IsNull (výraz1, výraz2)

Možnosti:

  • Výraz1 - zkontrolovaná hodnota;
  • Výraz2 - návratová hodnota, pokud má Expression1 NULL.
Příklad:
Ano NULL (součet (Sales.SumTurnover), 0)

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

Syntax:
ACos (výraz)

Parametr:

  • Výraz (Číslo). Kosinová hodnota (v rozsahu -1 ... 1), o kterou se určuje úhel.
28. ASin - vypočítá arcsine v radiánech.

Syntax:
ASin (výraz)

Parametr:

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

Syntax:
ATan (výraz)

Parametr:

  • Výraz (Číslo). Hodnota tangenty, o kterou je určen úhel.
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). Hodnota stupně.
32. Log - vypočítá přirozený logaritmus.

Syntax:
Protokol (výraz)

Parametr:

  • Výraz
33. Log10 - vypočítá logaritmus X na základnu 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ákladna, indikátor)

Možnosti:

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

Syntax:
Hřích (výraz)

Parametr:

  • Výraz (Číslo). Uvedeno 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, o kterou je určen úhel.
38. Okr (kulatý) - zaokrouhlí původní číslo na požadovanou bitovou hloubku. Režim zaokrouhlování je standardní (1,5 jako 2).

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

Možnosti:

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

Syntax:
Int (výraz)

Parametr:

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

Výraz modulu pro složení dat může obsahovat volání funkcí globálních společných konfiguračních modulů. K volání těchto 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 obecného konfiguračního modulu.
Upozorňujeme, že použití funkcí běžných modulů je povoleno pouze v případě, že je zadán odpovídající parametr procesoru složení dat.
Funkce obecných modulů navíc nelze použít ve výrazech vlastních polí.

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

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

Příklad:
Podání (protistrana)

42. Řetězec - tato funkce převádí předanou hodnotu na řetězec.

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

Příklad:
Řetězec (datum prodeje)

43. ValueIsFilled

U hodnot NULL Undefined vždy vrátí False.
U hodnot Boolean vždy vrátí True.
U ostatních typů vrátí True, pokud se hodnota liší od výchozí hodnoty pro tento typ.

Příklad:
ValueFilled (datum dodání)

44. LevelInGroup (LevelInGroup) - tato funkce získá aktuální úroveň záznamu ve vztahu ke skupině.

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). Řetězcová hodnota typu.
Vrátí hodnotu typu Type obsahující typ hodnoty parametru funkce.

Schéma složení dat (1C ACS) - pohodlný konstruktér pro vytváření komplexních zpráv v 1C: Podnikové softwarové produkty, které přispívají k vývoji a sledování automatizace výroby a umožňují jim být co nejpružnější a nejkrásnější za minimální dobu. Dalším plusem schématu složení dat (1C ACS) je automatické generování formuláře řízené zprávy a s dalším vývojem tohoto směru je důležitým faktorem při výběru metody pro vypracování zprávy. Ale vzhledem ke složitosti struktury schématu datového složení (1C ACS) a velkému množství nastavení to často vede k delšímu vývoji zprávy než prostřednictvím „návrháře výstupních formulářů“. Proto musí programátor 1C porozumět všem složitostem schématu složení dat (1C ACS), aby dále urychlil dobu vývoje pro generování zpráv.

Pojďme se podívat na první tři karty schématu složení dat (1C ACS) - datová sada, odkazy na datovou sadu a vypočítaná pole.

Soubor dat v 1C ACS

Datová sada obsahuje možnost vytvořit tři objekty - dotaz, objekt a sjednocení, pojďme se podrobněji zabývat každým z nich:

Jedná se o běžný požadavek, který se vytvoří kliknutím na tlačítko konstruktoru dotazu. Pokud je nastaven příznak automatického doplňování, pak všechny vybrané podrobnosti automaticky spadnou do polí sady dat. Je také možné přizpůsobit vyplňování polí v požadavku na kartě Složení dat, kde jsou tři karty:

Tabulky, zde vybíráme tabulky, které se budou podílet na tvorbě zprávy, obvykle jsou vybrány výchozí údaje, protože na kartě Tabulky a pole jsme již vybrali dokumenty, referenční knihy, registry, které potřebujeme ...

Pole, zde vybereme ty objekty, které by měly být zahrnuty do sestavy, podřízený příznak označuje, zda pro objekt budou k dispozici podřízené prvky nebo ne, je logické, že příznak nelze nastavit na True pro řetězcová, číselná a podobná data.

Podmínky, zde vybereme ty objekty, které lze použít v podmínkách v ACS.

Část práce se provádí ve schématu složení dat, část programově, pojďme se podívat na jednoduchý příklad:

Nejprve vytvoříme schéma rozvržení složení dat dokumentu a pojmenujeme ACS (například: 1C ACS), vytvoříme v něm objekt datové sady, poté vyplníme pole, například máme tabulkovou část dokumentu s náležitostmi - položkou, množstvím a cenou.

Přidejte tři pole a vyplňte pole pro každý sloupec s názvem podrobností, ostatní sloupce se vyplní automaticky:

Vytvořme tlačítko na formuláři dokumentu, popište mechanismus pro práci ve spravovaných formulářích:

& Na klientovi

Postup tisku ()

OurReport \u003d PrintOnServer (); // volání funkce na serveru

OurReport.Show (); // zobrazí vygenerovaný report

Konec postupu

& Na serveru

Funkce PrintOnServer ()

DocumentObject \u003d FormAvailableValue ("Objekt");

//umístíme tabulkovou sekci Zboží do struktury s názvem ZbožíSKD stejným způsobem, jako jsme v samotném ACS označili název objektu obsahujícího data

Datová sada \u003d nová struktura;

SetData.Insert ("GoodsSKD", DocumentObject.Goods);

//získejte naše rozvržení a nastavte výchozí nastavení tak, aby všechna nastavení výstupu sestavy byla převzata z našeho rozvržení

OurMakeup \u003d DocumentObject.GetMakeup („SKD“);

Settings \u003d OurLayout.Default Settings;

//vytvořte rozvržení složení dat pomocí našich nastavení

Layout Composer \u003d Nový DataComposition Layout Composer;

LayoutComposition \u003d LayoutComposer.Execute (OurLayout, Nastavení);

//provedení složení dat s naší datovou sadou

DataComposition Processor \u003d Nový procesor DataComposition;

DataCompositionProcessor.Initialize (LayoutDataset);

//vytvoříme tabulkový dokument a zobrazíme v něm naši zprávu

ReportDocument \u003d Nový SpreadsheetDocument;

OutputProcessor \u003d Nový OutputProcessorDataCompositionResultInTableDocument;

OutputProcessor.SetDocument (ReportDoc);

OutputProcessorOutput (DataComposition Processor);

Vrácení dokumentu zprávy;

EndFunction

Pokud si přejete, můžete získat oblasti a jakékoli jiné rozvržení a také zobrazit v tomto přehledu, například máme typické rozvržení pro vytvoření platby a v něm je velmi dobře vytvořeno záhlaví, takže, abychom nedělali zbytečnou práci, stačí nejprve získat rozložení, zobrazit záhlaví, pak vygenerujeme a zobrazíme naši zprávu na ACS.

O unifikace

Můžeme do něj vložit své dotazy a objekty, ale na rozdíl od odkazu jednoduše přidá tabulky navzájem, to znamená, že pokud propojíme dvě identické tabulky, skončíme s jednou a při kombinaci se zdvojnásobí, zvažte jednoduchý příklad :

Máme tabulky:

Po komunikaci obdržíme:

A při kombinaci:

Uvažujme nyní o vyplnění sloupců v datových sadách (některé přeskočíme, protože souvisejí s jinými kartami, vrátíme se k nim v budoucích článcích):

- pole, uveďte obecný název podpěr;

­­- způsob, označíme název požadavku, kterým na něj budeme v ACS odkazovat, například v Vypočítaná pole;

- nadpis, uveďte název proměnné, která se zobrazí v sestavě;

- omezení marže, označit dostupnost tohoto požadavku;

- omezení náležitostí, označujeme dostupnost podřízených prvků, je důležité, že pokud je uvedena dostupnost podrobností, pak bude k dispozici samotné pole, snad se tato mechanika v budoucích verzích změní;

- výraz, kterým se hodnotí reprezentace pole, je vhodné použít, když potřebujeme trochu změnit zobrazení podrobností, například to potřebujeme za jménem nomenklatura byl stažen sklad, na kterém se nachází, pak vyplňte následující: Nomenklatura + „skladem“ + Sklad. Opakuji, že adresa podrobností se provádí prostřednictvím jména uvedeného ve sloupci způsob;

- řazení výrazů, vhodný mechanismus pro nastavení řazení sestavy, kde lze podmínku nastavit ručně, podobně jako v předchozím bodě, ale jak ukazuje praxe, tento mechanismus často nefunguje tak, jak bychom chtěli, a doporučuji vám použít standardní třídění;

- typ hodnoty, je uveden typ hodnoty proměnné, je nutné vyplnit, pokud použijete další pole;

- dostupné hodnoty, funguje pouze po vyplnění typ hodnoty, otevřete vyplňovací formulář a ve sloupci Hodnota označíme prvek, který je třeba změnit, podle typu to mohou být předdefinované objekty nebo číselné, například atributy, mají jednoduché hodnoty, v podání označíme, co musíme změnit, příklad booleovského typu:

- registrace - standardní nastavení formátu pole, podobné nastavení ve spravovaných formulářích, vám umožňuje přesněji a krásněji přizpůsobit výstup určitého atributu.

Odkazy na datové sady v 1C ACS

Pouze levé připojení, podle principu podobného jako připojení v dotazech, v zdroj komunikace označíme hlavní tabulku pro připojení v přijímač další. V zdroj výrazua přijímač výrazů označujeme podrobnosti, podle kterých bude spojení probíhat. Zbývající sloupce zvážíme podrobněji, když analyzujeme kartu. Možnosti... Pokud s parametry není žádné další připojení, doporučuje se provést připojení v požadavku, což zrychlí hlášení.

Vyhodnoťte výraz je poměrně složitá funkce ACS k pochopení a příklady použití v referenčních informacích jsou poměrně vzácné. Tento článek obsahuje příklady, které budou určitě užitečné pro každého vývojáře:

  1. kumulativní součet ve skupině;
  2. průběžný součet v křížové tabulce;
  3. získání předchozí hodnoty;
  4. výstup PM v jednom řádku.

1. Získání indikátoru na kumulativní bázi

Pojďme získat počet produktů na kumulativní bázi na úrovni seskupení. K tomu vytvoříme vypočítané pole (viz obrázek 1).
Na kartě Zdroje nastavte funkci pro vypočítané pole:
Vypočítat výraz („Součet (AmountTurnover)“, „První“, „Aktuální“)
který shrnuje počet produktů od prvního záznamu k aktuálnímu (viz obrázek 2).

Pokud chcete získat počet zboží kumulativně na úrovni podrobných záznamů, pak je pro vypočítané pole na kartě „Vypočítaná pole“ nastavena funkce CalculateExpression (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 zdrojů - seskupení podle zboží, na úrovni DZ - seskupení podrobných záznamů.
Obrázek 4. Seskupení sestavy s kumulativním součtem

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):
Vyhodnoťte výraz (kurz, předchozí, předchozí)
který převezme předchozí hodnotu měnového kurzu pro aktuální řádek, poslední parametr funkce omezuje načítání dat.
Protože pracujeme na úrovni podrobných záznamů, okamžitě přejděte na kartu „Nastavení“ a vytvořte seskupení - podrobné záznamy.

3. Získání indikátoru kumulativního součtu na křížové kartě

Pojďme získat počet zboží na kumulativní bázi v kontextu období K tomu vytvoříme vypočítané pole (viz obrázek 1). Na kartě Zdroje pro vypočítané pole určíme následující výraz (viz obrázek 6):
Vypočítat výraz („Sum (NumberTurnover)“, „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 kartě „Nastavení“ vytvořte tabulku seskupenou podle položek v řádku a seskupených podle období ve sloupci (viz obrázek 7).

4. Výstup dat tabulkových řezů do jednoho řádku

Metody pro výstup dat tabulkových řezů v jednom řádku, včetně metody využívající funkci EvaluateExpression, jsou popsány v článku
  • 1C-bitrix
  • Jednou z nejdůležitějších oblastí podnikového softwaru je reporting. Osud podnikání může záviset (a nikoli v přeneseném smyslu!) Na tom, jak snadné je přizpůsobit stávající zprávu měnícím se potřebám podnikání (a legislativě) nebo vytvořit novou, ať už jde o zprávu pro daňový úřad nebo diagram závislosti poptávky po zboží na sezóně a dalších faktorech ... Výkonný a flexibilní systém podávání zpráv, který umožňuje snadno extrahovat ze systému potřebná data, prezentovat je ve srozumitelné formě a umožnit koncovému uživateli překonfigurovat standardní zprávu, aby viděl data v novém světle - to je ideál, o který by se měl každý obchodní systém snažit.

    Na platformě 1C: Enterprise je za generování zpráv zodpovědný mechanismus zvaný „Systém složení dat“ (ve zkratce ACS). 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. ACS je navržen tak, aby generoval zprávy a zobrazoval informace, které mají složitou strukturu. 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 seznamu s bohatou funkčností (zobrazování plochých a hierarchických seznamů, podmíněný návrh linek, seskupení atd.).

    Trochu historie

    V úplně první verzi platformy 1C: Enterprise 8, verze 8.0, byly zprávy vytvořeny následovně:
    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 do diagramu. Tento kód by také mohl dělat práci, kterou nelze provést v požadavku - například vypočítal hodnoty pomocí vestavěného jazyka 1C.
    Přístup je přímočarý, ale není to nejpohodlnější - existuje minimální vizuální nastavení, vše musí být naprogramováno „z ruky do ruky“. A jedním z trumfů v té době zcela nové platformy „1C: Enterprise 8“ je minimalizace množství kódu v aplikovaném řešení, které je třeba zapsat ručně, zejména kvůli vizuálnímu designu. Bylo by logické sledovat stejnou cestu v mechanismu hlášení. To bylo provedeno vývojem nového mechanismu - Data Composition System.

    Jednou z myšlenek, které tvořily základ ACS, byla flexibilita a přizpůsobitelnost zpráv, které jsou k dispozici vývojáři i koncovému uživateli. V ideálním případě bychom chtěli poskytnout koncovému uživateli přístup ke stejné sadě nástrojů pro návrh sestav jako vývojář. Bylo by logické zpřístupnit jednotnou sadu nástrojů všem. Jelikož nástroje zahrnují koncového uživatele, znamená to, že je nutné v nich minimálně odstranit používání programování (nejlépe je úplně vyloučit) a maximálně využívat vizuální nastavení.

    Formulace problému

    Úkol vývojového týmu byl následující - vytvořit systém hlášení založený nikoli na algoritmickém (tj. Prostřednictvím psaní kódu), ale na deklarativním přístupu k hlášení. A věříme, že úkol byl úspěšně vyřešen. Podle našich zkušeností lze asi 80% požadovaných zpráv implementovat pomocí ACS bez jediného řádku kódu (kromě psaní vzorců pro vypočítaná pole), většinou prostřednictvím vizuálního nastavení.
    Vývoj první verze ACS trval přibližně 5 člověko-let.

    Dva jazyky

    Při vytváření přehledů existují dva jazyky. Jedním z nich je dotazovací jazyk používaný k načtení dat. Druhým jazykem je výraz složení dat, který je určen k zápisu výrazů používaných v různých částech systému, například v nastavení složení dat, k popisu výrazů vlastních polí.

    Dotazovací jazyk

    Dotazovací jazyk je založen na SQL a je snadno ovladatelný znalostním SQL. Příklad požadavku:

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

    Dotazovací jazyk zároveň obsahuje značný počet rozšíření zaměřených na reflektování specifik finančních a ekonomických úkolů a na minimalizaci úsilí o vývoj aplikovaných řešení:

    • Ukažte na pole. Pokud jsou pole tabulky referenčního typu (ukládají odkazy na objekty jiné tabulky), může na ně vývojář odkazovat prostřednictvím "." V textu dotazu a systém neomezuje počet úrovní vnoření takových odkazů (například Customer's Order.Convention.Organization. Telefon).
    • Vícerozměrné a víceúrovňové vytváření výsledků. Součty a mezisoučty jsou vytvářeny s přihlédnutím k seskupení a hierarchii, úrovně lze procházet v libovolném pořadí s mezisoučty, je k dispozici správná konstrukce součtů podle časových dimenzí.
    • Podpora pro virtuální tabulky. Virtuální tabulky poskytované systémem umožňují získat prakticky hotová data pro většinu aplikací bez nutnosti složitých dotazů. Virtuální tabulka tedy může poskytovat údaje o zůstatcích zboží v kontextu období v určité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é stoly. Dotazovací jazyk umožňuje používat dočasné tabulky v dotazech. S jejich pomocí můžete zlepšit výkon dotazů, v některých případech snížit počet zámků a usnadnit čtení textu dotazu.
    • Dávkové žádosti. Pro pohodlnější práci s dočasnými tabulkami podporuje dotazovací jazyk práci s dávkovými dotazy - tedy vytvoření dočasné tabulky a její použití jsou umístěny v jednom dotazu. Dávkový požadavek je sled požadavků oddělených středníky (";"). Požadavky v balíčku se provádějí jeden po druhém. Výsledkem provedení dávkového požadavku, v závislosti na použité metodě, bude buď výsledek vrácený posledním požadavkem v dávce, nebo pole výsledků všech požadavků v dávce v pořadí, ve kterém následují požadavky v dávce.
    • Získávání reprezentací odkazovaných polí. Každá tabulka objektů (v níž je uložen odkaz nebo dokument) má virtuální pole - „Zobrazit“. Toto pole obsahuje textovou reprezentaci objektu a usnadňuje práci spisovatele sestav. U dokumentu tedy toto pole obsahuje všechny klíčové informace - název typu dokumentu, jeho číslo a datum (například „Výprodej 000000003 ze dne 7. 6. 2017 17:49:14“), což vývojáři ušetří psaní vypočítaného pole.
    • atd.
    Mechanismus požadavku automaticky upravuje požadavek s přihlédnutím k rolím, ke kterým uživatel patří, v jejichž zastoupení je požadavek podán (tj. Uživatel uvidí pouze data, která má právo zobrazit) a funkční možnosti (tj. V souladu s konfigurací v aplikačním řešení funkčnost).

    Existují také speciální rozšíření dotazovacího jazyka pro ACS. Expanze se provádí pomocí speciálních instrukcí syntaxe uzavřených do složených závorek a umístěných přímo do textu dotazu. S pomocí rozšíření vývojář určí, jaké operace může koncový uživatel provádět přizpůsobením sestavy.

    Například:

    • VYBRAT. Tato věta popisuje pole, která může uživatel vybrat pro zobrazení. Za tímto klíčovým slovem jsou uvedeny aliasy polí z hlavního seznamu pro výběr dotazů, které budou k dispozici pro přizpůsobení, oddělené čárkami. Příklad: (VYBRAT položku, sklad)
    • KDE. Popisuje pole, na která může uživatel filtrovat. Tento návrh používá pole tabulky. Použití aliasů vybraných polí seznamu není povoleno. Každá část unie může obsahovat svůj vlastní prvek WHERE. Příklady: (WHERE Item. *, Warehouse), (WHERE Document.Date\u003e \u003d & StartDate, Document.Date<= &ДатаКонца}
    • atd.
    Příklad použití rozšíření:

    Jazyk vyjádření složení dat

    Jazyk výrazu složení dat je určen k zápisu výrazů používaných zejména k popisu výrazů vlastních polí. ACS umožňuje definovat vlastní pole v sestavě pomocí vlastních výrazů nebo sad možností s podmínkami jejich výběru (analogicky k CASE v SQL). Vlastní pole jsou analogická vypočítaným polím. Mohou být specifikovány jak v konfigurátoru, tak v režimu 1C: Enterprise, ale nemůžete používat funkce běžných modulů ve výrazech vlastních polí. Proto jsou vlastní pole určena spíše pro uživatele než pro vývojáře.

    Příklad:

    Proces vytváření zprávy o ACS

    Při vytváření sestavy musíme vytvořit rozložení, které určuje, jak se budou data v sestavě zobrazovat. Můžete vytvořit rozložení na základě schématu složení dat. Schéma složení dat popisuje podstatu dat, která jsou poskytována do sestavy (kde získat data a jak můžete ovládat jejich složení). Schéma složení dat je základem, na jehož základě lze generovat všechny druhy sestav. Schéma složení dat může obsahovat:
    • požadovat text s pokyny systému složení dat;
    • popis několika datových souborů;
    • podrobný popis dostupných polí;
    • popis vztahů mezi několika datovými soubory;
    • popis parametrů načítání dat;
    • popis rozvržení polí a seskupení;
    • atd.

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

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

    Ve schématu složení dat může být několik datových sad, datové sady lze libovolně propojit v rozvržení, přidat vypočítaná pole, nastavit parametry sestavy atd. Za zmínku stojí zajímavá vlastnost dotazovacího mechanismu v 1C: Enterprise. Dotazy jsou nakonec přeloženy do dialektu SQL specifického pro DBMS, který aplikace přímo zpracovává. Obecně se snažíme využívat schopnosti serverů DBMS na maximum (omezuje nás skutečnost, že používáme pouze ty funkce, které jsou k dispozici současně ve všech DBMS podporovaných platformou 1C: Enterprise - MS SQL, Oracle, IBM DB2, PostgreSQL). Na úrovni dotazu ve vypočítaných polích tedy můžeme používat pouze ty funkce, které jsou přeloženy do SQL.

    Ale na úrovni schématu složení 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, které jsme napsali), 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 ACS vypočítá pro každý záznam hodnoty vypočítaných polí, jejichž vzorce jsou zapsány v jazyce 1C.


    Přidávání vlastních polí

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


    Návrhář sestav


    Runtime report

    S pomocí ACS může uživatel přidat do sestavy komplexní výběry (které budou přidány k požadavku na správných místech), podmíněný design (který vám umožní formátovat zobrazená pole různými způsoby - podle písma, barvy atd. - v závislosti na jejich hodnotách) a mnoho dalšího ...

    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) definuje schéma složení dat:
      • Žádost / text žádosti
      • Popis počítaných polí
      • Vztahy mezi požadavky (je-li jich více)
      • Nahlásit parametry
      • Výchozí nastavení
      • Atd.
    • Výše uvedená nastavení jsou uložena v rozvržení
    • Uživatel otevře zprávu
      • Možná provede další nastavení (například změní hodnoty parametrů)
      • Stiskněte tlačítko „Generovat“
    • Uživatelská nastavení se použijí na schéma složení dat definované vývojářem.
    • Je vytvořena přechodná šablona pro složení dat, která obsahuje pokyny, odkud získat data. Upraveny jsou zejména požadavky uvedené v rozložení. Pole, která se v sestavě nepoužívají, jsou tedy z požadavku odstraněna (provádí se to za účelem minimalizace množství přijatých dat). Všechna pole, která jsou zahrnuta ve vzorcích vypočítaných polí, jsou přidána do dotazu.
    • Je zapojen procesor složení dat. Procesor složení provádí dotazy, připojuje datové sady, vypočítává hodnoty vypočítaných polí a prostředků a provádí seskupení. Jedním slovem, dělá všechny výpočty, které nebyly provedeny na úrovni DBMS.
    • Procesor výstupu dat spustí požadavek na provedení a odešle přijatá data do tabulkového dokumentu, diagramu atd.


    Proces generování zprávy mechanismem ACS

    Pokoušíme se minimalizovat množství dat sestavy přenesených ze serveru do klientské aplikace. Při zobrazování dat v tabulkovém dokumentu při otevírání tabulkového dokumentu přeneseme ze serveru pouze ty řádky, které uživatel uvidí na začátku dokumentu. Jak se uživatel pohybuje řádky dokumentu, chybějící data se čerpají ze serveru do klienta.

    Vlastní nastavení

    Všechny nástroje ACS jsou k dispozici vývojáři i koncovému uživateli. Praxe však ukázala, že koncový uživatel je často vystrašen hojností schopností nástroje. Ve většině případů navíc koncový uživatel nepotřebuje veškerou sílu nastavení - potřebuje pouze 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 příležitost 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ých nastavení“. Nastavení sestavy má také příznak „Režim zobrazení“, který může nabývat jedné ze tří hodnot:
    • Rychlý přístup. Nastavení se zobrazí přímo v horní části okna zprávy.
    • Obvyklý. Nastavení bude dostupné prostřednictvím tlačítka „Nastavení“.
    • Není dostupný. Nastavení nebude koncovému uživateli k dispozici.


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


    Zobrazení nastavení v režimu „Rychlý přístup“ za běhu (pod tlačítkem „Vytvořit“)

    Plány rozvoje

    Jedním z prioritních směrů ve vývoji ACS pro nás je zjednodušení uživatelského nastavení. Naše zkušenosti ukazují, že pro některé koncové uživatele je práce s vlastním nastavením stále vážná práce. Bereme to v úvahu a pracujeme tímto směrem. V souladu s tím bude vývojářům také snazší pracovat s ACS stejně jako dříve chceme poskytnout jedinou sadu nástrojů pro přizpůsobení zpráv jak pro vývojáře, tak pro koncového uživatele.

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

    Otevřete schéma složení dat, nejlépe v externí sestavě, abyste usnadnili úpravy.

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

    1. Nastavte požadavek v ACS.

    2. Nastavení vypočítaných polí v ACS

    3. Na kartě nastavení nakonfigurujeme složení dat

    4. Začínáme 1C Enterprise 8.2.14. Otevřeme zprávu. Formujeme, dostaneme.

    Popis samotných nových funkcí:

    1. Aktuální datum ()

    Vrátí systémové datum. Když je rozvržení rozvržení propojeno, ve všech výrazech přítomných v rozvržení je funkce CurrentDate () nahrazena hodnotou aktuálního data.

    2. VÝPOČET VYJÁDŘENÍ ()

    Syntax:

    Vyhodnotit výraz (,)

    Popis:

    Funkce je určena k vyhodnocení výrazu v kontextu nějakého seskupení.

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

    Tuto funkci nelze použít na seskupení při výběru skupiny tohoto seskupení. Například při výběru seskupovací nomenklatury nelze použít výraz Vypočítat výraz ("Sum (SumTurnover)", "TotalTotal")\u003e 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, pak se má 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 výrazů intervalu pro celkový součet (parametr Grouping je nastaven na General Total) se předpokládá, že neexistují žádné záznamy pro výpočet podrobných dat a výpočet agregačních funkcí.

    Linker rozložení při generování výrazu funkce Vyhodnoťte výraz, v případě, že objednávkový výraz obsahuje pole, která nelze ve seskupení použít, nahradí funkci Vyhodnoťte výraz na NULA.

    Možnosti

    Typ: Čára... Výraz k 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, bude výpočet proveden v kontextu aktuálního seskupení. Pokud je jako název seskupení použit řetězec GeneralTotal, bude výpočet proveden v kontextu celkového součtu. Jinak bude výpočet proveden v kontextu nadřazeného seskupení s tímto názvem.

    Například:

    Částka (Sales.SumTurnover) / Vypočítat ("Amount (Sales.SumTurnover)", "TotalTotal")

    V tomto příkladu je výsledkem poměr součtu přes pole Sales.AmountTurnover seskupení záznamů do součtu stejného pole v celém rozvržení;

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

    · celkový součet - výraz bude vyhodnocen pro všechny záznamy seskupení.

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

    · Seskupení - výraz bude vyhodnocen pro aktuální skupinový záznam seskupení.

    · GroupingNonResource - při výpočtu funkce pro skupinový záznam podle prostředků bude výraz vypočítán pro první skupinový záznam původního seskupení.

    Při výpočtu funkce EvaluateExpression () s významem GroupingNonResource pro skupinové záznamy, které nejsou seskupením podle prostředků, se funkce počítá stejným způsobem, jako by se počítala, kdyby se hodnota parametru rovnala hodnotě Seskupení.

    Skladatel šablony pro složení dat při generování šablony pro složení dat při výstupu pole zdroje, pomocí kterého se seskupení provádí do šablony, umístí výraz vypočítaný pomocí funkce EvaluateExpression () , s uvedením parametru GroupingNonResource... U zbytku prostředků jsou regulární výrazy prostředků seskupeny podle prostředků.

    Typ: Čára... Určuje, se kterým záznamem spustit fragment, ve kterém se mají vypočítat agregační funkce výrazu a ze kterého záznamu se mají získat hodnoty polí mimo agregační funkce. Hodnota může být jedna z následujících:

    · První

    · Poslední

    · Předchozí (Předchozí)

    · Další (Další)

    · Proud

    · Mezní hodnota (BoundaryValue) Mezní hodnota

    Typ: Čára... Označuje, ke kterému záznamu bude pokračovat fragment, ve kterém se mají vyhodnotit agregační funkce výrazu. Hodnota může být jedna z následujících:

    · První... Musíte získat první záznam o seskupení. Za slovem v závorce lze 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) - získání 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. Například pokud existují 3 záznamy a chcete získat první (4), pak se má za to, že neexistují žádné záznamy.

    · Poslední... Musíte získat nejnovější záznam o seskupení. Za slovem v závorkách můžete určit 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) - získání třetího záznamu od konce seskupení.

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

    · Předchozí (Předchozí)... Musíte získat předchozí záznam o seskupení. Za slovo v závorkách lze zadat výraz, jehož výsledek bude použit jako posun zpět od aktuálního záznamu seskupení. Například Předchozí (2) - získejte předchozí z předchozího záznamu.

    Pokud předchozí záznam přesahuje seskupení (například pro druhý seskupovací záznam musíte získat Previous (3), pak se získá první seskupovací záznam.

    Při načítání předchozího záznamu pro souhrnný součet se bere v úvahu první záznam.

    · Další (Další)... Musíte získat další záznam o seskupení. Za slovo v závorkách lze zadat výraz, jehož výsledek bude použit jako posun vpřed od aktuálního záznamu seskupení. Například Další (2) - získat další z dalšího záznamu.

    Pokud další záznam zmizí ze seskupení, má se za to, že neexistují žádné záznamy. Například pokud existují 3 záznamy a pro třetí záznam je přijato Next (), pak neexistují žádné záznamy.

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

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

    Při načítání pro seskupovací součet se získá první záznam.

    · Mezní hodnota (BoundaryValue)... Potřeba získat záznam na zadanou hodnotu. Po slovu Mezní hodnota v závorkách je třeba zadat výraz s hodnotou, kterou chcete spustit fragment, první objednávkové pole.

    Jako záznam bude získán první záznam, jehož hodnota v objednávkovém poli je větší nebo rovna zadané hodnotě. Například pokud je pole Období použito jako objednávací pole a má hodnoty 01.01.2010, 01.02.2010, 01.03.2010 a chcete získat ConstrainingValue (DateTime (2010, 1, 15)), poté obdržíte záznam s datem 2. 1. 2010.

    Typ: Čára... Vypíše výrazy oddělené čárkami, které popisují pravidla řazení. Pokud není zadáno, řazení se provádí stejným způsobem jako pro seskupení, pro které se výraz vyhodnocuje. Po každém výrazu můžete určit klíčové slovo Stáří (seřadit vzestupně), Klesající (pro sestupné pořadí) a Automatické objednávání (k seřazení odkazovaných polí podle polí, podle kterých chcete objednat odkazovaný objekt). Slovo Automatické objednávání lze použít jako se slovem Stáří, takže se slovem Klesající.

    Typ: Čára... Podobně jako parametr Třídění... Slouží k uspořádání hierarchických záznamů. Pokud není zadán, generátor rozložení vygeneruje řazení podle pořadí uvedeného v parametru Třídění.

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

    · Odděleně označuje, že se k definování předchozího a dalšího záznamu používá posloupnost seřazený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 výrazů řazení.

    Například pokud je výsledná sekvence seřazená podle data:

    datum Celé jméno Hodnota
    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ě, pak:

    Předchozí položka k položce 3 bude položka 2.

    Aktuální, aktuální (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, pak:

    Předchozí položka k položce 3 bude položka 1.

    § pokud je vypočítaný fragment definován jako Aktuální, aktuální (parametry) Start a konec), pak u záznamu 2 bude tento fragment sestávat ze záznamů 2 a 3. Výraz ComputeExpression ("Součet (hodnota)", aktuální, aktuální) bude 50.

    Při zadání je hodnota parametru Spolu, v parametrech Start a konec nemůžete určit offset pro pozice První, poslední, předchozí, další.

    Vypočítat výraz („Sum (SumTurnover)“, „první“, „aktuální“)

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

    Vyhodnotit výraz (kurz, předchozí)

    Seznam nový funkce:

    EvaluateExpressionGroupedArray(,) -

    Funkce vrací pole, z nichž každý prvek obsahuje výsledek vyhodnocení výrazu, který má být seskupen podle zadaného pole.

    EvaluateExpressionGroupedValuesTable(,) -

    Funkce vrátí tabulku hodnot, přičemž každý řádek obsahuje výsledek vyhodnocení výrazů do skupiny podle zadaného pole

    Hodnota vyplněna() - Vrátí True, pokud se hodnota liší od výchozí hodnoty daného typu, jiné než NULL, jiné než prázdná reference, jiné než Undefined. U logických hodnot se provádí kontrola hodnoty null. U řetězců se kontroluje, zda neobsahují znaky bez mezer

    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 systému 1C: Enterprise.

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

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

    Čára() - Pokud je pole předáno jako parametr, vrátí funkce řetězec obsahující řetězcové reprezentace všech prvků pole oddělených znaky „;“. Pokud je tabulka parametrů předána jako parametr, vrátí funkce řetězec obsahující řetězcové reprezentace všech řádků tabulky hodnot, s reprezentacemi buněk každého řádku oddělenými znaky „;“ a řetězci - řádkovým posuvem. Pokud má některý prvek prázdnou řetězcovou reprezentaci, zobrazí se místo její reprezentace řetězec.