Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Știri
  • Detaliile formularului setate la 1s. Detalii formulare gestionate (1Cv8)

Detaliile formularului setate la 1s. Detalii formulare gestionate (1Cv8)

Imprimare (Ctrl+P)

Pentru a converti obiectele aplicației în date de formular și înapoi, există un set de metode globale:

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

Metodele care funcționează cu obiectele aplicației sunt disponibile numai în procedurile de server. Metoda de copiere a valorilor între datele formularului este disponibilă pe server și pe client, deoarece nu necesită obiecte de aplicație ca parametri.

Când convertiți datele formularului într-un obiect de aplicație, trebuie să luați în considerare compatibilitatea acestora.

  • ValueInFormData() - convertește un obiect de tip aplicație în date de formular.
  • DataFormValue() - convertește datele formularului într-un obiect de tip aplicație.
  • CopyFormData() - copiază datele din formular care au o structură compatibilă. Returnează True dacă copia a avut succes sau False dacă structura obiectului este incompatibilă.

La conversia datelor din formular în obiecte de aplicație și înapoi, se folosește memorarea în cache a obiectelor, dar se verifică și dacă versiunea obiectului din cache este actualizată.

NOTĂ. La efectuarea acțiunilor standard (deschiderea unui formular, executarea comenzii standard Write etc.) într-un formular cu detaliile principale, conversia se realizează automat.

Să dăm un exemplu despre cum să utilizați transformarea datelor în proprii algoritmi.

&Pe server
Procedură când este creat pe server (Eșec, procesare standard)
ObjectProduct = Products.FindByName("Coffeepot").GetObject(); ValueInFormData(ObjectItem, Object);
Sfârșitul procedurii
&OnClient
Procedura Write()
WriteOnServer();
Sfârșitul procedurii
&Pe server
Procedura WriteOnServer()
ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products"));
ObjectItem.Write();
Sfârșitul procedurii

Obiectul ClientApplicationForm are și metode disponibile pe server:

  • ValueInFormAttributes() - convertește un obiect de tip aplicație într-un atribut de formular dat.
  • PropsFormValue() - convertește atributul de date formular într-un obiect de tip aplicație.

Utilizarea acestor metode este de obicei mai convenabilă, deoarece acestea au, de exemplu, informații despre tipul de atribut al formularului. În plus, metoda Form AttributesValue() stabilește corespondența dintre datele din formular și obiect, care este utilizată la generarea mesajelor.

De asemenea, trebuie să rețineți că atunci când convertiți obiecte de tip Value Table sau Value Tree în date de formular (ambele folosind metoda ValueInFormData() și metoda ValueInFormAttributes()), trebuie luată în considerare următoarea caracteristică: toate coloanele care există în datele trebuie să existe în obiectul care se transformă în forme.

ATENŢIE! Coloanele de atribute care nu sunt asociate cu date nu participă la conversia valorilor între datele formularului și obiectele din baza de informații și invers. Coloanele care nu sunt prezente în datele obiect sunt șterse atunci când sunt convertite în date de formular.

Când un obiect este transferat pentru a forma date de către platformă sau când sunt apelate metode ValueInFormData(), ValueInFormProps(), sunt transferate numai datele obiectului. Starea internă a obiectului nu este transferată datelor din formular. De exemplu, valoarea unei noi referințe care este setată la un obiect folosind metoda SetLinkNew(), se va pierde în procesul de conversie a obiectului în date de formular și înapoi.

Ca prim parametru al metodelor PropsFormValue() Și FormDataValue() pot apărea numai detalii de formular de următoarele tipuri:

  • DataFormStructure,
  • DataFormsCollection,
  • DataFormStructureWithCollection,
  • DataFormTree.

Să dăm un exemplu de utilizare a acestor metode.

&Pe server
Procedura RecalculateOnServer()
// Convertește atributul Object într-un obiect aplicație. Document = Form AttributesValue("Obiect");
// Efectuează recalcularea utilizând metoda definită în modulul document. Document.Recalculate();
// Convertește obiectul aplicației înapoi într-o prop. ValueВFormAttributes(Document, „Obiect”);
Sfârșitul procedurii

Procesarea arată toate detaliile obiectului selectat, vă permite să le editați și, de asemenea, să comparați două obiecte de același tip. Suporta orice configuratie, cele standard sunt instalate automat.

Versiunea curentă: pentru formularele obișnuite 1.09, pentru formularele gestionate 1.12.

Procesare de descărcare (pentru 1C 8.2, 1C 8.3 (formulare obișnuite), fișier epf, 47 KB)

Procesare de descărcare (pentru 1C 8.2, 1C 8.3 (formulare gestionate), fișier epf, 22 KB)

Cea mai recentă versiune pentru 1C 8.1: 1.05

Descărcare procesare (pentru 1C 8.1, fișier epf, 48 KB)

Ce trebuie să faceți dacă procesarea nu se deschide

Procesarea este foarte utilă, de exemplu, în astfel de cazuri:

    trebuie să înțelegeți o bază de date necunoscută

    Versiunea de configurare a fost actualizată și un câmp nou a fost adăugat în document (ascuns, dar formularul nu îl are). În același timp, pentru documentele noi se instalează atunci când sunt create, dar cele vechi sunt uitate în mod natural. Ceea ce pentru utilizator se exprimă în faptul că două documente complet identice dau postări diferite :)

    doar că conținutul câmpului nu se încadrează în spațiul alocat pentru acesta pe formular, ci trebuie vizualizat în întregime (părțile tabelare suferă în special de acest lucru - dezvoltatorilor le place foarte mult să limiteze lățimea coloanelor și, în plus, nu le permiteți să fie schimbate)

    trebuie să accesați informațiile aferente (de exemplu, deschideți declarația vamală specificată în factură), dar au uitat să facă accesibil acest câmp (adică nici butonul cu puncte sau lupă și nici F4) (și se mai întâmplă că în loc de un câmp de introducere fac un câmp de selecție, o inscripție sau un câmp Absent deloc din formular 🙁)

    trebuie să comparați două obiecte de același tip

Caracteristicile distinctive sunt

    capacitatea de a se conecta la configurații standard ca formă tipărită (adică în modul pur utilizator, nu este nevoie de configurator)

    capacitatea de a înregistra un obiect în modul „schimb de date - descărcare” - adică "așa cum este"

Instalare (interfață normală)

Procesarea este deschisă, urmați instrucțiunile de pe ecran. (Adică faceți clic pe butonul „Instalare” din colțul din dreapta sus și confirmați instalarea în fereastra următoare.

Instalare (interfață „gestionată”)

Atenție: Această opțiune de instalare funcționează numai în configurațiile standard 1C.

1. Accesați secțiunea „Administrare” și acolo – „Rapoarte și procesări suplimentare”.

2. Faceți clic pe butonul „Adăugați” și selectați fișierul dannye-objecta-upr.epf

3. În fereastra de setări de procesare, verificați dacă:

    Publicare: Folosit

    Sunt bifate următoarele casete de selectare: utilizați pentru formularul de listă, utilizați obiectele pentru formular

4. Confirmați instalarea făcând clic pe OK

Utilizarea procesării

Dintr-un formular de document, element de director. sau formularul de listă

    Interfață normală - faceți clic pe butonul „Imprimare...”.

    Interfață „Gestionată” - faceți clic pe butonul de umplere

Selectați „Date obiect” în meniu - se va deschide formularul de procesare

Pentru a vizualiza detaliile (de exemplu, documentul conține atributul „Acord”, nu este disponibil pentru modificare. Dar trebuie să deschideți cardul acestui acord).

Cum să obțineți recuzită dintr-o valoare de referință a clientului

În formularul de procesare, faceți clic pe valoarea atributului.

Pentru a modifica detaliile, bifați caseta de lângă valoare. După aceasta, valoarea poate fi schimbată.

Pentru a salva modificările, faceți clic pe butonul pentru opțiunea necesară pentru a salva înregistrarea în modul „schimb de date - descărcare”, înregistrare normală. conducere (doar pentru documente).

Dacă trebuie să notați unele dintre detaliile modificate și să nu notați unele dintre ele, debifați casetele de lângă ceea ce nu ar trebui să notați.

În procesare, există „Date de proprietate” - este la fel ca și cum ați deschide o valoare printr-un link (de exemplu, cardul unei contrapărți) și ați apelat din nou procesarea în ea.

Compararea obiectelor se poate face:

Selectarea a 2 obiecte pentru prelucrare

2. Apelând procesarea de la un obiect, apoi (fără a închide fereastra) de la altul. Va exista o ofertă pentru a face o comparație.

3. (Doar interfață gestionată). Selectați 2 obiecte din listă simultan (pentru a face acest lucru, țineți apăsat butonul Ctrl) și apelați procesarea - obiectele vor fi comparate.

Capturi de ecran (interfață normală)

Capturi de ecran (interfață „gestionată”)

Exemple de utilizare a procesării pentru a analiza situații problematice.

Modificări în versiunea 1.12 (17.10.2017)

  • Pentru versiunea cu formulare gestionate, a fost remediat un bug (atributul din secțiunea tabel nu a fost actualizat dacă obiectul însuși avea un atribut antet cu același nume)

Modificări în versiunea 1.10 (01/06/2017)

  • Pentru opțiunea cu formulare gestionate, lucrul în unele configurații standard (Contabilitate, UNF) a fost remediat.

Modificări în versiunea 1.09 (07/07/2015)

  • A fost adăugată afișarea câmpurilor „Părinte”, „Proprietar”
  • Pentru versiunea de interfață gestionată, este furnizată funcționarea fără ferestre modale.

Modificări în versiunea 1.08 (04/03/2014)

    Pentru versiunea pentru interfața normală, compatibilitatea a fost îmbunătățită atunci când lucrați în configurația „Manufacturing Enterprise Management” (PEM) 1.3.

Modificări în versiunea 1.07 (04/03/2013)

    Există o versiune de procesare pentru formularele „gestionate” (funcția de instalare și actualizare automată este disponibilă numai în versiunea pentru formularele normale)

    Eroare remediată (permisiunile au fost setate în distribuția de procesare)

Modificări în versiunea 1.06 (13.05.2012)

    Afișează câmpul Versiune obiect

    S-a remediat o eroare (permisiunile numai pentru citire nu au putut fi setate în procesare)

Modificări în versiunea 1.05 (05/04/2011)

    S-a remediat o eroare (când lucrați sub 8.2, înregistrarea documentului în modul de postare nu era disponibilă)

Modificări în versiunea 1.04 (13.04.2011)

    S-a remediat o eroare (când lucrați sub 8.2, dublu clic pe mouse nu deschidea detaliile)

    Acum, procesarea poate continua la afișarea detaliilor tipului de referință.

    Adică: să presupunem că ați deschis vizualizarea detaliilor documentului „Vânzări de bunuri și servicii”. Acest document conține atributul „Contraparte” de tip „DirectoryLink.Counterparties”. Făcând clic dreapta pe acest atribut, veți primi un meniu contextual în care există articolele „Date atribute” și „Date atribute într-o fereastră nouă”. Selectând una dintre ele, puteți vizualiza detaliile contrapărții corespunzătoare.

Modificări în versiunea 1.03 (15.10.2010)

    S-a adăugat posibilitatea de a specifica utilizatorii și drepturile lor de acces la procesare.

Modificări în versiunea 1.02 (21.08.2010)

    Sunt acceptate configurații în care directorul de procesare externă se numește „Formulare tipărite suplimentare”.

Modificări în versiunea 1.01 (28.01.2010)

    S-a remediat o eroare care a apărut când Object1 era gol și Object2 era selectat (mulțumită lui rasswet, care a arătat-o);

    Caseta de selectare „detalii” funcționează imediat, nu este nevoie să faceți clic pe „Afișați”;

    Coloana „Tip de valoare” a fost redenumită „Tip de valoare posibil” și arată tipul de valoare definit pentru acest atribut în configurator. Pentru atributele care au un tip compus, pe lângă acesta, este afișat și tipul de valoare a acestui atribut în obiectul vizualizat.

Dacă ați conectat procesarea la configurația dvs., atunci pentru a o actualiza:

descărcați procesarea, deschideți-o ca una externă, vă va spune ce și cum să faceți clic (butonul „Instalare”, selectați „Actualizați procesarea în baza de date”, faceți clic pe butonul „Run”)

Pe vremea clientului gras, apelarea unei proceduri de modul obiect dintr-un modul de formular era simplă. A fost suficient să definiți procedura modulului ca exportabilă și să o apelați în modulul formular.


Vremurile se schimbă, platforma 1C este optimizată și îmbunătățită, clientul gros este uitat, oferiți tuturor un client thin sau web. Dezvoltatorii încep să transfere formularele convenționale în cele gestionate, dar nu totul este atât de simplu, apar unele dificultăți din cauza împărțirii execuției codului de program în două contexte: server și client. Prin urmare, exemplul de cod de mai sus nu va funcționa pe un client subțire.

Noi tipuri de date

De asemenea, datorită formularelor gestionate, au apărut noi tipuri de date. Există o formă:
Ne amintim tipurile de detalii și ne uităm la ce tipuri sunt în depanare pentru aceste detalii:

Noi tipuri de date de formular
Concluzionăm că tipul este folosit pentru a afișa datele obiectului în sine DataFormsStructure, pentru a afișa arborele valorilor - DataShapesTree, pentru partea tabelară - DataFormsCollection etc. Adică în modulul formular pe client lucrăm nu cu obiectul în sine, ci cu reprezentarea lui! Prin urmare, metodele care sunt disponibile, de exemplu, pentru partea tabelară din modulul obiect NU ESTE DISPONIBILîn modulul formular.

Luptă cu noile tipuri

Dezvoltatorii platformei 1C au oferit două funcții:
  1. PropsFormValue- convertește atributul de formular specificat într-un obiect de tip aplicație.
  2. DataFormValue- convertește datele formularului într-un obiect de tip aplicație.
Apelarea acestor funcții este disponibilă numai pe server. Să revenim la sarcina noastră și să scriem codul pentru clientul subțire în modulul formular în eveniment Când CreatedOnServer care va apela o funcție din modulul obiect:
&Pe server


SprObject1 = Form AttributesValue("Obiect");
SprObject1.OutputMessage(Object.Attributes1);




Sfârșitul procedurii

Funcționează atât cu ajutorul unei funcții, cât și cu ajutorul altui O_o. Să scriem codul de conversie DataShapesTreeîntr-un obiect de tip aplicație:
&Pe server
Procedură când este creat pe server (Eșec, Procesare standard)

Arborele valorii1 = Form AttributesValue("Atribut1");
ValueTree2 = FormDataInValue(ThisForm.Attribute1, Type("ValueTree"));

Sfârșitul procedurii

ValueTree1 și ValueTree2 au același tip - ValueTree. Deci care este diferența dintre aceste funcții???

DataFormValue - functie global context. Convertește tipul de obiect suportat de formular în tipul unui obiect de bază de date: DataFormsStructure --> DirectoryObject.Directory1.

PropsFormValue - o funcție de modul de formular, adică apelată pe server în contextul formularului (&OnServer). Dacă încercați să apelați această funcție în afara contextului formularului, platforma va genera o eroare de excepție:
&OnServerWithout Context
Conversie tip procedură()

// Acest cod este incorect, contextul formularului nu este disponibil, va apărea o eroare!
SprObject2 = FormDataValue(Obiect, Tip("DirectoryObject.Directory1"));
SprObject2.OutputMessage(Object.Attributes1);

Sfârșitul procedurii

Asta sunt toate diferențele.

Mai jos sunt enumerate principalele obiecte 1C care sunt utilizate atunci când lucrați cu formulare gestionate. Sunt date scurte exemple de cod care demonstrează utilizarea tradițională a acestor obiecte la scrierea configurațiilor 1C.

Acest formular

Folosit în modulul formular, în proceduri&Pe Client și &Pe Server.

Vă permite să accesați atât elementele formularului, cât și detaliile.

Elementul de formular este accesat printr-un obiect Elemente și aspect astfel:

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

Accesarea atributelor care există pe formular se face astfel:

ThisForm.Advertisement Text="Bună ziua, tovarăși!";

Acces simplificat la elemente de formular și detalii

În principiu, nu trebuie să specificați un cuvânt cheie într-un modul de formular Acest formular . Puteți accesa elementele formularului și detaliile într-un mod simplificat:

// Element de formular

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

// Detalii formular

Advertisement Text="Bună ziua, tovarăși!";

Caracteristici de obținere a detaliilor formularului (important!)

Dacă atributul formular are un tip simplu -Șir, număr, dată ... atunci puteți obține (seta) valoarea atributului pur și simplu după nume:

Text=NumeProdus; // Numele produsului este un atribut de formular

Cu toate acestea, în acest fel, este imposibil să obțineți detalii de tip „complex” -Tabelul Valorilor, Arborele Valorilor . Când încercați să obțineți un atribut cu acest tip după nume, va fi returnat un obiect de tipDataFormsCollection.

Pentru a obține valoarea unui atribut de tip „complex”, trebuie să utilizați funcțiaFormAttributesValue():

CurrentTable=FormAttributesValue ("Obiecte de construcție selectate");

Pentru a seta valoarea unui atribut „complex”, puteți utiliza funcțiaValueInFormAttributes(<Значение>, <ИмяРеквизита>) , ambii parametri sunt necesari.

Funcții FormAttributesValue()Și ValueInFormAttributes()disponibil numai pe server.

Un obiect

Strict vorbind, nu există un astfel de cuvânt cheie în formular. Pur și simplu, atunci când se creează un formular, de exemplu, un formular element, 1C creează automat un atribut pe formular cu numele Un obiect . Prin acest atribut sunt disponibile proprietățile obiectului curent care se editează pe formular.

sau, notație mai completă:

AcestObiect

Conține obiectul în sine. Destinat pentru obținerea unui obiect într-un modul obiect sau într-un modul formular.

Utilizare: Numai citire.

Disponibilitate: Server, client gros, conexiune externă.

Detalii formular

Un set de detalii de formular descrie compoziția datelor care sunt afișate, editate sau stocate în formular. În același timp, detaliile formularului în sine nu oferă posibilitatea de a afișa și edita date. Elementele de formular (vezi secțiunea „Elemente de formular” a acestui capitol) asociate cu detaliile formularului sunt utilizate pentru afișare și editare. Setul de toate detaliile formularului va fi numit date formular.

Important! Trebuie reținut că, spre deosebire de formularele obișnuite, toate datele dintr-o formă gestionată trebuie descrise sub formă de detalii. Nu este permisă utilizarea variabilelor modulului de formular ca surse de date pentru elementele de formular.

Este posibil să se atribuie Detalii de bază ale formularului, adică atribute care vor determina funcționalitatea standard a formularului (extensia formularului). Trebuie amintit că o formă nu poate avea decât un singur atribut principal.

Extensie formular– acestea sunt proprietăți suplimentare, metode și parametri de formă ai obiectului ManagedForm, caracteristice obiectului care este elementul principal al formularului.

În timpul procesului de dezvoltare a formularului, puteți seta în mod explicit capacitatea de a vizualiza și edita detalii specifice formularului, în termeni de roluri, folosind proprietățile Vizualizare și Editare (pentru mai multe detalii, consultați secțiunea „Setări de formular bazate pe roluri” din „Editori” ” capitolul). În plus, disponibilitatea unui anumit atribut în formularul propriu-zis poate fi configurată folosind opțiuni funcționale (mai multe detalii despre opțiunile funcționale pot fi găsite în capitolul „Gestionarea interfeței de configurare”).

Proprietatea atributului formularului Date salvate este un semn că o modificare interactivă a detaliilor va duce la încercarea de a bloca datele formularului pentru editare, precum și la setarea automată a steagului de modificare a formularului.

Tipuri de date disponibile într-o formă gestionată

De asemenea, un formular gestionat diferă de un formular obișnuit prin tipurile de date cu care lucrează. Dacă forma normală funcționează cu majoritatea tipurilor pe care 1C:Enterprise le oferă (inclusiv tipurile DirectoryObject, DocumentObject etc.), atunci în forma gestionată se pot distinge următoarele categorii de tipuri:

  • tipurile care sunt utilizate direct în formular sunt acele tipuri care există pe partea clientului subțire și Web (de exemplu, Number, DirectoryLink.Products, GraphicScheme, TabularDocument);
  • tipuri care vor fi convertite în tipuri speciale de date — tipuri de date de formular gestionate. Astfel de tipuri sunt afișate în lista de detalii de formular între paranteze, de exemplu (DirectoryObject.Products);
  • listă dinamică (pentru mai multe detalii, consultați secțiunea „Lista dinamică” a acestui capitol).

Conversia obiectelor aplicației în date de formular

Unele tipuri de aplicații (cum ar fi DirectoryObject, etc.) nu există pe partea de client subțire și Web (consultați capitolul Conceptul de aplicație gestionată pentru mai multe detalii). Prin urmare, pentru a reprezenta astfel de tipuri de aplicații în formular, platforma a introdus tipuri speciale de date concepute să funcționeze în formulare gestionate. Această caracteristică a unei aplicații gestionate face necesară convertirea obiectelor aplicației în date de formular (și invers).

Sunt utilizate următoarele tipuri de date:

  • Form DataStructure – conține un set de proprietăți de tip arbitrar. Proprietățile pot fi alte structuri, colecții sau structuri cu colecții. Acest tip este reprezentat, de exemplu, sub forma DirectoryObject.
  • O FormDataCollection este o listă de valori tastate, similară cu o matrice. Un element de colecție este accesat prin index sau identificator. Accesul prin ID poate să nu fie disponibil în unele cazuri. Acest lucru se datorează tipului de obiect aplicație care este reprezentat de această colecție. Identificatorul poate fi orice număr întreg. Acest tip este reprezentat, de exemplu, sub forma unei părți tabelare.
  • Formularul DataStructureWithCollection este un obiect care este reprezentat ca o structură și o colecție în același timp. Poate fi tratat ca oricare dintre aceste entități. Acest tip reprezintă, de exemplu, un set de înregistrări într-un formular.
  • Form DataTree – un obiect conceput pentru a stoca date ierarhice.

Un obiect de aplicație este reprezentat fie de unul sau mai multe elemente de date de formular. În general, ierarhia și compoziția datelor din formular depind de complexitatea și interconectarea obiectelor aplicației din formularul gestionat.

De exemplu, un document care conține o parte tabelară va fi reprezentat de un obiect de tip FormDataStructure (documentul în sine), căruia îi este subordonat un obiect de tip FormDataCollection (partea tabelară a documentului).

Important! Când se dezvoltă o configurație, este important să rețineți că obiectele aplicației sunt disponibile numai pe server, în timp ce obiectele de date din formular pot fi utilizate atât pe server, cât și pe client.

Transmiterea datelor între părțile client și server ale unui formular gestionat

De fapt, putem spune că datele formularului sunt o reprezentare unificată a datelor din diverse obiecte de aplicație cu care formularul funcționează uniform și care sunt prezente atât pe server, cât și pe client. Adică, formularul conține o „proiecție” a datelor obiect aplicației sub forma propriilor tipuri de date și efectuează conversie între ele dacă este necesar. Cu toate acestea, dacă dezvoltatorul de configurație implementează propriul algoritm de procesare a datelor, atunci trebuie să efectueze conversia datelor (de la tipuri specializate la tipuri de aplicații și invers) în mod independent.

La editarea detaliilor formularului într-un editor specializat (pentru mai multe detalii, vezi secțiunea „Detalii formular” din capitolul „Editori”), este posibil să se influențeze transferul de date între client și server în timp ce formularul rulează. Coloana editorului de detalii este folosită pentru aceasta. Utilizați întotdeauna. Efectul acestei proprietăți diferă pentru trei tipuri de atribute:

  • Pentru un atribut subordonat unei liste dinamice (coloana listă dinamică):
    • proprietate activată – atributul este întotdeauna citit din baza de date și inclus în datele formularului;
    • proprietatea este dezactivată - atributul este citit din baza de date și inclus în datele formularului numai atunci când există un element de formular vizibil asociat cu atributul sau cu atributul său subordonat.
  • Pentru recuzita subordonată colecției de mișcare:
    • proprietatea este activată – mișcările documentelor sunt citite din baza de date și vor fi prezente în datele din formular;
    • proprietatea este dezactivată - mișcările documentelor nu vor fi citite din baza de date și nu vor fi incluse în datele formularului (dacă nu există niciun element de formular care să facă referire la mișcările documentului).
  • Alte detalii formular:
    • proprietatea este activată – atributul va fi prezent în datele formularului, indiferent dacă există sau nu cel puțin un element de formular care este asociat cu atributul sau cu atributul subordonat acestuia;
    • proprietatea este dezactivată - atributul va fi prezent în datele formularului numai dacă există un element de formular asociat cu atributul sau cu atributul subordonat acestuia. Spre deosebire de atributele listelor dinamice, vizibilitatea elementului asociat cu atributul nu contează aici.

Notă. Trebuie reținut că proprietatea setată pe atributul părinte afectează toate atributele subordonate. De exemplu, dacă proprietatea Utilizare este întotdeauna ștearsă pentru partea tabelară a documentului, atunci sistemul consideră că această proprietate este ștersă și pentru toate detaliile subordonate (în ciuda stării reale a proprietății).

Metode pentru conversia datelor obiect aplicației în date de formular

Pentru a converti obiectele aplicației în date de formular și înapoi, există un set de metode globale:

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

Important! Metodele care funcționează cu obiectele aplicației sunt disponibile numai în procedurile de server. Metoda de copiere a valorilor între datele formularului este disponibilă pe server și pe client, deoarece nu necesită obiecte de aplicație ca parametri.

Când convertiți datele formularului într-un obiect de aplicație, trebuie să luați în considerare compatibilitatea acestora.

  • ValueInFormData() – convertește un obiect de tip aplicație în date de formular;
  • FormDataInValue() – convertește datele formularului într-un obiect de tip aplicație;
  • CopyFormData() – copiază datele formularului care au o structură compatibilă. Returnează True dacă copia a avut succes sau False dacă structura obiectului este incompatibilă.

Notă. La efectuarea acțiunilor standard (deschiderea unui formular, executarea unei comenzi standard Write etc.) a unui formular cu detaliile principale, conversia se realizează automat.

Să dăm un exemplu despre cum să utilizați transformarea datelor în proprii algoritmi.

&OnServerProcedure Când CreateOnServer (Eșec, Procesare standard)

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

Sfârșitul procedurii

&OnClient Procedure Write()

WriteOnServer();

Sfârșitul procedurii

&OnServer Procedura WriteOnServer()

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

Sfârșitul procedurii

Obiectul ManagedForm are și metode disponibile pe server:

  • ValueВFormAttribute() – convertește un obiect de tip aplicație în atributul de formular specificat.
  • FormAttributeVValue() – convertește un atribut de date de formular într-un obiect de tip aplicație.

Utilizarea acestor metode este de obicei mai convenabilă, deoarece acestea au, de exemplu, informații despre tipul de atribut al formularului. În plus, metoda Form AttributesValue() stabilește corespondența dintre datele din formular și obiect, care este utilizată la generarea mesajelor. Puteți citi mai multe despre acest lucru în capitolul „Capacitățile de navigare a serviciului”.

Să dăm un exemplu de utilizare a acestor metode.

&OnServer Procedura RecalculateOnServer()

// Convertește atributul Object într-un obiect aplicație. Document = Form AttributesValue("Obiect"); // Efectuează recalcularea utilizând metoda definită în modulul document. Document.Recalculate(); // Convertește obiectul aplicației înapoi într-o prop. ValueВFormAttributes(Document, „Obiect”);

Sfârșitul procedurii

Interfață software

FormDataTree

  • FindById
  • GetItems

Descriere:

Proiectat pentru a modela un arbore în date de formulare gestionate.

Acest obiect poate fi serializat către/de la XDTO. Tipul XDTO corespunzător unui obiect dat este definit în spațiul de nume. Nume tip XDTO:

GetItems

Sintaxă:

GetItems()

Valoare returnată:

Tip: Form DataCollection of Tree Elements.

Descriere:

Obține o colecție de elemente de arbore de nivel superior.

Disponibilitate: client, server, client subțire, client web.

FindById

Sintaxă:

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

Opțiuni:

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

Tip: Număr. Identificatorul elementului arborelui.

Valoare returnată:

Tip: FormDataTreeElement.

Descriere:

Obține un element de colecție după ID.

Disponibilitate: client, server, client subțire, client web.

FormDataTreeItem

Proprietăți:

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

  • GetId (GetId)
  • GetParent
  • GetItems
  • Proprietate

Descriere:

Element de arbore de date din formular.

FormDataTreeItemCollection

Elemente de colecție: DataFormTreeElement

Pentru un obiect, este posibil să parcurgeți colecția folosind operatorul Pentru fiecare... Din... Buclă. Parcursul selectează elementele colecției. Este posibil să accesați un element de colecție folosind operatorul [...]. Indexul elementului este transmis ca argument.

  • Introduce
  • Adăuga
  • Index (IndexOf)
  • Numara
  • clar
  • obține
  • Mișcare
  • Șterge

Descriere:

Colectie de elemente din lemn.

Disponibilitate: client, server, client subțire, client web.

Vezi si:

  • FormDataTreeElement, metoda GetElements
  • DataFormTree, metoda GetItems

Caracteristicile lucrului cu un arbore de valori

Actualizare arbore

Există o problemă cade platforme la actualizarea arborelui.

Dacă orice nod din arbore a fost extins și a fost selectat un nod subordonat, atunci când actualizați arborele cu funcția ValueInFormData platforma cade.

Soluție: trebuie să ștergeți arborele înainte de a actualiza.

De exemplu:

&Pe server Procedura ClearTree(elements) Pentru fiecare element din elemente Loop ClearTree(element.GetElements()); EndCycle; elemente.Clear(); EndProcedure

&Pe Procedura Server Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts, ConceptTree); EndProcedure

&OnClient Procedura OnDateOnChange(Element) Fill ConceptTree(); EndProcedure

Cele mai bune articole pe această temă