Funkcionalne mogućnosti. Princip rada i primjer korištenja. Funkcionalne opcije i parametri funkcionalnih opcija Funkcionalne opcije 1s 8.3

Izlaskom platforme 1C:Enterprise 8.2 pojavio se novi objekt u konfiguracijskom stablu - "Funkcionalne mogućnosti". Aktivno se koristi u svim standardnim konfiguracijama temeljenim na upravljanim obrascima, a služi za pojednostavljenje procesa prikaza pojedinačnih detalja i objekata u sučelju. Na primjer, u vašoj konfiguraciji postoji modul za razmjenu s vanjskim web servisima. Ovaj modul koristi niz detalja u dokumentima, registrima i pojedinim komponentama u podsustavima. Modul je neobavezan i nije potreban svakoj tvrtki. Logično je da, budući da ne treba svatko modul, također nije uvijek potrebno prikazati sve elemente/polja povezana s njim.

U starijim verzijama platforme, rješavanje takvih problema zahtijevalo je pisanje dodatnog koda, koji se morao pozivati ​​u svim ovisnim odjeljcima. Na primjer, ako smo trebali sakriti određene detalje obrasca (ovisno o vrijednosti postavke), tada smo morali pozvati odgovarajući kod prilikom otvaranja obrasca. To nije bilo baš zgodno i u većini slučajeva programeri su odustali od takvih stvari.

Dobro je ako samo trebate sakriti polja u obliku dokumenata, ali možemo imati i registracijske obrasce s kojima je također moguća interakcija korisnika. Pisanje univerzalne funkcije upravljanja zaslonom prilično je teško i zahtijevat će dodatno vrijeme, kojeg nikad nije dovoljno.

Funkcionalne opcije dizajnirane su za rješavanje ovog i mnogih drugih poteškoća povezanih s prikazom elemenata sučelja/sastavom dostupnih objekata u korisničkom sučelju. U ovoj bilješci neću razmatrati primjere korištenja glavne namjene funkcionalnih opcija, već ću skrenuti pozornost na njihovu upotrebu na nestandardan način. Možda je to poznato mnogim naprednim programerima, ali ja sam do ove metode došao sasvim slučajno. Točnije, inspiriran je praksom programiranja u JavaScriptu.

Slučaj br. 1: funkcionalna opcija kao omot preko drugih objekata

Prva nestandardna značajka funkcionalnih opcija je mogućnost stvaranja omotača. Pogledajmo najjednostavniji primjer – konstante. Na primjer, dodate novu konstantu u konfiguraciju s velikim brojem korisničkih uloga. Kako bi korisnici mogli pristupiti vrijednosti konstante, morate postaviti prava čitanja na odgovarajuće uloge. Ako prava nisu postavljena, tada korisnici neće moći dobiti njegovu vrijednost. Ako postoji mnogo uloga i one nisu naslijeđene od osnovne uloge, tada ćete morati potrošiti vrijeme na označavanje odgovarajućih okvira.

Funkcijska opcija može riješiti ovaj problem na elegantniji način. Ideja je sljedeća: stvorite konstantu (na primjer, ). Ne dodjeljujemo prava na njega. Napravite istoimenu funkcionalnu opciju i označite je u svojstvu "Skladištenje" označavaju konstantu "Mogućnost uštede podataka". Postavili smo i zastavu "Povlašten tretman po primitku".

To je to, sada bilo gdje u kodu gdje se trebate pozvati na konstantu pišemo ovako:

Budući da smo opciju postavili na privilegirani način rada, ne moramo specificirati nikakva dodatna prava za konstantu. Naravno, nema potrebe primjenjivati ​​ovu tehniku ​​u svim zamislivim i nezamislivim situacijama. Upamtite, pravilna dodjela prava je ključ za duševni mir. Koristite trik samo u stvarno nužnim slučajevima.

Slučaj br. 2. Dodatna razina apstrakcije

Ne znam kako bih ispravnije nazvala ovu metodu, ali u mojim mislima zvuči upravo tako. Pogledajmo prethodni primjer. Još uvijek imamo istu stalnu “Mogućnost spremanja podataka”. S njim radimo koristeći funkcionalnu opciju istog imena kao omot.

Sada zamislite da se želimo riješiti konstante i prebaciti na korištenje imenika. Tipičan scenarij za rješavanje takvog problema (ako koristimo samo konstantu) bio bi pokretanje globalnog alata za pretraživanje kako bi se otkrio pristup konstanti. Dopustite mi da vas podsjetim da ako ne koristimo funkcionalnu opciju kao omot, onda bismo trebali tretirati konstantu ovako:

Constants.Ability toSaveData.Get();

Pronalazimo sve pozive i zamjenjujemo ih putem do novog objekta za pohranu. Slažem se, ovo je prilično nezgodno. Ako smo upotrijebili prethodni slučaj (upotrebom funkcionalne opcije kao omotača), tada da bismo se "pomaknuli", samo trebamo otići do svojstava funkcionalne opcije i promijeniti svojstvo "Skladištenje". Na primjer, navedite tamo "Imenik" ili "Registar informacija". Nisu potrebne igre s globalnim pretraživanjem. Kod za pristup vrijednosti konstante kroz funkcionalnu opciju ostat će isti:

GetFunctionalOption("DataSavingAbility");

Gotovo sva standardna rješenja na platformi 1C:Enterprise 8.x koriste mehanizam funkcionalnih opcija. Omogućuje vam upravljanje funkcionalnostima konfiguracije na način blok po blok.

Na primjer, opcija "Koristi interne naloge" (pogledajte snimak zaslona desno) omogućuje vam da ovaj dokument učinite dostupnim za korištenje u 1C:Enterprise modu korisniku, a također uključuje zasebne grane algoritama povezanih s ovom funkcionalnošću.

Danas ćemo u članku pogledati rad funkcionalnih opcija, njihovu konfiguraciju i mali primjer njihove uporabe na testnoj konfiguraciji. Za početak pogledajmo kako rade.

Princip rada

Kao što je gore spomenuto, funkcionalna opcija omogućuje vam da omogućite/onemogućite konfiguracijsku funkcionalnost povezanu s njom. Razmotrimo slijed radnji za stvaranje i konfiguriranje ovog konfiguracijskog objekta.

U konfiguracijskoj grani "Općenito->Funkcionalne opcije" možemo kreirati novi objekt ili pogledati svojstva već kreiranih opcija. U testnoj konfiguraciji izradit ćemo funkcionalnu opciju "EnableImportance". Na samom početku, kada objekt još nije konfiguriran, prozor s popisom njegovih svojstava izgledat će ovako:

Svojstva "Ime" i "Sinonim" imaju standardnu ​​svrhu. Posebno su zanimljive postavke "Pohrana" i "Sastav".

U polju "Skladištenje" odaberite objekt u konfiguraciji iz kojeg će funkcionalna opcija dobiti vrijednost. Obično se u ove svrhe koriste Booleove konstante. Na temelju vrijednosti konstante, platforma će odrediti hoće li omogućiti povezanu funkcionalnost ili ne.

Opcije konfiguracije povezane s funkcionalnom opcijom konfiguriraju se na kartici Sadržaj. Gornji snimak zaslona prikazuje popis objekata koji će biti uključeni u njegov sastav.

Ako je jedan konfiguracijski objekt uključen u više funkcionalnih opcija, tada će se koristiti u aplikativnom rješenju ako je barem jedna od njih omogućena.

Opcija "Privilegirani način rada pri primanju" omogućuje vam da onemogućite provjeru prava pristupa prilikom primanja vrijednosti funkcionalne opcije, što će imati pozitivan učinak na performanse (eliminirati će se nepotrebne operacije provjere prava pristupa) i smanjiti složenost daljnjeg razvoj (nema potrebe za konfiguriranjem prava za objekt koji pohranjuje vrijednost funkcionalne opcije).

Primjer upotrebe

U našoj testnoj konfiguraciji stvorit ćemo enumeraciju "Važnost", kao i konstantu

"Omogući važnost". Stvoreni objekti prikazani su na sljedećoj snimci zaslona.

Konstanta je namijenjena za pohranjivanje vrijednosti funkcionalne opcije. Nabrajanje će djelovati kao vrijednost referentnog atributa u testnom dokumentu, čija će dostupnost biti određena funkcionalnom opcijom.


Ispitni dokument sadržavat će dvije pojedinosti:
  • "Komentar" s tipom "Niz".
  • "Važnost" s tipom "EnumerationRef.Importance".

Dodajmo atribut dokumenta "Važnost" funkcionalnoj opciji, a zatim razmotrimo ponašanje platforme u korisničkom načinu rada.

Pokretanjem programa u načinu rada 1C:Enterprise otvorite testni dokument. Na obrascu nećemo vidjeti atribut “Važnost” jer još nismo omogućili funkcionalnu opciju.

Da biste omogućili korištenje atributa "Importance", morate postaviti vrijednost konstante "EnableImportance" na TRUE. Tada će se obrazac promijeniti na sljedeći način:

Funkcionalnost funkcionalnih opcija odnosi se na gotovo sve konfiguracijske objekte, s izuzetkom nekih iz grane “Općenito”, koji uglavnom obavljaju servisne funkcije. Na primjer, ne možete uključiti druge funkcionalne opcije unutar funkcionalne opcije (a to nema puno smisla).

Pogledajmo nekoliko zanimljivih aspekata rada ovog konfiguracijskog objekta:

1. Postavljanje funkcionalnih opcija nema gotovo nikakav učinak na SQL upite koje generira platforma.

Na primjer, prilikom otvaranja dokumenta s onemogućenom funkcionalnom opcijom, platforma u svakom slučaju prima vrijednost ovog atributa u zahtjevu. Sljedeća snimka zaslona prikazuje SQL upite generirane s omogućenom i onemogućenom opcijom.

2. Element obrasca "Važnost" na obrascu, bez obzira na vrijednost funkcionalne opcije, uvijek ima vrijednosti za svojstva "Vidljivost" i "Pristupačnost" jednake TRUE.

Doista, kako prilikom kreiranja obrasca na poslužitelju, tako i prilikom otvaranja obrasca, kao i tijekom daljnjeg rada s njim, svojstva “Vidljivost” i “Pristupačnost” platforma ne postavlja automatski na FALSE. Vjerojatno 1C:Enterprise 8.x to radi iza kulisa.

3. Za dobivanje vrijednosti funkcionalne opcije, platforma generira SQL upit za DBMS u skladu s objektom za pohranu, tj. na konstantu. U jednom od prethodnih članaka već smo govorili o konstruiranju SQL upita prema konstantama i načinu njihovog pohranjivanja u bazu podataka.


U našem primjeru, platforma generira sljedeći SQL upit:

Što se tiče trenutka dobivanja vrijednosti funkcionalne opcije, platforma se vodi sljedećim principom : Prvo stjecanje vrijednosti funkcionalne opcije događa se prilikom pristupa objektu/atributu koji je uključen u njen sastav. Platforma zatim koristi predmemoriranu vrijednost sve dok se vrijednost objekta koji pohranjuje ovu vrijednost ne promijeni (u našem primjeru, konstante "EnableImportance") ili se korisnička sesija ponovno ne pokrene. Vrijednost funkcionalne opcije pohranjuje se u predmemoriju unutar zasebne sesije.


Sve navedeno je eksperimentalno provjereno. Sve što sam koristio za eksperimente nalazi se u testnoj konfiguraciji (link na kraju članka), osim .

Zaključak

Funkcionalne opcije sastavni su dio gotovo svakog rješenja za cirkulaciju na platformi 1C:Enterprise 8.x. Zahvaljujući ovom mehanizmu možete kreirati konfiguracije s funkcijom temeljenom na blokovima koje je moguće jednostavno uključiti/isključiti prilikom postavljanja programa. U ovom slučaju, mogućnosti mehanizma mogu se proširiti korištenjem parametara funkcionalnih opcija, ali to je tema za drugi članak.

Za iskustvo s platformom vrlo je rijetko koristiti funkcionalne opcije, jer kupac točno zna što mu treba. A stvaranje neke vrste univerzalnih mehanizama, za koje ćete morati dodatno platiti, a nije činjenica da će se koristiti, vrlo je rijetko kada se standardna rješenja finaliziraju ili implementiraju u određenom poduzeću.

Datoteke za preuzimanje:

Ispis (Ctrl+P)

1. Svrha funkcionalnih opcija

Funkcionalne opcije omogućuju programeru da opiše mogućnosti aplikativnog rješenja, koje se mogu brzo uključiti ili isključiti u fazi implementacije i/ili tijekom rada sustava. Na primjer, mogućnost rada s dodatnim svojstvima proizvoda može se odvojiti u zasebnu funkcionalnu opciju. Zatim, ako onemogućite ovu značajku, sve povezane (s dodatnim svojstvima proizvoda) mogućnosti će "nestati" u sučelju aplikacijskog rješenja.
Sustav može automatski uzeti u obzir stanje napravljenih postavki - sakriti onemogućene značajke, čineći sučelje aplikacije jasnijim i razumljivijim korisniku.
Tijekom razvoja pojavljuju se situacije kada vrijednost funkcionalne opcije mora ovisiti o određenim parametrima, na primjer, ne vode sve organizacije računovodstvo valute. Da biste implementirali takvu ovisnost, upotrijebite parametre funkcionalnih opcija - objekte koji parametriraju funkcionalne opcije.

2. Na što utječu funkcionalne mogućnosti?

2.1. opće informacije

Funkcionalne opcije mogu utjecati na:
● Na korisničko sučelje - kada isključite bilo koju funkcionalnu opciju, sustav skriva sve elemente koji se odnose na njega u korisničkom sučelju. Zahvaćeni su sljedeći elementi sučelja:
● globalno naredbeno sučelje;
● pojedinosti obrasca (uključujući stupce pojedinosti obrasca vrste Tablica vrijednosti ili Stablo vrijednosti);
● naredbe oblika;
● izvješća implementirana pomoću sustava za sastavljanje podataka.
PAŽNJA! Ako klijentska aplikacija radi s datotečnom verzijom infobaze putem web poslužitelja, tada će promjena funkcionalne opcije dovesti do promjene korisničkog sučelja tek nakon ponovnog pokretanja web poslužitelja (ponovno pokretanje klijentske aplikacije neće promijeniti korisničko sučelje).
● Za algoritme napisane na ugrađenom jeziku – moguće je dobiti vrijednosti funkcionalnih opcija iz ugrađenog jezika i koristiti ih u različitim uvjetima, na primjer, za smanjenje količine izračuna.
PAŽNJA! Funkcionalne opcije i njihovi parametri ne utječu na sastav baze podataka. Sve tablice i polja su prisutni u bazi bez obzira na stanje funkcionalnih opcija.

2.2. Globalno naredbeno sučelje

Učinak funkcionalnih opcija na globalno naredbeno sučelje je da sustav skriva naredbe svih objekata koji se odnose na onemogućene opcije. Na primjer, ako je vrijednost funkcionalne opcije Nabava jednaka False, tada će naredbe za otvaranje odjeljka Nabava, kreiranje dokumenta Prijem robe, otvaranje liste Prijem robe itd. biti skrivene.
Zauzvrat, opcija Kupnja može uzeti u obzir vrijednost parametra funkcionalne opcije, na primjer, Organizacija. Promjenom vrijednosti ovog parametra pomoću metoda ugrađenog jezika možete promijeniti stanje funkcionalne opcije, a time i vidljivost elementa sučelja.
Također biste trebali uzeti u obzir sljedeće značajke formiranja naredbenog sučelja:
● Naredba će biti isključena iz naredbenog sučelja ako je atribut koji je parametar naredbe onemogućen funkcionalnom opcijom.
● Naredba će biti isključena iz naredbenog sučelja ako je tip parametra naredbe onemogućen funkcionalnom opcijom. Ako je vrsta parametra naredbe složena, naredba postaje nedostupna kada su sve vrste parametara onemogućene.

2.3. Oblik

U obrascu, funkcionalne opcije mogu utjecati na detalje obrasca i naredbe i (kao rezultat) promijeniti vidljivost elemenata obrasca povezanih s njima (polja i stupci za detalje obrasca, gumbi za naredbe obrasca). Prilikom izrade obrasca potrebno je uzeti u obzir sljedeće značajke ponašanja sustava:
<Вид>Objekt ( DirectoryObject t, DocumentObject, itd.) bit će onemogućen ako je odgovarajući konfiguracijski objekt onemogućen funkcionalnom opcijom. Analiziraju se samo one funkcionalne opcije koje nemaju parametre.
● Osnovni atribut tipa upravljanog obrasca Dinamički popis bit će onemogućeno ako funkcionalna opcija onemogući konfiguracijski objekt koji je naveden kao glavna tablica dinamičkog popisa. Analiziraju se samo one funkcionalne opcije koje nemaju parametre.
● Atribut obrasca referentnog tipa je onemogućen ako je konfiguracijski objekt koji tvori ovaj tip onemogućen funkcionalnom opcijom. Atribut obrasca složenog tipa onemogućen je ako funkcionalne opcije onemogućuju sve tipove sastavnica.
● Atribut obrasca tipa je onemogućen<Вид>Objekt (uključujući atribut glavnog obrasca), ako je konfiguracijski objekt koji tvori ovu vrstu onemogućen funkcionalnom opcijom. Analiziraju se samo one funkcionalne opcije koje nemaju parametre.
● Tablica obrazaca bit će onemogućena ako prikazuje podatke atributa obrasca koji su onemogućeni funkcionalnom opcijom.
● Nema tipova u dijaloškom okviru za odabir tipa (na primjer, za polja za unos povezana s atributima složenog tipa) ako su konfiguracijski objekti koji tvore te tipove onemogućeni funkcionalnom opcijom. Informacije o tipovima onemogućenim funkcionalnim opcijama pohranjuju se u predmemoriju na strani klijenta i brišu nakon 20 minuta ili tijekom poziva metode UpdateInterface().
PAŽNJA! Za razliku od naredbenog sučelja, vrijednosti parametara funkcionalnih opcija postavljaju se samo za određenu instancu obrasca.

2.4. Sustav sastavljanja podataka

Sustav za sastavljanje podataka primarno se koristi za generiranje izvješća. Funkcionalne opcije utječu na sastav podataka koji se prikazuju u izvješću i sastav postavki izvješća dostupnih korisniku. Na primjer, ako je onemogućena funkcionalna opcija Valutno knjigovodstvo, tada u ispisu koji prikazuje šifrant dokumenata Prijem robe neće postojati stupac Valuta i Valutni iznos, au postavkama neće biti mogućnosti odabira, grupiranja, sortiranja, itd. poljem Valuta.

2.5. Karakteristike

Funkcionalne opcije utječu na vidljivost polja obrasca koja prikazuju vrijednost karakteristike objekta. Da biste to učinili, u funkcionalnu opciju morate uključiti atribut koji pohranjuje vrijednost karakteristike.
Pogledajmo primjer. Karakteristike se koriste za imenik proizvoda, tipovi karakteristika pohranjuju se u planu tipova karakteristika karakteristika, a vrijednosti se pohranjuju kao resurs registra informacija Vrijednosti karakteristika. Resurs je uključen u funkcionalnu opciju Računovodstvo karakteristika.

Riža. 1. Utjecaj funkcionalnih opcija na izvedbu

U slučaju onemogućavanja funkcionalne opcije Računovodstvo karakteristika U obrascima je onemogućena vidljivost polja (stupac vrijednosti i polje vrijednosti) koja prikazuju karakteristične vrijednosti, kao što je prikazano na slici 1.

3. Opća shema rada

Mehanizam funkcionalnih opcija uključuje dvije vrste objekata metapodataka: Funkcionalna opcija i .
Funkcionalna opcija je objekt metapodataka koji može izravno utjecati na sastav sučelja aplikacije (ako funkcionalna opcija pohranjuje svoju vrijednost u Booleov atribut). Koristeći objekte ove vrste, možete sakriti elemente koji se odnose na nedostupnu funkcionalnost. Na primjer, opcija Valutno računovodstvo može sakriti direktorij Valute, polje Valute od dokumenata i stupac Valutni iznos od izvješća. Izvor vrijednosti funkcionalne opcije je objekt metapodataka odabran kao svojstvo Storage, na primjer ovo
može biti konstanta.
Ako je vrijednost funkcionalne opcije pohranjena u atributu direktorija ili izvoru registra informacija, potrebne su dodatne informacije koje točno pokazuju kako odabrati vrijednost opcije. U tu svrhu osiguran je zaseban objekt metapodataka - Parametri funkcionalnih opcija.
Možemo reći da su parametri funkcionalnih opcija koordinatne osi prostora vrijednosti funkcionalnih opcija. Štoviše, jedan parametar funkcionalnih opcija može odrediti vrijednost "svoje" koordinatne osi istovremeno za mnoge funkcionalne opcije.


Riža. 2. Opcija funkcije koja se može parametrirati

Razmotrimo primjer: recimo da ukupno računovodstvo ovisi o skladištu u vlasništvu određene organizacije (vidi sliku 98). U našoj bazi podataka
Možete voditi evidenciju u ime različitih organizacija iu različitim skladištima.
Za pohranjivanje vrijednosti funkcionalnih opcija, stvorit ćemo registar informacija, gdje će dimenzije (koordinatne osi) biti:

● Organizacija (odgovarajuće vrste);
● Skladište (odgovarajućeg tipa).

Resurs registra informacija bit će vrijednost ukupne računovodstvene funkcionalne opcije.
Tada će cjelokupna struktura konfiguracije izgledati ovako:
● Registar informacija SummovayaAccounting:
● Organizacijska dimenzija;
● dimenzija Skladište;
● resurs SummovayaAccount, koji ima Booleov tip.
● Parametar funkcionalnih opcija Organizacija. Svojstvo Usage ukazuje na dimenziju registra organizacije informacija SummativeAccounting.
● Parametar funkcionalnih opcija Skladište. Svojstvo Usage ukazuje na SumAccounting informacijski registar dimenzija Skladište.
● Funkcionalna opcija SumAccounting. Svojstvo Storage ukazuje na resurs SummovayaAccounting za registar informacija SummovayaAccounting.
Kao rezultat toga, kako bismo utvrdili potrebu za vođenjem ukupnog računovodstva, moramo u svakom konkretnom slučaju naznačiti vrijednosti parametara funkcionalnih opcija (Organizacija i Skladište) i dobiti vrijednost funkcionalne opcije.
Dakle, u primjeru prikazanom na slici 2, ukupno računovodstvo je dopušteno za Organizaciju 1 i Skladište 1, ali je ukupno računovodstvo zabranjeno za Organizaciju 2 i Skladište 1.

4. Interakcija s drugim objektima

Funkcionalne opcije mogu se dodijeliti sljedećim konfiguracijskim objektima:
● Podsustavi,
● Opće naredbe,
● Opći obrasci,
● Konstante,
● Kriteriji odabira,
● Imenik,
● Dokument,
● Časopis,
● Kontni plan,
● Plan vrsta karakteristika,
● Plan vrsta obračuna,
● poslovni proces,
● Zadatak,
● Planovi razmjene,
● Izvješće,
● Obrada,
● Registar akumulacije,
● Registar informacija,
● Računovodstveni registar,
● Registar izračuna,
● Tim,
● Detalji objekta metapodataka,
● Tablični dio,
● Pojedinosti tabelarnog odjeljka,
● Računovodstveni atribut,
● Subconto računovodstveni atribut,
● Podaci o adresi,
● Registrirajte mjerenje,
● Registrirajte resurs.
Funkcionalne opcije također mogu utjecati na vidljivost elemenata obrasca.

5. Stvaranje

5.1. Stvaranje opcije funkcije

Kako biste kreirali funkcionalnu opciju, trebate kreirati konfiguracijski objekt Funkcionalna opcija. To možete učiniti u konfiguratorskom modu na uobičajen način, odnosno u konfiguracijskom prozoru odaberite General, zatim Funkcionalne opcije i dodajte novi objekt.

Riža. 3. Stvaranje funkcionalne opcije

Ovo će stvoriti konfiguracijski objekt Funkcionalne opcije koji se može koristiti za dodjelu funkcionalnih opcija drugim objektima metapodataka.


Riža. 4. Pohranjivanje vrijednosti funkcionalne opcije

Osim imena, objekt ima i obaveznu osobinu – Storage. U uređivaču možete odabrati jedan od objekata za njega, koji će biti izvor vrijednosti opcije. Popis dostupnih objekata uključuje:
● konstante,
● detalji imenika,
● resursi informacijskih registara.
Ne postoji ograničenje na vrstu izvora vrijednosti opcije, ali samo one funkcionalne opcije koje pohranjuju svoje vrijednosti u atributima tipa Boolean prikladne su za upravljanje sučeljem. Vrijednosti funkcionalnih opcija s drugim vrstama dostupne su samo za raščlanjivanje u ugrađenom jeziku.
Povlašteni način rada za svojstvo dohvaćanja kontrolira kako se vrijednost funkcionalne opcije dohvaća (i predmemorira).


Riža. 5. Privilegirani način rada pri primanju vrijednosti funkcionalne opcije

Ako je ovo svojstvo postavljeno, vrijednost funkcionalne opcije dobiva se u povlaštenom načinu rada. Rezultirajuća vrijednost pohranjuje se u predmemoriju za sve sesije povezane s ovom informacijskom bazom.
Ako se svojstvo Privileged Mode poništi pri dohvaćanju, tada se dohvaćanje vrijednosti funkcionalne opcije izvodi u normalnom načinu rada.
Predmemoriranje se izvodi za trenutnu sesiju. I vrijednost (ako ju je bilo moguće dobiti) i znak nemogućnosti dobivanja vrijednosti (ako nije bilo moguće dobiti vrijednost) su pohranjeni u predmemoriju.
Predmemorija se resetira kada se promijene vrijednosti parametara sesije.
SAVJET. Preporuča se postaviti svojstvo Privileged Mode on Receive za sve slučajeve u kojima vrijednost funkcionalne opcije ne sadrži osjetljive informacije.

5.2. Stvaranje parametra funkcionalnih opcija

Za kreiranje parametra funkcionalne opcije, morate kreirati konfiguracijski objekt Parametri funkcionalnih opcija. To se može učiniti u modu Configurator na uobičajeni način, tj. u konfiguracijskom prozoru odaberite General, zatim Parametri funkcionalnih opcija i dodajte novi objekt.

Osim imena, parametar ima obavezno svojstvo upotrebe. Određuje skup objekata čije će vrijednosti odrediti kako treba odabrati vrijednost funkcionalne opcije. Popis dostupnih objekata uključuje imenike i dimenzije registara informacija. Za svaki parametar funkcionalnih opcija u ovom popisu možete odabrati jedan imenik (iz cijelog popisa imenika) i jednu dimenziju svakog informacijskog registra.
PAŽNJA! Ne možete koristiti isti objekt metapodataka u više parametara opcije funkcije.

6.Korištenje

6.1 Dodjeljivanje metapodataka objektima

Objekt metapodataka (na primjer, imenik) može se dodijeliti jednoj ili više funkcionalnih opcija. Da biste to učinili, upotrijebite svojstvo Funkcionalne opcije koje sadrži poveznice na funkcionalne opcije stvorene u konfiguraciji.

Riža. 6. Dodjeljivanje funkcionalne opcije objektu

Popis dostupnih opcija ograničen je samo na one opcije za koje je objekt s vrstom vrijednosti Boolean dodijeljen u svojstvu Storage.
PAŽNJA! Ako objektu nisu dodijeljene nikakve funkcionalne opcije, smatra se da je uvijek vidljiv. U suprotnom, objekt se smatra vidljivim ako je omogućena barem jedna od funkcionalnih opcija koje su mu dodijeljene (to jest, funkcionalne opcije su "ORed").

6.2. Dodjela detaljima obrasca i naredbama

Objekti koji pripadaju obrascu (Detalji i Naredbe) također se mogu koristiti u mehanizmu funkcionalnih opcija.


Riža. 7. Dodjeljivanje funkcionalne opcije naredbi

To se može učiniti u uređivaču obrazaca postavljanjem svojstva Funkcionalne opcije za traženi objekt.
Stanje funkcionalnih opcija utjecat će na prikaz objekata obrazaca na isti način kao što je to slučaj s objektima metapodataka.
Na primjer, u slučaju naredbe koja je onemogućena pomoću opcije funkcije, svi povezani gumbi bit će uklonjeni.
Ako nijedna funkcionalna opcija nije dodijeljena atributu obrasca ili naredbi, tada se atribut obrasca ili naredba uvijek smatra vidljivim. U suprotnom, atribut obrasca ili naredba smatra se vidljivom ako je omogućena barem jedna od funkcionalnih opcija koja mu je dodijeljena.

6.3. Upotreba u mehanizmu za ograničavanje pristupa podacima

Pod mehanizmom ograničenja pristupa podacima Funkcionalne mogućnosti može se koristiti na isti način kao Opcije sesije. Dopušteno je koristiti samo opcije koje ne ovise o parametrima, odnosno one koje su vezane uz konstante.
PAŽNJA! Sustav kontrolira jedinstvenost naziva između parametara sesije i funkcionalnih opcija.

6.4. Određivanje vrijednosti funkcionalne opcije

Vrijednost funkcionalne opcije određena je objektom koji je naveden u svojstvu Storage. U slučaju konstante koristi se njezina vrijednost. Za opciju povezanu s atributom imenika ili resursom registra informacija, vrijednosti pohranjene u tim objektima. Da bi se pronašao određeni objekt koji pohranjuje vrijednost funkcionalne opcije, potrebne su dodatne informacije - skup vrijednosti za parametre funkcionalnih opcija.
Ako je opcija pohranjena u atributu imenika, parametar mora sadržavati vezu na određeni element imenika. Ako je opcija pohranjena u izvoru detaljnog registra, moraju se specificirati vrijednosti svih dimenzija registra. U tom slučaju svako mjerenje mora biti karakterizirano vlastitim parametrom.
Ako nisu navedeni svi parametri za funkcionalnu opciju tipa Boolean, tada se izvodi ILI dodavanje svih vrijednosti s neodređenim parametrima. Na primjer, ako je funkcionalna opcija pohranjena u informacijskom registru s dimenzijama Organizacija i Skladište i specificirana je samo dimenzija Organizacija, tada će vrijednost funkcionalne opcije biti jednaka True ako barem jedno od skladišta navedenih u Skladištu dimenzija ima vrijednost funkcionalne opcije jednaku True.
Za opciju funkcije koja nije tipa Boolean, situacija s nepotpuno navedenim parametrima rezultira izbacivanjem iznimke.
Metode ugrađenog jezika omogućuju vam da dobijete vrijednost opcije, ovisno o proslijeđenim parametrima i za skup parametara
za naredbeno sučelje ili određeni obrazac. U slučaju kada se promjena vrijednosti objekta navedenog u svojstvu funkcionalne opcije Storage vrši u transakciji, stvarna vrijednost funkcionalne opcije bit će promijenjena tek nakon dovršetka transakcije. Dok je transakcija otvorena, vrijednost funkcionalne opcije bit će jednaka vrijednosti koja je bila trenutna na početku transakcije.
Ako je funkcionalna opcija povezana s periodičnim izvorom registra informacija, tada sustav koristi isječak potonjeg za dobivanje vrijednosti opcije. Ako želite dobiti vrijednost opcije za neki drugi datum, morate navesti vrijednost za parametar funkcionalnih opcija Period (Period), koji ima tip Datum, koji će se koristiti kao datum za primanje isječka. Ovaj parametar ne mora biti kreiran u metapodacima. Sustav ga automatski osigurava.

Kada koristite parametrizirane funkcionalne opcije, razmotrite sljedeće ponašanje:
● U obrascima popisa, stupac atributa povezan s parametriziranom funkcionalnom opcijom bit će prikazan ako je barem jedna omogućena vrijednost ove funkcionalne opcije pohranjena u informacijskoj bazi.
● Ako je potrebno da prilikom otvaranja obrasca detalji povezani s funkcionalnim opcijama budu prema zadanim postavkama onemogućeni, tada trebate
postavite vrijednosti ovih parametara na vrijednosti kojih nema u infobazi (za direktorije - prazan link, za registre informacija - mjerne vrijednosti za koje nema zapisa). U tom će slučaju funkcionalna opcija imati vrijednost False.
● U slučaju kada je kao parametar navedena referenca na grupu (ako tip parametra funkcionalne opcije dopušta kreiranje grupa), a ne referenca na element, ponašanje sustava će biti sljedeće:
● ako se atribut u kojem je pohranjena vrijednost funkcionalne opcije koristi i za element i za grupu, tada će vrijednost funkcionalne opcije biti određena vrijednošću ovog atributa.
● ako se atribut u kojem je pohranjena vrijednost funkcionalne opcije ne koristi za grupu, tada se kod dobivanja vrijednosti funkcionalne opcije metodama GetFunctionalOption(), () i () će vratiti NULL. Ako opcija značajke parametrizirana ovom vrijednošću ima utjecaj na korisničko sučelje, sustav će je tretirati kao onemogućenu (opcija značajke imat će vrijednost False).
● Za objekte metapodataka koji formiraju naredbe, moguće je postaviti vezanje na parametriranu funkcionalnu opciju. U naredbenom sučelju naredbe takvih objekata bit će prikazane samo ako postoji barem jedna kombinacija parametara funkcionalne opcije za koju je vrijednost funkcionalne opcije True. Međutim, koristeći () metodu, možete postaviti određene vrijednosti za parametre funkcionalnih opcija, a zatim i vidljivost
naredbe će biti točno određene navedenim parametrima.
● Dinamički popis automatski koristi funkcionalne opcije koje koristi obrazac. Ako su detalji koji se koriste u zahtjevu dinamičkog popisa onemogućeni za danu kombinaciju parametara funkcionalnih opcija, podaci za njih neće biti odabrani i prikazani na dinamičkom popisu, a atribut će biti uklonjen s popisa dostupnih detalja u dijaloški okvir postavki prikaza podataka
dinamički popis (u 1C:Enterprise modu).

7. Rad s funkcionalnim opcijama u ugrađenom jeziku

Metode globalnog konteksta GetFunctionOption() I GetInterfaceFunctionalOption() vrati vrijednost funkcije
opcije. Razlika između njih je u tome što vam prva metoda omogućuje određivanje skupa parametara za funkcionalne opcije, a druga metoda vraća vrijednost funkcionalne opcije na temelju parametara navedenih za naredbeno sučelje. Obrazac ima vlastitu metodu koja vraća vrijednost opcije za parametre navedene unutar obrasca - GetFunctionalOptionForm().
Da biste ažurirali globalno naredbeno sučelje, morate izričito pozvati metodu Postavite parametre funkcionalnih opcija sučelja().
Naredbeno sučelje ažurirat će se kako bi odražavalo novo stanje funkcionalnih opcija.
BILJEŠKE E. Ako se vrijednost funkcionalne opcije promijeni u bazi podataka, globalno naredbeno sučelje i obrasci koji su u to vrijeme otvoreni ne ažuriraju se automatski. Da biste to učinili, trebali biste koristiti metodu UpdateInterface() nakon upisa vrijednosti funkcionalnih opcija u bazu podataka.
Imajte na umu da postavljanje parametara funkcionalnih opcija (i izvršavanje metode UpdateInterface()) dovodi do sljedećih posljedica:
● za svaku formu poziva se zatvaranje svih pomoćnih formi (uz pozivanje odgovarajućih rukovatelja);
● obrasci koji odbijaju biti zatvoreni nisu zatvoreni;
● ažurira se sastav elemenata glavnog obrasca;
● ako je glavna forma bila aktivna forma u trenutku ažuriranja sučelja, glavna forma se prikazuje u skladu s novim sastavom elemenata;
● ako je u trenutku ažuriranja sučelja aktivni obrazac bio pomoćni obrazac, tada:
● izvršit će se naredba za otvaranje pomoćnog obrasca, ako je dostupna nakon ažuriranja sučelja;
● u suprotnom, sastav elemenata glavnog obrasca se ažurira i prikazuje;
● ako je u trenutku ažuriranja sučelja aktivni obrazac bio pomoćni obrazac otvoren pomoću naredbe koja nije povezana s navigacijskom pločom obrasca, tada će se umjesto ovog obrasca ažurirati sastav elemenata glavnog obrasca i prikazati .
Da biste ažurirali određeni obrazac, morate ga ponovno otvoriti ili pozvati metodu SetFormFunctionalOptionsParameters(),
u ovom slučaju gore opisani slijed radnji radi samo za obrazac u čijem se kontekstu poziva postavljanje parametara funkcionalnih opcija obrasca.
Nije potrebno navesti sve parametre odjednom, možete selektivno mijenjati vrijednost određenog parametra ili skupa parametara. Ali učinkovitije je grupno postavljanje vrijednosti jednim pozivom.
Da biste dobili vrijednosti parametra, morate pozvati odgovarajuću funkciju ( GetParametersFunctionalOptionsInterface() ili
GetFormFunctionalOptionsParameters()), koji će vratiti postavljene parametre u obliku strukture, gdje će ključ biti naziv parametra.
Kada se otvori, obrazac automatski koristi parametre funkcionalnih opcija postavljenih za naredbeno sučelje.

Funkcionalne mogućnosti su uobičajeni konfiguracijski objekti. One su dio mehanizma funkcionalnih opcija i omogućuju vam da odaberete funkcionalnost u aplikacijskom rješenju koja se može uključiti/isključiti tijekom implementacije bez promjene samog aplikacijskog rješenja.

Na primjer, ovisno o uvjetima konkretne implementacije, potrebno je onemogućiti evidentiranje robe po skladištima. Tako da prilikom pripreme dokumenata za prijem robe, polj Zaliha nije prikazan u obrascu dokumenta.

U tu svrhu u konfiguraciji se može definirati funkcionalna opcija Skladišno računovodstvo, pohranjen u konstanti tipa Booleov.

Različiti konfiguracijski objekti ili njihovi detalji mogu se povezati s ovom funkcionalnom opcijom. Na primjer, možete pridružiti atribut ovoj funkcionalnoj opciji Zaliha dokument Prijem robe.

Zatim, tijekom implementacije, možete omogućiti ili onemogućiti ovu funkcionalnu opciju u određenoj informacijskoj bazi u načinu rada 1C:Enterprise.

Platforma će automatski uključiti i isključiti prikaz svih relevantnih elemenata sučelja (polja, naredbi, stupaca popisa, elemenata izvješća). U našem slučaju, polje će biti skriveno ili prikazano Zaliha u svim oblicima dokumenata Prijem robe.

30.03.2017

Funkcionalne opcije 1C 8.3 (mehanizam, upotreba)

Početi važno Imajte na umu da mehanizam funkcionalnih opcija NE ograničava pristup podacima, već samo kontrolira vidljivost (prikaz) podataka na obrascu. Za ograničavanje pristupa objektima, platforma koristi mehanizam uloga.
Stoga ćemo započeti razmatranje mehanizma funkcionalnih opcija s opisom zadatka. U našoj mini-konfiguraciji postoji jedan direktorij "Skladišta". Pretpostavimo da svi korisnici imaju pristup ovom imeniku.
Opet! Mehanizam funkcionalnih opcija kontrolira prikaz podataka na obrascu, a ne ograničava pristup objektu metapodataka (Imenik, dokument, unosi u registar...) Potrebno je napraviti postavku "Koristi više skladišta" (Da, da... Ovo je u UT 11.X, tamo se radi i za organizacije). Ako koristimo više skladišta, tada je imenik skladišta dostupan u sučelju, ako ne, onda postoji naredba koja otvara jedno skladište (u ovom slučaju pretpostavljamo da je samo jedno i ne kompliciramo zadatak).

Konfiguracijski objekti metapodataka

Za postizanje ovog zadatka trebat će nam:
  • Dvije funkcionalne opcije "Koristi više skladišta" i "Ne koristi nekoliko skladišta". Prvi je odgovoran za dostupnost imenika, a drugi za dostupnost opće naredbe za pozivanje algoritma “otvaranje” skladišta
  • Istoimene konstante s tipom Boolean za pohranjivanje vrijednosti funkcionalnih opcija
  • Imenik "Skladišta"
  • Opća naredba "OpenMainWarehouse". Ne zaboravite navesti grupu naredbi za njega, inače se konfiguracija neće primijeniti (doći će do pogreške)
Dodat ćemo i jedan podsustav u koji ćemo uključiti sve postojeće objekte

Postavljanje funkcionalnih opcija

Prva opcija je "Koristi više skladišta". Vrijednost je pohranjena u konstanti istog imena, koja uključuje direktorij "Skladišta". Stoga, kada je vrijednost konstante "True" direktorij je dostupan u sučelju, kada je false, direktorij neće biti prikazan u sučelju (Sadržaj podsustava, oblici objekata itd.)




Druga funkcija "Ne koristi više skladišta" instalirana je kada prva "Koristi nekoliko skladišta" NIJE instalirana.
Oni. ako ne koristimo nekoliko skladišta (Koristi nekoliko skladišta = FALSE i priručnik "Skladišta" nije dostupan), tada se prikazuje naredba "OpenMainWarehouse" čiju dostupnost kontrolira opcija "Ne koristi nekoliko skladišta" (Ne koristite nekoliko skladišta = TOČNO)

Provjera ponašanja sustava

Opcija 1. UseMultipleWarehouses = True, Don't UseMultipleWarehouses = False. Imenik "Skladišta" dostupan je u sučelju


Opcija #2. UseMultipleWarehouses = False, Don't UseMultipleWarehouses = True. Direktorij "Skladišta" NIJE dostupan u sučelju; umjesto toga dostupna je opća naredba "OpenMainWarehouse".