Obțineți valoarea atributului 1s 8.3. Detalii formulare gestionate (1Cv8). Modele de design sau înțelepciune generațională

Detalii formular

Un set de detalii de formular descrie compoziția datelor care sunt afișate, editate sau stocate în formular. Cu toate acestea, 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 amintit că, spre deosebire de formele convenționale, toate datele formă controlată 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 în sine 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 o indicație că modificarea interactivă a detaliilor va duce la încercarea de a bloca datele din formular pentru editare, precum și instalare automată semn de formă modificată.

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 cele de tip 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);
  • lista 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 clienților subțiri și Web (pentru mai multe detalii, consultați capitolul „Concept aplicație gestionată"). 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 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 formă secțiune tabelară.
  • 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 atributele subordonate unei liste dinamice (coloana lista dinamica):
    • proprietatea este 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 este vizibil în în acest moment un element de formular asociat cu un atribut 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.

Nota. 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 obiecte de aplicație sunt disponibile numai în proceduri 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 tip de aplicațieîn forma datelor;
  • 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ă.

Nota. 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()

ValueInFormData(ObjectItem, Object);

WriteOnServer();

&OnServer Procedura WriteOnServer()

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

ObjectItem.Write();

  • Sfârșitul procedurii
  • Obiectul ManagedForm are și metode disponibile pe server:

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.

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

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”);

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

acest obiect

este definit în spațiul de nume. Nume tip XDTO:

ValueВFormAttributes(Document, „Obiect”);

GetItems

Sintaxă: GetItems() Valoarea returnată:

Tip: Form DataCollection of Tree Elements.

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

Obține o colecție de elemente de arbore de nivel superior.<Идентификатор>)

Disponibilitate: client, server,

<Идентификатор>client subțire

, client web.

acest obiect

FindById

ValueВFormAttributes(Document, „Obiect”);

FindById(

Parametri:

(necesar)

Tip: Număr. Identificatorul elementului arborelui.

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

  • Tip: FormDataTreeElement.
  • Obține un element de colecție după ID.
  • // Convertește obiectul aplicației înapoi într-o prop.
  • Disponibilitate: client, server, client subțire, client web.

ValueВFormAttributes(Document, „Obiect”);

FormDataTreeItem

Proprietăți:

GetId (GetId)

GetParent

  • Proprietate
  • 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)

ValueВFormAttributes(Document, „Obiect”);

Conta

Parametri:

Clar

  • Obţine
  • Mişcare

Şterge

Colectie de elemente din lemn.

Vezi și: FormDataTreeElement, metoda GetElements DataFormTree, metoda GetItems

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(); Sfârșitul procedurii

&Pe Procedura Server Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB());

ClearTree(ConceptTree.GetItems());

ValueInFormData(dConcepts, ConceptTree); Sfârșitul procedurii

&OnClient Procedura OnDateOnChange(Element) Fill ConceptTree(); Sfârșitul procedurii

Munca utilizatorului cu cărți de referință și documente în 1C constă în completarea câmpurilor din formular.

Detaliile 1C sunt câmpuri de director și document care sunt afișate în formular pe care utilizatorul le poate completa.

Să aruncăm o privire mai atentă asupra subiectului detaliilor din 1C.

Care sunt detaliile 1C

Fiecare director și document 1C constă dintr-un set de câmpuri. Astfel de câmpuri sunt numite detalii 1C (pentru un programator 1C). În configurator, în arborele de configurare 1C, deschideți orice director sau document și veți vedea ramura Detalii. Aceasta este o listă cu detaliile directorului (câmpuri). Uitați-vă cum arată aceleași detalii 1C pe formularul directorului 1C.

Fiecare atribut 1C are proprietăți care indică ce tip de valoare este stocată în atribut (șir, număr etc.) și cum va lucra utilizatorul cu el.

Clic

clic dreapta

la orice atribut 1C și faceți clic pe Proprietăți. O listă de proprietăți ale atributului selectat se va deschide în fereastra din dreapta.

Principalele proprietăți ale detaliilor 1C:

Detalii standard 1C

  • După cum ați observat, pe formularul de director există detalii 1C care nu sunt listate în configurator: grup, nume, BIC.
  • Formularul de listă director conține și detalii 1C care nu sunt în listă: marca de ștergere.
  • Acestea sunt detalii standard 1C. Ce este? Toată lumea are un set implicit de detalii 1C. Pentru directoare, acesta este, de exemplu, codul și numele. Pentru documente, aceasta este data și numărul.
  • Detaliile standard 1C pot fi vizualizate după cum urmează:

Accesați editorul obiectului 1C (director sau document) făcând dublu clic pe acesta cu mouse-ul

Începând cu versiunea 1C 8.2.14, un nou obiect 1C a apărut în 1C - Detalii generale 1C. Folosind-o, puteți adăuga o proprietate (câmp) care va fi prezentă în mai multe directoare și documente simultan.

Proprietăți ale atributelor generale 1C:

  • Utilizare automată – adaugă recuzită generală 1C la toate directoarele și documentele simultan
  • Compoziție - vă permite să adăugați detalii generale 1C numai în directoarele și documentele necesare (utilizarea automată este apoi setată la Nu utilizați).

Cum să adăugați detalii 1C

Faceți clic dreapta pe ramura 1C Details a directorului dorit și selectați Adăugare.

Trebuie să introducem numele atributului 1C, de exemplu „Adresa biroului” și sinonimul „Adresa biroului”. Lăsați tipul implicit ca șir, dar bifați caseta de selectare Lungime nelimitată.

Să adăugăm un alt atribut 1C în același mod, doar că vom selecta tipul boolean și îl vom numi „Funcționează în weekend”.

Cum să afișați detaliile pe formularul 1C ( client gras 1C)

Să extindem ramura Forms din același director. Pentru a deschide formularul, selectați formularul elementului și faceți dublu clic pe el cu mouse-ul.

Trageți marginea formei cu mouse-ul și întindeți-o (opțional).

În panoul de configurare, faceți clic pe butonul „Plasarea datelor”. De asemenea, puteți utiliza meniul Formular / Plasare date.

Vedeți că detaliile noastre nu sunt afișate pe formular. Verifică-le. Și, de asemenea, casetele de selectare Inserează etichete și Plasează automat.

Cum să afișați detalii în formularul 1C (client subțire 1C)

Să extindem ramura Forms din același director. Selectați forma elementului și faceți dublu clic pe el cu mouse-ul.

În fila Detalii, extindeți linia Obiect. Veți vedea o listă de detalii care au fost adăugate anterior în director.

Acum doar trageți atributul necesar din fereastra din dreapta în cea din stânga și va apărea pe formular.

Detalii formularul 1C

În clientul gros, formularul are propriile detalii. Acestea se află în fila Detalii.

Aceste detalii nu sunt salvate în baza de date, dar pot fi folosite în formular pentru câmpurile care sunt necesare pentru a lucra cu formularul.

De exemplu, ați adăugat o bifă la formular. Când faceți clic pe el, se întâmplă ceva în formular. Semnificația casetei de selectare nu contează pentru dvs. (nu trebuie să o notați) - este folosită numai pentru a schimba formularul atunci când lucrați cu acesta. În acest caz, nu utilizați atributul director ca date, ci atributul formular.

Detalii periodice 1C

În versiunea 1C 7.7 au existat detalii periodice. Sensul lor este acesta: sensul recuzitei este diferit în date diferite. De exemplu, valoarea pe 1 septembrie este una, iar pe 1 octombrie, alta. Aceeași recuzită.

În 1C 8 nu există detalii periodice. Aceasta este implementată după cum urmează:

Detaliile formularului asigură legătura acestuia cu datele. În acest caz, unul (și doar unul) dintre detalii poate fi desemnat ca principal; poate să nu fie neapărat tipul de date la care desenăm formularul. Dar comportamentul formularului va depinde de tipul de date al atributului principal. Pe lângă schimbarea comportamentului formularului, contextul modulului formular se modifică. Împreună cu metodele și proprietățile formei, metodele și proprietățile obiectului, care este valoarea atributului principal, devin disponibile în acesta. Este important ca formularele de tip Free Form să nu aibă detalii de bază. În acest caz, comportamentul formularului este determinat doar de setările utilizatorului. Să luăm în considerare întrebările despre detaliile de bază.

Întrebarea 10.05 a examenului 1C: Platform Professional. Pentru ce este folosit principalul atribut al formularului?

  1. Definește sursa de date pentru formular în ansamblu
  2. Definește caracteristici standard platformă pentru lucrul formularului cu date de tipul specificat în atributul principal
  3. Pentru a oferi posibilitatea de a accesa programatic detaliile obiectului din contextul formularului local
  4. Oferă vizualizarea detaliilor obiectului în dialogul formular
  5. 2 și 3 sunt corecte
  6. 1 și 2 sunt corecte

Răspunsul corect este numărul șase, vezi mai sus.


Întrebarea 10.06 a examenului 1C: Platform Professional. Pentru ce sunt necesare detaliile formularului?
  1. Pentru a descrie conținutul datelor care sunt afișate, editate sau stocate într-un formular
  2. Pentru a afișa și edita date într-un formular
  3. 1 și 2 sunt corecte

Răspunsul corect este al treilea - ambele.

Întrebarea 10.07 a examenului 1C: Platform Professional. Pentru a atribui atributele principale unei forme controlate arbitrare...

  1. Trebuie să bifați caseta de selectare „Detalii de bază” din proprietățile atributelor formularului
  2. trebuie să completați proprietatea „Date” a formularului selectând atributul necesar al formularului

Răspunsul corect este al doilea:

Întrebarea 10.08 a examenului 1C: Platform Professional. Pentru a atribui detaliile principale unei forme regulate arbitrare...
  1. formularul trebuie să fie cel principal, detaliile principale sunt determinate automat
  2. Trebuie să bifați caseta de selectare „Detalii de bază” din proprietățile atributelor formularului
  3. trebuie să accesați meniul „Editare”, selectați „Detalii de bază” și selectați valoarea dorită
  4. trebuie să completați proprietatea „Date” a formularului selectând atributul necesar al formularului

Răspunsul corect este al patrulea:

Detaliile principale sunt evidențiate cu caractere aldine:

Întrebarea 10.09 a examenului 1C: Platform Professional. Dacă există un atribut principal al formularului, este posibil să adăugați un alt atribut principal?
  1. Acest lucru este imposibil
  2. Este posibil prin atribuirea valorii adecvate proprietății atributului formular
  3. Este posibil doar programatic, la accesarea obiectului „Form”.
  4. Acest lucru este posibil prin adăugarea unei alte valori proprietății formularului corespunzătoare

Răspunsul corect este primul, există strict o cerință principală, pentru că... legătura cu obiectul trebuie să fie lipsită de ambiguitate.

Întrebarea 10.113 a examenului 1C: Platform Professional. Care dintre detaliile formularului prezentat în figură este principala?

  1. Lista cursurilor valutare
  2. DirectoryObject
  3. Formularele de director nu au detalii de bază
  4. Formularele de director au toate detaliile de bază
Al doilea răspuns corect este cel îngroșat.

Detalii generale în 1C 8.3 este un obiect de metadate de platformă care vă permite să utilizați un singur atribut pentru mai multe obiecte de configurare (directoare, documente, planuri de conturi etc.). Obiectul a fost creat în principal pentru a ușura munca dezvoltatorului și pentru a separa datele.

Detaliile generale au fost implementate inițial în versiunea 1C 7.7, dar dezvoltatorii nu l-au inclus imediat în versiunea 8 a platformei. Mecanismul detaliilor generale a fost introdus de dezvoltatorii 1C numai în versiunea 8.2.14.

Este foarte convenabil să adaugi detalii generale pentru a nu schimba obiectele standard în configurație le folosesc adesea împreună cu .

După adăugarea unui atribut general, acesta poate fi utilizat în interogări și afișat pe formularul obiectului - În exterior, nu este diferit de recuzita obișnuită.

Singura limitare a detaliilor generale este incapacitatea de a le folosi în .

Să ne uităm la setările de bază și proprietățile detaliilor generale care diferă de alte obiecte de configurare:

Compus— o listă de obiecte la care se vor folosi detaliile generale, amintește de stabilirea unui plan de schimb;

Obțineți 267 de lecții video pe 1C gratuit:

Utilizare automată— setarea determină dacă elementele de recuzită generale vor fi utilizate pentru acele obiecte care au modul de utilizare „Automat” specificat.

Separarea datelor— vom lua în considerare această setare separat.

Separarea datelor în 1C folosind detalii comune

Separarea datelor- un mecanism similar cu mecanismul. Cu toate acestea, performanța acestui mecanism este mai eficientă și este mai ușor de configurat.

Mecanismul vă permite să configurați afișarea numai a elementelor pe care utilizatorul le poate vedea. De exemplu, puteți distinge între toate obiectele (documente, directoare etc.) în care este instalată o anumită organizație.

Configurarea separării datelor folosind detalii generale 1C

Pentru a configura detaliile generale, trebuie să specificați separarea datelor - Împărțiți. Imediat după ce faceți clic, sistemul vă va oferi să creeze parametri contabili impliciti:

În acest caz, va fi necesar să specificați parametrii de sesiune la pornirea sistemului, cum a fost descris cu un exemplu în articol.

Aceasta completează configurarea - utilizatorul va avea acces doar la informațiile specificate în parametrii de sesiune selectați.

Exemplu de utilizare a recuzitei obișnuite

Să ne uităm la configurarea elementelor de recuzită generale în 1C 8.3 folosind exemplul unei configurații de cadru și elemente de recuzită Organizare:

Sistemul are 3 documente în care este necesar să se indice detaliile Organizației: acestea sunt Factura de Chitanță, Factura de Cheltuieli și Statul de Salarizare.

Configurarea este simplă:

  1. Creăm un nou atribut General, specificăm tipul - DirectoryLink.Organization.
  2. În compoziție aranjam documentele noastre - Utilizare.

Gata, configurarea este completă!

Sa vedem rezultatul:

Sistemul afișează detalii generale „ca și cum ar fi ale tale”: în cereri, în detalii de formular și în alte locuri. Asta este o magie! 🙂

Cerințele generale 1C 8.3 nu sunt adăugate