1c přidat podrobnosti formuláře. Podrobnosti spravovaného formuláře (1Cv8). Funkce práce se stromem hodnot

Podrobnosti formuláře

Sada podrobností formuláře popisuje složení dat, která jsou zobrazena, upravována nebo uložena ve formuláři. Samotné detaily formuláře zároveň neposkytují možnost zobrazení a úpravy dat. Prvky formuláře (viz část „Prvky formuláře“ v této kapitole) spojené s podrobnostmi formuláře se používají k zobrazení a úpravám. Sada všech podrobností formuláře se bude nazývat data formuláře.

Důležité! Je třeba mít na paměti, že na rozdíl od běžných formulářů musí být všechna data ve spravovaném formuláři popsána ve formě detailů. Není povoleno používat proměnné modulu formuláře jako zdroje dat pro prvky formuláře.

Je možné přiřadit Základní detaily formuláře, tedy atributy, které budou určovat standardní funkčnost formuláře (přípona formuláře). Je třeba si uvědomit, že formulář může mít pouze jeden hlavní atribut.

Rozšíření formuláře– to jsou další vlastnosti, metody a parametry formuláře objektu ManagedForm, charakteristické pro objekt, který je hlavním prvkem formuláře.

Během procesu vývoje formuláře můžete explicitně nastavit možnost prohlížet a upravovat konkrétní podrobnosti formuláře, pokud jde o role, pomocí vlastností Zobrazit a Upravit (další podrobnosti naleznete v části „Nastavení formuláře na základě rolí“ v části „Editoři kapitola). Kromě toho lze dostupnost konkrétního atributu v samotném formuláři konfigurovat pomocí funkčních možností (více podrobností o funkčních možnostech naleznete v kapitole „Správa konfiguračního rozhraní“).

Vlastnost atributu formuláře Uložená data je známkou toho, že interaktivní změna detailů povede k pokusu o zablokování údajů formuláře pro editaci a také k automatickému nastavení příznaku úpravy formuláře.

Datové typy dostupné ve spravovaném formuláři

Spravovaný formulář se od běžného formuláře liší také typy dat, se kterými pracuje. Pokud normální formulář pracuje s většinou typů, které 1C:Enterprise poskytuje (včetně typů DirectoryObject, DocumentObject atd.), pak lze ve spravovaném formuláři rozlišit následující kategorie typů:

  • typy, které se přímo používají ve formuláři, jsou typy, které existují na straně tenkého a webového klienta (například Number, DirectoryLink.Products, GraphicScheme, TabularDocument);
  • typy, které budou převedeny na speciální datové typy – datové typy spravovaných formulářů. Takové typy jsou zobrazeny v seznamu podrobností formuláře v závorkách, například (DirectoryObject.Products);
  • dynamický seznam (další podrobnosti viz část „Dynamický seznam“ této kapitoly).

Převod aplikačních objektů na data formuláře

Některé typy aplikací (jako je DirectoryObject atd.) na straně tenkého a webového klienta neexistují (další podrobnosti viz kapitola Koncepce spravované aplikace). Pro reprezentaci takových typů aplikací ve formuláři proto platforma zavedla speciální datové typy navržené pro práci ve spravovaných formulářích. Tato funkce spravované aplikace vyžaduje převod objektů aplikace na data formuláře (a naopak).

Používají se následující typy dat:

  • Form DataStructure – obsahuje sadu vlastností libovolného typu. Vlastnosti mohou být jiné struktury, kolekce nebo struktury s kolekcemi. Tento typ je reprezentován např. ve tvaru DirectoryObject.
  • FormDataCollection je seznam zadaných hodnot, podobný poli. K prvku kolekce se přistupuje pomocí indexu nebo identifikátoru. Přístup pomocí ID nemusí být v některých případech k dispozici. To je způsobeno typem objektu aplikace, který je reprezentován touto kolekcí. Identifikátor může být libovolné celé číslo. Tento typ je zastoupen např. ve formě tabulkové části.
  • Form DataStructureWithCollection je objekt, který je reprezentován jako struktura a kolekce zároveň. Lze s ní zacházet jako s kteroukoli z těchto entit. Tento typ představuje například sadu záznamů ve formuláři.
  • Form DataTree – objekt určený k ukládání hierarchických dat.

Objekt aplikace je reprezentován jedním nebo více datovými prvky formuláře. Obecně platí, že hierarchie a složení dat formuláře závisí na složitosti a propojení aplikačních objektů spravovaného formuláře.

Například dokument obsahující tabulkovou část bude reprezentován objektem typu FormDataStructure (samotný dokument), kterému je podřízen objekt typu FormDataCollection (tabulková část dokumentu).

Důležité! Při vývoji konfigurace je důležité pamatovat na to, že aplikační objekty jsou dostupné pouze na serveru, zatímco datové objekty formuláře lze použít jak na serveru, tak na klientovi.

Předávání dat mezi klientskou a serverovou částí spravovaného formuláře

Ve skutečnosti lze říci, že data formuláře jsou jednotnou reprezentací dat z různých aplikačních objektů, se kterými formulář pracuje jednotně a které jsou přítomny na serveru i na klientovi. To znamená, že formulář obsahuje určitou „projekci“ dat objektu aplikace ve formě vlastních datových typů a v případě potřeby mezi nimi provádí konverzi. Pokud však vývojář konfigurace implementuje svůj vlastní algoritmus pro zpracování dat, musí konverzi dat (ze specializovaných typů na typy aplikací a naopak) provádět samostatně.

Při editaci detailů formuláře ve specializovaném editoru (více viz sekce „Detaily formuláře“ v kapitole „Editoři“) je možné ovlivnit přenos dat mezi klientem a serverem za běhu formuláře. K tomu slouží sloupec editoru detailů. Vždy používejte. Efekt této vlastnosti se liší pro tři typy atributů:

  • Pro atribut podřízený dynamickému seznamu (sloupec dynamického seznamu):
    • vlastnost povolena – atribut je vždy načten z databáze a zahrnut do dat formuláře;
    • vlastnost je zakázána - atribut je načten z databáze a zahrnut do dat formuláře pouze v případě, že je k atributu nebo jeho podřízenému atributu přiřazen aktuálně viditelný prvek formuláře.
  • Pro rekvizity podřízené kolekci pohybu:
    • vlastnost je povolena – pohyby dokladů jsou načteny z databáze a budou přítomny v datech formuláře;
    • vlastnost je zakázána - pohyby dokladů nebudou načteny z databáze a nebudou zahrnuty do dat formuláře (pokud neexistuje prvek formuláře, který odkazuje na pohyby dokladu).
  • Další podrobnosti formuláře:
    • vlastnost je povolena – atribut bude přítomen v datech formuláře bez ohledu na to, zda existuje nebo není alespoň jeden prvek formuláře, který je spojen s atributem nebo jeho podřízeným atributem;
    • vlastnost je zakázána - atribut bude v datech formuláře přítomen pouze v případě, že je k atributu nebo jeho podřízenému atributu přidružen prvek formuláře. Na rozdíl od atributů dynamického seznamu zde nezáleží na viditelnosti prvku spojeného s atributem.

Poznámka. Je třeba si uvědomit, že vlastnost nastavená na nadřazeném atributu ovlivňuje všechny podřízené atributy. Pokud je například vlastnost Použít pro tabulkovou část dokumentu vždy vymazána, systém se domnívá, že tato vlastnost je vymazána i pro všechny podřízené podrobnosti (nehledě na skutečný stav vlastnosti).

Metody pro převod dat objektu aplikace na data formuláře

Chcete-li převést objekty aplikace na data formuláře a zpět, existuje sada globálních metod:

  • ValueInFormData(),
  • FormDataInValue(),
  • CopyFormData().

Důležité! Metody, které pracují s aplikačními objekty, jsou dostupné pouze v procedurách serveru. Metoda pro kopírování hodnot mezi daty formuláře je dostupná na serveru a na klientovi, protože nevyžaduje jako parametry aplikační objekty.

Při převodu dat formuláře na aplikační objekt je třeba zvážit jejich kompatibilitu.

  • ValueInFormData() – převede objekt typu aplikace na data formuláře;
  • FormDataInValue() – převádí data formuláře na objekt typu aplikace;
  • CopyFormData() – zkopíruje data formuláře, která mají kompatibilní strukturu. Vrátí True, pokud byla kopie úspěšná, nebo False, pokud je struktura objektu nekompatibilní.

Poznámka. Při provádění standardních akcí (otevření formuláře, provedení standardního příkazu Zápis atd.) formuláře s hlavními detaily se převod provede automaticky.

Uveďme příklad, jak využít transformaci dat ve vlastních algoritmech.

&OnServerProcedure When CreateOnServer(Failure, StandardProcessing)

ObjectProduct = Directories.Products.FindByName("Kavovar").GetObject(); ValueInFormData(ObjectItem, Object);

Konec procedury

&OnClient Procedure Write()

WriteOnServer();

Konec procedury

&OnServer procedura WriteOnServer()

ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products")); ObjectItem.Write();

Konec procedury

Objekt ManagedForm má také metody dostupné na serveru:

  • ValueВFormAttribute() – převede objekt typu aplikace na zadaný atribut formuláře.
  • FormAttributeVValue() – převádí atribut dat formuláře na objekt typu aplikace.

Použití těchto metod je obvykle pohodlnější, protože obsahují například informace o typu podrobností formuláře. Metoda Form AttributesValue() navíc nastavuje shodu mezi daty formuláře a objektem, který se používá při generování zpráv. Více se o tom můžete dočíst v kapitole „Možnosti navigace služby“.

Uveďme si příklad použití těchto metod.

&OnServer procedura RecalculateOnServer()

// Převede atribut Object na aplikační objekt. Dokument = Form AttributesValue("Object"); // Provede přepočet pomocí metody definované v modulu dokumentu. Document.Recalculate(); // Převede objekt aplikace zpět na prop. ValueВFormAttributes(Document, “Object”);

Konec procedury

Softwarové rozhraní

FormDataTree

  • FindById
  • GetItems

Popis:

Navrženo pro modelování stromu v datech spravovaného formuláře.

Tento objekt lze serializovat do/z XDTO. Typ XDTO odpovídající danému objektu je definován ve jmenném prostoru. Název typu XDTO:

GetItems

Syntax:

GetItems()

Návratová hodnota:

Typ: Formulář DataCollection of Tree Elements.

Popis:

Získá kolekci prvků stromu nejvyšší úrovně.

Dostupnost: klient, server, tenký klient, webový klient.

FindById

Syntax:

FindById(<Идентификатор>)

Možnosti:

<Идентификатор>(Požadované)

Typ: Číslo. Identifikátor prvku stromu.

Návratová hodnota:

Typ:FormDataTreeElement.

Popis:

Získá prvek kolekce podle ID.

Dostupnost: klient, server, tenký klient, webový klient.

FormDataTreeItem

Vlastnosti:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • GetParent
  • GetItems
  • Vlastnictví

Popis:

Prvek stromu dat formuláře.

FormDataTreeItemCollection

Prvky kolekce: DataFormTreeElement

U objektu je možné procházet sběr pomocí operátoru Pro každý... Od... Smyčka. Procházení vybere prvky kolekce. K prvku kolekce je možné přistupovat pomocí operátoru [...]. Index prvku je předán jako argument.

  • Vložit
  • Přidat
  • Index (IndexOf)
  • Počet
  • Průhledná
  • Dostat
  • Hýbat se
  • Vymazat

Popis:

Kolekce dřevěných prvků.

Dostupnost: klient, server, tenký klient, webový klient.

Viz také:

  • FormDataTreeElement, metoda GetElements
  • DataFormTree, metoda GetItems

Funkce práce se stromem hodnot

Aktualizace stromu

Vyskytl se problém pády platformy při aktualizaci stromu.

Pokud byl některý uzel ve stromu rozšířen a byl vybrán podřízený uzel, pak při aktualizaci stromu pomocí funkce ValueInFormData plošina spadne.

Řešení: Před aktualizací musíte vymazat strom.

Například:

&Na serveru Postup ClearTree(elements) Pro každý prvek z prvků Loop ClearTree(element.GetElements()); EndCycle; elementy.Clear(); Konec procedury

&Na serveru Postup Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts, ConceptTree); Konec procedury

&Procedura OnClient OnDateOnChange(Element) Fill ConceptTree(); Konec procedury

Jak přidat další podrobnosti k prvku adresáře v 1C Accounting 8.3 (revize 3.0)

2016-12-07T18:20:33+00:00

Stává se, že nám chybí schopnosti, které jsou již dostupné v 1C. A nemusíte vždy kontaktovat programátora. Řeknu vám o jednom z těchto případů ve vztahu k novému 1C: Účetnictví 8.3 (vydání 3.0).

Abychom neměli dostatek polí pro zadání informací o našich protistranách. A chceme přidat nové pole, které se bude jmenovat "Stav" a bude mít jednu ze tří hodnot - "Vysoká", "Střední" a "Nízká". Níže vám krok za krokem řeknu, jak přidat takové pole, aniž byste museli jít do konfigurátoru.

1. Přejděte do sekce "Správa" a vyberte "Obecná nastavení" ():

2. Najděte a zaškrtněte políčko „Další podrobnosti a informace“, pokud již není zaškrtnuté. Klikněte na odkaz "Další podrobnosti":

3. V levé části okna nastavení, které se otevře, vyberte „Účet“. Klepněte na tlačítko Nový na panelu nástrojů.

4. Otevře se okno pro vytvoření nových detailů pro prvky adresáře „Protistrany“. Do pole Název zadejte „Stav“. Jako typ hodnoty ponechte "Additional value", ačkoli v budoucnu mějte na paměti, že jsou možné i jiné typy hodnot (řetězec, číslo, datum atd.). Nyní však potřebujeme dodatečnou hodnotu, protože chceme uživateli poskytnout omezený výběr ze tří možností.

5. Pro vytvoření každé možnosti přejděte na záložku „Hodnoty“, klikněte tam na tlačítko „Vytvořit“, zadejte název hodnoty (například „Vysoká“) a klikněte na tlačítko „Uložit a zavřít“.

6. A tak dále, dokud nebudou vytvořeny všechny tři hodnoty s názvy „Vysoká“, „Střední“ a „Nízká“, jak je znázorněno na obrázku níže. Klikněte na tlačítko "Uložit a zavřít".

7. Jak vidíte, Protistrana má nyní v seznamu dalších podrobností atribut Stav.

8. Nyní, pokud přejdeme do libovolného prvku adresáře protistran, uvidíme úplně dole ve formuláři nové pole Status ( Pokud ji nevidíte, rozbalte skupinu „Další podrobnosti“ sbalenou ve formuláři.):

9. V tomto poli můžeme dosadit jednu ze tří hodnot, které jsme vytvořili. Pomocí tohoto pole můžete provést výběr ve formě seznamu, lze jej zobrazit v přehledech atd.

Obecné podrobnosti v 1C 8.3 je objekt metadat platformy, který vám umožňuje používat jeden atribut pro mnoho konfiguračních objektů (adresáře, dokumenty, účtové osnovy atd.). Objekt vznikl především pro usnadnění práce vývojáře a oddělení dat.

Obecné podrobnosti byly původně implementovány ve verzi 1C 7.7, ale vývojáři je okamžitě nezahrnuli do platformy verze 8. Mechanismus obecných detailů byl představen vývojáři 1C až ve verzi 8.2.14.

Je velmi vhodné přidat obecné detaily, aby nedošlo ke změně standardních objektů v konfiguraci, které často používám spolu s .

Po přidání obecného atributu jej lze použít v dotazech a zobrazit na formuláři objektu - Navenek se neliší od běžných rekvizit.

Jediným omezením obecných detailů je nemožnost je použít v .

Podívejme se na základní nastavení a vlastnosti obecných detailů, které se liší od ostatních konfiguračních objektů:

Sloučenina— seznam objektů, pro které budou použity obecné podrobnosti, nastavení připomíná vytvoření plánu výměny;

Získejte 267 videolekcí na 1C zdarma:

Automatické použití— nastavení určuje, zda budou obecné rekvizity použity pro ty objekty, které mají zadaný režim použití „Automatic“.

Oddělení dat— toto nastavení zvážíme samostatně.

Separace dat v 1C pomocí společných detailů

Oddělení dat- mechanismus podobný mechanismu. Výkon tohoto mechanismu je však efektivnější a snáze se konfiguruje.

Mechanismus umožňuje konfigurovat zobrazení pouze prvků, které uživatel vidí. Můžete například rozlišovat mezi všemi objekty (dokumenty, adresáři atd.), kde je nainstalována určitá organizace.

Nastavení oddělení dat pomocí obecných podrobností 1C

Chcete-li nakonfigurovat obecné podrobnosti, musíte určit oddělení dat - Rozdělit. Ihned po kliknutí systém nabídne vytvoření výchozích účetních parametrů:

V tomto případě bude nutné zadat parametry relace při spuštění systému, jak to udělat, bylo popsáno na příkladu v článku.

Tím je nastavení dokončeno – uživatel bude mít přístup pouze k informacím, které jsou specifikovány ve vybraných parametrech relace.

Příklad použití běžných rekvizit

Podívejme se na nastavení obecných rekvizit v 1C 8.3 pomocí příkladu konfigurace rámu a rekvizit Organizace:

V systému jsou 3 doklady, kde je nutné uvést údaje o Organizaci: jedná se o Příjemku, Výdajovou fakturu a Výplatní list.

Nastavení je jednoduché:

  1. Vytvoříme nový atribut General, uvedeme typ - DirectoryLink.Organization.
  2. Ve složení zařizujeme pro naše dokumenty - Použití.

To je vše, nastavení je dokončeno!

Pojďme se podívat na výsledek:

Systém zobrazuje obecné podrobnosti „jako by byly vaše vlastní“: v žádostech, v podrobnostech formuláře a na dalších místech. To je takové kouzlo! 🙂

Obecné náležitosti 1C 8.3 se nepřidávají

Detaily formuláře zajišťují jeho spojení s daty. V tomto případě může být jeden (a pouze jeden) z detailů označen jako hlavní; nemusí to být nutně datový typ, do kterého formulář kreslíme. Chování formuláře však bude záviset na datovém typu hlavního atributu. Kromě změny chování formuláře se změní i kontext modulu formuláře. Spolu s metodami a vlastnostmi formuláře se v něm zpřístupňují i ​​metody a vlastnosti objektu, který je hodnotou hlavního atributu. Je důležité, aby formuláře typu Free Form neměly základní detaily. V tomto případě je chování formuláře určeno pouze nastavením uživatele. Zvažme otázky týkající se základních detailů.

Otázka 10.05 zkoušky 1C: Platform Professional. K čemu se používá hlavní atribut formuláře?

  1. Definuje zdroj dat pro formulář jako celek
  2. Definuje standardní možnosti platformy pro práci s formulářem s daty typu uvedeného v hlavním atributu
  3. Poskytnout možnost programově přistupovat k podrobnostem objektu z místního kontextu formuláře
  4. Poskytuje vizualizaci detailů objektu v dialogovém okně formuláře
  5. 2 a 3 jsou správné
  6. 1 a 2 jsou správně

Správná odpověď je číslo šest, viz výše.


Otázka 10.06 zkoušky 1C: Platform Professional. K čemu jsou potřebné údaje formuláře?
  1. Popis obsahu dat, která jsou zobrazena, upravena nebo uložena ve formuláři
  2. Chcete-li zobrazit a upravit data ve formuláři
  3. 1 a 2 jsou správně

Správná odpověď je třetí – obojí.

Otázka 10.07 zkoušky 1C: Platform Professional. Chcete-li přiřadit hlavní atributy libovolnému řízenému formuláři...

  1. Ve vlastnostech atributu formuláře je třeba zaškrtnout políčko "Hlavní atribut".
  2. musíte vyplnit vlastnost „Data“ formuláře výběrem požadovaného atributu formuláře

Správná odpověď je druhá:

Otázka 10.08 zkoušky 1C: Platform Professional. Chcete-li přiřadit hlavní detaily libovolnému pravidelnému tvaru...
  1. formulář musí být hlavní, hlavní podrobnosti jsou určeny automaticky
  2. Ve vlastnostech atributu formuláře je třeba zaškrtnout políčko "Hlavní atribut".
  3. musíte přejít do nabídky "Upravit", vybrat "Základní podrobnosti" a vybrat požadovanou hodnotu
  4. musíte vyplnit vlastnost „Data“ formuláře výběrem požadovaného atributu formuláře

Správná odpověď je čtvrtá:

Hlavní detaily jsou zvýrazněny tučně:

Otázka 10.09 zkoušky 1C: Platform Professional. Pokud existuje jeden hlavní atribut formuláře, je možné přidat další hlavní atribut?
  1. To je nemožné
  2. Je to možné přiřazením příslušné hodnoty vlastnosti atributu formuláře
  3. Je to možné pouze programově, při přístupu k objektu "Formulář".
  4. To je možné přidáním další hodnoty k odpovídající vlastnosti formuláře

Správná odpověď je první, je zde striktně jeden hlavní požadavek, protože souvislost s objektem musí být jednoznačná.

Otázka 10.113 zkoušky 1C: Platform Professional. Který z detailů formuláře na obrázku je ten hlavní?

  1. Seznam měnových kurzů
  2. DirectoryObject
  3. Adresářové formuláře nemají základní detaily
  4. Adresářové formuláře mají všechny základní detaily
Druhá správná odpověď je tučně.

Níže jsou uvedeny hlavní objekty 1C, které se používají při práci se spravovanými formuláři. Jsou uvedeny stručné příklady kódu, které demonstrují tradiční použití těchto objektů při psaní konfigurací 1C.

Tato forma

Používá se v modulu formuláře, v procedurách&Na klientovi a &na serveru.

Umožňuje přístup k prvkům formuláře i podrobnostem.

K prvku formuláře se přistupuje prostřednictvím objektu Prvky a vypadají takto:

ThisForm.Elements.VersionNumber.Header = "v."+ProgramVersion;

Přístup k atributům, které existují ve formuláři, probíhá takto:

ThisForm.Advertisement Text="Dobrý den, soudruzi!";

Zjednodušený přístup k formulářovým prvkům a detailům

V zásadě nemusíte zadávat klíčové slovo v modulu formuláře Tato forma . K prvkům formuláře a podrobnostem můžete přistupovat zjednodušeným způsobem:

// Element formuláře

Elements.VersionNumber.Title = "v."+ProgramVersion;

// Podrobnosti formuláře

Reklama Text="Dobrý den, soudruzi!";

Funkce získávání podrobností formuláře (důležité!)

Pokud má atribut formuláře jednoduchý typ -Řetězec, Číslo, Datum ... pak můžete získat (nastavit) hodnotu atributu jednoduše podle názvu:

Text=NázevProduktu; // Název produktu je atribut formuláře

Tímto způsobem však není možné získat podrobnosti „komplexního“ typu -Tabulka hodnot, Strom hodnot . Pokud se pokusíte získat atribut s tímto typem podle názvu, bude vrácen objekt typuDataFormsCollection.

Chcete-li získat hodnotu atributu s „komplexním“ typem, musíte použít funkciFormAttributesValue():

CurrentTable=FormAttributesValue("SelectedConstructionObjects");

Chcete-li nastavit hodnotu „komplexního“ atributu, můžete použít funkciValueInFormAttributes(<Значение>, <ИмяРеквизита>) , oba parametry jsou povinné.

Funkce FormAttributesValue() A ValueInFormAttributes()dostupné pouze na Serveru.

Objekt

Přesně řečeno, ve formuláři žádné takové klíčové slovo není. Jednoduše, když je vytvořen formulář, například formulář prvku, 1C automaticky vytvoří atribut na formuláři s názvem Objekt . Prostřednictvím tohoto atributu jsou dostupné vlastnosti aktuálního objektu, který je ve formuláři upravován.

nebo úplnější zápis:

TentoObjekt

Obsahuje samotný objekt. Určeno pro získání objektu v modulu objektu nebo modulu formuláře.

Použití: Pouze pro čtení.

Dostupnost: Server, tlustý klient, externí připojení.