Meny
Är gratis
registrering
Hem  /  Problem/ Form data till värde 1s 8.3. Autentiseringsuppgifter för hanterade formulär (1Cv8)

Formdata i värde 1s 8.3. Autentiseringsuppgifter för hanterade formulär (1Cv8)

Nedan listas de viktigaste 1C-objekten som används när man arbetar med hanterade formulär. Korta kodexempel ges som visar den traditionella användningen av dessa objekt vid skrivning av 1C-konfigurationer.

Detta formulär

Används i en formulärmodul, i procedurer& OnClient och & OnServer.

Ger dig tillgång till både formulärelement och attribut.

Ett formulärelement nås via ett objekt Element och ser ut så här:

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

Hänvisningen till det nödvändiga som finns på formuläret är följande:

ThisForm.Announcement text = "Hej, kamrater!";

Förenklad tillgång till formelement och rekvisita

I princip kan du i formulärmodulen utelämna nyckelordet Detta formulär ... Du kan referera till formulärelement och attribut på ett förenklat sätt:

// Formelement

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

// Form rekvisita

Tillkännagivande Text = "Hej, kamrater!";

Funktioner för att få formulärdetaljer (viktigt!)

Om formrekvisita är av enkel typ - Sträng, nummer, datum ... då kan du få (ställa in) värdet på ett attribut helt enkelt genom namn:

Text = Produktnamn; // Produktnamn är ett formattribut

Men på detta sätt är det omöjligt att få detaljerna om den "komplexa" typen -Värdetabell, Värdeträd ... Om du försöker få ett attribut med denna typ efter namn, kommer ett objekt av typen att returnerasDataFormsCollection.

För att få värdet på ett attribut med en "komplex" typ måste du använda funktionenPropsFormVValue ():

CurrentTable = FormInValue ("SelectedConstructionObjects");

För att ställa in värdet på en "komplex" variabel kan du använda funktionenValueBForm Attribut (<Значение>, <ИмяРеквизита>) båda parametrarna krävs.

Funktioner PropsFormVValue () och ValueBForm Attribut ()endast tillgänglig på servern.

Ett objekt

Strängt taget så nyckelord inom formuläret, nej. Det är bara det att när en form skapas, till exempel en elementform, skapar 1C automatiskt en rekvisita med ett namn på formuläret Ett objekt ... Detta attribut ger tillgång till egenskaperna för det aktuella objektet, som redigeras i formuläret.

eller en mer komplett post:

Detta objekt

Innehåller själva objektet. Den är avsedd för att få ett objekt i en objektmodul eller en formulärmodul.

Användning: Endast läsning.

Tillgänglighet: Server, Fat Client, Extern anslutning.

På den tjocka klientens dagar var det enkelt att anropa en objektmodulprocedur från en formulärmodul. Det räckte med att definiera modulproceduren som exporterad och kalla den i formulärmodulen.


Tiderna förändras, 1C-plattformen optimeras och förbättras, den feta klienten glöms bort, ge alla en tunn eller webbklient. Utvecklare börjar översätta vanliga formulär till hanterade, men allt är inte så enkelt, det finns vissa svårigheter i samband med separationen av exekvering programkod i två sammanhang: server och klient. Därför kommer kodexemplet ovan inte att fungera i den tunna klienten.

Nya datatyper

På grund av hanterade formulär har nya datatyper dykt upp. Det finns ett formulär:
Vi kommer ihåg typerna av attribut och ser vilka typer som är i felsökning för dessa attribut:

Nya formulärdatatyper
Vi drar slutsatsen att för att visa själva objektets data används typen DataFormsStructure, för att visa ett värdeträd - DataShapeTree, för tabelldelen - DataFormsCollection etc. Det vill säga i formulärmodulen på klienten arbetar vi inte med själva objektet, utan med dess presentation! Därför är de metoder som finns tillgängliga till exempel för tabelldelen i objektmodulen INTE TILLGÄNGLIG i formulärmodulen.

Slåss mot nya typer

Utvecklarna av 1C-plattformen tillhandahöll två funktioner:
  1. PropsFormVValue- konverterar det angivna formattributet till ett objekt av den tillämpade typen.
  2. Form DataValue- konverterar formulärdata till ett objekt av den tillämpade typen.
Att anropa dessa funktioner är endast tillgängligt på servern. Låt oss gå tillbaka till vår uppgift och skriva koden för den tunna klienten i formulärmodulen i händelsen OnCreateAtServer som kommer att anropa funktionen från objektmodulen:
&På server


SproObject1 = Form AttributeValue ("Objekt");
SprObject1.DisplayMessage (Object.Props1);




Slut på förfarandet

Fungerar med både en funktion och en annan O_o. Låt oss skriva konverteringskoden DataShapeTree till ett objekt av en tillämpad typ:
&På server
Procedur OnCreateAtServer (fel, standardbearbetning)

ValueTree1 = Form AttributeValue ("Attribut1");
ValueTree2 = FormDataInValue (ThisForm.Attribute1, Typ ("ValueTree"));

Slut på förfarandet

ValueTree1 och ValueTree2 har samma typ - ValueTree. Så vad är skillnaden mellan dessa funktioner???

Form DataValue - funktion global sammanhang. Konverterar typen av objekt som stöds av formuläret till typen av databasobjekt: FormDataStructure -> ReferenceObject.Reference1.

PropsFormVValue - funktionen hos formulärmodulen, det vill säga den anropas på servern i samband med formuläret (& OnServer). Om du försöker ringa denna funktion utanför formulärets sammanhang kommer plattformen att generera ett exceptionellt fel:
& PåServerUtanKontext
Procedur ConvertType ()

// Denna kod är fel, formulärkontexten är inte tillgänglig, det kommer att uppstå ett fel!
RefObject2 = FormDataValue (Objekt, Typ ("DirectoryObject.Reference1"));
SprObject2.DisplayMessage (Object.Props1);

Slut på förfarandet

Det är hela skillnaden.

Bearbetning visar alla detaljer för det valda objektet, låter dig redigera dem, samt jämföra två objekt av samma typ. Stöder alla konfigurationer, den installeras automatiskt i standard.

Aktuell version: 1.09 för vanliga formulär, 1.12 för hanterade formulär.

Nedladdningsbearbetning (för 1C 8.2, 1C 8.3 (vanliga formulär), epf-fil, 47 KB)

Nedladdningsbearbetning (för 1C 8.2, 1C 8.3 (hanterade formulär), epf-fil, 22 KB)

Den senaste versionen för 1C 8.1: 1.05

Nedladdningsbearbetning (för 1C 8.1, epf-fil, 48 KB)

Vad ska man göra om behandlingen inte öppnas

Bearbetning är mycket användbar, till exempel i sådana fall:

    behöver reda ut en obekant databas

    konfigurationsversionen uppdaterades och ett nytt fält (dolt, men inte i formuläret) lades till i dokumentet. Samtidigt är det för nya dokument fastställt när de skapas, men de gamla glömdes naturligtvis bort. Vilket för användaren tar sig uttryck i att två helt identiska dokument ger olika transaktioner 🙁

    det är bara att innehållet i fältet inte passar in i det utrymme som är tilldelat det på formuläret, men du måste se det i sin helhet (särskilt tabellsektioner lider av detta - utvecklare är mycket förtjusta i att begränsa bredden på kolumnerna och, dessutom inte tillåta att det ändras)

    du måste gå till relaterade information (till exempel öppna den som anges i CCD-fakturan), men de glömde att göra detta fält tillgängligt (det vill säga varken knappar med prickar eller förstoringsglas eller F4) (och det händer också att de istället för ett inmatningsfält gör ett urvalsfält, en inskription eller ett fält som generellt saknas på formuläret 🙁)

    du måste jämföra två objekt av samma typ

Särskiljande egenskaper är

    möjligheten att ansluta till typiska konfigurationer som en utskrivbar (dvs i ett rent användarläge behövs ingen konfigurator)

    möjligheten att spela in ett objekt i läget "datautbyte - nedladdning" - dvs. "som det är"

Installation (normalt gränssnitt)

Bearbetningen är öppen, följ instruktionerna på skärmen. (Dvs klicka på knappen "Installation" i det övre högra hörnet och bekräfta installationen i nästa fönster.

Installation ("hanterat" gränssnitt)

Uppmärksamhet: Detta alternativ installationen fungerar endast i typiska 1C-konfigurationer.

1. Gå till avsnittet "Administration" och där - "Ytterligare rapporter och bearbetning".

2. Tryck på knappen "Lägg till" och välj filen dannye-objecta-upr.epf

3. I fönstret för bearbetningsinställningar, kontrollera att:

    Publikation: Används

    Markerade rutor: använd för listform, använd objekt för form

4. Bekräfta installationen genom att klicka på OK

Användning av bearbetning

Från dokumentets form, elementet i katalogen. antingen listform

    Normalt gränssnitt - tryck på "Skriv ut ..."

    "Guidad" gränssnitt - tryck på fyllningsknappen

Välj "Objektdata" i menyn - bearbetningsformuläret öppnas

För att se det nödvändiga (till exempel innehåller dokumentet attributet "Avtal", det är inte tillgängligt för ändringar. Men du måste öppna kortet för detta avtal).

Hur man får rekvisita från ett referensvärde på klienten

Klicka på attributvärdet i bearbetningsformuläret.

För att ändra attributet - markera rutan bredvid värdet. Värdet kan sedan ändras.

För att spara ändringarna - tryck på knappen för önskat alternativ för att spara posten i läget "datautbyte - nedladdning", regelbundet inträde... genomföra (endast för dokument).

Om du behöver registrera några av de ändrade kraven och registrera några av dem, avmarkera rutorna bredvid vad som ska registreras.

I bearbetningen finns det "Data om erforderligt" - det är som att du skulle öppna ett värde genom referens (till exempel ett motpartskort) och anropa bearbetning i det igen.

Jämförelse av objekt kan göras:

Väljer 2 objekt för bearbetning

2. Anropsbehandling från ett objekt, sedan (utan att stänga fönstret) från ett annat. Du kommer att bli ombedd att göra en jämförelse.

3. (Endast "hanterat" gränssnitt). Välj 2 objekt i listan samtidigt (för att göra detta, håll ned Ctrl-knappen) och anropsbehandling - objekten kommer att jämföras.

Skärmdumpar (normalt gränssnitt)

Skärmdumpar ("hanterat" gränssnitt)

Exempel på användning av bearbetning för att analysera problemsituationer.

Ändringar i version 1.12 (2017-10-17)

  • För varianten med hanterade formulär har en bugg åtgärdats (attributet i tabellsektionen uppdaterades inte om själva objektet hade ett header-attribut med samma namn)

Ändringar i version 1.10 (06.01.2017)

  • För varianten med hanterade formulär har arbetet fixats i vissa typiska konfigurationer (Accounting, UNF)

Ändringar i version 1.09 (07.07.2015)

  • Lade till visning av fälten "Förälder", "Ägare"
  • För versionen för det hanterade gränssnittet tillhandahålls arbete utan modala fönster.

Ändringar i version 1.08 (2014-03-04)

    För versionen för det normala gränssnittet, förbättrad kompatibilitet vid arbete i "Manufacturing Enterprise Management" (PPM) 1.3-konfigurationen.

Ändringar i version 1.07 (2013-03-04)

    Det finns en version av bearbetning för "hanterade" formulär (funktionen för automatisk installation och uppdatering finns endast i versionen för vanliga formulär)

    Bug fixad (rättigheter sattes i bearbetningsdistributionen)

Ändringar i version 1.06 (2012-05-13)

    Visar fältet "Objektversion".

    Bug fixad (det var inte möjligt att ställa in skrivskyddad behörighet vid bearbetning)

Ändringar i version 1.05 (2011-05-04)

    Fixade en bugg (när man arbetade under 8.2 var dokumentposten inte tillgänglig i postningsläget)

Ändringar i version 1.04 (2011-04-13)

    Fixade en bugg (när du arbetade under 8.2 öppnades inte detaljerna genom att dubbelklicka på musen)

    Nu kan bearbetningen fortsätta till att visa referenstypattributen.

    Det vill säga: låt oss säga att du har öppnat vyn för detaljerna i dokumentet "Försäljning av varor, tjänster". V det här dokumentet det finns en "Motparts"-variabel av typen "DirectoryLink.Contractors". Genom att klicka på detta krav med höger musknapp får du innehållsmeny, där det finns poster "Data för erforderligt" och "Data för erforderligt i ett nytt fönster". Genom att välja en av dem kan du se uppgifterna om motsvarande motpart.

Ändringar i version 1.03 (2010-10-15)

    Lade till möjligheten att ställa in användare och deras åtkomsträttigheter till bearbetning.

Ändringar i version 1.02 (2010-08-21)

    Stödda konfigurationer där referensen externa behandlingar som kallas "Supplementary Print Forms".

Ändringar i version 1.01 (2010-01-28)

    Fixade en bugg som inträffade när Objekt1 var tomt och Objekt2 valdes (tack till rasswet för att visa det);

    Kryssrutan "detalj" utlöses direkt, du behöver inte klicka på "Visa";

    Kolumnen "Värdetyp" har bytt namn till "Möjlig värdetyp" och visar den värdetyp som definierats för denna variabel i konfiguratorn. För attribut med en sammansatt typ, utöver detta, visas typen av värdet för detta attribut i det visade objektet.

Om du anslutit bearbetning till din konfiguration, uppdatera den:

ladda ner bearbetningen, öppna den som en extern, den kommer att berätta vad och hur du ska klicka (knappen "Installera", välj "Uppdatera bearbetning i databasen", klicka på knappen "Utför")

Skriv ut (Ctrl + P)

Det finns en uppsättning globala metoder för att konvertera applikationsobjekt till att bilda data och vice versa:

  • ValueInForm Data (),
  • FormDataValue (),
  • CopyFormData ().

Metoder som fungerar med applikationsobjekt är endast tillgängliga i serverprocedurer. Metoden för att kopiera värden mellan formulärdata är tillgänglig på servern och på klienten, eftersom den inte kräver applikationsobjekt som parametrar.

Tänk på kompatibilitet när du konverterar formulärdata till ett applikationsobjekt.

  • ValueInDataForm() - konverterar ett objekt av en applikationstyp till formulärdata.
  • Form DataValue() - konverterar formulärdata till ett objekt av den tillämpade typen.
  • CopyDataForm() - kopierar formulärdata med en kompatibel struktur. Returnerar True om kopian gjordes, eller False om strukturen på objekten är inkompatibel.

Vid konvertering av formulärdata till applikationsobjekt och vice versa används objektcache, men samtidigt kontrolleras giltigheten av versionen av objektet i cachen.

NOTERA. När du utför standardåtgärder (öppnar ett formulär, utför standardkommando Record, etc.) i formuläret med huvudattributet, omvandlingen utförs automatiskt.

Här är ett exempel på hur du använder datatransformation i dina egna algoritmer.

&På server
Procedur OnCreateAtServer (fel, standardbearbetning)
ObjectObject = Goods.FindByName ("Kaffekanna"). GetObject (); ValueVDataForm (ObjectObject, Object);
Slut på förfarandet
& OnClient
Procedur Skriv ()
WriteOnServer ();
Slut på procedur
&På server
Procedur WriteOnServer ()
ObjectObject = FormDataInValue (Objekt, Typ ("DirectoryObject.Goods"));
ObjectObject.Write ();
Slut på förfarandet

ClientApplicationForm-objektet har också metoder tillgängliga på servern:

  • ValueBForm Attribut () - konverterar ett objekt av den tillämpade typen till det angivna formattributet.
  • PropsFormVValue() - konverterar formulärdataattributet till ett objekt av den tillämpade typen.

Att använda dessa metoder är vanligtvis bekvämare, eftersom de till exempel har information om typen av formattributet. Dessutom utför metoden FormPropsBValue () mappningen mellan formulärdata och objektet, som används när meddelanden genereras.

Det bör också komma ihåg att när du konverterar till formulärdata (både med metoden ValueBFormData () och metoden ValueBFormAttribute ()) för objekt av typen ValueTable eller ValueTree, måste du ta hänsyn till följande funktion: i det konverterade objektet , måste alla kolumner som finns i data existera formulär.

UPPMÄRKSAMHET! Icke-datarelaterade attributkolumner är inte involverade i att konvertera värden mellan formulärdata och objekt informationsbas och tillbaka. Kolumner som inte finns i objektdata rensas när de konverteras till formulärdata.

Vid överföring av ett objekt för att bilda data av ramverket, eller när metoder anropas ValueInDataForm(), ValueInPropsForm(), endast objektdata överförs. Objektets interna tillstånd överförs inte till formulärdata. Till exempel värdet på den nya referensen, som sätts till objektet av metoden SetLinkNew (), kommer att gå förlorade när objektet konverteras till och från formulärdata.

Som den första parametern av metoderna PropsFormVValue() och FormDataValue (), endast formulärattribut av följande typer kan användas:

  • FormDataStructure,
  • Formulärdatainsamling,
  • DataFormsStructureCollection,
  • FormDataTree.

Låt oss ge ett exempel på hur du använder dessa metoder.

&På server
Procedur RecalculateAtServer ()
// Konverterar rekvisitaobjektet till ett applikationsobjekt. Document = FormInValue ("Objekt");
// Utför omräkning med den metod som definieras i dokumentmodulen. Document.Recalculate ();
// Konverterar applikationsobjektet tillbaka till rekvisita. ValueВForm Attribut (Dokument, "Objekt");
Slut på förfarandet

Formulärdetaljer

En uppsättning formulärattribut beskriver sammansättningen av data som visas, redigeras eller lagras i formuläret. Samtidigt ger formulärdetaljerna i sig inte möjligheten att visa och redigera data. Formulärelement (se avsnittet "Formulärelement" i detta kapitel), associerade med formulärattribut, används för att visa och redigera. Uppsättningen av alla formulärdetaljer kommer att kallas formulärdata.

Viktig! Man måste komma ihåg att, till skillnad från vanliga formulär, all data hanterad form ska beskrivas i form av rekvisita. Det är inte tillåtet att använda formulärmodulvariabler som datakällor för formulärelement.

Det går att tilldela Formens huvudsakliga krav, det vill säga en rekvisita som kommer att definiera standardfunktionaliteten för formuläret (formulärtillägg). Man bör komma ihåg att en form bara kan ha ett huvudattribut.

Utökar formuläret- dessa är ytterligare egenskaper, metoder och parametrar för ManagedForm-objektformuläret, karaktäristiska för objektet som är huvudelementet i formuläret.

När du utvecklar ett formulär kan du uttryckligen ställa in möjligheten att visa och redigera specifika detaljer i formuläret, vad gäller roller, med hjälp av egenskaperna Visa och Redigera (för mer information, se avsnittet "Rollbaserad formuläranpassning" i kapitlet "Redaktörer"). Dessutom kan tillgängligheten för ett visst attribut i själva formuläret konfigureras med funktionella alternativ (för mer information om funktionsalternativ, se kapitlet "Hantera konfigurationsgränssnittet").

Form rekvisita egendom Lagrade dataär ett tecken på att en interaktiv ändring av rekvisita kommer att leda till ett försök att blockera formulärdata för redigering, samt att automatisk installation ett tecken på formändring.

Datatyper tillgängliga i hanterad form

Ett hanterat formulär skiljer sig också från ett vanligt formulär i vilken typ av data den arbetar med. Om den vanliga formen fungerar med de flesta av de typer som 1C: Enterprise tillhandahåller (inklusive typen DirectoryObject, DocumentObject, etc.), kan följande kategorier av typer särskiljas i det hanterade formuläret:

  • typer som används direkt i formuläret är de som finns på sidan av den tunna klienten och webbklienten (till exempel Number, ReferenceRef.Products, GraphicalSchema, TabularDocument);
  • typer som kommer att konverteras till speciella datatyper - hanterade formulärdatatyper. Sådana typer visas i listan över formulärattribut inom parentes, till exempel (ReferenceObject.Goods);
  • dynamisk lista (se avsnittet "Dynamisk lista" i detta kapitel för mer information).

Konvertera applikationsobjekt till formulärdata

Vissa applikationstyper (som DirectoryObject, etc.) finns inte på sidan av tunna klienter och webbklienter (för mer information, se kapitlet "Koncept hanterad applikation"). Därför, för att representera sådana applikationstyper i formuläret, har plattformen introducerat speciella datatyper utformade för att fungera i hanterade formulär. Denna funktion i en hanterad applikation kräver konvertering av applikationsobjekt till formdata (och vice versa).

Följande datatyper används:

  • FormDataStructure - innehåller en uppsättning egenskaper av en godtycklig typ. Egenskaper kan vara andra strukturer, samlingar eller strukturer med samlingar. Denna typ representeras till exempel i formen DirectoryObject.
  • En FormData-samling är en arrayliknande lista med inskrivna värden. Ett objekt i en samling nås med index eller identifierare. Åtkomst med ID kanske inte är tillgänglig i vissa fall. Detta beror på typen av applikationsobjekt som representeras av denna samling. Identifieraren kan vara vilket heltal som helst. Denna typ representeras till exempel i form av ett tabellsnitt.
  • FormDataStructureCollection är ett objekt som representeras som en struktur och en samling samtidigt. Det kan behandlas som vilken som helst av dessa enheter. Denna typ representeras till exempel i form av en uppsättning poster.
  • FormDataTree - objektet är designat för att lagra hierarkisk data.

Ett applikationsobjekt representeras av antingen en eller flera formulärdataobjekt. V allmän syn hierarkin och sammansättningen av formulärdata beror på komplexiteten och sambandet mellan de hanterade formulärapplikationsobjekten.

Till exempel kommer ett dokument som innehåller en tabellsektion att representeras av ett objekt av typen FormDataStructure (dokumentet självt), vilket ett objekt av typen FormDataCollection (tabellsektion av dokumentet) är underordnat.

Viktig! När du designar en konfiguration är det viktigt att komma ihåg att applikationsobjekt endast är tillgängliga på servern, medan formulärdataobjekt kan användas på både servern och klienten.

Skicka data mellan klientsidan och baksidan av ett hanterat formulär

I själva verket kan vi säga att formulärdata är en enhetlig representation av data från olika applikationsobjekt, med vilka formuläret fungerar på ett enhetligt sätt och som finns både på servern och på klienten. Det vill säga, formuläret innehåller en viss "projektion" av applikationsobjektens data i form av sina egna datatyper och konverterar mellan dem, om det behövs. Men om en konfigurationsutvecklare implementerar sin egen databehandlingsalgoritm, måste han utföra datakonvertering (från specialiserade typer till tillämpade typer och vice versa) oberoende.

När du redigerar formulärattributen i en specialiserad redigerare (för mer information, se avsnittet "Formulärattribut" i kapitlet "Redaktörer") är det möjligt att påverka överföringen av data mellan klienten och servern medan formuläret körs. För att göra detta, använd kolumnen i attributredigeraren. Använd alltid... Effekten av den här egenskapen skiljer sig för tre typer av attribut:

  • För ett attribut som är underordnat en dynamisk lista (dynamisk listkolumn):
    • egenskap på - attributet läses alltid från databasen och inkluderas i formulärdata;
    • egenskap av - rekvisitan läses från databasen och ingår i formulärdata endast när det finns en synlig i det här ögonblicket formelement associerat med en rekvisita eller dess underordnade rekvisita.
  • För rekvisita som är underordnad rörelsesamlingen:
    • egenskap på - dokumentrörelser läses från databasen och kommer att finnas i formulärdata;
    • egenskapen är inaktiverad - dokumentrörelser kommer inte att läsas från databasen och kommer inte att inkluderas i formulärdata (om det inte finns något formulärelement som hänvisar till dokumentrörelser).
  • Övriga detaljer i formuläret:
    • egenskapen aktiverad - attributet kommer att finnas i formulärdata, oavsett om det finns minst ett formulärelement som är associerat med attributet eller dess underordnade attribut;
    • egenskap av - rekvisitan kommer endast att finnas i formulärdata om det finns ett formelement associerat med rekvisitan eller dess underordnade rekvisita. Till skillnad från attributen för en dynamisk lista spelar synligheten för elementet som är associerat med attributet ingen roll här.

Notera. Man bör komma ihåg att egenskapen som ställs in på det överordnade attributet påverkar alla underordnade attribut. Till exempel, om egenskapen Använd alltid rensas för tabelldelen av dokumentet, anser systemet att denna egenskap också rensas för alla underordnade attribut (trots egenskapens faktiska tillstånd).

Metoder för att konvertera applikationsobjektdata till formulärdata

Det finns en uppsättning globala metoder för att konvertera applikationsobjekt till att bilda data och vice versa:

  • ValueInForm Data (),
  • FormDataValue (),
  • CopyFormData ().

Viktig! Metoder som fungerar med applikationsobjekt är endast tillgängliga i serverprocedurer. Metoden för att kopiera värden mellan formulärdata är tillgänglig på servern och på klienten, eftersom den inte kräver applikationsobjekt som parametrar.

Tänk på kompatibilitet när du konverterar formulärdata till ett applikationsobjekt.

  • FormDataValue () - konverterar ett objekt av den tillämpade typen till formulärdata;
  • FormDataValue () - konverterar formulärdata till ett objekt av en tillämpad typ;
  • CopyFormData () - kopierar formulärdata med en kompatibel struktur. Returnerar True om kopian gjordes, eller False om strukturen på objekten är inkompatibel.

Notera. När du utför standardåtgärder (öppnar ett formulär, utför standardskrivkommandot, etc.) av ett formulär med huvudattributen, utförs transformationen automatiskt.

Här är ett exempel på hur du använder datatransformation i dina egna algoritmer.

& AtServer Procedur OnCreateAtServer (fel, standardbearbetning)

ObjectObject = Reference books.Goods.FindByDescription ("Kaffekanna"). GetObject (); ValueVDataForm (ObjectObject, Object);

Slut på procedur

& OnClient Procedur Write ()

WriteOnServer ();

Slut på procedur

& AtServer Procedur WriteAtServer ()

ObjectObject = FormDataValue (Object, Type ("DirectoryObject.Goods")); ObjectObject.Write ();

Slut på förfarandet

ManagedForm-objektet har också metoder tillgängliga på servern:

  • ValueBFormAttribute () - konverterar ett objekt av den tillämpade typen till det angivna formattributet.
  • Form AttributeValue () - konverterar formulärdataattributet till ett objekt av den tillämpade typen.

Att använda dessa metoder är vanligtvis bekvämare, eftersom de till exempel har information om typen av formulärattribut. Dessutom utför metoden FormPropsBValue () mappningen mellan formulärdata och objektet, som används när meddelanden genereras. Du kan läsa mer om detta i kapitlet "Navigationstjänstalternativ".

Låt oss ge ett exempel på hur du använder dessa metoder.

& AtServer Procedur RecalculateAtServer ()

// Konverterar rekvisitaobjektet till ett applikationsobjekt. Document = AttributeFormVValue ("Objekt"); // Utför omräkning med den metod som definieras i dokumentmodulen. Document.Recalculate (); // Konverterar applikationsobjektet tillbaka till rekvisita. ValueVRequisitForm (Dokument, "Objekt");

Slut på förfarandet

Programmeringsgränssnitt

FormDataTree (FormDataTree)

  • FindById
  • GetItems

Beskrivning:

Designad för att modellera ett träd i hanterade formulärdata.

Detta objekt kan serialiseras till/från XDTO. XDTO-typ motsvarande detta objekt definieras i namnområdet. XDTO-typnamn:

GetItems

Syntax:

GetElements ()

Returnerat värde:

Typ: FormDataTreeElement Collection.

Beskrivning:

Hämtar samlingen av föremål i trädet på översta nivån.

Tillgänglighet: klient, server, tunn klient, webbklient.

FindById

Syntax:

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

Alternativ:

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

Typ: Antal. Identifieraren för trädelementet.

Returnerat värde:

Typ: FormDataTreeElement.

Beskrivning:

Får ett samlingsobjekt med ID.

Tillgänglighet: klient, server, tunn klient, webbklient.

FormDataTreeItem (FormDataTreeItem)

Egenskaper:

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

  • GetId
  • GetParent
  • GetItems
  • Fast egendom

Beskrivning:

Formulärdataträdelement.

FormDataTreeItemCollection (FormDataTreeItemCollection)

Samlingsobjekt: FormDataTreeElement

För ett objekt kan samlingen passeras med operatorn För varje ... Från ... Slinga. Genomgången väljer elementen i samlingen. Det är möjligt att referera till ett insamlingselement med hjälp av [...]-operatorn. Indexet för elementet skickas som ett argument.

  • Föra in
  • Lägg till
  • Index (IndexOf)
  • Räkna
  • Klar
  • Få (Hämta)
  • Flytta
  • Radera

Beskrivning:

Samling av trädelement.

Tillgänglighet: klient, server, tunn klient, webbklient.

Se även:

  • FormDataTreeElement, GetElements-metoden
  • FormDataTree, GetElements-metoden

Funktioner av att arbeta med ett värdeträd

Uppdaterar trädet

Det finns ett problem falla plattformar när du uppdaterar trädet.

Om en nod har utökats i trädet och en underordnad nod har valts, då när trädet uppdateras med funktionen ValueInDataForm plattformen faller.

Lösning: Innan du uppgraderar måste du rensa trädet.

Till exempel:

& AtServer Procedur ClearTree (element) För varje element i elementen Loop ClearTree (element.GetElements ()); Slut på cykeln; elements.Clear (); Slut på förfarandet

& OnServer-procedur FillConceptionTree () dzConceptions = cpProperties.Construct ConceptTree (OnDate, Meta.CurrentIB ()); ClearTree (ConceptTree.GetElements ()); ValueVDataForms (Concept, Concept Tree); Slut på förfarandet

& OnClient-procedur OnDateOnChange (Element) Fill ConceptTree (); Slut på förfarandet