Dodajte detalje u 1s 8.3. Pojedinosti o upravljanom obrascu (1Cv8)

I objekt prijenosa podataka u strukturiranje koda, kontrolirani oblik u okruženju 1C 8.2.

Uvod

Počnimo s kratkim opisom koncepta “upravljanog obrasca” i povezanih koncepata 1C platforme. Poznavatelji platformi mogu preskočiti ovaj odjeljak.

U 2008. godini postala je dostupna nova verzija 1C platforme: Enterprise 8.2 (u daljnjem tekstu Managed Application), koja potpuno mijenja cijeli sloj rada sa sučeljem. To uključuje naredbeno sučelje, obrasce i prozorski sustav. Istodobno, ne samo da se mijenja model razvoja korisničkog sučelja u konfiguraciji, već se predlaže i nova arhitektura za odvajanje funkcionalnosti između klijentske aplikacije i poslužitelja.
Upravljana aplikacija podržava sljedeće vrste klijenata:

  • Debeli klijent (normalni i upravljani način pokretanja)
  • Tanki klijent
  • Web klijent
Upravljana aplikacija koristi obrasce izgrađene na novoj tehnologiji. Zovu se Upravljani obrasci. Kako bi se olakšao prijelaz, podržani su i prethodni obrasci (tzv. Redovni obrasci), ali njihova funkcionalnost nije razvijena i dostupni su samo u načinu pokretanja debelog klijenta.
Glavne razlike između upravljanih obrazaca za programera:
  • Deklarativni, a ne "piksel po piksel" opis strukture. Određeno postavljanje elemenata sustav automatski izvodi kada se obrazac prikaže.
  • Sve funkcionalnosti obrasca opisane su kao pojedinosti I timovi. Detalji su podaci s kojima obrazac radi, a naredbe su radnje koje treba izvesti.
  • Obrazac radi i na poslužitelju i na klijentu.
  • U kontekstu klijenta nedostupni su gotovo svi tipovi aplikacija te je stoga nemoguće mijenjati podatke u infobazi.
  • Za svaku metodu ili varijablu obrasca mora se specificirati direktiva kompilacije, definiranje mjesta izvršenja (klijent ili poslužitelj) i pristup kontekstu forme.
Nabrojimo upute za kompajliranje metoda obrazaca:
  • &NaKlijentu
  • &Na poslužitelju
  • &Na poslužitelju bez konteksta
  • &Na klijentu na poslužitelju bez konteksta
Ilustrirajmo gore navedeno. Snimka zaslona prikazuje primjer upravljanog obrasca i njegovog modula u razvojnom načinu rada. Pronađite deklarativni opis, rekvizite, direktive kompilacije itd.

Sve daljnje rasprave bit će o desnoj strani ilustracije, o tome kako strukturirati kod modula i koja će vam načela omogućiti implementaciju učinkovite interakcije klijent-poslužitelj.

Definirajmo problem

Prošlo je nekoliko godina otkako se nova verzija 1C platforme aktivno koristi i mnoga rješenja (konfiguracije) su izdana od strane 1C i njegovih brojnih partnera.
Tijekom tog vremena, jesu li programeri razvili zajedničko razumijevanje principa interakcije klijent-poslužitelj pri izradi obrazaca i je li se pristup implementaciji softverskih modula promijenio u novim arhitektonskim stvarnostima?

Pogledajmo strukturu koda (modul obrasca) u nekoliko oblika iste standardne konfiguracije i pokušajmo pronaći uzorke.
Pod strukturom mislimo na dijelove koda (najčešće su to blokovi komentara) koje je programer dodijelio grupnim metodama i direktivama kompilacije za te metode.
Primjer 1:
Sekcija rukovatelja događajima Metoda - na klijentu Metoda - na poslužitelju Metoda - na klijentu Sekcija servisnih procedura i funkcija Pomoćne funkcije kontrole ulaza
Primjer 2:
Servisne procedure i funkcije Dokumenti plaćanja Vrijednosti Rukovatelji događajima
Primjer 3:
Servisne procedure na poslužitelju Servisne procedure na klijentu Servisne procedure na poslužitelju bez konteksta Rukovatelji događajima zaglavlja Rukovatelji događajima naredbi
Primjer 4:
Procedure opće namjene Rukovatelji događajima obrasca Procedure podsustava “kontakt informacije”.
U biti nedostaje struktura koda, ili blago rečeno, slična je onoj u Forms 8.1:

  • Neinformativne riječi "Općenito, Služba, Pomoćno".
  • Stidljivi pokušaji razdvajanja metoda klijenta i poslužitelja.
  • Metode su često grupirane prema elementima sučelja “Rad s tabličnim dijelom Proizvodi, Kontakt informacije”.
  • Proizvoljni raspored metoda i skupina kodova. Na primjer, rukovatelji događajima mogu biti na vrhu u jednom obliku, na dnu u drugom, uopće nisu istaknuti u trećem, itd.
  • I ne zaboravimo da je sve to unutar jedne konfiguracije.
  • Da, postoje konfiguracije u kojima su riječi "General, Service, Auxiliary" uvijek na istim mjestima, ali...
Zašto vam je potrebna struktura koda?
  • Pojednostavljenje održavanja.
  • Pojednostavite učenje.
  • Bilježenje općih/važnih/uspješnih načela.
  • ...vaša opcija
Zašto postojeći razvojni standard iz 1C ne pomaže?
Pogledajmo principe objavljene na ITS diskovima iu raznim “Developer's Guides...” koji se preporučuju pri pisanju upravljanog obrasca.
  • Minimizirajte broj poziva poslužitelja.
  • Maksimalno računanje na poslužitelju.
  • Nekontekstualni pozivi poslužitelja brži su od kontekstualnih.
  • Program imajući na umu komunikaciju klijent-poslužitelj.
  • itd.
To su slogani koji su apsolutno istiniti, ali kako ih provesti? Kako minimizirati broj poziva, što znači programirati u klijent-server modu?

Obrasci dizajna ili generacijska mudrost

Interakcija klijent-poslužitelj već se desetljećima koristi u različitim softverskim tehnologijama. Odgovor na pitanja navedena u prethodnom odjeljku odavno je poznat i sažet je u dva osnovna načela.
  • Udaljena fasada(u daljnjem tekstu sučelje za daljinski pristup)
  • Objekt prijenosa podataka(u daljnjem tekstu Objekt prijenosa podataka)
Riječ Martina Fowlera, njegov opis ovih načela:
  • Svaki objekt potencijalno namijenjen udaljenom pristupu mora imati sučelje niske granularnosti, što će minimizirati broj poziva potrebnih za izvođenje određenog zahvata. ... Umjesto da tražite račun i sve njegove stavke zasebno, trebate pročitati i ažurirati sve stavke računa u jednom zahtjevu. Ovo utječe na cjelokupnu strukturu objekta... Upamtite: sučelje za daljinski pristup ne sadrži domensku logiku.
  • ...da sam brižna majka, sigurno bih svom djetetu rekla: “Nikad nemoj pisati objekte za prijenos podataka!” U većini slučajeva objekti za prijenos podataka nisu ništa više od napuhan terenski set... Vrijednost ovog odvratnog čudovišta leži isključivo u mogućnosti prenijeti više informacija preko mreže u jednom pozivu- tehnika koja je od velike važnosti za distribuirane sustave.
Primjeri predložaka u 1C platformi
Sučelje za programiranje aplikacija koje je dostupno razvojnom programeru prilikom razvoja upravljanog obrasca sadrži mnoge primjere ovih načela.
Na primjer, metoda OpenForm(), tipično "grubo" sučelje.
Parametri otvaranja = Nova struktura ("Parametar1, Parametar2, Parametar3", Vrijednost1, Vrijednost2, Vrijednost3); Obrazac = OtvoriObrazac(NazivObrazca, Parametri otvaranja);
Usporedite sa stilom usvojenim u v8.1.
Obrazac = GetForm(FormName); Obrazac.Parametar1 = Vrijednost1; Obrazac.Parametar2 = Vrijednost2; Obrazac.Otvori();

U kontekstu upravljanog obrasca, postoje mnogi "objekti prijenosa podataka". Možete odabrati sistemski I definiran od strane programera.
Sustavne modeliraju aplikacijski objekt na klijentu, u obliku jednog ili više podatkovnih elemenata forme. Nemoguće ih je izraditi izvan veze s detaljima obrasca.

  • DataFormsStructure
  • DataFormsCollection
  • DataFormStructureWithCollection
  • DataShapesTree
Pretvorba objekata prijenosa podataka sustava u vrste aplikacija i obrnuto izvodi se pomoću sljedećih metoda:
  • ValueInFormData()
  • FormDataValue()
  • Kopiraj podatke obrasca()
  • ValueInFormAttributes()
  • FormAttributesValue()
Često se eksplicitna konverzija koristi kada se prilagođava postojeće rješenje. Metode mogu očekivati ​​(koristiti značajke) ulazne parametre, kao što je ValueTable umjesto FormDataCollection, ili je metoda definirana u kontekstu aplikacijskog objekta i postala je nedostupna za izravan poziv iz obrasca.
Primjer 1C v8.1:
// na klijentu u kontekstu forme FillUserCache(DepartmentLink)
Primjer 1C v8.2:
// na poslužitelju u kontekstu forme ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache(DepartmentRef); ValueÂFormAttributes(ProcessingObject, "Object");

Objekti za prijenos podataka, čiju strukturu određuje programer, mali su podskup vrsta dostupnih i na klijentu i na poslužitelju. Najčešće se kao parametri i rezultati metoda "ogrubljenog" sučelja koriste:

  • Primitivni tipovi (niz, broj, booleov)
  • Struktura
  • dopisivanje
  • Niz
  • Veze na objekte aplikacije (jedinstveni identifikator i prikaz teksta)
Primjer: metoda prihvaća popis naloga za promjenu statusa i vraća klijentu opis grešaka.
Funkcija &OnServerWithoutContext ServerChangeOrderStatus(Orders, NewStatus) Errors = New Match(); // [narudžba][opis pogreške] Za svaku narudžbu iz ciklusa narudžbi StartTransaction();

Pokušajte DocOb = Order.GetObject();

…. druge radnje, moguće ne samo s narudžbom... Iznimka CancelTransaction();
  • Errors.Insert(Red, ErrorDescription()); EndAttempt;
  • Jasna identifikacija sučelja za daljinski pristup, koje se metode poslužitelja mogu pozvati s klijenta, a koje ne?
  • Nazivi metoda udaljenog sučelja počinju s prefiksom "Poslužitelj". To vam omogućuje da odmah vidite prijenos kontrole na poslužitelj dok čitate kod i pojednostavljuje korištenje kontekstualne pomoći. Imajte na umu da službena preporuka (ITS) predlaže imenovanje metoda s postfiksima, na primjer, ChangeOrderStatusOnServer(). Međutim, ponavljamo da se sve poslužiteljske metode ne mogu pozvati s klijenta, pa je stoga važnija logička pristupačnost, a ne lokacija kompilacije. Stoga, s prefiksom "Server" označavamo samo metode dostupne klijentu; nazovimo primjer metode ServerChangeOrderStatus().Čitljivost.
  • Stvar ukusa, narudžbu prihvaćamo kada modul započne s procedurama za izradu obrasca na poslužitelju i metodama udaljenog pristupa. Mogućnost održavanja.
Mora postojati jasno mjesto za dodavanje novog koda. Važna točka je da se predlošci metoda koje automatski kreira konfigurator dodaju na kraj modula. Budući da se rukovatelji događajima za elemente forme najčešće kreiraju automatski, odgovarajući blok se nalazi zadnji, kako se ne bi povukao svaki rukovatelj na drugo mjesto u modulu.
  • U nastavku je prikazana osnovna struktura modula koji implementira navedene ciljeve.
  • Grafička opcija – jasno prikazuje glavni tok izvršenja.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор="Opcija teksta primjer je dizajna predloška za brzo umetanje strukture u novi modul obrasca."/> // <Описание> // // "Datum="

/////////////////////////////////////////////// // /////////////////////////// // VARIJABLE MODULA ///////////////// // ///////////////////////////////////////////// //// / /Umetnite sadržaj rukovatelja Kraj procedure //******** SUČELJE ZA UDALJENI PRISTUP ******* //******* POSLOVNA LOGIKA NA POSLUŽITELJU ******* ///////// ///////////////////////////////////////// /////// ///////////////////// // UOBIČAJENE METODE KLIJENTA I POSLUŽITELJA //////////////// /////// /////////////////////////////////////////// ///// //////// // NA KLIJENTU //******** POSLOVNA LOGIKA NA KLIJENTU ******* //******* TIM * ****** //******** DOGAĐAJI KLIJENTA ******* /////////////////////////// ///// ///////////////////////////////////////////// // / / GLAVNI PROGRAMSKI OPERATERI
Povezana pitanja
  • Mogućnosti implementacije sučelja za daljinski pristup. Asinkronija, razina detalja...
  • Predmemoriranje. 1C je donio neuspješnu arhitektonsku odluku, uvodeći predmemoriju samo na razini metoda pozivanja uobičajenih modula i ne pružajući mogućnosti kontrole (vrijeme relevantnosti, resetiranje na zahtjev).
  • Implicitni pozivi poslužitelja. Ne zaboravite na tehnološke značajke; mnoge "bezopasne" operacije na klijentu provociraju platformu da kontaktira poslužitelj.

Detalji obrasca osiguravaju njegovu povezanost s podacima. U ovom slučaju, jedan (i samo jedan) od detalja može se označiti kao glavni; to ne mora nužno biti tip podataka na koji crtamo obrazac. Ali ponašanje obrasca ovisit će o tipu podataka glavnog atributa. Osim promjene ponašanja obrasca, mijenja se i kontekst modula obrasca. Zajedno s metodama i svojstvima forme, u njoj postaju dostupne metode i svojstva objekta, koji je vrijednost glavnog atributa. Važno je da obrasci tipa Free Form nemaju osnovne podatke. U ovom slučaju, ponašanje obrasca određeno je samo korisničkim postavkama. Razmotrimo pitanja o osnovnim detaljima.

Pitanje 10.05 ispita 1C: Platforma Professional. Za što se koristi glavni atribut obrasca?

  1. Definira izvor podataka za obrazac kao cjelinu
  2. Definira standardne mogućnosti platforme za rad s obrascem s podacima tipa navedenog u glavnom atributu
  3. Za pružanje mogućnosti programskog pristupa detaljima objekta iz konteksta lokalnog obrasca
  4. Omogućuje vizualizaciju pojedinosti objekta u dijaloškom okviru obrasca
  5. 2 i 3 su točni
  6. 1 i 2 su točni

Točan odgovor je broj šest, vidi gore.


Pitanje 10.06 ispita 1C: Platforma Professional. Za što su potrebni detalji obrasca?
  1. Za opisivanje sadržaja podataka koji se prikazuju, uređuju ili pohranjuju u obrascu
  2. Za prikaz i uređivanje podataka u obrascu
  3. 1 i 2 su točni

Točan odgovor je treći – oboje.

Pitanje 10.07 ispita 1C: Platforma Professional. Za dodjelu glavnih atributa proizvoljnom kontroliranom obliku...

  1. Morate označiti potvrdni okvir "Osnovni detalji" u svojstvima atributa forme
  2. potrebno je ispuniti svojstvo obrasca “Podaci” odabirom traženog atributa obrasca

Točan odgovor je drugi:

Pitanje 10.08 ispita 1C: Platforma Professional. Za dodjelu glavnih detalja proizvoljnom pravilnom obliku...
  1. obrazac treba učiniti glavnim, glavni detalji se određuju automatski
  2. Morate označiti potvrdni okvir "Osnovni detalji" u svojstvima atributa forme
  3. potrebno je otići u izbornik "Uredi", odabrati "Osnovni detalji" i odabrati željenu vrijednost
  4. potrebno je ispuniti svojstvo obrasca “Podaci” odabirom traženog atributa obrasca

Točan odgovor je četvrti:

Glavni detalji istaknuti su masnim slovima:

Pitanje 10.09 ispita 1C: Platforma Professional. Ako postoji jedan glavni atribut obrasca, je li moguće dodati još jedan glavni atribut?
  1. Ovo je nemoguće
  2. To je moguće dodjeljivanjem odgovarajuće vrijednosti svojstvu atributa forme
  3. Moguće je samo programski, prilikom pristupa objektu "Obrazac".
  4. To je moguće dodavanjem druge vrijednosti odgovarajućem svojstvu obrasca

Točan odgovor je prvi, postoji striktno jedan glavni uvjet, jer veza s objektom mora biti nedvosmislena.

Pitanje 10.113 ispita 1C: Platforma Professional. Koji je od detalja obrasca prikazan na slici glavni?

  1. Popis tečajeva valuta
  2. DirectoryObject
  3. Obrasci imenika nemaju osnovne podatke
  4. Obrasci imenika imaju sve osnovne podatke
Drugi točan odgovor je onaj podebljan.

Dolje su navedeni glavni 1C objekti koji se koriste pri radu s upravljanim obrascima. Dani su kratki primjeri koda koji pokazuju tradicionalnu upotrebu ovih objekata pri pisanju 1C konfiguracija.

Ovaj obrazac

Koristi se u modulu obrasca, u procedurama&Na klijentu i &na poslužitelju.

Omogućuje vam pristup i elementima obrasca i detaljima.

Elementu forme pristupa se preko objekta Elementi i izgleda ovako:

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

Pristup atributima koji postoje na obrascu odvija se ovako:

ThisForm.Advertisement Text="Zdravo, drugovi!";

Pojednostavljeni pristup elementima obrasca i detaljima

U principu, ne morate navesti ključnu riječ u modulu obrasca Ovaj obrazac . Elementima obrasca i detaljima možete pristupiti na pojednostavljen način:

// Element obrasca

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

// Detalji obrasca

Advertisement Text="Zdravo, drugovi!";

Značajke dobivanja detalja obrasca (važno!)

Ako atribut forme ima jednostavan tip - Niz, broj, datum ... tada možete dobiti (postaviti) vrijednost atributa jednostavno po imenu:

Tekst=Naziv proizvoda; // Naziv proizvoda je atribut forme

Međutim, na ovaj način nemoguće je dobiti detalje "složenog" tipa -Tablica vrijednosti, Stablo vrijednosti . Ako pokušate dobiti atribut s ovim tipom po imenu, vratit će se objekt tipaDataFormsCollection.

Da biste dobili vrijednost atributa sa "složenim" tipom, morate koristiti funkcijuFormAttributesValue():

CurrentTable=FormAttributesValue("SelectedConstructionObjects");

Za postavljanje vrijednosti "složenog" atributa, možete koristiti funkcijuValueInFormAttributes(<Значение>, <ИмяРеквизита>) , oba parametra su obavezna.

Funkcije FormAttributesValue() I ValueInFormAttributes()dostupno samo na poslužitelju.

Objekt

Strogo govoreći, u obrascu ne postoji takva ključna riječ. Jednostavno, kada se kreira forma, npr. forma elementa, 1C automatski kreira atribut na formi s nazivom Objekt . Preko ovog atributa dostupna su svojstva trenutnog objekta koji se uređuje na obrascu.

ili, potpuniji zapis:

ThisObject

Sadrži sam objekt. Namijenjen za dobivanje objekta u objektnom modulu ili modulu forme.

Upotreba: samo za čitanje.

Dostupnost: Server, debeli klijent, vanjska veza.

Detalji obrasca

Skup detalja obrasca opisuje sastav podataka koji se prikazuju, uređuju ili pohranjuju u obrascu. Međutim, sami detalji obrasca ne daju mogućnost prikaza i uređivanja podataka. Elementi obrasca (pogledajte odjeljak "Elementi obrasca" u ovom poglavlju) povezani s detaljima obrasca koriste se za prikaz i uređivanje. Skup svih detalja obrasca zvat će se podaci obrasca.

Važno! Treba imati na umu da, za razliku od običnih obrazaca, svi podaci u upravljanom obrascu moraju biti opisani u obliku detalja. Nije dopušteno koristiti varijable modula obrasca kao izvora podataka za elemente obrasca.

Moguće je ustupiti Osnovni detalji obrasca, odnosno atribute koji će odrediti standardnu ​​funkcionalnost obrasca (ekstenzija obrasca). Treba imati na umu da obrazac može imati samo jedan glavni atribut.

Proširenje obrasca– to su dodatna svojstva, metode i parametri forme objekta ManagedForm, karakteristični za objekt koji je glavni element forme.

Tijekom procesa razvoja obrasca, možete eksplicitno postaviti mogućnost pregleda i uređivanja određenih detalja obrasca, u smislu uloga, pomoću svojstava Pregled i uređivanje (za više detalja pogledajte odjeljak "Postavke obrasca temeljene na ulogama" u "Uređivači ” poglavlje). Osim toga, dostupnost pojedinog atributa u samom obrascu može se konfigurirati pomoću funkcionalnih opcija (više detalja o funkcionalnim opcijama možete pronaći u poglavlju “Upravljanje konfiguracijskim sučeljem”).

Svojstvo atributa forme Spremljeni podaci je znak da će interaktivna promjena detalja dovesti do pokušaja blokiranja podataka obrasca za uređivanje, kao i do automatskog postavljanja oznake izmjene obrasca.

Tipovi podataka dostupni u upravljanom obliku

Upravljani obrazac također se razlikuje od običnog obrasca po vrstama podataka s kojima radi. Ako normalni obrazac radi s većinom tipova koje nudi 1C:Enterprise (uključujući one tipa DirectoryObject, DocumentObject itd.), tada se u upravljanom obrascu mogu razlikovati sljedeće kategorije tipova:

  • tipovi koji se izravno koriste u obrascu su oni tipovi koji postoje na strani tankog i web klijenta (na primjer, Number, DirectoryLink.Products, GraphicScheme, TabularDocument);
  • tipovi koji će se pretvoriti u posebne tipove podataka—tipovi podataka upravljanog obrasca. Takvi tipovi prikazani su na popisu detalja obrazaca u zagradama, na primjer (DirectoryObject.Products);
  • dinamički popis (za više detalja pogledajte odjeljak "Dinamički popis" u ovom poglavlju).

Pretvaranje objekata aplikacije u podatke obrasca

Neki tipovi aplikacija (kao što je DirectoryObject, itd.) ne postoje na strani tankog i web klijenta (pogledajte poglavlje Koncept upravljane aplikacije za više detalja). Stoga, za predstavljanje takvih tipova aplikacija u obrascu, platforma je uvela posebne tipove podataka dizajnirane za rad u upravljanim obrascima. Ova značajka upravljane aplikacije čini nužnim pretvoriti objekte aplikacije u podatke obrasca (i obrnuto).

Koriste se sljedeće vrste podataka:

  • Form DataStructure – sadrži skup svojstava proizvoljnog tipa. Svojstva mogu biti druge strukture, zbirke ili strukture s zbirkama. Ovaj tip je predstavljen, na primjer, u obliku DirectoryObject.
  • FormDataCollection je popis unesenih vrijednosti, sličan nizu. Elementu zbirke se pristupa pomoću indeksa ili identifikatora. Pristup putem ID-a možda neće biti dostupan u nekim slučajevima. To je zbog tipa aplikacijskog objekta koji je predstavljen ovom zbirkom. Identifikator može biti bilo koji cijeli broj. Ova vrsta je prikazana, na primjer, u obliku tabličnog dijela.
  • Form DataStructureWithCollection je objekt koji je predstavljen kao struktura i zbirka u isto vrijeme. Može se tretirati kao bilo koji od ovih entiteta. Ovaj tip predstavlja, na primjer, skup zapisa u obrascu.
  • Form DataTree – objekt dizajniran za pohranu hijerarhijskih podataka.

Objekt aplikacije predstavljen je jednim ili više podatkovnih elemenata obrasca. Općenito, hijerarhija i sastav podataka obrazaca ovise o složenosti i međusobnoj povezanosti aplikacijskih objekata upravljanog obrasca.

Na primjer, dokument koji sadrži tabularni dio bit će predstavljen objektom tipa FormDataStructure (samim dokumentom), kojemu je podređen objekt tipa FormDataCollection (tabularni dio dokumenta).

Važno! Kada razvijate konfiguraciju, važno je zapamtiti da su aplikacijski objekti dostupni samo na poslužitelju, dok se podatkovni objekti obrazaca mogu koristiti i na poslužitelju i na klijentu.

Prijenos podataka između klijentskog i poslužiteljskog dijela upravljanog obrasca

Zapravo, možemo reći da su podaci obrasca objedinjeni prikaz podataka iz različitih aplikacijskih objekata s kojima forma jednoobrazno radi i koji su prisutni i na poslužitelju i na klijentu. To jest, obrazac sadrži neku "projekciju" podataka o objektu aplikacije u obliku vlastitih tipova podataka i po potrebi vrši pretvorbu između njih. Međutim, ako programer konfiguracije implementira vlastiti algoritam za obradu podataka, tada mora samostalno izvršiti konverziju podataka (iz specijaliziranih tipova u tipove aplikacija i obrnuto).

Prilikom uređivanja detalja obrasca u specijaliziranom editoru (za više detalja pogledajte odjeljak “Detalji obrasca” u poglavlju “Urednici”), moguće je utjecati na prijenos podataka između klijenta i poslužitelja dok obrazac radi. Za to se koristi stupac uređivača detalja. Uvijek koristiti. Učinak ovog svojstva razlikuje se za tri vrste atributa:

  • Za atribut podređen dinamičkom popisu (stupac dinamičkog popisa):
    • svojstvo omogućeno – atribut se uvijek čita iz baze podataka i uključuje u podatke obrasca;
    • svojstvo je onemogućeno - atribut se čita iz baze podataka i uključuje u podatke obrasca samo kada postoji trenutno vidljiv element obrasca povezan s atributom ili njegovim podređenim atributom.
  • Za rekvizite podređene zbirci pokreta:
    • svojstvo je omogućeno – kretanja dokumenta čitaju se iz baze podataka i bit će prisutna u podacima obrasca;
    • svojstvo je onemogućeno - kretanje dokumenta neće se čitati iz baze podataka i neće biti uključeno u podatke obrasca (ako ne postoji element obrasca koji upućuje na kretanje dokumenta).
  • Ostali detalji obrasca:
    • svojstvo je omogućeno – atribut će biti prisutan u podacima obrasca, bez obzira na to postoji li barem jedan element obrasca koji je pridružen atributu ili njegovom podređenom atributu;
    • svojstvo je onemogućeno - atribut će biti prisutan u podacima obrasca samo ako postoji element obrasca povezan s atributom ili njegovim podređenim atributom. Za razliku od atributa dinamičkog popisa, vidljivost elementa povezanog s atributom ovdje nije važna.

Bilješka. Treba upamtiti da svojstvo postavljeno na nadređenom atributu utječe na sve podređene atribute. Na primjer, ako je svojstvo Upotreba uvijek izbrisano za tablični dio dokumenta, tada sustav smatra da je to svojstvo također izbrisano za sve podređene detalje (unatoč stvarnom stanju svojstva).

Metode za pretvaranje podataka aplikacijskih objekata u podatke obrazaca

Za pretvaranje aplikacijskih objekata u podatke obrazaca i natrag, postoji skup globalnih metoda:

  • ValueInFormData(),
  • FormDataInValue(),
  • Kopiraj podatke obrasca().

Važno! Metode koje rade s objektima aplikacije dostupne su samo u procedurama poslužitelja. Metoda za kopiranje vrijednosti između podataka obrazaca dostupna je na poslužitelju i na klijentu, budući da ne zahtijeva objekte aplikacije kao parametre.

Kada pretvarate podatke obrasca u objekt aplikacije, morate uzeti u obzir njihovu kompatibilnost.

  • ValueInFormData() – pretvara objekt tipa aplikacije u podatke obrasca;
  • FormDataInValue() – pretvara podatke obrasca u objekt tipa aplikacije;
  • CopyFormData() – kopira podatke obrasca koji imaju kompatibilnu strukturu. Vraća True ako je kopiranje uspješno, ili False ako je struktura objekta nekompatibilna.

Bilješka. Prilikom izvođenja standardnih radnji (otvaranje obrasca, izvršavanje standardne naredbe Write, itd.) obrasca s glavnim detaljima, pretvorba se izvodi automatski.

Dajmo primjer kako koristiti transformaciju podataka u vlastitim algoritmima.

&Postupak na poslužitelju prilikom stvaranja na poslužitelju (pogreška, standardna obrada)

ObjectProduct = Directories.Products.FindByName("Coffeepot").GetObject();

ValueInFormData(ObjectItem, Object);

Kraj postupka

&OnClient procedura Write()

ValueInFormData(ObjectItem, Object);

Napiši na poslužitelj();

&OnServer postupak WriteOnServer()

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

ObjectItem.Write();

  • Kraj postupka
  • Objekt ManagedForm također ima metode dostupne na poslužitelju:

Korištenje ovih metoda obično je praktičnije jer imaju, na primjer, informacije o vrsti atributa obrasca. Dodatno, metoda Form AttributesValue() postavlja korespondenciju između podataka obrasca i objekta koji se koristi prilikom generiranja poruka. Više o tome možete pročitati u poglavlju „Mogućnosti navigacije uslugama“.

Navedimo primjer korištenja ovih metoda.

&OnServer postupak RecalculateOnServer()

// Pretvara atribut Object u objekt aplikacije.

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

Dokument = Form AttributesValue("Object");

// Izvodi ponovni izračun pomoću metode definirane u modulu dokumenta.

  • Dokument.Ponovo izračunaj();
  • // Pretvara objekt aplikacije natrag u prop.

ValueÂFormAttributes(Document, “Object”);

Softversko sučelje

FormDataTree

FindById

GetItems

Opis:

Dizajnirano za modeliranje stabla u podacima upravljanog oblika.

Ovaj objekt se može serijalizirati u/iz XDTO. Tip XDTO koji odgovara danom objektu definiran je u prostoru imena. Naziv tipa XDTO:

ValueÂFormAttributes(Document, “Object”);

GetItems

Sintaksa:

GetItems()

GetItems

Povratna vrijednost:<Идентификатор>)

Vrsta: zbirka podataka obrasca elemenata stabla.

<Идентификатор>Dobiva kolekciju elemenata stabla najviše razine.

Dostupnost: klijent, poslužitelj, tanki klijent, web klijent.

Dizajnirano za modeliranje stabla u podacima upravljanog oblika.

FindById

ValueÂFormAttributes(Document, “Object”);

FindById(

Sintaksa:

Parametri:

(potreban)

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

  • Tip: Broj. Identifikator elementa stabla.
  • Upišite: FormDataTreeElement.
  • // Pretvara objekt aplikacije natrag u prop.
  • Dobiva element zbirke prema ID-u.

ValueÂFormAttributes(Document, “Object”);

FormDataTreeItem

Svojstva:

GetId (GetId)

GetParent

  • Vlasništvo
  • Element stabla podataka obrasca.
  • FormDataTreeItemCollection
  • Elementi zbirke: DataFormTreeElement
  • Za objekt je moguće preći zbirku pomoću operatora Za svaki... Od... Petlja. Traversal odabire elemente zbirke. Moguće je pristupiti elementu zbirke koristeći [...] operator. Indeks elementa prosljeđuje se kao argument.
  • Umetnuti
  • Dodati
  • Indeks (IndexOf)

ValueÂFormAttributes(Document, “Object”);

Računati

Sintaksa:

Jasan

  • Dobiti
  • Potez

Izbrisati

Zbirka drvenih elemenata.

Vidi također: FormDataTreeElement, metoda GetElements DataFormTree, metoda GetItems

Značajke rada sa stablom vrijednosti Ažuriranje stabla platforma pada.

Rješenje: morate očistiti stablo prije ažuriranja.

Na primjer:

&Na poslužiteljskoj proceduri ClearTree(elements) Za svaki element iz elemenata Loop ClearTree(element.GetElements());

EndCycle;

elementi.Očisti(); Kraj postupka

&Na poslužiteljskoj proceduri Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems());

ValueInFormData(dConcepts, ConceptTree); Kraj postupka &OnClient Procedure OnDateOnChange(Element) Fill ConceptTree(); Kraj postupka Obrasci

u 1C:Enterprise namijenjeni su za prikaz i uređivanje informacija sadržanih u bazi podataka. Obrasci mogu pripadati određenim konfiguracijskim objektima ili postojati odvojeno od njih te ih koristi cijelo aplikativno rješenje.

Na primjer, imenik

Nomenklatura

može imati nekoliko oblika koji će se koristiti za određene svrhe - uređivanje elementa imenika, prikaz popisa itd.: &OnClient Procedure OnDateOnChange(Element) Fill ConceptTree(); Kraj postupka Uz to mogu postojati opći obrasci koji ne pripadaju određenim konfiguracijskim objektima - opći obrasci.

Osnovni oblici Svaki konfiguracijski objekt može se koristiti za izvođenje nekih standardnih radnji. Na primjer, za bilo koji imenik, možda ćete morati prikazati popis njegovih elemenata, prikazati pojedinačne elemente imenika, prikazati grupu imenika, odabrati elemente i grupe elemenata iz imenika. Za bilo koji dokument, popis takvih radnji bit će mnogo manji: pregled popisa dokumenata, odabir s popisa dokumenata i pregled zasebnog dokumenta. Kako bi se osiguralo da se takve standardne radnje izvode s podacima objekata aplikativnog rješenja, za svaki od njih postoji skup osnovnih obrazaca koji će se koristiti prilikom izvođenja odgovarajućih radnji. Bilo koji od oblika podređenih ovom objektu može se dodijeliti kao glavni. Na primjer, u imeniku

Mogu postojati sljedeći osnovni oblici: &OnClient Procedure OnDateOnChange(Element) Fill ConceptTree(); Kraj postupka I dokument Svaki konfiguracijski objekt može se koristiti za izvođenje nekih standardnih radnji. Na primjer, za bilo koji imenik, možda ćete morati prikazati popis njegovih elemenata, prikazati pojedinačne elemente imenika, prikazati grupu imenika, odabrati elemente i grupe elemenata iz imenika. Za bilo koji dokument, popis takvih radnji bit će mnogo manji: pregled popisa dokumenata, odabir s popisa dokumenata i pregled zasebnog dokumenta. Prijem robe i usluga

sastav glavnih oblika bit će drugačiji:

Važna značajka sustava 1C:Enterprise 8 je mehanizam automatski generiranih obrazaca. Ovaj mehanizam oslobađa programera od potrebe za stvaranjem svih mogućih obrazaca za svaki konfiguracijski objekt. Programer samo treba dodati novi konfiguracijski objekt, a sam sustav će generirati potrebne obrasce u pravim trenucima rada korisnika za prikaz informacija sadržanih u ovom objektu.

Dakle, programer treba kreirati vlastite forme objekata aplikativnog rješenja samo ako moraju imati razlike (drugačiji dizajn ili specifično ponašanje) od formi koje automatski generira sustav.

Povezivanje obrasca s podacima

Pripada li obrazac određenom konfiguracijskom objektu ne određuje sastav podataka koji se prikazuju u obrascu. Činjenica da obrazac pripada, na primjer, imeniku &OnClient Procedure OnDateOnChange(Element) Fill ConceptTree(); Kraj postupka, omogućuje vam da ga dodijelite kao jedan od glavnih obrazaca za ovaj direktorij, ali ni na koji način ne određuje koje će podatke ovaj obrazac prikazati i kakvo će biti njegovo ponašanje.

Kako bi se obrazac povezao s podacima, koriste se detalji obrasca koji označavaju popis podataka koje obrazac prikazuje. Svi obrasci, sami po sebi, imaju isto ponašanje, bez obzira na podatke koje prikazuju. Međutim, jedan od atributa obrasca može biti označen kao glavni atribut za njega (istaknut je podebljanim slovima), u kojem će se slučaju standardno ponašanje obrasca i njegovih svojstava nadopuniti ovisno o vrsti glavnog atributa obrasca:

Na primjer, ako je dokument dodijeljen kao atribut glavnog obrasca Svaki konfiguracijski objekt može se koristiti za izvođenje nekih standardnih radnji. Na primjer, za bilo koji imenik, možda ćete morati prikazati popis njegovih elemenata, prikazati pojedinačne elemente imenika, prikazati grupu imenika, odabrati elemente i grupe elemenata iz imenika. Za bilo koji dokument, popis takvih radnji bit će mnogo manji: pregled popisa dokumenata, odabir s popisa dokumenata i pregled zasebnog dokumenta., tada će prilikom zatvaranja obrasca sustav tražiti potvrdu evidentiranja i knjiženja ovog dokumenta. Ako dodijelite, recimo, imenik kao glavni atribut obrasca &OnClient Procedure OnDateOnChange(Element) Fill ConceptTree(); Kraj postupka, tada se takav zahtjev za potvrdu neće pojaviti prilikom zatvaranja obrasca.

Struktura forme

Glavna značajka obrazaca je da ih programer ne iscrtava detaljno, "piksel po piksel". Forma u konfiguraciji je logičan opis sastava forme. A specifično postavljanje elemenata sustav izvodi automatski kada se obrazac prikaže.

Prikazani dio obrasca (vidljiv korisniku) opisan je kao stablo koje sadrži elemente obrasca.

Elementi mogu biti polja za unos, potvrdni okviri, radio gumbi, gumbi itd. Dodatno, element može biti grupa koja uključuje druge elemente. Grupa može biti predstavljena kao ploča s okvirom, ploča sa stranicama (bookmarks), sama stranica ili naredbena ploča. Osim toga, element može biti tablica, koja također uključuje elemente (stupce). Struktura elementa opisuje kako će obrazac izgledati.

Sve funkcionalnosti obrasca opisane su u obliku detalja i naredbi. Detalji su podaci s kojima obrazac radi, a naredbe su radnje koje treba izvesti. Dakle, programer u uređivaču obrazaca mora uključiti potrebne detalje i naredbe u obrazac, kreirati elemente obrasca koji ih prikazuju i, ako je potrebno, rasporediti elemente u grupe.

Na temelju ovog logičkog opisa sustav automatski generira izgled obrasca za prikaz korisniku. U ovom slučaju, sustav uzima u obzir različita svojstva prikazanih podataka (na primjer, vrstu) kako bi rasporedio elemente obrasca što je moguće prikladnije za korisnika.

Programer može raznim postavkama utjecati na raspored elemenata. Može odrediti redoslijed elemenata, odrediti željenu širinu i visinu. Međutim, ovo su samo neke dodatne informacije koje će pomoći sustavu da prikaže obrazac.

U obrascima, programer može koristiti ne samo naredbe samog obrasca, već i globalne naredbe koje se koriste u naredbenom sučelju cijele konfiguracije. Osim toga, moguće je kreirati parametrizirajuće naredbe koje će otvoriti druge obrasce uzimajući u obzir specifične podatke trenutnog obrasca. Na primjer, to može biti pozivanje izvješća o stanju na skladištu koje je trenutno odabrano u obrascu fakture.



Povezane publikacije