1s 8.3 funkcionalne opcije podsustava. Kontrola pristupa: uloge, prava, profili, pristupne grupe, funkcionalne mogućnosti, RLS. Sustav sastavljanja podataka
Mehanizam funkcionalnih opcija jedan je od razvojnih alata. Omogućuje vam da u konfiguraciji definirate funkcionalnosti koje se mogu ili ne moraju koristiti tijekom implementacije, ovisno o potrebama određene organizacije.
Rad mehanizma temelji se na dva konfiguracijska objekta:
- Funkcionalna opcija
Konfiguracijski objekti i njihovi detalji mogu se povezati s funkcionalnim opcijama dodanim aplikacijskom rješenju. Na primjer, s funkcionalnom opcijom Skladišno računovodstvo možete povezati rekvizite Skladište dokument Prijem robe. Zatim, ako omogućite ovu funkcionalnu opciju u načinu rada 1C:Enterprise, polje Skladište bit će prikazan u svim obrascima dokumenata. Ako ga isključite – polje Skladište neće se prikazati. Pročitaj više...
- Parametar funkcionalne opcije
Funkcionalne opcije mogu se koristiti s parametrima. Na primjer, tako da izgled određenog obrasca može ovisiti o vrijednosti parametra odabranog u obrascu. Na primjer, parametrom opcije funkcije Valutno računovodstvo Može biti Organizacija. Zatim, ovisno o tome koja je organizacija odabrana u obrascu, polje Valuta međusobnih obračuna bit će skriveni ili prikazani. Pročitaj više...
Funkcionalne opcije su objekt metapodataka koji se nalazi u grupi "Općenito":
Funkcionalne opcije su dio mehanizma funkcionalnih opcija, koji vam omogućuju da omogućite ili onemogućite neke funkcionalnosti u aplikacijskom rješenju ovisno o potrebama korisnika, bez mijenjanja same konfiguracije.
Na primjer, ne može svaka organizacija koristiti skladišno računovodstvo. Ako se ne koristi skladišno računovodstvo, onda ima smisla ukloniti skladišno polje iz svih dokumenata, imenika i registara - tada nam u pomoć dolaze funkcionalne mogućnosti.
Pogledajmo primjer:
Stvorimo funkcionalnu opciju " Računovodstvo po skladištima".
Pohrana: označeno je polje u koje se pohranjuje vrijednost.
Možete odabrati konstantu, atribut imenika ili resurs registra informacija.
Koristit ćemo konstantu.
Stvorimo konstantu " Vodite račune skladišta" i odaberite ga u polju za pohranu. Ova konstanta bit će odgovorna za omogućavanje i onemogućavanje funkcionalne opcije. Označite okvir "Privilegirani način rada prilikom primanja." Ovaj potvrdni okvir znači da će vrijednosti funkcionalne opcije biti primljene u povlaštenom načinu rada :
Ažuriramo, pokrećemo 1C Enterprise. Postavite vrijednost konstante = True:
Kao rezultat imamo:
Kada postavimo konstantu = False, dobivamo:
Imate pitanje ili trebate pomoć konzultanta?
Dakle, napravili smo funkcionalnu opciju koja kontrolira polja tipa DirectoryLink.Warehouse
Pogledajmo sada primjer korištenja parametara funkcionalnih opcija.
Dodajmo novu funkcionalnu opciju " Valutno računovodstvo"
Skladištenje: Imenik.Organizacija.Detalji.Valutno računovodstvo
Dodajmo u sastav dokumenta detalje "Određivanje cijena artikla" - "Valuta"
U obliku dokumenta u procedurama "When CreatedOnServer" i "OrganizationWhenChanged"
Dodajmo sljedeći kod:
Ažuriramo konfiguraciju i pokrećemo je.
Kreiramo dvije organizacije i za jednu od njih označimo kućicu "Valutno računovodstvo"
Što dobivamo kao rezultat? Kao rezultat korištenja parametara funkcionalne opcije dobili smo parametarsku kontrolu polja „Valuta“ u dokumentu „Određivanje cijena artikala“. one. za organizaciju "Alpha" bit će prikazano polje "Currency", a za organizaciju "Beta" polje "Currency" neće biti prikazano.
Uvjerimo se u ovo. Otvorite dokument i pokušajte promijeniti polje "Organizacija".
Kada se postavi Organizacija = "Alfa", prikazuje se valuta; promijeniti u "Beta" - valuta je uklonjena
1. Prava pristupa.
Zapravo je vrlo jednostavno. U 1C prema zadanim postavkama zabranjeno je sve što nije dopušteno. Jesti samo jedan subjekt odgovoran za pristup korisnik na bilo koju funkcionalnost ili podatke. Ovaj entitet se zove "Pravo pristupa". Ona je jedinac element odgovoran za pristup određenom načinu rada, imeniku, detaljima....
Broj vrsta prava pristupa unaprijed je određen platformom. Ukupno, platforma ima dvije glavne skupine prava pristupa. Zajedničko za cijeli sustav prava pristupa mehanizmima platforme, zadužen za pristup određenim načinima rada platforme (Administracija, Ekskluzivni način rada, Tanki klijent, Interaktivno otvaranje vanjskih izvješća....). I dozvole objekta, što vam omogućuje rad s različitim konfiguracijskim objektima. Njihov broj ovisi o vrsti konfiguracijskog objekta. Na primjer, imenik ima 16 razne vrste pristup (čitanje, dodavanje, promjena, brisanje....). Postoji samo pet vrsta pristupa registru informacija. Sva ova prava mogu se postaviti samo na razini cijelog imenika. Također možete ograničiti pristup na razini vjerodajnice. Ali u ovom slučaju dostupan je samo dio vrsta prava (za imenike to su prava pregleda i uređivanja).
Sva su prava pristupa međusobno povezana i ovisna jedna o drugoj. Postoje prava koja su sve veća i veća niska razina. Ne možete dodijeliti pravo niže razine ako korisnik nema pravo izvršiti radnju više razine.
Razmotrimo prava pristupa imeniku. Ovaj dijagram pokazuje da su većina prava pojašnjenja više zajednička prava. Ako je Right1 potpuno smješten na dijagramu unutar pravokutnika drugog Right2, tada se Right1 ne može izdati bez izdavanja Right2. Najčešće pravo je pravo "Čitaj". Ako pravo na čitanje nije dostupno, sva ostala prava nisu dostupna. Ako pravo "Dodaj" nije dostupno, tada se pravo "Interaktivno dodavanje" ne može postaviti. Međutim, sustav prava ne može se nazvati punopravnom hijerarhijom. Na primjer, pravo "uređivanja" može se dodijeliti samo ako imate prava "pregled" i "uređivanje". Ali možete dati "View" bez "Change" ili "Change" bez "View".
Pravo pristupa je minimalna jedinica pristupa. Sva kontrola pristupa svodi se na izdavanje korisniku potrebnog skupa prava. Preostali objekti (uloge, grupe pristupa) su samo dodatna vezanja koja služe za grupiranje i praktičnije izdavanje prava pristupa.
2. Uloge - mehanizam za dodjelu prava pristupa
Pogledajmo kako se to točno radi dodjeljivanje prava pristupa korisniku. Za praktičnost izdavanja prava pristupa u platformi 1C, poseban "Roli" mehanizam. To je sloj između korisnika baze podataka i prava pristupa. Svaka uloga kombinira skup prava pristupa čija dodjela ima smisla samo u isto vrijeme. Na primjer, u ulozi "Čitanje podataka o kontaktu", logično je kombinirati skupove prava odgovornih za povezane direktorije s kontakt informacije. Većina na jednostavan način postavljanje uloge korisniku je otvaranje korisničke kartice informacijske sigurnosti u konfiguratoru i označavanje polja pored uloga koje korisnik treba. Ovo je univerzalna metoda i radi u bilo kojoj konfiguraciji. Međutim, s povećanjem složenosti konfiguracija i povećanjem broja uloga, postalo je prilično radno intenzivno. Stoga u trenutnim standardnim rješenjima postoji dodatni sloj između korisnika informacijske sigurnosti i uloga. Ovaj sloj implementiran je u obrazac Podsustav "Kontrola pristupa".. Omogućuje vam kombiniranje uloga u veće entitete - "Profile" i dodjeljivanje korisniku ne pojedinačnih uloga, već profila koji sadrže skupove od nekoliko uloga.
Razmotrimo shemu dodjele prava pristupa korisnicima koja se koristi u većini tipičnih konfiguracija. U pojednostavljenom obliku, može se predstaviti na sljedeći način. Uvode se novi entiteti "Pristup profilu" I "Pristupna grupa". Svaki pristupni profil uključuje nekoliko uloga. I svakom korisniku je dodijeljena jedna ili više pristupnih grupa. Svaka pristupna grupa je zatim povezana s pristupnim profilom. Kao rezultat toga, dobivamo priliku odrediti ne samo uloge za korisnika, već skupove uloga ovisno o funkcijama koje on obavlja.
S tehničkog gledišta ovaj sustav izdavanje prava provodi se uz sudjelovanje dva standardna podsustava. Podsustav "Kontrola pristupa" služi za konfiguriranje povezivanja pristupnih grupa s ulogama unaprijed definiranim u konfiguraciji. Podsustav "Korisnici" služi za konfiguriranje veza između korisnika informacijske sigurnosti i konfiguracijskih pristupnih grupa.
3. “Logika dopuštenja” kao pravilo za presjek uloga.
Važno je razumjeti da je u 1C opća logika kontrole pristupa logika dopuštenja. U 1C platformi općenito nema mehanizama za zabranu pristupa. Postoje samo mehanizmi izdavanje pristupa. Prema zadanim postavkama, pristup svim podacima je odbijen, i postavljanje pristupa sastoji se od izdavanja svakom korisniku prava koja su mu potrebna. To znači da ako neka uloga korisniku daje pravo pregledavanja dokumenata “Prodaja robe”, tada to pravo se ne može oduzeti ni na koji način druge uloge ili bilo koju drugu platformu i konfiguracijske mehanizme. U početku ne možete dati potpuni pristup imeniku, već filtrirati podatke kojima dajemo pristup pomoću RLS-a. Ali ako je pristup već odobren, onda ga druge uloge više ne mogu uzeti natrag.
Zato je pri ograničavanju korisničkog pristupa imeniku po ulogama vrlo važno provjeriti da korisniku nije dodijeljena neka druga uloga u istom imeniku. Inače će prva uloga dati potreban pristup, koji druga ne može uskratiti.
Platforma ima mogućnost dati korisniku dodatna prava za vrijeme trajanja određene operacije. Ova se značajka naziva privilegirani način rada. Omogućuje korisniku radnje nad podacima koji mu nisu dostupni. Međutim, platforma nema mogućnost čak ni privremenog smanjenja prava korisnika.
4. Neizravna kontrola pristupa.
Postoje zasebni mehanizmi koji, iako nisu izravno namijenjeni kontroli pristupa, na njega utječu neizravno i mogu se koristiti za dodatna ograničenja. Pogledajmo njihove glavne značajke.
4.1. Funkcionalne mogućnosti.
Sustav kontrole pristupa ponekad se naziva i mehanizam funkcionalne opcije. To nije sasvim točno, jer funkcionalne mogućnosti ni na koji način ne utječu na pristup podacima. Ovo je čisti mehanizam sučelja, dizajniran za pojednostavljenje sučelja za korisnika. Pojavio se u platformi 8.2 kao rezultat složenije konfiguracijske funkcionalnosti. Namijenjene su funkcionalne opcije sakriti od sučelja funkcionalnost koju ne koristi ova tvrtka ili ovaj određeni korisnik. Mehanizam utječe samo na prikaz podataka. Naredbe nestaju iz sučelja, a detalji onemogućeni funkcionalnim opcijama skriveni su na obrascima. Istovremeno korisnik i dalje ima pristup svim tim naredbama i detaljima. Može raditi sa skrivenim podacima programski koristeći obradu bez ikakvih problema.
Više o radu s funkcionalnim opcijama možete pročitati na ITS-u
4.2. RLS (Sigurnost na razini zapisa)
Svi gore navedeni mehanizmi utječu na pružanje pristupa objektima u cjelini. Na referentne knjige, dokumente, referentne detalje. Prava pristupa utječu na pristup objektima, funkcionalne opcije utječu na prikaz objekata u sučelju. Često se javlja zadatak dopuštanja korisniku pristupa podacima imenika ili dokumenta. Ali ne na sve podatke, već samo na njihov dio. Na primjer, dopustite pristup implementacijskim dokumentima za samo jednu organizaciju.
Za konfiguriranje ove rezolucije postoji dodatni mehanizam RLS (Sigurnost na razini zapisa). Kao što naziv sugerira, ovaj mehanizam kontrole pristupa je na razini specifičnih zapisa tablice. Ako prava pristupa omogućuju pristup tablicama u cjelini (direktorije) ili stupcima tablice (pojedinosti), tada RLS određuje određene retke tablice (zapise) s kojima korisnik smije raditi. Omogućuje vam određivanje podataka koji su dostupni korisniku.
Kada analizirate ovaj mehanizam, uvijek biste se toga trebali sjetiti RLS nije mehanizam za zabranu pristupa. On je mehanizam pristup izdavanje filtriranje. one. RLS ne utječe na prava korisnika; to je filter koji ograničava izdavanje prava. RLS utječe samo na određenu vezu "Uloga" - "Pravo pristupa" u kojoj je registriran. I ne utječe na prava pristupa dodijeljena drugim ulogama. Na primjer, ako jedna uloga dopušta pristup dokumentima samo za Organizaciju1, a druga uloga dopušta pristup dokumentima za Skladište1, tada će korisnik na kraju imati pristup svim dokumentima koji označavaju Organizaciju1 ILI Skladište1. Stoga, ako je korisniku dodijeljeno nekoliko uloga, onda filtar koji koristi RLS mora biti instaliran u svakoj ulozi za oba polja (po organizaciji i skladištu). U standardnim rješenjima ovaj se zadatak obično rješava kreiranjem jedne uloge u kojoj su registrirani svi mogući RLS filteri. Ta se uloga zatim dodjeljuje svim korisnicima koji rade s tim imenicima. Također se kontrolira da korisnik nema na raspolaganju druge uloge koje sadrže pravo pristupa ograničenim dokumentima.
Također je vrijedno napomenuti da se RLS filteri ne mogu primijeniti na sve moguće vrste pristupa podacima, već samo na vrste pristupa najviše razine. Na primjer, za imenike, od šesnaest dostupnih vrsta pristupa, RLS filtri se mogu primijeniti samo na četiri glavna: čitanje, mijenjanje, dodavanje i brisanje. To znači da ne možemo, na primjer, korisniku istovremeno dati pravo "Uređivanje" bez filtra za mogućnost programskog rada s bilo kojim dokumentima i pravo "Uređivanje" s RLS filtrom prema organizaciji za interaktivni rad. Ako trebamo da korisnik može uređivati dokumente s RLS filtrom, od nas se traži da nametnemo opći filtar na najvišoj razini "Uredi" ili "Čitaj".
S obzirom na ukupnu složenost mehanizama, obično je prilično teško dokučiti što je točno dostupno određenom korisniku tipične konfiguracije. Za provjeru dodijeljenih prava u tipičnim konfiguracijama postoji vrlo zgodno izvješće, koje se zove "Prava pristupa". Analizira sva prava dodijeljena korisniku i prikazuje konačni popis prava izdanih od strane svih pristupnih grupa, uzimajući u obzir RLS filtere.
4.3. Razdvajanje podataka.
Drugi mehanizam koji utječe na pristup podacima je odvajanje podataka. Ovaj je mehanizam dizajniran za održavanje nekoliko neovisnih baza podataka u jednoj fizičkoj bazi podataka koje imaju zajedničku konfiguraciju i zajedničke direktorije. U nekim vrlo ograničenim slučajevima ovaj se mehanizam može smatrati kontrolom pristupa. Kada je omogućeno, svaki korisnik može raditi samo u jednoj od svojih neovisnih baza podataka, ali koristiti zajedničke podatke.
U nekom općem smislu, ovaj se mehanizam također može smatrati filtrom podataka i posebnim slučajem implementacije RLS-a. Za razliku od RLS-a, odvajanje je mnogo rigidniji mehanizam. A zahvaljujući ovoj krutosti, programeri imaju tehničku mogućnost korištenja dodatnih indeksa za izvođenje takvog filtriranja bez inherentnih usporavanja RLS-a.
Zapravo RLS je samo dodatni izbor, automatski se dodaje svakom upitu baze podataka. Podjela podataka je dodavanje separatora u sve particionirane tablice i njihove indekse, uključujući onu klasteriranu. Podaci su grupirani prema separatoru, tj. fizički redistribuiran po disku u zasebne grupe za svaku vrijednost separatora. Zahvaljujući tome svaki korisnik radi samo sa svojim podacima, a poslužitelj ne treba fizički skenirati cijelu tablicu pri svakom zahtjevu. Dovoljno je vidjeti samo područje podataka trenutne particije.
Međutim, upravo zbog te fizičke preraspodjele podataka, kada radi kao puni korisnik koji nema filter na temelju vrijednosti separatora, svi upiti se izvršavaju jako, jako sporo. Bez vrijednosti separatora nemoguće je u potpunosti koristiti indekse, tako da količina podataka fizički pročitanih s diska i obrađenih sa svakim zahtjevom može povećati za redove veličine. Sukladno tome, u stvarnosti razdvajanje ima smisla samo ako će svi korisnici koji stalno rade u bazi raditi samo unutar svog područja.
4.4. Programski kod.
Možda je najuniverzalniji način postavljanja dodatnih ograničenja programski kod. Oni mogu utjecati na bilo koji mehanizam platforme. Na primjer, kako bi ograničio pristup dokumentima, programer može dodati filtar u obrazac s popisom dokumenata, u obrazac za odabir i može programski provjeriti mogućnost pregledavanja podataka dokumenta prilikom otvaranja određenog obrasca dokumenta. Programer može primijeniti filtar u svojim izvješćima prilikom odabira podataka.
Međutim, programski kod ne postoji način da konfiguracijom ograničite prava u cjelini. Najviše što razvojni programer može učiniti je ugraditi ograničenja u specifične pojedinačne mehanizme za pronalaženje podataka. Zbog činjenice da 1C koristi objektni model za rad s podacima, programski kod može jamčiti zaštitu podataka od modifikacije, dodajući potrebne provjere objektnom modulu. No razvojni programer ne može u potpunosti jamčiti da korisnik definitivno neće moći dobiti informacije o implementacijskim dokumentima drugih ljudi putem drugih izvješća ili obrada.
Ovaj princip se koristi, na primjer, u. Povezivanjem s konfiguracijom, proširenje dodaje prilagođena ograničenja i provjere svim referentnim knjigama i dokumentima. Filtrira podatke prikazane korisnicima na popisima, provjerava pristup prilikom pregledavanja ili mijenjanja podataka. Osigurava da se zabranjeni podaci ne mogu promijeniti. Ali ne može filtrirati podatke u izvješćima ili upitima.
Uvijek postoje mogućnosti dobivanja zabranjenih podataka zahtjevom, vlastitom obradom ili izvješćem. Osim ako vrlo strogo ne ograničite popis konfiguracijskih funkcionalnosti koje koristi korisnik i dodate zasebni filtar svakom mehanizmu (obrazac, obrada, izvješće, zahtjev) dopuštenom korisniku.
4.5. Usporedba opcija.
Pokušajmo ukratko usporediti razmatrane opcije za dodatno ograničenje podataka.
Kako omogućiti |
Što će se dogoditi? |
Funkcionalne mogućnosti- mehanizam sučelja za skrivanje funkcionalnosti | |
1. Dodajte mjesto pohranjivanja za funkcionalnu opciju: konstantu, atribut imenika ili resurs registra informacija. |
1. Svi objekti uključeni u funkcionalnu opciju više neće biti prikazani u naredbenom sučelju. |
RLS (Sigurnost na razini zapisa)- dodatni filteri za prava dopuštena ulogom | |
1. Registrirajte RLS filtre u svakoj korisničkoj ulozi za svako od prava koja treba ograničiti. Napomena: U načinu rada Enterprise nije potrebna nikakva radnja. Filtri će se primijeniti automatski. |
1. Konfigurirani filtar bit će dodan svakom zahtjevu za informacijsku sigurnost. |
Razdvajanje podataka- održavanje nekoliko neovisnih u jednoj fizičkoj bazi podataka | |
1. Dodajte opći atribut konfiguraciji koji određuje sastav dijeljenih podataka. 2. Dodajte dva parametra sesije: za znak korištenja i trenutnu vrijednost dijeljenja podataka. 3. Dodajte programski kod da omogućite odvajanje podataka i popunite trenutnu vrijednost separatora. |
1. Odmah nakon dodavanja mogućnosti odvajanja podataka u konfiguraciju, tablice za koje je dodana mogućnost odvajanja fizički će se ponovno izgraditi.
2. Nakon omogućavanja odvajanja.
|
Programski kod- sva dodatna bodovna ograničenja | |
1. Dodajte kod za nametanje potrebnih ograničenja konfiguraciji. |
1. Učinit će točno ono što kaže. Napomena: kod ne utječe na konfiguraciju u cjelini, već samo na određeni mehanizam za koji je radnja propisana |
5. Rezultati.
Svaki način postavljanja ograničenja ima svoje prednosti i nedostatke. S tehnološke točke gledišta, najispravnije je pravilno ga podijeliti na uloge. Najpouzdaniji način filtriranja dostupnih podataka je korištenje RLS-a. Mehanizam je dizajniran za ovaj zadatak. Ograničenja točaka najlakše je implementirati pomoću koda. Funkcionalne mogućnosti i razdvajanje podataka su sasvim specifični mehanizmi koji nemaju za cilj ograničavanje pristupa. Iako se u nekim slučajevima mogu koristiti za to.
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. Pogledajmo redoslijed 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
"EnableImportance". 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.
- "Komentar" s tipom "Niz".
- "Važnost" s tipom "EnumerationRef.Importance".
Dodajmo atribut dokumenta "Važnost" funkcionalnoj opciji i zatim razmotrimo ponašanje platforme u korisničkom načinu rada.
Nakon pokretanja 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).
Razmotrimo 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 DBMS-u u skladu s objektom pohrane, 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:
Objekt 1c "Funkcionalne mogućnosti" - namijenjeni su za isticanje funkcionalnosti u aplikativnom rješenju koja se može uključiti (isključiti) tijekom implementacije, a da se sama ne mijenja (zajedno s podsustavima čine sučelje 1C tankog klijenta). One su dio mehanizma funkcionalnih opcija.
Mehanizam funkcionalnih opcija uključuje dva objekta metapodataka:
- Funkcionalna opcija;
- Parametri funkcionalnih opcija.
Više detalja
Funkcionalna opcija predstavlja 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 Valute, polje Valuta iz i stupac Iznos valute iz izvješća.
Izvor vrijednosti funkcionalne opcije je objekt metapodataka odabran kao svojstvo Storage, na primjer, to može biti .
Ako je vrijednost funkcionalne opcije pohranjena u atributu direktorija ili resursu, 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.
[kolaps]
Funkcionalne opcije mogu utjecati na:
- na korisničko sučelje:
- globalno ;
- pojedinosti (uključujući stupce pojedinosti obrasca kao što su Tablica vrijednosti ili ValueTree);
- naredbe oblika;
- o izvješćima implementiranim pomoću sustava za sastavljanje podataka;
- na algoritme napisane u 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 (vidi, na primjer, ).
PAŽNJA! Ako klijentska aplikacija radi s datotečnom verzijom infobaze preko web poslužitelja, tada će promjena funkcionalne opcije dovesti do promjene korisničkog sučelja tek nakon ponovnog pokretanja web poslužitelja (ponovno pokretanje klijentska aplikacija neće uzrokovati promjenu korisničkog sučelja).
Svojstva funkcionalnih opcija 1C
- Storage je polje u kojem je potrebno odabrati objekt tipa Boolean. Obično se koriste konstante.
- prilikom primanja - zastavica je odgovorna za mogućnost primanja vrijednosti funkcionalne opcije u povlaštenom načinu rada.
- Sastav - popis objekata i detalja o objektu, čija se vidljivost uključuje/isključuje kada se uključi/isključi funkcionalna opcija (kontrolirat će se pomoću upravljanog obrasca).
Na primjer, ovisno o uvjetima pojedine implementacije, moguće je onemogućiti evidentiranje robe po skladištu tako da se prilikom evidentiranja dokumenata za prijem robe u obrascu dokumenta ne ispisuje polje Skladište.
Značajke korištenja 1C funkcionalnih opcija:
- Funkcionalne opcije mogu imati vrijednosti bilo koje vrste (ne nužno Booleove).
- Kada dodajete novu konstantu za korištenje opcije funkcije, svakako je uključite u odgovarajući podsustav i dodijelite joj dozvole.
- Rad s funkcionalnim opcijama dostupan je iz ugrađenog jezika, zahvaljujući kojem programer može stvoriti vlastite algoritme za vrijednosti funkcionalnih opcija.
- Naredba naredbenog sučelja bit će isključena iz naredbenog sučelja ako je funkcionalna opcija onemogućena:
- atribut koji je parametar naredbe;
- tip parametra naredbe (ako je tip parametra naredbe složen, tada naredba postaje nedostupna kada su svi tipovi parametara onemogućeni).
PAŽNJA! Funkcionalne opcije i njihovi parametri ne utječu na sastav baze podataka: sve tablice i polja prisutni su u bazi podataka bez obzira na stanje funkcionalnih opcija.
Utjecaj funkcionalnih opcija na detalje obrasca i naredbe:
- upravljana vrsta obrasca<Вид>Objekt ( DirectoryObject, DocumentObject, itd.) bit će onemogućen ako je odgovarajući objekt onemogućen funkcionalnom opcijom. Analiziraju se samo one funkcionalne opcije koje nemaju parametre.
- Osnovni atributi tipa upravljane forme 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.
- 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 Ažuriraj sučelje().
PAŽNJA! Za razliku od naredbenog sučelja, vrijednosti parametara funkcionalnih opcija postavljaju se samo za određenu instancu obrasca.
Stvaranje parametra funkcionalnih opcija
Parametar funkcionalne opcije kreira se pomoću 1C konfiguracijskog objekta "Parametri funkcionalne opcije".
[kolaps]
To se može učiniti u konfiguracijskom prozoru dodavanjem novog objekta.
Svojstva parametra funkcionalnih opcija:
- Upotreba - postavlja 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šestrukim parametrima opcija funkcije.