1c 8.3 posistemio funkcinės galimybės. Prieigos valdymas: vaidmenys, teisės, profiliai, prieigos grupės, funkcinės parinktys, RLS. Duomenų sudarymo sistema
Funkcinių parinkčių mechanizmas yra viena iš kūrimo priemonių. Tai leidžia konfigūracijoje apibrėžti funkcionalumą, kuris gali būti naudojamas įgyvendinimo metu arba ne, atsižvelgiant į konkrečios organizacijos poreikius.
Mechanizmas pagrįstas dviem konfigūracijos objektais:
- Funkcinis variantas
Konfigūracijos objektus ir jų atributus galima susieti su funkcinėmis parinktimis, pridėtomis prie programos sprendimo. Pavyzdžiui, su funkcine galimybe Sandėlio apskaita galite susieti rekvizitus Sandėlis dokumentas Prekių gavimas... Tada, jei įgalinsite šią funkcinę parinktį „1C: Enterprise“ režimu, Sandėlis bus rodomas visomis dokumento formomis. Jei jį išjungsite - laukas Sandėlis nebus rodomas. Daugiau informacijos ...
- Funkcinis parinkties parametras
Su parametrais galima naudoti funkcines parinktis. Pavyzdžiui, tam tikros formos tipas gali priklausyti nuo formoje pasirinkto parametro vertės. Pavyzdžiui, pagal funkcinės parinkties parametrą Valiutos apskaita gal būt Organizacija... Tada, priklausomai nuo to, kuri organizacija pasirinkta formoje, lauke Atsiskaitymo valiuta bus paslėptas arba rodomas. Daugiau informacijos ...
Funkcinės parinktys yra metaduomenų objektas, esantis grupėje „Bendra“:
Funkcinės parinktys yra funkcinių parinkčių mechanizmo dalis, leidžianti įjungti arba išjungti tam tikrą programos sprendimo veikimą, atsižvelgiant į vartotojo poreikius, nekeičiant pačios konfigūracijos.
Pavyzdžiui, ne kiekviena organizacija gali naudoti atsargų kontrolę. Jei sandėlių apskaita nenaudojama, tikslinga pašalinti sandėlio lauką visuose dokumentuose, žinynuose ir registruose - tada mums padeda funkcinės galimybės.
Paimkime pavyzdį:
Sukurkime funkcinį variantą " Apskaita pagal sandėlius".
Saugojimas: nurodomas laukas, kuriame saugoma vertė.
Galite pasirinkti konstantą, nuorodos atributą arba informacijos registro šaltinį.
Jūs ir aš naudosime konstantą.
Sukurkime pastovų " KeepAccountingByWarehouses"ir pasirinkite jį saugyklos lauke. Ši konstanta bus atsakinga už funkcinės parinkties įjungimą ir išjungimą. Nustatykite žymimąjį laukelį" Privilegijuotas režimas gavus ". Šis žymimasis laukelis reiškia, kad funkcinės parinkties vertės bus gautos privilegijuotoje režimas:
Atnaujinama, paleidžiama „1C Enterprise“. Nustatykime konstantos vertę = Tiesa:
Dėl to mes turime:
Nustatydami konstantą = klaidinga, gauname:
Turite klausimą, ar reikia konsultanto pagalbos?
Taigi, mes sukūrėme funkcinę parinktį, kuri valdo „ReferenceLink“ tipo laukus.
Dabar pažvelkime į funkcinių parinkčių parametrų naudojimo pavyzdį.
Pridėkime naują funkcinę parinktį " Valiutos apskaita"
Sandėliavimas: Katalogas. Organizacija. Partneriai. Valiutos apskaita
Prie dokumento sudėties pridėti atributą „Prekių kainų nustatymas“ - „Valiuta“
Dokumento pavidalu procedūrose „OnCreateAtServer“ ir „OrganizationOnChange“
Pridėkime šį kodą:
Atnaujiname konfigūraciją ir ją paleidžiame.
Sukuriame dvi organizacijas ir vienai iš jų nustatome žymimąjį laukelį „Valiutos apskaita“
Ką mes galų gale gauname? Naudodamiesi funkcinės parinkties parametrais, jūs ir aš gavome parametrinį dokumento „Prekių kainų nustatymas“ lauko „Valiuta“ valdymą. Tie. „Alfa“ organizacijai bus rodomas laukas „Valiuta“, o „Beta“ - valiutos laukas.
Įsitikinkime tuo. Atidarykite dokumentą ir pabandykite pakeisti lauką „Organizacija“
Nustatant Organizacija = "Alfa", rodoma valiuta; pakeisti į „Beta“ - valiuta pašalinama
1. Prieigos teisės.
Tiesą sakant, viskas yra labai paprasta. 1C pagal numatytuosius nustatymus viskas, kas neleidžiama, yra draudžiama... Yra tik vienas subjektas, atsakingas už prieigą naudotojui bet kokias funkcijas ar duomenis. Šis subjektas vadinamas „Teisė patekti“... Ji būna vienintelė elementas, atsakingas už prieigą prie tam tikro darbo režimo, žinynų, rekvizitų ...
Platforma iš anksto nustato prieigos teisių tipų skaičių. Iš viso platforma turi dvi pagrindines prieigos teisių grupes. Bendra visai sistemai prieigos prie platformos mechanizmų teisės atsakingas už prieigą prie tam tikrų platformos darbo režimų (administravimas, išskirtinis režimas, plonas klientas, interaktyvus išorinių ataskaitų atidarymas ....). IR objekto leidimus kurie leidžia dirbti su įvairiais konfigūracijos objektais. Jų skaičius priklauso nuo konfigūracijos objekto tipo. Pavyzdžiui, kataloge yra 16 skirtingi tipai prieiga (skaityti, pridėti, keisti, ištrinti ...). Yra tik penki informacijos registro prieigos tipai. Visas šias teises galima nustatyti tik viso katalogo lygiu. Taip pat galite apriboti prieigą reikiamu lygiu. Tačiau šiuo atveju yra tik dalis teisių tipų (žinynams tai yra peržiūros ir redagavimo teisės).
Visos prieigos teisės yra susietos ir priklauso viena nuo kitos. Yra aukštesnės ir daugiau teisių žemas lygis... Negalite suteikti žemesnio lygio teisės, jei vartotojas neturi aukštesnio lygio veiksmų teisių.
Apsvarstykite prieigos prie katalogo teisės.Ši diagrama rodo, kad dauguma teisių yra daugiau specifikacijų bendrosios teisės... Jei Įstatymas1 visiškai yra diagramoje kito Įstatymo2 stačiakampio viduje, tai Įstatymas1 negali būti išduotas neišleidus Įstatymo2. Dažniausiai pasitaikanti teisė yra „Skaityti“. Jei nėra teisės skaityti, visos kitos teisės nėra prieinamos. Jei teisės „Pridėti“ nėra, tai teisės „Pridėti internete“ nustatyti negalima. Bet, teisių sistema negali būti vadinama visaverte hierarchija. Pvz., Redagavimo teisę galite suteikti tik turėdami peržiūros ir keitimo teises. Bet jūs galite duoti „View“ be „Change“ arba „Change“ be „View“.
Prieigos teisė yra mažiausias prieigos vienetas. Visa prieigos kontrolė reiškia, kad vartotojui suteikiamos tinkamos teisės. Likę objektai (vaidmenys, prieigos grupės) yra tik papildomas įrišimas, skirtas grupuoti ir patogiau išduoti prieigos teises.
2. Vaidmenys - prieigos teisių suteikimo mechanizmas
Apsvarstykite, kaip tiksliai suteikiant prieigos teises vartotojui. Kad būtų lengviau išduoti prieigos teises platformoje 1C, specialus mechanizmas „Vaidmenys“... Tai sluoksnis tarp informacijos bazės vartotojų ir prieigos teisių. Kiekvienas vaidmuo turi prieigos teisių rinkinį, kurį priskirti yra prasminga tik tuo pačiu metu. Pavyzdžiui, atliekant vaidmenį „Skaityti kontaktinę informaciją“ logiška derinti teisių rinkinius, atsakingus už susijusius katalogus Kontaktinė informacija... Dauguma paprastu būdu vaidmens nustatymas vartotojui yra atidarykite IB vartotojo kortelę konfigūracijoje ir nustatykite žymimuosius laukelius priešais vartotojui reikalingus vaidmenis... Tai universalus metodas ir tinka bet kokiai konfigūracijai. Tačiau didėjant konfigūracijų sudėtingumui ir didėjant vaidmenų skaičiui, tai užėmė gana daug laiko. Todėl dabartiniuose standartiniuose sprendimuose yra papildomas sluoksnis tarp informacijos saugumo vartotojo ir vaidmenų. Šis sluoksnis įgyvendinamas kaip posistemiai „Prieigos kontrolė“... Tai leidžia sujungti vaidmenis į didesnius objektus - „Profilius“ ir priskirti vartotojui ne atskirus vaidmenis, o profilius, kuriuose yra kelių vaidmenų rinkiniai.
Apsvarstykime prieigos teisių suteikimo vartotojams schemą, naudojamą daugelyje tipiškų konfigūracijų. Supaprastinta forma jis gali būti pavaizduotas taip. Pristatomi nauji subjektai „Prieigos profilis“ ir „Prieigos grupė“... Į kiekvieną prieigos profilį įtraukta keletas vaidmenų. Ir kiekvienam vartotojui priskiriama viena ar daugiau prieigos grupių. Be to, kiekviena prieigos grupė yra susieta su prieigos profiliu. Dėl to mes gauname galimybę vartotojui nurodyti ne tik vaidmenis, bet ir vaidmenų rinkinius, priklausomai nuo jo atliekamų funkcijų.
Techniniu požiūriu šią sistemą teisių išdavimas įgyvendinamas dalyvaujant dviem standartiniams posistemiams. „Prieigos valdymo“ posistemis naudojamas konfigūruoti prieigos grupių susiejimą su konfigūracijoje iš anksto nustatytais vaidmenimis. Posistemis „Vartotojai“ naudojamas konfigūruoti ryšius tarp IS vartotojų ir konfigūracijos prieigos grupių.
3. „Loginiai leidimai“ kaip vaidmenų susikirtimo taisyklė.
Svarbu suprasti, kad 1C atveju bendra prieigos kontrolės logika yra tokia leidimo logika... Apskritai 1C platformoje nėra mechanizmų, leidžiančių uždrausti prieigą... Yra tik mechanizmai suteikiant prieigą... Prieiga prie visų duomenų pagal numatytuosius nustatymus yra uždrausta ir prieigos nustatymas yra suteikti kiekvienam vartotojui jam reikalingas teises... Tai reiškia, kad jei vartotojo vaidmeniui suteikiama teisė peržiūrėti dokumentus „Prekių pardavimas“, tada niekaip negali būti atimta ši teisė kitus vaidmenis ar bet kokias kitas platformas ir konfigūravimo mechanizmus. Iš pradžių galite suteikti ne visišką prieigą prie katalogo, bet filtruoti duomenis, kuriems suteikiame prieigą, naudodami RLS. Bet jei prieiga jau buvo suteikta, tai nebeįmanoma atimti kitų vaidmenų.
Štai kodėl, apribojant vartotojo prieigą prie katalogo pagal vaidmenis, labai svarbu užtikrinti, kad vartotojui nebūtų priskirtas kitas to paties katalogo vaidmuo. Priešingu atveju pirmasis vaidmuo suteiks reikiamą prieigą, ko antrasis negali paneigti.
Platforma turi galimybę suteikti vartotojui papildomų teisių vienos operacijos metu. Ši funkcija vadinama privilegijuotu režimu. Tai leidžia vartotojui atlikti veiksmus su duomenimis, kurie jam nepasiekiami. Tačiau platformoje nėra galimybės net laikinai sumažinti vartotojo teisių.
4. Netiesioginė prieigos kontrolė.
Yra atskiri mechanizmai, kurie, nors ir nėra tiesiogiai skirti prieigai kontroliuoti, yra netiesiogiai paveikti ir gali būti naudojami papildomiems apribojimams. Apsvarstykime jų pagrindines savybes.
4.1. Funkcinės parinktys.
Prieigos kontrolės sistema kartais vadinama mechanizmu funkciniai variantai... Tai nėra visiškai tiesa, nes funkcinės parinktys jokiu būdu neturi įtakos prieigai prie duomenų. Tai grynai sąsajos mechanizmas, skirtas supaprastinti vartotojo sąsają. Jis pasirodė 8.2 platformoje dėl sudėtingų konfigūracijos funkcijų. Sukurtos funkcinės parinktys paslėpti nuo sąsajos funkcionalumą, kuris nenaudojamas šioje konkrečioje įmonėje ar konkrečiame vartotojo. Mechanizmas veikia tik duomenų rodymą. Komandos išnyksta iš sąsajos, o rekvizitai, išjungti funkcinėmis parinktimis, yra paslėpti formose. Kurioje vartotojas turi prieigą prie visų šių komandų ir detalių... Jis gali veikti be jokių problemų su paslėptais duomenimis programiškai, naudojant apdorojimą.
Daugiau apie darbą su funkcinėmis ITS parinktimis galite perskaityti
4.2. RLS (įrašų lygio saugumas)
Visi aukščiau išvardyti mechanizmai turi tiesioginę prieigą prie objektų kaip visumos. Į žinynus, dokumentus, žinynų rekvizitus. Prieigos teisės turi įtakos prieigai prie objektų, funkcinėms objektų rodymo sąsajoje parinktims. Dažnai kyla užduotis leisti vartotojui pasiekti žinynuose ar dokumente esančius duomenis. Tačiau ne visi duomenys, o tik dalis jų. Pavyzdžiui, leiskite tik vienai organizacijai pasiekti įgyvendinimo dokumentus.
Norėdami sukonfigūruoti šį leidimą, turite papildomas mechanizmas RLS (įrašų lygio saugumas)... Kaip rodo pavadinimas, šis prieigos kontrolės mechanizmas yra konkrečių lentelių įrašų lygyje. Jei prieigos teisės suteikia prieigą prie lentelių apskritai (žinynai) arba lentelių stulpelių (atributų), tada RLS apibrėžia konkrečias lentelių eilutes (įrašus), su kuriomis vartotojui leidžiama dirbti. Tai leidžia apibrėžti vartotojui prieinamus duomenis.
Analizuodami šį mechanizmą, visada turėtumėte tai prisiminti RLS nėra neigimo mechanizmas... Jis yra mechanizmas filtruoja prieigos problemą... Tie. RLS neturi įtakos vartotojo teisėms, tai yra filtras, ribojantis teisių išdavimą. RLS turi įtakos tik tam tikram vaidmens ir prieigos teisės santykiui, kuriame jis nurodytas. Ir tai neturi įtakos kitų vaidmenų suteiktiems leidimams. Pavyzdžiui, jei vienam vaidmeniui leidžiama prieiga prie dokumentų tik organizacijai1, o kitam vaidmeniui - prieiga prie dokumentų, skirtų sandėliui1, vartotojas turės prieigą prie visų dokumentų, kuriuose nurodyta organizacija1 arba sandėlis1. Todėl, jei vartotojui priskirti keli vaidmenys, tada kiekviename vaidmenyje turi būti įdiegtas filtras naudojant RLS abiejose srityse (pagal organizaciją ir sandėlį). Įprastuose sprendimuose ši užduotis paprastai išsprendžiama sukuriant vieną vaidmenį, kuriame registruojami visi galimi RLS filtrai. Tada šis vaidmuo priskiriamas visiems vartotojams, dirbantiems su šiais katalogais. Jis taip pat kontroliuojamas taip, kad vartotojas negalėtų naudotis kitais vaidmenimis, turinčiais teisę susipažinti su ribotais dokumentais.
Taip pat verta paminėti, kad RLS filtrai gali būti taikomi ne visų tipų duomenų prieigai, o tik aukščiausio lygio prieigos tipai... Pavyzdžiui, katalogams iš galimų šešiolikos prieigos tipų RLS filtrai gali būti taikomi tik keturiems pagrindiniams: skaitymui, keitimui, pridėjimui ir trynimui. Tai reiškia, kad mes, pavyzdžiui, negalime tuo pačiu metu suteikti vartotojui teisės „Keisti“ be filtro, leidžiančio programiškai dirbti su bet kokiais dokumentais, ir „Redaguoti“ teisės su RLS filtru pagal organizaciją interaktyviam darbui. Jei norime, kad vartotojas galėtų redaguoti dokumentus naudodami RLS filtrą, turime taikyti bendrą filtrą aukščiausiame lygyje „Keisti“ arba „Skaityti“.
Atsižvelgiant į bendrą mechanizmų sudėtingumą, paprastai yra gana sunku išsiaiškinti, kas tiksliai yra prieinama konkrečiam tipinės konfigūracijos vartotojui. Norėdami patikrinti suteiktas teises tipinėse konfigūracijose, yra labai patogi ataskaita, kuri taip vadinama. „Prieigos teisės“... Jis analizuoja visas naudotojui suteiktas teises ir, atsižvelgdamas į RLS filtrus, pateikia suvestinį visų prieigos grupių suteiktų teisių sąrašą.
4.3. Duomenų atskyrimas.
Kitas mechanizmas, turintis įtakos duomenims, yra dalijimasis duomenimis... Šis mechanizmas skirtas išlaikyti keletą nepriklausomų bazių vienoje fizinėje duomenų bazėje, turinčioje bendrą konfigūraciją ir bendras informacines knygas. Kai kuriais labai retais atvejais šis mechanizmas gali būti laikomas prieigos kontrole. Įjungus, kiekvienas vartotojas gali dirbti tik vienoje iš savo nepriklausomų bazių, bet tuo pačiu metu naudoti bendrus duomenis.
Bendrąja prasme šis mechanizmas taip pat gali būti laikomas duomenų filtru ir ypatingu RLS diegimo atveju. Skirtingai nuo RLS, atskyrimas yra daug standesnis mechanizmas. Dėl šio standumo kūrėjai turi techninių galimybių naudoti papildomus indeksus, kad būtų galima filtruoti be lėtėjimo, būdingo RLS.
Tiesą sakant RLS yra tik papildomi sprendimai automatiškai įtraukiama į kiekvieną duomenų bazės užklausą. Dalijant duomenis pridedamas separatorius visoms suskirstytoms lentelėms ir jų indeksams, įskaitant grupes. Duomenys sugrupuoti pagal separatorių, t.y. fiziškai perskirstytas diskeį atskiras grupes pagal kiekvieną skiriamąją reikšmę. Dėl to kiekvienas vartotojas dirba tik su savo duomenimis, o serveriui nereikia fiziškai peržiūrėti visos lentelės su kiekviena užklausa. Pakanka peržiūrėti tik dabartinės dalies duomenų sritį.
Tačiau būtent dėl šio fizinio duomenų perskirstymo dirbant visaverčiu vartotoju, neturinčiu filtro pagal atskyrimo reikšmes, visos užklausos vykdomos labai, labai lėtai. Visiškas indeksų naudojimas neįmanomas be separatoriaus vertės, todėl duomenų kiekis, fiziškai nuskaitytas iš disko ir apdorojamas su kiekviena užklausa, gali didėti iš eilės... Atitinkamai, padalijimas yra prasmingas tik tuo atveju, jei visi vartotojai, nuolat dirbantys duomenų bazėje, dirbs tik savo teritorijoje.
4.4. Programos kodas.
Galbūt universaliausias būdas nustatyti papildomus apribojimus yra programos kodas... Jie gali paveikti bet kokius platformos mechanizmus. Pavyzdžiui, norėdamas apriboti prieigą prie dokumentų, kūrėjas gali pridėti filtrą prie dokumentų sąrašo formos, prie atrankos formos ir gali programiškai patikrinti galimybę peržiūrėti dokumento duomenis atidarant tam tikrą dokumento formą. Rinkdamasis duomenis kūrėjas savo ataskaitose gali taikyti filtrą.
Tačiau programos kodas nėra jokio būdo apriboti bendrąsias konfigūracijos teises... Daugiausia, ką kūrėjas gali padaryti, yra apribojimų įtraukimas į konkrečius individualius duomenų paieškos mechanizmus. Dėl to, kad 1C naudoja objekto modelį darbui su duomenimis, programos kodas gali būti garantuotas, kad apsaugotų duomenis nuo pakeitimo pridedant reikiamus patikrinimus prie objekto modulio. Tačiau kūrėjas negali visiškai garantuoti, kad vartotojas tikrai negalės gauti informacijos apie kitų žmonių įgyvendinimo dokumentus kitomis ataskaitomis ar apdorojimu.
Šis principas naudojamas, pvz. Prisijungdamas prie konfigūracijos, plėtinys prideda pasirinktinius apribojimus ir patikrina visas nuorodas ir dokumentus. Jis filtruoja duomenis, kurie rodomi vartotojams sąrašuose, tikrina prieigą, kai jie peržiūri ar keičia duomenis. Užtikrina, kad draudžiamų duomenų negalima pakeisti. Tačiau jis negali filtruoti duomenų ataskaitose ar užklausose.
Visada yra galimybių gauti draudžiamus duomenis pagal užklausą, savo apdorojimą ar ataskaitą. Nebent labai griežtai apriboti vartotojo naudojamų konfigūracijos funkcijų sąrašą ir prie kiekvieno naudotojui leidžiamo mechanizmo (formos, apdorojimo, ataskaitos, užklausos) pridėti atskirą filtrą.
4.5. Variantų palyginimas.
Pabandykime trumpai palyginti svarstomas papildomo duomenų apribojimo galimybes.
Kaip įjungti |
Kas nutiks šiuo atveju |
Funkcinės parinktys- sąsajos mechanizmas funkcionalumui slėpti | |
1. Pridėkite funkcinės parinkties saugojimo vietą: konstantą, katalogo atributą arba informacijos registro šaltinį. |
1. Visi objektai, įtraukti į funkcinę parinktį, nebebus rodomi komandų sąsajoje. |
RLS (įrašų lygio saugumas)- papildomi vaidmens leidžiamų leidimų filtrai | |
1. Užregistruokite RLS filtrus kiekviename naudotojo vaidmenyje kiekvienai teisei, kurią reikia apriboti. Pastaba: Įmonės režimu nereikia atlikti jokių veiksmų. Filtrai bus pritaikyti automatiškai. |
1. Konfigūruotas filtras bus pridėtas prie kiekvienos IB užklausos. |
Dalijimasis duomenimis- išlaikyti vienoje fizinėje bazėje kelis nepriklausomus | |
1. Prie konfigūracijos pridėkite bendrą atributą, kuris nustato bendrinamų duomenų sudėtį. 2. Pridedami du seanso parametrai: naudojimo vėliava ir dabartinė duomenų padalijimo vertė. 3. Pridėkite programos kodą, kad būtų galima skaidyti duomenis, ir įveskite dabartinę skiriamąją reikšmę. |
1. Iš karto pridėjus duomenų skaidymo funkciją prie konfigūracijos, lentelės, kurioms buvo pridėta skaidymo funkcija, bus fiziškai atstatytos.
2. Įgalinus atskyrimą.
|
Programos kodas- bet kokie papildomi taškų apribojimai | |
1. Pridėkite reikiamų apribojimų nustatymo kodą konfigūracijoje. |
1. Darys tiksliai tai, kas parašyta. Pastaba: kodas neturi įtakos visai konfigūracijai, o tik konkrečiam mechanizmui, kuriam priskirtas veiksmas |
5. Rezultatai.
Kiekvienas ribų nustatymo metodas turi savo privalumų ir trūkumų. Technologijų požiūriu teisingiausias būdas yra kompetentingas padalijimas į vaidmenis. Patikimiausias būdas filtruoti turimus duomenis yra naudoti RLS. Mechanizmas skirtas šiai užduočiai. Taškų apribojimus lengviausia įvykdyti naudojant kodą. Funkcinės galimybės ir duomenų atskyrimas yra gana specifiniai mechanizmai, kurie nėra skirti prieigos apribojimui. Nors kai kuriais atvejais jie gali būti naudojami šiam tikslui.
Beveik visi tipiniai 1C: Enterprise 8.x platformos sprendimai naudoja funkcinių parinkčių mechanizmą. Tai leidžia valdyti konfigūracijos funkcijas blokuose.
Pvz., Parinktis „Naudoti vidinius užsakymus“ (žr. Ekrano kopiją dešinėje) leidžia šį dokumentą vartotojui naudoti „1C: Enterprise“ režimu, taip pat apima atskiras su šia funkcija susietas algoritmų šakas. .
Šiandien straipsnyje apžvelgsime, kaip veikia funkcinės parinktys, kaip jas sukonfigūruoti, ir nedidelį jų naudojimo bandymo konfigūracijoje pavyzdį. Pradėkime nuo to, kaip jie veikia.
Veikimo principas
Kaip minėta aukščiau, funkcinė parinktis leidžia įjungti / išjungti susijusią konfigūracijos funkciją. Apsvarstykite veiksmų seką kuriant ir konfigūruojant šį konfigūracijos objektą.
Konfigūracijos šakoje „Bendra-> Funkcinės parinktys“ galime sukurti naują objektą arba pamatyti jau sukurtų parinkčių ypatybes. Bandymo konfigūracijoje sukurkite funkcinę parinktį „EnableImportance“. Pačioje pradžioje, kai objektas dar nebuvo sukonfigūruotas, jo ypatybių sąrašo langas atrodys taip:
Ypatybės Pavadinimas ir Sinonimas turi standartinį tikslą. Ypač įdomūs yra „Saugojimo“ ir „Sudėties“ nustatymai.
Lauke „Saugykla“ pasirenkamas konfigūracijos objektas, iš kurio funkcinė parinktis gaus savo vertę. Paprastai šiems tikslams naudojamos loginės konstantos. Pagal konstantos vertę platforma nustatys, ar susijusi funkcija yra įtraukta, ar ne.
Sąrankos parinktys, susietos su funkcine parinktimi, yra sukonfigūruotos skirtuke Turinys. Aukščiau esančioje ekrano kopijoje rodomas objektų, kurie turi būti įtraukti į jo sudėtį, sąrašas.
Jei vienas konfigūracijos objektas įtrauktas į kelias funkcines parinktis, jis bus naudojamas taikomame sprendime, jei bus įtrauktas bent vienas iš jų.
Parinktis „Privilegijuotas atsiskaitymo režimas“ leidžia išjungti prieigos teisių tikrinimą, kai gaunama funkcinės parinkties vertė, o tai teigiamai paveiks našumą (nereikalingos prieigos teisių tikrinimo operacijos bus neįtrauktos) ir sumažins tolesnio kūrimo sudėtingumą (jums nereikia konfigūruoti objekto, kuriame saugoma funkcinės parinkties vertė, teisių).
Naudojimo pavyzdys
Atlikdami bandomąją konfigūraciją, sukursime sąrašą „Svarba“ ir konstantą
„Įtraukti svarbą“. Sukurti objektai rodomi šioje ekrano kopijoje.
Konstanta skirta funkcinės parinkties vertei išsaugoti. Sąrašas veiks kaip atskaitos kintamojo vertė bandymo dokumente, kurio prieinamumą lems funkcinė parinktis.
- "Komentaras “su tipu„ String “.
- Tipo EnumerationRef.Importance svarba.
Prie funkcinės parinkties pridėkite dokumento atributą „Svarba“ ir tada apsvarstykite platformos elgesį vartotojo režimu.
Paleidę programą „1C: Enterprise“ režimu, atidarykite bandomąjį dokumentą. Formoje nematysime atributo „Svarba“, nes dar neįgalinome funkcinės parinkties.
Jei norite įgalinti atributo „Svarba“ naudojimą, nustatykite konstanta „IncludeImportance“ reikšmę TRUE. Tada forma pasikeis taip:
Funkcinės parinktys tinka beveik visiems konfigūracijos objektams, išskyrus kai kuriuos filialus „Bendra“, kurie daugiausia atlieka aptarnavimo funkcijas. Pavyzdžiui, jūs negalite įtraukti kitų funkcinių parinkčių į funkcinę parinktį (ir tai neturi daug prasmės).
Apsvarstykime keletą įdomių šio konfigūracijos objekto veikimo aspektų:
1. Funkcinių parinkčių nustatymas praktiškai neturi įtakos platformos generuojamoms SQL užklausoms.
Pavyzdžiui, atidarius dokumentą su išjungta funkcine galimybe, platforma bet kuriuo atveju gauna šio atributo vertę užklausoje. Šioje ekrano kopijoje rodomos SQL užklausos, sukurtos įjungus ir išjungus parinktį.
2. Formos elementas „Svarba“ formoje, neatsižvelgiant į funkcinės parinkties vertę, ypatybių „Matomumas“ ir „Prieinamumas“ reikšmės visada yra lygios TRUE.
Iš tiesų, tiek kuriant formą serveryje, tiek atidarant formą, tiek tolesnio darbo su ja metu platformos ypatybės „Matomumas“ ir „Prieinamumas“ automatiškai nenustato FALSE. Tikriausiai „1C: Enterprise 8.x“ tai daro „užkulisiuose“.
3. Norėdami gauti funkcinės parinkties vertę, platforma sugeneruoja SQL užklausą DBVS pagal saugojimo objektą, t. į konstantą. Viename iš ankstesnių straipsnių mes jau kalbėjome apie SQL užklausų kūrimą pagal konstantas ir kaip jos saugomos duomenų bazėje.
Mūsų pavyzdyje platforma sukuria šią SQL užklausą:
Kalbant apie funkcinio pasirinkimo vertės gavimo momentą, platforma vadovaujasi tokiu principu : pirmasis funkcinės parinkties vertės gavimas įvyksta pasiekiant objektą / atributą, kuris yra jo dalis. Ateityje platforma naudoja talpykloje saugomą vertę, kol bus pakeista šią vertę saugančio objekto vertė (mūsų pavyzdyje - „EnableImportance“ konstantos) arba iš naujo paleista vartotojo sesija. Funkcinės parinkties vertė išsaugoma talpykloje atskiroje sesijoje.
Visa tai, kas išdėstyta pirmiau, buvo patikrinta eksperimentiškai. Viskas, ką naudojau eksperimentams, yra bandymo konfigūracijoje (nuoroda straipsnio pabaigoje), išskyrus.
Išvestis
Funkcinės parinktys yra neatskiriama beveik bet kurio 1C: Enterprise 8.x platforma paremto gamybos sprendimo dalis. Šio mechanizmo dėka galite sukurti konfigūracijas su blokine funkcine struktūra, kurią galima lengvai įjungti / išjungti nustatant programą. Šiuo atveju mechanizmo galimybes galima išplėsti naudojant funkcinių parinkčių parametrus, tačiau tai jau kito straipsnio tema.
Norėdami turėti patirties su platforma, retai turite naudoti funkcines parinktis, nes klientas tiksliai žino, ko jam reikia. Ir labai retai sukuriami kažkokie universalūs mechanizmai, už kuriuos turėsite sumokėti papildomai, be to, tai, kad jie bus naudojami, yra labai retai, kai baigiami rengti standartiniai sprendimai arba jie diegiami konkrečioje įmonėje.
Atsisiuntimai:
1c objektas „Funkcinės parinktys“ - sukurta pabrėžti funkcionalumą taikomame sprendime, kurį galima įjungti (išjungti) diegimo metu nekeičiant jo (kartu su posistemėmis jie sudaro 1C plono kliento sąsają). Jie yra funkcinių galimybių mechanizmo dalis.
Funkcinių parinkčių mechanizmas apima du metaduomenų objektus:
- Funkcinis pasirinkimas;
- Funkciniai parinkčių parametrai.
Daugiau informacijos
Funkcinis variantas yra metaduomenų objektas, galintis tiesiogiai paveikti programos sąsajos sudėtį (jei funkcinė parinktis išsaugo savo vertę „Boolean“ atribute). Naudodami tokio tipo objektus galite paslėpti elementus, kurių funkcijos nėra prieinamos. Pavyzdžiui, valiutos apskaitos parinktis gali paslėpti ataskaitose valiutas, lauką Valiuta ir stulpelį Valiutos suma.
Funkcinės parinkties vertės šaltinis yra metaduomenų objektas, pasirinktas kaip saugykla, pavyzdžiui, jis gali būti.
Jei funkcinės parinkties vertė yra saugoma žinyno knygos atribute ar išteklyje, reikia papildomos informacijos, nurodančios, kaip pasirinkti parinkties vertę. Tam numatytas atskiras metaduomenų objektas - Funkcinių parinkčių parametrai.
Galime sakyti, kad funkcinių variantų parametrai yra funkcinių variantų verčių erdvės koordinačių ašys. Be to, vienas funkcinių parinkčių parametras gali nustatyti jo „savo“ koordinačių ašies vertę vienu metu įvairioms funkcinėms parinktims.
[sutraukti]
Funkcinės parinktys gali turėti įtakos:
- prie vartotojo sąsajos:
- pasaulinis;
- rekvizitai (įskaitant formos tipo rekvizitų stulpelius Vertybių lentelė arba vertybių medis);
- formuoti komandas;
- ataskaitoms, įgyvendintoms naudojant duomenų sudarymo sistemą;
- į įterptąja kalba parašytus algoritmus - iš įterptosios kalbos galima gauti funkcinių parinkčių reikšmes ir jas naudoti įvairiomis sąlygomis, pavyzdžiui, sumažinti skaičiavimo apimtį (žr., pvz.).
DĖMESIO! Jei kliento programa veikia su failų duomenų baze per žiniatinklio serverį, pakeitus funkcinę parinktį, vartotojo sąsaja pasikeis tik iš naujo paleidus žiniatinklio serverį (iš naujo paleidus kliento programą vartotojo sąsaja nepasikeis).
1C funkcinių parinkčių savybės
- Saugykla yra laukas, kuriame reikia pasirinkti loginio tipo objektą. Paprastai naudojamos konstantos.
- gavus - vėliava yra atsakinga už galimybę gauti funkcinės parinkties vertę privilegijuotu režimu.
- Kompozicija - objektų ir objektų atributų sąrašas, kurių matomumas įjungiamas / išjungiamas, kai funkcinė parinktis išjungiama / išjungiama (bus valdoma naudojant valdomą formą).
Pvz., Priklausomai nuo konkretaus įgyvendinimo sąlygų, galite numatyti, kad sandėliai sandėliuoja prekes, kad registruojant prekių gavimo dokumentus, laukas Sandėlis nebūtų rodomas dokumento formoje.
Funkcinių parinkčių 1C naudojimo ypatybės:
- Funkcinės parinktys gali būti savavališkos (nebūtinai loginės).
- Pridėdami naują konstantą, kad galėtumėte naudoti funkcinę parinktį, būtinai įtraukite ją į atitinkamą posistemį ir priskirkite jai teises.
- Darbas su funkcinėmis parinktimis galimas naudojant integruotą kalbą, kurios dėka kūrėjas gali sukurti savo algoritmus funkcinių parinkčių vertėms.
- Jei funkcinė parinktis yra išjungta, komandų sąsajos komanda bus pašalinta iš komandų sąsajos:
- atributas, kuris yra komandos parametras;
- komandos parametro tipas (jei komandos parametro tipas yra sudėtinis, komanda tampa nepasiekiama, kai visų tipų parametrai yra išjungti).
DĖMESIO! Funkcinės parinktys ir jų parametrai neturi įtakos duomenų bazės sudėčiai: visos lentelės ir laukai yra duomenų bazėje, nepriklausomai nuo funkcinių parinkčių būklės.
Funkcinių parinkčių įtaka formos atributams ir komandoms:
- valdomos formos tipas<Вид>Objektas ( ReferenceObject, DocumentObject ir kt.) Bus išjungtas, jei atitinkamas objektas bus išjungtas funkcine parinktimi. Analizuojamos tik tos funkcinės galimybės, kurios neturi parametrų.
- Pagrindiniai valdomos formos tipo rekvizitai Dinaminis sąrašas bus išjungtas, jei funkcinė parinktis išjungs konfigūracijos objektą, kuris nurodytas kaip pagrindinė dinaminio sąrašo lentelė. Analizuojamos tik tos funkcinės galimybės, kurios neturi parametrų.
- Nuorodos tipo formos atributas yra išjungtas, jei konfigūracijos objektas, kuris sudaro šį tipą, yra išjungtas dėl funkcinės parinkties. Formos sudėtinis tipo atributas yra išjungtas, jei funkcinės parinktys išjungia visų sudedamųjų dalių tipus.
- Formos lentelė bus išjungta, jei joje bus pateikti duomenys iš formos atributo, išjungto dėl funkcinės parinkties.
- Tipo pasirinkimo dialogo lange nėra tipų (pavyzdžiui, įvesties laukams, susietiems su sudėtingais tipo atributais), jei funkcinė parinktis išjungia šiuos tipus sudarančius konfigūracijos objektus. Informacija apie tipus, išjungtus pagal funkcines parinktis, yra saugoma talpykloje kliento pusėje ir pašalinama po 20 minučių arba metodo iškvietimo metu UpdateInterface ().
DĖMESIO! Skirtingai nuo komandų sąsajos, funkcinių parinkčių parametrų reikšmės nustatomos tik konkrečiam formos egzemplioriui.
Funkcinių parinkčių parametro kūrimas
Funkcinis parinkties parametras sukuriamas naudojant 1C konfigūracijos objektą „Funkcinių parinkčių parametrai“.
[sutraukti]
Tai galima padaryti konfigūracijos lange, pridedant naują objektą.
Funkcinių parinkčių parametrų savybės:
- Naudojimas - nustato objektų rinkinį, kurio vertės lems, kaip turėtų būti pasirinkta funkcinės parinkties vertė. Galimų objektų sąraše yra katalogai ir informacijos registro matmenys. Kiekvienam šio sąrašo funkcinių parinkčių parametrui galite pasirinkti vieną katalogą (iš viso katalogų sąrašo) ir vieną kiekvieno informacijos registro aspektą.
DĖMESIO! Negalite naudoti to paties metaduomenų objekto keliuose funkcinių parinkčių parametruose.