Jednou, když jsem vytvářel nový dokument, jsem se potýkal s potřebou vytvořit pro dokument několik formulářů pro tisk. Uživatelé navíc nemohli přesně říci, jak by měla být data seskupena v tištěné podobě. Vyskytly se konfliktní informace. Někteří uživatelé chtěli seskupit podle jedné z podrobností, někteří podle jiných. To znamená, že v budoucnu hrozila potřeba vytvořit asi šest různých rozvržení pro tisk, což mi nevyhovovalo. Ve výsledku bylo nalezeno řešení - tisk dokumentu pomocí schématu složení dat. Do dokumentu bylo přidáno rozvržení s typem „Schéma složení dat“ a formulář s nastavením ACS. Ve skutečnosti bylo v nastavení pouze pole, kde byl zobrazen strom se seskupením ACS (Settings Composer. Settings). To znamená, že kliknutím na tlačítko „Tisk“ uživatel automaticky otevře okno s přednastaveným (nejčastěji používaným) nastavením seskupení. A pokud to bylo nutné, mohl sám nastavit seskupení podle potřeb, které potřeboval. Pak tu byl přímý tisk s přihlédnutím k nastavení určenému uživatelem. Nebudu zacházet do technických podrobností. Hlavní věcí, kterou jsem chtěl sdělit, byl samotný nápad.

2 komentáře k „Používání ACS k tisku dokumentů“ “

    Udělali to moji uživatelé. Je pravda, že to nebyli účetní, ale manažeři divizí společnosti. No, plus instrukce byla napsána. A pochopení „kdo je“ dokumentů, adresářů, registrů atd. od té doby nebyly požadovány tisk byl vyvolán přímo z dialogového okna dokumentu kliknutím na standardní tlačítko „Tisk“

Téměř všechny parametry dostupné v dialogových oknech nastavení tisku (nastavení tiskárny, vlastnosti stránky) lze zadat přímo při generování tabulkového dokumentu.

Zvažme vlastnosti a metody tabulkového dokumentu související s nastavením tisku (v uvedených příkladech je „TabDok“ objekt typu „Tabulkový dokument“).

Vlastnictví „PrinterName“ umožňuje nastavit jinou než výchozí tiskárnu pro tisk. Název se musí shodovat s názvem tiskárny nastavené v systému:

TabDoc.PrinterName \u003d "Canon iR1133";

Při tisku dávky dokumentů můžete ušetřit čas nastavením příznaku kompletování:

TabDoc.ParseCopy \u003d True;

Počet kopií lze určit takto:

TabDoc. Počet kopií \u003d 5;

Samozřejmě můžete určit pole:

TabDoc. Levý okraj \u003d 20; // Levý okraj 20 mm, ostatní okraje 10 mm (ve výchozím nastavení)

Několik dalších vlastností stránky:

TabDoc.Page Orientation \u003d Orientace stránky.Krajina; TabDoc.InstancesOnPage \u003d 2; // 2 stránky TabDoc budou umístěny na list. Autoscale \u003d true; // podobné nastavení zvětšení šířky stránky

V případě potřeby můžete zadat konkrétní hodnotu měřítka v procentech (vlastnost "Měřítko tisku" ).

Vlastnictví "Velikost stránky" umožňuje nastavit standardní velikosti stránek - „A3“, „A4“, „A5“ (úplný seznam možností je k dispozici v nápovědě 1C).

TabDoc.Page Size \u003d "A3"; // písmeno A musí být v angličtině

Pro vlastní velikost papíru můžete určit výšku a šířku stránky (v mm):

TabDoc.PageSize \u003d "Vlastní"; // nestandardní TabDoc.PageHeight \u003d 350; Šířka stránky TabDoc. \u003d 350;

Také v tabulce je k dispozici ovládání výstupu záhlaví a zápatí a jejich obsahu. To se provádí pomocí vlastností "Záhlaví stránky" a "Zápatí". Například:

TabDoc.HeaderFooter.Office \u003d true; // vytiskne se záhlaví TabDoc.FooterSizeTop \u003d 7; // velikost zápatí 7 mm (výchozí 10 mm) TabDoc.HeaderFooter.VerticalPosition \u003d VerticalPosition.Top; TabDoc.HeaderFooter.StartPage \u003d 2; // záhlaví se zobrazí na druhé stránce FontFootboard \u003d New Font ("Courier New", 8, True); TabDoc.HeaderFooter.Font \u003d HeaderFont; // kurzíva písmo TabDoc.HeaderFooter.TextVCenter \u003d "Záhlaví"; TabDoc.HeaderFooter.TextRight \u003d "Stránka [& PageNumber] z [& PagesTotal]"; // stránkování TabDok.HeaderFooter.TextLeft \u003d "[& Datum]"; // aktuální datum

Vygenerovaný dokument je odeslán k tisku pomocí této metody "Typ()". Existují dvě možné možnosti volání.

1) Přímo do tiskárny:

TabDoc.Print (ModePrintDialogueUse.Do nepoužívat); TabDoc.Print (true);

2) Před tiskem se zobrazí dialogové okno tisku:

TabDoc.Print (ModePrintDialogueUse.Use); TabDoc.Print (false);

Kromě toho můžete ovládat stránkování dokumentu. Počet stránek v dokumentu můžete odhadnout na základě nastavení aktuální tiskárny takto:

TabDoc. Počet stránek ();

Pomocí metod „CheckOutput ()“ a „CheckConnection ()“ S aktuálním nastavením tiskárny můžete určit, zda se tabulkový dokument nebo řada oblastí tabulkového dokumentu vejde na stránku ve výšce a šířce.

Je třeba mít na paměti, že práce posledních tří metod závisí na nainstalované tiskárně. Pokud ji metoda nemůže najít, je vyvolána výjimka.

Metody umožňují vynutit přerušení stránek „DisplayVerticalPage Separator ()“ a „OutputHorizontalPage Separator ()“ .

Můžete tedy ovládat tisk po stránkách a řídit plnění stránek:

Pokud není TabDoc.CheckOutput (pole OutputOptions), pak TabDoc.OfferHorizontalPageSplitter (); Konec, pokud

Důležitou charakteristikou platformy 1C: Enterprise 8.2 je přísné oddělení vlastností a metod podle kontextu provádění. Pokud jsou všechny výše uvedené vlastnosti dostupné v jakémkoli kontextu, pak uvedené metody nejsou pro tenkého klienta k dispozici. Výjimkou je metoda „Print ()“, jejíž dostupnost je ze zřejmých důvodů omezena na stranu klienta. To znamená, že tvorba tabulkového dokumentu by měla probíhat na serveru a měl by být odeslán k tisku v klientské proceduře.

Vytvořme externí report, který bude zobrazovat reportovací informace o stavu zásob a jejich obratu. Požadovaná informace je vyžadována požadavkem pomocí datové sady typu „Žádost“, která obsahuje text požadavku:
VYBRAT
_DemoNomenclature.Ref AS Nomenklatura
Aktuální PLÁNOVÁNÍ
Z
Directory._DemoNomenclature AS _DemoNomenclature
KDE
NENÍ _DemoNomenklatura. Odebrat značku
A NE _DemoNomenclature. Toto je skupina
;

////////////////////////////////////////////////////////////////////////////////
VYBRAT
Aktuální nomenklatura. Nomenklatura,
_DemoRemains of GoodsInStoragePlacesRemains andTurnover.Storage,
_DemoGoodsBalancesInStoragePlacesBalancesAndTurnover.QuantityBeginner Balance,
_DemoGoodsBalancesInStoragePlacesBalances andTurnovers.QuantityFinal Balance,
_DemoRemains of GoodsInStoragePlacesRemains andTurnovers.NumberIncome,
_DemoGoodsBalancesInStoragePlacesBalances andTurnovers.QuantityExpense,
_DemoRemains of GoodsInStoragePlacesRemains andTurnovers.NumberTurnover
Z
ActualNomenclature AS ActualNomenclature
LEVÉ PŘIPOJENÍ Evidence akumulace.
Software Up-to-dateNomenclature.Nomenclature \u003d _DemoProductsBalancesIn StoragePlacesBalances & Turnovers.Nomenclature

Výsledkem je, že zpráva obsahuje následující pole (viz obrázek 1):

Vzhledem k tomu, že informace jsou převzaty z virtuální tabulky „Remains and Turnovers“, ACS automaticky vytvoří dva datové parametry, Period Start a Period End, které jsou nutné k nastavení limitů období vzorkování dat. Nejraději s takovými parametry nepracuji přímo, ale nastavuji jejich hodnoty prostřednictvím jiného parametru, který bude uživateli k dispozici pro úpravy (viz obrázek 2).
Zpráva dělá svou práci, ale její hlava je docela suchá. Během své práce jsem našel několik způsobů, jak navrhnout záhlaví sestavy:

  1. Nastavení záhlaví polí na kartě ACS „Datové sady“;
  2. Konfigurace záhlaví polí na kartě ACS „Nastavení“;
  3. Programové nastavení záhlaví polí;
  4. Nastavení záhlaví sestavy pomocí rozložení;
  5. Finalizace výsledku (tabulkový dokument);
Zvažme je podrobně.

1. Nastavení záhlaví na kartě ACS „Datové sady“

Všechno je zde jednoduché, zatrhněte před vlastnost pole „Název“ (tj. Zrušte automatický název) a zadejte požadovaný text nadpisu (viz obrázek 4).
Pokud chcete nastavit vzhled celého pole, nejen jeho názvu, pak je tu vlastnost pole „Vzhled“, pomocí které můžete nastavit určitý vzhled pole, například změnit písmo nebo nastavit barva pozadí (viz obrázek 5).
Zde moje znalosti o kartě „Datové sady“ končí.

2. Konfigurace záhlaví polí na kartě ACS „Nastavení“

Chcete-li nastavit název pole, vyberte požadované pole, kliknutím pravým tlačítkem otevřete místní nabídku a vyberte položku „Nastavit název“ (viz obrázek 6)
Chcete-li seskupit pole (například podle typu informací), musíte přidat seskupovací pole a umístit do něj požadovaná pole (viz obrázek 7), vnoření je neomezené.
Můžete si také pohrát s vlastností „Umístění“ seskupovacího pole, která určuje typ seskupení polí.

Tyto akce lze provádět také v režimu 1C: Enterprise otevřením nastavení sestavy, ALE v nastavení sestavy musí být zahrnuta položka „Vybraná pole“ (viz obrázek 8).
Tím je dokončena snadná část přizpůsobení záhlaví sestavy. Z výhod výše uvedených akcí: veškerá konfigurace se provádí standardními prostředky. Nevýhody: neschopnost nastavit záhlaví víceřádkového pole.

3. Programové nastavení hlaviček polí

Platforma umožňuje programově nastavit nadpisy polí, navíc nastavit víceřádkové, což zase umožňuje pružně a dynamicky nastavit nadpisy polí při generování zprávy.

K tomu v modulu sestavy definujeme postup When ComposingResult... V tomto postupu napíšeme kód pro nastavení záhlaví pole.

// 1. Získejte vlastní nastavení.
Nastavení CD \u003d ThisObject.SettingsComposer.GetSettings ();

// 2. Získejte hodnotu parametru „Období“, ze které určíme počáteční a koncové datum období.
ParameterPeriod \u003d NewDataCompositionParameter ("Období");
Období \u003d Nastavení CD. DataParameters.FindParameterValue (ParameterPeriod) .Value;
Začátek období \u003d Období. Datum zahájení;
PeriodEnd \u003d Period.EndDate;

// 3. Připravte informace o předefinování záhlaví pole. Chcete-li to provést, vytvořte
// pole, které bude obsahovat informace: FieldName - hodnoty vlastnosti „Cesta“ v
// datová sada (viz obrázek 1), Název - text nadpisu.
FieldList \u003d Nové pole;
pStartPeriod \u003d Format (BeginPeriod, "DF \u003d dd.MM.rrrr; DF \u003d" prázdné datum "");
FieldStartBallow \u003d Nová struktura ("FieldName, Title", "QuantityStartingBalance", "Zbývající" + Symbols.PS + lineStartPeriod);
ListFields.Add (zůstatek FieldStart);
stEndPeriod \u003d Format (EndPeriod, "DF \u003d dd.MM.rrrr; DF \u003d" prázdné datum "");
EndRemainment Field \u003d Nová struktura ("FieldName, Title", "NumberEndRemainment", "Balance by" + Symbols.PS + lineEndPeriod);
ListFields.Add (FieldEnd Remaining);

// 4. Získejte seznam polí, která jsou ve skupině „Zůstává“ (viz obrázek 7) a
// nastavit nový nadpis smyčkováním prvků.
SelectedFields \u003d CD Settings.Selection.Elements; // První úroveň polí.
SelectedFieldsRemains \u003d SelectedFields.Elements; // Seskupení zbývajících polí.
Pro každé vybrané pole z vybraných polí zůstává cyklus
Smyčka pro každý prvek pole ze seznamu
CompositionField \u003d NewDataCompositionField (ArrayElement.FieldName);
If SelectedField.Field \u003d Layout Field Then
SelectedField.Header \u003d ArrayItem.Header;
EndIf;
Konec cyklu;
Konec cyklu;

// 5. Načíst upravená uživatelská nastavení zpět.
ThisObject.SettingsComposer.DownloadSettings (nastavení CD);

Výsledek hlášení (viz obrázek 10):
Metoda je těžší než všechny výše uvedené, ale líbí se mi.

4. Nastavení záhlaví sestavy pomocí rozložení

Pro flexibilnější přizpůsobení vzhledu sestavy v ACS je k dispozici vytvoření rozvržení. V nastavení sestavy vytvořte ještě jedno seskupení „podrobných záznamů“ a nastavte název „DZ řetězec“ pro toto seskupení (viz obrázek 11).
Na kartě Rozvržení přidejte rozložení záhlaví seskupení. Pro rozvržení v tabulkovém dokumentu vytvořte záhlaví sestavy (záhlaví sestavy by mělo obsahovat tolik záhlaví polí, kolik se zobrazí podrobný záznam) a označte oblast tabulkového dokumentu pro rozvržení (viz obrázek 12).
Výsledkem je, že zpráva má následující záhlaví (viz obrázek 13):

Obrázek 13. Rozložení ACS jako záhlaví sestavy
Podle mého názoru mají rozvržení jednu velkou nevýhodu, je to nemožnost opětovného sestavení pro dané seskupení uživatelů, takže by se měla použít, pokud je formulář pro podávání zpráv regulován a nelze jej změnit. Zkuste nastavit seskupení pro seskupení „RowDZ“ a uvidíte, že rozložení je mimo provoz.

Na webu podpory informačních technologií je článek Používání předdefinovaných rozvržení, který podrobně popisuje, jak používat rozvržení v ACS.

5. Finalizace výsledku (tabulkový dokument)

Tato metoda používá úžasnou metodu tabulkového dokumentu FindText ()Chcete-li však použít tuto metodu, musíte deaktivovat standardní zpracování generování výsledku sestavy.

Začněme. Zakažte generování standardů, pro toto v modulu sestavy pro událost When ComposingResult nastavte proměnnou StandardProcessing na False a napište vlastní rozložení výsledku:
StandardProcessing \u003d False;
Layout Composer \u003d Nový DataComposition Layout Composer;
LayoutComposition \u003d LayoutComposer.Run (
ThisObject.DataCompositionSchema,
ThisObject.SettingsComposer.Settings,
Dešifrování dat);
Composition Processor \u003d Nový kompoziční procesor dat;
LayoutProcessor.Initialize (LayoutData, DecodeData, True);
OutputProcessor \u003d Nový OutputProcessorDataCompositionResultInTableDocument;
OutputProcessor.SetDocument (DocumentResult);
OutputProcessor.Output (LayoutProcessor);
Podrobněji je v článku popsáno programové rozložení výsledku sestavy

Kombinovaný výsledek se odešle do tabulkového dokumentu - proměnné DocumentResult. Dále po vygenerování výsledku a jeho odeslání do tabulkového dokumentu napíšeme kód, který nahradí jeden text buňky jiným. Například v záhlaví sestavy změňte název seskupení „Zbytky“ na „Zbytky zásob“ (viz obrázek 14):
Cell \u003d DocumentResult.FindText ("Zůstává");
Pokud buňka<> Nedefinováno
Cell.Text \u003d "Položka zůstává";
EndIf;

Můžete také nastavit formátování nalezené buňky, viz vlastnosti buňky tabulkového dokumentu v pomocníkovi syntaxe.

Tuto metodu jsem nedávno objevil pro sebe, je jednoduchá a umožňuje velmi flexibilní práci s hlavičkou sestavy, hlavní je, že text buňky má jedinečný text.

P.S. možná máte ve svém arzenálu jiný způsob, jak navrhnout záhlaví polí?

Při vytváření sestav pomocí systému datových skladeb (ACS) je vhodné ve formuláři zobrazit parametry sestavy (alespoň ty nejčastěji používané), aby uživatel nebyl nucen kopat do standardního okna nastavení ACS.

Zvažme, jak toho lze dosáhnout pomocí konvenčních formulářů 1C. Hned uděláme rezervaci, že tento článek se zaměří na výstup parametrů do formuláře, tj. samotné parametry v ACS již musí být vytvořeny.

Existují dva způsoby, jak zobrazit parametry ACS v obvyklé podobě:

  • výstup tabulky nastavení parametrů v plném rozsahu
  • výstup jednotlivých parametrů jako vstupní pole.

Tabulka nastavení parametrů zobrazená ve formuláři je podobná tabulce nastavení parametrů generované ACS. Chcete-li jej zobrazit ve formuláři, musíte vytvořit ovládací prvek TabularField, ve kterém majetku Datanaznačit Nastavení Composer.Settings.Data Parameters

V tomto případě se uživateli zobrazí všechny parametry ACS, které nemají omezení dostupnosti.

V některých případech se však tato metoda nemusí zdát tak krásná a nepříliš uživatelsky přívětivá. Zvažme, jak zobrazit parametry ACS samostatně ve formě běžných vstupních polí.

  1. Vytvořme podrobnosti sestavy odpovídající parametrům. V našem příkladu to budou náležitosti Počáteční datum, konečné datum, organizace... Pojďme nastavit jejich odpovídající datové typy.
  2. Vytvořme vstupní pole ve formuláři pro každý z parametrů a propojme je prostřednictvím vlastnosti Data s podrobnostmi zprávy. Pro každé vstupní pole by bylo dobré vytvořit nápis vedle názvu parametru, aby uživatel pochopil, který parametr upravuje.
  3. Pro každé vstupní pole musíte vytvořit proceduru pro obslužnou rutinu události Když se to změní, který nastaví hodnotu vybranou uživatelem na parametry ACS. V příkladu jsem vytvořil jeden postup a přiřadil jej ke změně událostí pro všechna tři vstupní pole. To znamená, že když se změní jeden parametr, všechny tři se resetují. Z hlediska výkonu to pravděpodobně není efektivní, ale od té doby není mnoho parametrů, rozdíl není patrný. U velkého počtu parametrů stojí za to zobrazit nastavení každého v samostatném postupu. Takže kód procedury pro obslužnou rutinu Když se to změní bude vypadat takto:

    Parametry postupu OnChange (položka)

    ParameterDateStart \u003d Linker nastavení. Nastavení. Parametry dat. Elementy. Najít („StartPeriod“); // Hledání se provádí podle názvu parametru ACS
    ParameterDateStart. Použití \u003d True; // Parametr bude použit při výběru
    ParameterDateStart. Hodnota \u003d počáteční datum; // K parametru je přiřazena hodnota atributu sestavy

    ParameterDateCon \u003d Linker nastavení. Nastavení. Parametry dat. Elementy. Najít („EndPeriod“);
    ParameterDateCon. Použití \u003d True;
    ParameterDateCon. Hodnota \u003d EndDay (EndDate);

    ParameterOrg \u003d Nastavení Linker. Nastavení. Parametry dat. Elementy. Najít („Organizace“);
    ParametrOrg. Použití \u003d True;
    ParametrOrg. Hodnota \u003d organizace;

    Konec postupu

Funkce vytváření sestav v 1C v8 v režimu tlustého klienta

Jak vybrat možnost?

  • Na panelu přehledů umístěte tlačítko „Vybrat možnost“
  • Do formuláře umístěte pole „OnDate“

Ukázkový kód: ProcedureFormSelectOptions (Button) layout \u003d GetLayout ("MainDataCompositionSchema"); spVariants \u003d Nový seznam hodnot; Pro každou možnost z Layout.OptionsSettings Cycle spVariants.Add (option.Settings, option.Presentation); Konec cyklu;

choice \u003d spVariants.SelectItem (); If Choice \u003d Undefined Then Return; EndIf;

Nastavení Composer.LoadSettings (selection.Value);

Form (); Konec postupu

Postup OnDateWhenChanging (Element) Generate (); Konec postupu

Procedura Form () Form Elements.Result.Clear (); Nastavení Linker.Settings.DataParameters.SetParameterValue ("Období", OnDate); BuildResult (Form Elements.Result); Konec postupu

Postup OnOpening () OnDate \u003d CurrentDate (); Form (); Konec postupu

Funkce vytváření zpráv pomocí ACS

Generování zprávy krok za krokem

  1. Vytvořte zprávu v uzlu Zprávy
  2. Vytvořte rozložení v sestavě, jejíž typem je schéma složení dat
  3. Nastaveno ve vlastnostech sestavy: Hlavní schéma složení dat \u003d Vytvořené rozložení
  4. Ve vlastnostech sestavy nastavte subsystém, do kterého patří (sestava v Enterprise se zobrazí v horním navigačním podokně)
  5. Vytvořte požadavek v rozložení (položka: Přidat datovou sadu - požadavek)
  6. Na kartě Parametry rozložení zrušte zaškrtnutí všech řádků ve sloupci Omezení přístupu - tj. všechny parametry budou k dispozici pro úpravy uživatelem
  7. Na kartě Nastavení rozložení v okně, kde je zobrazen uzel Zpráva, vytvořte nové seskupení bez zadání pole seskupení - vytvoří se podrobný řádek
  8. Na kartě Nastavení v rozložení vyberte v okně, kde je zobrazena další sada karet, další. Záložka Parametry - zaškrtněte všechny parametry a na každém parametru stiskněte tlačítko Vlastnosti položky uživatelského nastavení, otevře se okno nastavení parametrů, kde je třeba zaškrtnout políčko - Zahrnout parametr do uživatelského nastavení
  9. Na kartě Nastavení v rozložení vyberte v okně, kde je zobrazena další sada karet, další. Záložka SelectedFields - přidejte tam sloupce, které se zobrazí v sestavě
  10. Spusťte Enterprise, otevřete zprávu, nastavte hodnoty parametrů, Generovat (zkontrolujte, zda je vybrána možnost Hlavní pro generování zprávy)

Jak mohu přidat uživatelsky neupravitelný parametr?

Například musíme nastavit parametr dotazu „Infobase“

  • Ve formuláři rozvržení zrušte na kartě Parametry u požadovaných parametrů zaškrtávací políčka „Zahrnout do dostupných polí“ a „Omezení přístupu“.
  • Ve formě rozvržení rozvržení na kartě Nastavení na podkartě (níže) Parametry zrušte zaškrtnutí požadovaného parametru, otevřete vlastnosti (tlačítko s klíčem), v tomto formuláři:
    • Zrušte zaškrtnutí políčka „Zahrnout do vlastního nastavení“
    • Režim úprav nastaven na „Nedostupné“


  • V modulu formuláře sestavy v obslužné rutině události „OnVariantLoadOnServer“ (můžete také OnOpening, ale NE OnCreateAtServer, protože se provede PŘED načtením nastavení sestavy a nastavení bude přepsáno) programově nastavte parametr:

& Postup AtServeru při načítání OptionOnServer (Nastavení)

// Nastavení parametru Nastavení \u003d Report.Configuration Composer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase); Konec postupu

Jak nastavím varianty přehledu?

  • Ve formě rozvržení rozvržení na kartě Nastavení v levém poli můžete vytvořit potřebné varianty sestavy

Jak nastavit seskupení?

  • Ve formě rozvržení rozvržení na kartě Nastavení v poli vpravo nahoře můžete vytvořit potřebná seskupení

Jak programově zobrazit sestavu?

V modulu formuláře:

& Na klientské proceduře Generovat sestavu Provést ()

ThisForm.ComposeResult ();

Konec postupu

Jak otestuji protokol?

Musíte udělat:

  • Vytvoření situace v testu klienta je nejvhodnější prostřednictvím tabulky situací
  • získat formulář zprávy - form \u003d GetForm ("formulář Report.Process.Motion.Report");
  • načíst požadovanou variantu sestavy - nastavit parametr rozšíření formuláře sestavy "VariantKey" (název nastavení v šabloně složení dat)
  • načíst požadované nastavení sestavy -? vyplnění parametru rozšíření formuláře hlášení „UserSettings“ (typ „UserDataCompositionSettings“) nefungovalo, vše je komplikované, viz níže.
  • otevřený formulář - formulář. Otevřít ()
  • provést formaci - form.ComposeResult ();
  • zkontrolujte obsah formuláře tabulkového dokumentu Výsledek - bylo by hezké mít srovnávací funkce s referenčním mxl
  • zavřít formulář - form.Close (); - nebo možná to nemusíte otevírat, musíte to zkontrolovat

viz také

  • popis: Nabídka Nápověda / Asistent syntaxe / karta Obsah / Objekty rozhraní spravované aplikace / Spravovaná rozšíření formuláře / Spravovaná rozšíření formuláře pro sestavu / Parametry formuláře

Jak načíst požadované nastavení přehledu?

Dokumentace popisuje, že existuje takový parametr pro rozšíření formuláře sestavy „UserSettings“ typu „UserDataCompositionSettings“, ale existuje velmi složitá objektová struktura, nebylo ji možné použít.

Opravdu funkční schéma:

1. Vytvořte parametry ve zprávě

  • Období typu Standardní Období
  • Výběr typu ListValues \u200b\u200b(bylo by lepší mít strukturu, ale není v seznamu typů parametrů, stejně jako libovolný typ)

2. Předejte požadované parametry postupu GetForm:

period \u003d New StandardPeriod; period.Variant \u003d VariantStandardPeriod.ArbitraryPeriod; period.StartDate \u003d currentDate; period.EndDate \u003d zítřejší datum;

selection \u003d Nový seznam hodnot; selection.Add (Testing.GetObject (stSituation, "BP1"), "BusinessProcess");

stParameters \u003d Nová struktura ("Klíč varianty, období, výběr", "hlavní", období, výběr); // OpenFormModally ("Report.Process Movement.Form.ReportForm", stParameters); form \u003d GetForm ("Report.Process Movement.Form.Report Form", stParameters);

3. V obslužných rutinách událostí ve formuláři nastavte parametry

& Funkce AtServer cnGet (seznam, zobrazení) Export pro každou položku ze seznamu Seznam Smyčka Pokud item.View \u003d pohled Pak Vrátit item.Value; EndIf; Konec cyklu; Refundace undefined; EndFunction

& Procedura OnServer SetValueUserSettings (nastavení, název, hodnota) pro každý prvek z nastavení. Elements Loop IfTypeValue (element) \u003d Type ("DataCompositionSettingsParameterValue") Then If String (element.Parameter) \u003d Name Then element.Value \u003d Value; element.Usage \u003d True; EndIf; EndIf; Konec cyklu; Konec postupu

& Procedura OnServer SetValueCustomSelection (nastavení, název, hodnota) pro každou položku z Setting.Elements Loop IfTypeValue (item) \u003d Type ("DataCompositionFlection") Then For each Selection from Item.Elements Loop If Row (selection.LeftValue) \u003d Name Then Selection .RightValue \u003d hodnota; selection.Use \u003d True; EndIf; Konec cyklu; EndIf; Konec cyklu; Konec postupu

& Postup AtServeru při načítání OptionOnServer (Nastavení)

CurrentVariantName \u003d PresentCurrentVariant;

Nastavení \u003d Report.ConfigurationComposer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase);

Konec postupu

& Procedura AtServer při načítáníUser SettingsOnServer (Settings) Settings \u003d Report.Configuration Composer.UserSettings;

<> "00010101" Pak Nastavení \u003d Report.ConfigurationComposer.UserSettings; SetUserSettingsValue (Nastavení, "Období", Parameters.Period); EndIf;

ssBusinessProcess \u003d spGet (Parameters.Selection, "BusinessProcess"); Pokud ssBusinessProcess<> Undefined Then SetCustomSelectionValue (Nastavení, "BusinessProcess", ssBusinessProcess); EndIf;

Konec postupu

Poznámky:

  • Existují datové parametry, tedy to, co je nastaveno v parametrech požadavku ACS
  • Některé z nich jsou přiřazeny v nastavení varianty v UserSettings (ve vlastnostech parametru je příznak "Zahrnout do uživatelských nastavení"
  • I když se při načítání na server načtou požadované hodnoty do datových parametrů, otevře se formulář, do kterého se automaticky načte naposledy uložené nastavení. Tato nastavení při generování zprávy „přeruší“ nastavení dat
  • V obslužné rutině WhenLoadingUserSettingsOn na serveru je přenesený objekt nastavení kopie skutečné nastavení, takže pokud chcete změnit nastavení, které se objeví ve formuláři, musíte vyplnit objekt Report. Composer nastavení. Uživatelské nastavení.

Jak vytvořit více (seznam) parametrů dotazu v ACS?

Žádost musí používat výraz „In (& ParameterName)“ (viz booleovské výrazy v dotazovacím jazyce 1Cv8)

Při konfiguraci rozložení obvodu ACS na kartě „Parametry“ u tohoto parametru zaškrtněte políčko „Seznam dostupných hodnot“. V tomto případě, když vyberete parametr, zobrazí ACS formulář pro úpravy seznamu, ve kterém můžete přidat libovolnou hodnotu parametru.

Jak provést deaktivované parametry požadavku v ACS?

Požadavek ACS musí používat konstrukce obklopené složenými závorkami "{}" .

Pokud není odpovídající parametr ve formuláři zprávy (panel rychlých nastavení) zaškrtnut, pak je tato konstrukce z požadavku odstraněna.

Více podrobností viz Rozšíření dotazovacího jazyka pro systém složení dat (1Cv8)

Jak vytvořit sestavu s rozšířením podle sloupců?

Chcete-li to provést, musíte v nastavení varianty sestavy (úprava rozložení složení dat, karta „Nastavení“, pole vpravo nahoře) přidat jako první seskupení „Tabulka“.

Poté se větve „Řádky“ a „Sloupce“ zobrazí v uzlu „Tabulka“, kde jsou přidána potřebná seskupení.

Jak přizpůsobit výstupní formát polí?

V editoru šablon pro složení dat se na kartě „Datové sady“ v pravé horní oblasti nachází seznam polí sestavy.

Existují dvě možnosti:

  1. Přizpůsobte hodnotu sloupce „Zobrazit výraz“
    • zde můžete zadat jazykový výraz, který vytvoří požadovaný řetězec
    • nefunguje to s poli zdrojů
  2. Upravte hodnotu ve sloupci Vzhled
    • design má vlastnost "Format" - jedná se o hodnotu podobnou parametru funkce jazyka "Format", můžete nastavit požadovaný vzhled
    • zde se neprovádí převod typu

Výpočetní výrazy lze zadat pro pole zdrojů (karta „Zdroje“) - například

Součet (čas) / 3600,0

převést ze sekund na hodiny.

Požadovanou přesnost lze nastavit pomocí pole „Návrh“ na kartě „Sady dat“.

Specifika nastavení parametrů systému složení dat

Existují a vyžadují různé zpracování alespoň TŘI typů parametrů:

Parametry dat

Parametry dat jsou definovány v požadavku (zdroj dat) ACS.

Parametry dat jsou předány dotazu na zdroj dat a určují data k načtení.

Objekt SettingsComposer má speciální vlastnost pro práci s datovými parametry Nastavení Composer.Settings.Data Parameters

Lze nastavit voláním formuláře

Nastavení \u003d Report.ConfigurationComposer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase);

Výběr

Výběr se překrývá s přijatými daty po načítání ze zdroje dat.

Objekt SettingsComposer má speciální vlastnost pro práci s výběry Předvolby Výběr předvoleb skladatele.

Například: Nastavení \u003d Report.ConfigurationComposer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase);

Pro každou položku z Parameters.Selecting CyclePickingElement \u003d Settings.Finding.Elements.Add (Type ("DataCompositionFindingElement")); SelectionElement.ComparisonType \u003d DataCompositionComparisonType.Equal; SelectionItem.LeftValue \u003d NewDataCompositionField (element.View); SelectionItem.RightValue \u003d element.Value; Konec cyklu;

Vlastní nastavení

Předvolby uživatele definují data, která může uživatel ve formuláři přizpůsobit.

Uživatelská nastavení lze zobrazit na formuláři ve speciální tabulce a lze je vyvolat tlačítkem „Nastavení“ a z nabídky „Všechny akce“.

Vlastní nastavení připojeno s datovými parametry a výběry nějakým poměrně komplikovaným způsobem lze toto připojení nakonfigurovat vizuálně, ale je programově s nimi nějak nevhodné pracovat.

Zatím nebylo nalezeno nic lepšího, jak nastavit hodnoty existující kolekce podle indexu, který sám o sobě může odjet při změně rozvržení ACS ve vizuálním editoru.

Navíc, pokud je některý datový parametr deklarován uživatelem definovaným, pak programové nastavení datového parametru (viz výše) nestačí, obnovená hodnota vlastního nastavení přepíše nastavení datového parametru. Proto pro takové parametry nemá smysl nastavovat datový parametr, musíte okamžitě nainstalovat vlastní nastavení.

Vhodným místem pro nastavení požadovaných hodnot je obslužná rutina události „OnLoadingUserSettingsOnServer“ rozšíření formuláře zprávy.

& Postup AtServeru při načítání uživatelských nastavení OnServer (nastavení)

Pokud Parameters.Period.End Date<> "00010101" Pak Nastavení \u003d Report.ConfigurationComposer.UserSettings; Settings.Elements.Value \u003d Parameters.Period; EndIf;

Konec postupu

Použití zdroje dat objektu

Chcete-li použít datovou sadu objektu typu, musíte předat externí zdroj dat metodě Initialize objektu Data Composition Processor.

DataDecryption \u003d Nedefinováno;

Layout Composer \u003d Nový DataComposition Layout Composer; LayoutComposer \u003d LayoutComposer.Run (DataCompositionSchema, SettingsComposer.Settings, DecodingData);

Composition Processor \u003d Nový kompoziční procesor dat; LayoutProcessor.Initialize (LayoutDetails, New Structure ("Data", GetExternalSourceData ()), DecryptionData);

Je připojen jednoduchý příklad (pro příklad do práce jsou vyžadovány referenční knihy „Zhotovitelé“ a „Smlouvy dodavatelů“).