Mga pautang sa sasakyan. Stock. Pera. Mortgage. Mga kredito. milyon. Mga pangunahing kaalaman. Mga pamumuhunan

Kumuha ng functional na opsyon. mga opsyon sa pagganap. Prinsipyo ng operasyon at halimbawa ng paggamit. Paglikha ng Parameter ng Mga Pagpipilian sa Pag-andar

Sa paglabas ng platform ng 1C:Enterprise 8.2, isang bagong bagay ang lumitaw sa puno ng pagsasaayos - "Mga functional na opsyon". Aktibo itong ginagamit sa lahat ng tipikal na configuration batay sa mga pinamamahalaang form, at nagsisilbing pasimplehin ang proseso ng pagpapakita. mga indibidwal na detalye, mga bagay sa interface. Halimbawa, sa iyong configuration mayroong isang module para sa pakikipagpalitan sa mga panlabas na serbisyo sa web. Gumagamit ang modyul na ito ng ilang detalye sa mga dokumento, rehistro at indibidwal na bahagi sa mga subsystem. Ang module ay opsyonal at hindi kinakailangan ng bawat kumpanya. Ito ay lohikal, dahil hindi lahat ay nangangailangan ng module, kung gayon hindi rin palaging kinakailangan na ipakita ang lahat ng mga elemento / patlang na nauugnay dito.

Sa mas lumang mga bersyon ng platform, ang paglutas ng mga naturang problema ay nangangailangan ng pagsusulat ng karagdagang code na kailangang tawagan sa lahat ng umaasang seksyon. Halimbawa, kung kailangan naming itago ang ilang partikular na detalye ng form (depende sa halaga ng isang setting), kailangan naming tawagan ang naaangkop na code kapag binubuksan ang form. Ito ay hindi masyadong maginhawa at sa karamihan ng mga kaso ang mga developer ay sumuko sa mga ganoong bagay.

Buweno, kung nais mong itago lamang ang mga patlang sa anyo ng mga dokumento, ngunit maaari pa rin kaming magkaroon ng mga anyo ng mga rehistro kung saan posible rin ang pakikipag-ugnayan ng gumagamit. Ang pagsulat ng isang generic na function ng kontrol sa display ay medyo mahirap at mangangailangan ng dagdag na oras, na hindi kailanman sapat.

Ang mga opsyon sa pag-andar ay idinisenyo upang malutas ito at maraming iba pang mga paghihirap na nauugnay sa pagpapakita ng mga elemento ng interface / komposisyon ng mga magagamit na bagay sa interface ng gumagamit. Sa tala na ito, hindi ko isasaalang-alang ang mga halimbawa ng paggamit ng pangunahing layunin ng mga opsyon sa pag-andar, ngunit bibigyan ng pansin ang kanilang paggamit sa hindi gaanong karaniwang paraan. Marahil ito ay pamilyar sa maraming mga advanced na developer, ngunit dumating ako sa pamamaraang ito nang hindi sinasadya. Mas tiyak, ito ay inspirasyon ng pagsasagawa ng programming sa JavaScript.

Case #1: functional na opsyon bilang isang wrapper sa iba pang mga bagay

Ang unang hindi karaniwang tampok ng mga functional na opsyon ay ang kakayahang lumikha ng mga wrapper. Isaalang-alang ang pinakasimpleng halimbawa - mga constant. Halimbawa, nagdagdag ka ng bagong constant sa isang configuration na may malaking bilang ng mga tungkulin ng user. Upang ma-access ng mga user ang value ng constant, kailangan mong itakda ang mga kaukulang tungkulin upang magbasa ng mga pahintulot. Kung hindi nakatakda ang mga karapatan, hindi makukuha ng mga user ang halaga nito. Kung maraming mga tungkulin at hindi ito minana mula sa batayang tungkulin, kakailanganin mong gumugol ng oras sa pagsuri sa naaangkop na mga kahon.

Maaaring malutas ng functional na opsyon ang problemang ito nang mas elegante. Ang ideya ay ang mga sumusunod: lumikha kami ng isang pare-pareho (halimbawa, ). Hindi kami nagtatalaga ng mga karapatan dito. Gumagawa kami ng functional na opsyon na may parehong pangalan at tinukoy ito sa property "Imbakan" tukuyin ang isang pare-pareho "Kakayahang Mag-save ng Data". Naglagay din kami ng bandila "Privileged Mode on Receive".

Iyon lang, ngayon sa anumang lugar sa code kung saan nais mong sumangguni sa isang pare-pareho, sumulat kami ng ganito:

Dahil itinakda namin ang opsyon sa privileged mode, walang karagdagang karapatan ang kailangang tukuyin para sa constant. Siyempre, hindi kinakailangan na ilapat ang pamamaraan na ito sa lahat ng mga kaso ng naiisip at hindi maiisip na mga sitwasyon. Tandaan, ang isang karampatang pagsasaayos ng mga karapatan ay ang susi sa kapayapaan ng isip. Gamitin lamang ang trick kung talagang kinakailangan.

Kaso numero 2. Karagdagang antas ng abstraction

Hindi ko alam kung paano maayos na tawagan ang pamamaraang ito, ngunit sa palagay ko ito ay eksaktong katulad nito. Isaalang-alang ang nakaraang halimbawa. Mayroon pa rin kaming parehong pare-pareho ang "Kakayahang mag-save ng data". Nakikipagtulungan kami dito gamit ang functional na opsyon ng parehong pangalan bilang isang wrapper.

Ngayon isipin na gusto naming alisin ang pare-pareho at lumipat sa paggamit ng isang reference na libro. Ang karaniwang senaryo para sa paglutas ng ganoong problema (kung gagamit lang tayo ng constant) ay ang magpatakbo ng pandaigdigang tool sa paghahanap upang makahanap ng reference sa constant. Hayaan akong ipaalala sa iyo na kung hindi kami gagamit ng functional na opsyon bilang isang wrapper, dapat kaming sumangguni sa pare-parehong tulad nito:

Constants.DataSaveAbility.Get();

Nahanap namin ang lahat ng mga tawag at pinapalitan ito ng landas patungo sa bagong storage object. Sumang-ayon, medyo hindi maginhawa. Kung ginamit namin ang nakaraang kaso (gamit ang isang functional na opsyon bilang isang wrapper), pagkatapos ay upang "ilipat" kailangan lang naming pumunta sa mga katangian ng functional na opsyon at baguhin ang ari-arian "Imbakan". Halimbawa, ilagay doon "Direktoryo" o "Rehistro ng Impormasyon". Walang mga larong may pandaigdigang paghahanap ang kinakailangan. Ang code para sa pag-access sa halaga ng isang pare-pareho sa pamamagitan ng isang function na opsyon ay mananatiling pareho:

GetFunctionOption("DataSavePossibility");

Ang Function Options ay isang metadata object na matatagpuan sa pangkat na "General":

Ang mga functional na opsyon ay bahagi ng mekanismo ng mga functional na opsyon na nagbibigay-daan sa iyong paganahin o huwag paganahin ang ilang functionality sa application solution, depende sa mga pangangailangan ng user, nang hindi binabago ang mismong configuration.
Halimbawa, hindi lahat ng organisasyon ay maaaring gumamit ng kontrol sa imbentaryo. Kung hindi ginagamit ang warehouse accounting, makatuwirang tanggalin ang field ng warehouse sa lahat ng mga dokumento, direktoryo at mga rehistro - pagkatapos ay tumulong sa amin ang mga functional na opsyon.

Tingnan natin ang isang halimbawa:

Gumawa tayo ng functional na opsyon " Warehouse Accounting".
Imbakan: ang field na nag-iimbak ng halaga ay tinukoy.
Maaari kang pumili ng isang pare-pareho, isang katangian ng direktoryo, o isang mapagkukunan ng pagpaparehistro ng impormasyon.
Gagamit kami ng isang pare-pareho.

Gumawa tayo ng pare-pareho " Panatilihin ang AccountingSa Mga Warehouse" at piliin ito sa field ng imbakan. Ang constant na ito ay magiging responsable para sa pagpapagana at hindi pagpapagana ng functional na opsyon. Itakda ang checkbox na "Privileged mode kapag tumatanggap". Ang checkbox na ito ay nangangahulugan na ang mga value ng functional na opsyon ay matatanggap sa privileged mode :

Nag-a-update kami, naglulunsad ng 1C Enterprise. Itakda ang halaga ng pare-pareho = True:

Bilang resulta, mayroon kaming:

Kapag nagtatakda ng pare-pareho = False, nakukuha natin ang:

May tanong ka ba, kailangan mo ba ng tulong ng consultant?

Kaya, gumawa kami ng functional na opsyon na namamahala sa mga field ng DirectoryLink.Warehouse type

Tingnan natin ngayon ang isang halimbawa ng paggamit ng mga parameter ng mga opsyon sa function.
Magdagdag tayo ng bagong functional na opsyon " Accounting ng pera"
Imbakan: Directory.Organization.Props.Currency Accounting


Idagdag natin sa komposisyon ang mga detalye ng dokumentong "Itakda ang mga presyo ng item" - "Currency"


Sa anyo ng isang Dokumento sa mga pamamaraan na "On CreationAtServer" at "OrganizationOnChange"
Idagdag natin ang sumusunod na code:

I-update ang configuration at patakbuhin ito.
Lumilikha kami ng dalawang Organisasyon at para sa isa sa kanila ay nilagyan namin ng check ang kahon na "Currency accounting"

Ano ang makukuha natin bilang resulta? Bilang resulta ng paggamit ng mga parameter ng functional na opsyon, nakatanggap ka at ako ng parametric na kontrol ng field na "Currency" sa dokumentong "Itakda ang mga presyo ng item." Yung. para sa organisasyong Alpha, ipapakita ang field na Currency, at para sa organisasyong Beta, hindi ipapakita ang field na Currency.
Siguraduhin natin ito. Buksan ang dokumento at subukang baguhin ang field na "Organisasyon".
Kapag nagtatakda ng org="alpha", ang pera ay ipinapakita; baguhin sa "Beta" - aalisin ang currency



1. Mga karapatan sa pag-access.

Sa katunayan, ang lahat ay napaka-simple. Sa 1C bilang default lahat ng bawal ay ipinagbabawal. meron isang entity lamang na responsable para sa pag-access user sa anumang functionality o data. Ang entity na ito ay tinatawag na "Karapatan sa pag-access". Siya ay Ang nag-iisang isang elemento na responsable para sa pag-access sa isang partikular na mode ng operasyon, direktoryo, katangian....

Ang bilang ng mga uri ng mga karapatan sa pag-access ay paunang natukoy ng platform. Ang buong platform ay may dalawang pangunahing grupo ng mga karapatan sa pag-access. Karaniwan sa buong sistema mga karapatan sa pag-access sa mga mekanismo ng platform, responsable para sa pag-access sa ilang mga operating mode ng platform (Administration, Exclusive mode, Thin client, Interactive na pagbubukas ng mga panlabas na ulat....). At mga pahintulot sa bagay, na nagpapahintulot sa iyo na magtrabaho sa iba't ibang mga bagay sa pagsasaayos. Ang kanilang numero ay nakasalalay sa uri ng object ng pagsasaayos. Halimbawa, ang direktoryo ay may 16 na magkakaibang uri ng pag-access (Basahin, Magdagdag, Baguhin, Tanggalin....). Para sa rehistro ng impormasyon, mayroon lamang limang uri ng pag-access. Ang lahat ng mga karapatang ito ay maaaring itakda lamang sa buong antas ng direktoryo. Maaari mo ring paghigpitan ang pag-access sa antas ng katangian. Ngunit sa kasong ito, isang bahagi lamang ng mga uri ng mga karapatan ang magagamit (para sa mga direktoryo, ito ay mga karapatan sa View at Edit).

Ang lahat ng mga karapatan sa pag-access ay magkakaugnay at nakasalalay sa isa't isa. Mayroong mas mataas at mas mababang antas. Hindi ka maaaring magbigay ng mas mababang antas ng karapatan kung ang user ay walang karapatang magsagawa ng mas mataas na antas ng mga pagkilos.

Isipin mo mga karapatan sa pag-access sa direktoryo. Sa diagram na ito, makikita mo na ang karamihan sa mga karapatan ay mga pagpipino ng mas pangkalahatang mga karapatan. Kung ang Right1 ay ganap na matatagpuan sa diagram sa loob ng rectangle ng isa pang Right2, hindi maibibigay ang Right1 nang hindi nagbibigay ng Right2. Ang pinakakaraniwang karapatan ay ang "Read" right. Kung ang "Read" na karapatan ay nawawala, ang lahat ng iba pang mga karapatan ay hindi magagamit. Kung hindi available ang karapatan ng Append, hindi maaaring itakda ang karapatan ng Interactive Append. gayunpaman, ang sistema ng mga karapatan ay hindi matatawag na isang ganap na hierarchy. Halimbawa, ang karapatan na "I-edit" ay maaari lamang ibigay kung mayroon kang mga karapatan na "Tingnan" at "Baguhin". Ngunit posibleng magbigay ng "View" nang walang "Change" o "Change" nang walang "View".

Ang karapatan sa pag-access ay ang pinakamaliit na yunit ng pag-access. Ang lahat ng kontrol sa pag-access ay bumaba sa pagbibigay ng tamang hanay ng mga karapatan sa user. Ang natitirang mga bagay (mga tungkulin, mga grupo ng pag-access) ay isang karagdagang pag-uugnay na nagsisilbi sa pangkat at mas maginhawang nagbibigay ng mga karapatan sa pag-access.

2. Mga Tungkulin - isang mekanismo para sa pagbibigay ng mga karapatan sa pag-access

Tingnan natin kung paano ito gumagana pagbibigay ng mga karapatan sa pag-access ng gumagamit. Para sa kaginhawaan ng pagbibigay ng mga karapatan sa pag-access sa 1C platform, isang espesyal "Roly" na mekanismo. Ito ay isang layer sa pagitan ng mga user ng infobase at mga karapatan sa pag-access. Ang bawat tungkulin ay pinagsasama ang isang hanay ng mga karapatan sa pag-access, ang pagtatalaga kung saan ay may katuturan lamang sa parehong oras. Halimbawa, sa papel na "Basahin ang impormasyon sa pakikipag-ugnayan," makatuwirang pagsamahin ang mga hanay ng mga karapatan na responsable para sa mga nauugnay na direktoryo sa impormasyon sa pakikipag-ugnayan. Karamihan sa simpleng paraan ang pagtatakda ng tungkulin sa isang gumagamit ay binubuksan ang IB user card sa configurator at lagyan ng check ang mga kahon sa tabi ng mga tungkuling kailangan ng user. Ito ay isang unibersal na paraan at ito ay gumagana sa anumang mga pagsasaayos. Gayunpaman, sa komplikasyon ng mga pagsasaayos at pagtaas ng bilang ng mga tungkulin, ito ay naging medyo matrabaho. Samakatuwid, sa kasalukuyang mga karaniwang solusyon ay mayroong karagdagang layer sa pagitan ng gumagamit ng seguridad ng impormasyon at mga tungkulin. Ang layer na ito ay ipinatupad sa form subsystem "Kontrol sa pag-access". Pinapayagan ka nitong pagsamahin ang mga tungkulin sa mas malalaking entity - "Mga Profile" at hindi na italaga ang user mga indibidwal na tungkulin, ngunit mga profile na naglalaman ng mga hanay ng maraming tungkulin.

Isaalang-alang ang scheme para sa pagtatalaga ng mga karapatan sa pag-access sa mga user na ginagamit sa karamihan ng mga karaniwang configuration. Sa isang pinasimpleng anyo, maaari itong ilarawan bilang mga sumusunod. Ang mga bagong entity ay ipinakilala "I-access ang profile" at "Access Group". Ang bawat profile sa pag-access ay may kasamang ilang mga tungkulin. At ang bawat user ay bibigyan ng isa o higit pang mga pangkat ng access. Susunod, ang bawat pangkat ng pag-access ay nauugnay sa isang profile sa pag-access. Bilang resulta, nakakakuha kami ng pagkakataon na tukuyin para sa user hindi lamang ang mga tungkulin, ngunit ang mga hanay ng mga tungkulin depende sa mga pag-andar na ginawa niya.

Mula sa teknikal na pananaw, ang sistema ng pagbibigay ng karapatan na ito ay ipinatupad na may partisipasyon ng dalawang karaniwang subsystem. Ang subsystem na "Access Management" ay ginagamit upang i-configure ang pag-uugnay ng mga grupo ng pag-access na may mga tungkuling na-predefine sa configuration. Ang subsystem na "Mga User" ay ginagamit upang mag-set up ng mga link sa pagitan ng mga user ng IS at mga pangkat ng access sa configuration.

3. "Logic of permissions" bilang panuntunan ng intersection ng mga tungkulin.

Mahalagang maunawaan na sa 1C ang pangkalahatang lohika ng kontrol sa pag-access ay lohika ng pahintulot. Sa 1C platform sa pangkalahatan walang mga paghihigpit sa pag-access. May mga mekanismo lamang pagbibigay ng access. Bilang default, ang pag-access sa lahat ng data ay tinanggihan, at ang setting ng pag-access ay upang bigyan ang bawat user ng mga karapatan na kailangan niya. Nangangahulugan ito na kung ang ilang tungkulin ay nagbibigay sa user ng karapatang tingnan ang mga dokumentong "Benta ng mga kalakal," kung gayon walang paraan na maalis ang karapatang ito iba pang mga tungkulin o anumang iba pang platform at mekanismo ng pagsasaayos. Maaari mong ibigay sa simula ang hindi ganap na access sa direktoryo, ngunit i-filter ang data na binibigyan namin ng access gamit ang RLS. Ngunit kung nabigyan na ng access, hindi na ito maaalis ng ibang mga tungkulin.

Iyon ang dahilan kung bakit, kapag nililimitahan ang pag-access ng user sa direktoryo ayon sa mga tungkulin, napakahalagang suriin na ang user ay hindi nakatalaga ng anumang ibang tungkulin sa parehong direktoryo. Kung hindi, ang unang tungkulin ay magbibigay ng kinakailangang pag-access, na hindi maaaring tanggihan ng pangalawa.

Ang platform ay may kakayahang bigyan ang gumagamit ng karagdagang mga karapatan para sa tagal ng isang partikular na operasyon. Ang tampok na ito ay tinatawag na "Privileged Mode". Pinapayagan nito ang user na magsagawa ng mga aksyon sa data na hindi magagamit sa kanya. Gayunpaman, walang posibilidad sa platform na pansamantalang bawasan ang mga karapatan ng gumagamit.

4. Hindi direktang kontrol sa pag-access.

May mga hiwalay na mekanismo na, bagama't hindi direktang idinisenyo upang kontrolin ang pag-access, hindi direktang nakakaapekto dito at maaaring magamit para sa mga karagdagang paghihigpit. Tingnan natin ang kanilang mga pangunahing tampok.

4.1. mga opsyon sa pagganap.

Ang isang access control system ay minsang tinutukoy bilang isang mekanismo mga opsyon sa pagganap. Hindi ito ganap na totoo, dahil ang mga functional na opsyon ay hindi nakakaapekto sa pag-access ng data sa anumang paraan. Ito ay purong mekanismo ng interface, idinisenyo upang gawing simple ang interface para sa user. Lumitaw ito sa platform 8.2 bilang resulta ng komplikasyon ng functionality ng pagsasaayos. Ang mga opsyon sa pag-andar ay inilaan upang itago mula sa interface functionality na hindi ginagamit sa partikular na kumpanyang ito o sa partikular na user na ito. Ang mekanismo ay nakakaapekto lamang sa pagpapakita ng data. Ang mga utos ay nawawala sa interface, at ang mga detalye na hindi pinagana ng mga opsyon sa paggana ay nakatago sa mga form. Kung saan may access ang user sa lahat ng mga utos at detalyeng ito. Maaari itong gumana sa nakatagong data gamit ang pagpoproseso nang walang anumang mga problema.

Maaari kang magbasa nang higit pa tungkol sa pagtatrabaho sa mga functional na opsyon sa ITS

4.2. RLS (Record Level Security)

Ang lahat ng mekanismong nakalista sa itaas ay nakakaapekto sa pagkakaloob ng access sa mga bagay sa pangkalahatan. Sa mga direktoryo, mga dokumento, mga detalye ng mga direktoryo. Ang mga karapatan sa pag-access ay nakakaapekto sa pag-access sa mga bagay, ang mga opsyon sa pag-andar ay nakakaapekto sa pagpapakita ng mga bagay sa interface. Kadalasan mayroong isang gawain upang payagan ang gumagamit na ma-access ang data ng isang direktoryo o dokumento. Ngunit hindi sa lahat ng data, ngunit sa ilan lamang sa kanila. Halimbawa, payagan ang pag-access sa mga dokumento ng pagpapatupad para lamang sa isang organisasyon.

Mayroong karagdagang mekanismo para sa pagtatakda ng pahintulot na ito. RLS (Record Level Security). Gaya ng ipinahihiwatig ng pangalan, ang mekanismo ng kontrol sa pag-access na ito ay nasa antas ng mga partikular na talaan ng talahanayan. Kung ang mga karapatan sa pag-access ay nagbibigay ng access sa mga talahanayan sa kabuuan (mga direktoryo) o mga hanay ng mga talahanayan (mga detalye), pagkatapos ay tinutukoy ng RLS ang mga partikular na hilera ng mga talahanayan (mga talaan) kung saan pinapayagan ang user na magtrabaho. Pinapayagan ka nitong tukuyin ang data na magagamit sa gumagamit.

Kapag pinag-aaralan ang mekanismong ito, palaging dapat tandaan iyon Ang RLS ay hindi isang mekanismo ng pagtanggi sa pag-access. Siya ang mekanismo pag-filter ng pagpapalabas ng access. Yung. Ang RLS ay hindi nakakaapekto sa mga karapatan ng gumagamit, ito ay isang filter na naghihigpit sa pagpapalabas ng mga karapatan. Ang RLS ay nakakaapekto lamang sa partikular na koneksyon na "Role" - "Access Right" kung saan ito nakarehistro. At hindi nakakaapekto sa mga karapatan sa pag-access na ibinibigay ng ibang mga tungkulin. Halimbawa, kung ang isang tungkulin ay nagbibigay-daan sa pag-access sa mga dokumento lamang ng Organization1, at ang isa pang tungkulin ay nagbibigay-daan sa pag-access sa mga dokumento ng Warehouse1, bilang resulta, ang user ay magkakaroon ng access sa lahat ng mga dokumento na tumutukoy sa Organization1 O Warehouse1. Samakatuwid, kung ang isang gumagamit ay itinalaga ng ilang mga tungkulin, kung gayon Ang filter gamit ang RLS ay dapat itakda sa bawat tungkulin para sa parehong mga patlang (sa pamamagitan ng organisasyon at bodega). Sa karaniwang mga solusyon, ang gawaing ito ay kadalasang nalulutas sa pamamagitan ng paglikha ng isang tungkulin, kung saan ang lahat ng posibleng mga filter ng RLS ay nakarehistro. Ang tungkuling ito ay pagkatapos ay itinalaga sa lahat ng mga gumagamit na nagtatrabaho sa mga direktoryo na ito. Kinokontrol din nito na walang access ang user sa iba pang mga tungkulin na naglalaman ng karapatang ma-access ang mga pinaghihigpitang dokumento.

Dapat ding tandaan na ang mga filter ng RLS ay maaaring ilapat hindi sa lahat ng posibleng uri ng pag-access ng data, ngunit sa lamang top-level na mga uri ng access. Halimbawa, para sa mga direktoryo mula sa magagamit na labing-anim na uri ng pag-access, ang mga filter ng RLS ay maaaring ilapat lamang sa apat na pangunahing mga: Pagbasa, Pagbabago, Pagdaragdag at Pagtanggal. Nangangahulugan ito na hindi namin, halimbawa, ibigay sa user ang karapatan na "Baguhin" nang walang filter para sa kakayahang gumana sa programmatically sa anumang mga dokumento at ang "I-edit" mismo sa filter ng RLS para sa organisasyon para sa interactive na trabaho sa parehong oras. Kung gusto naming makapag-edit ang user ng mga dokumento gamit ang RLS filter, dapat kaming maglapat ng pangkalahatang filter sa pinakamataas na antas na "Baguhin" o "Basahin".

Dahil sa pangkalahatang pagiging kumplikado ng mga mekanismo, kadalasan ay medyo mahirap malaman kung ano ang eksaktong magagamit sa isang partikular na gumagamit ng isang tipikal na pagsasaayos. Upang suriin ang mga ipinagkaloob na karapatan sa karaniwang mga pagsasaayos, mayroong isang napaka-maginhawang ulat, na tinatawag "Mga Pahintulot". Sinusuri nito ang lahat ng karapatang ibinibigay sa user at ipinapakita ang panghuling listahan ng mga karapatan na ibinigay ng lahat ng mga grupo ng pag-access, na isinasaalang-alang ang mga filter ng RLS.

4.3. Paghihiwalay ng data.

Ang isa pang mekanismo na nakakaapekto sa pag-access ng data ay pagbabahagi ng data. Ang mekanismong ito ay idinisenyo upang magamit sa isa pisikal na batayan data ng ilang mga independiyenteng database na may karaniwang pagsasaayos at pangkalahatang mga direktoryo. Sa ilang napakalimitadong kaso, ang mekanismong ito ay maaaring ituring bilang kontrol sa pag-access. Kapag ito ay pinagana, ang bawat gumagamit ay maaaring gumana lamang sa isa sa kanyang mga independiyenteng database, ngunit sa parehong oras ay gumagamit ng karaniwang data.

Sa ilang pangkalahatang kahulugan, ang mekanismong ito ay maaari ding ituring na isang filter ng data at isang espesyal na kaso ng pagpapatupad ng RLS. Hindi tulad ng RLS, ang paghihiwalay ay isang mas mahigpit na mekanismo. At salamat sa tigas na ito, may teknikal na kakayahan ang mga developer na gumamit ng mga karagdagang index upang gawin ang naturang pag-filter nang walang mga pagbagal na likas sa RLS.

Sa totoo lang Ang RLS ay mga extra tackle lang, awtomatikong idinagdag sa bawat query sa database. Ang paghahati ng data ay pagdaragdag ng delimiter sa lahat ng mga naka-partition na talahanayan at sa kanilang mga index, kabilang ang naka-cluster. Ang data ay pinagsama-sama sa konteksto ng separator, i.e. pisikal na muling ipinamahagi sa disk sa magkakahiwalay na grupo para sa bawat halaga ng delimiter. Salamat dito, gumagana lamang ang bawat user gamit ang kanyang sariling data, at hindi kailangang pisikal na i-scan ng server ang buong talahanayan sa bawat kahilingan. Ito ay sapat na upang tingnan lamang ang lugar ng data ng kasalukuyang partisyon.

Gayunpaman, tiyak na dahil sa pisikal na muling pamamahagi na ito ng data na kapag gumagana ang isang buong user, na walang filter ayon sa mga halaga ng delimiter, lahat ng query ay napakabagal. Kung walang halaga ng delimiter, hindi posible ang buong paggamit ng mga index, kaya ang dami ng data na pisikal na nabasa mula sa disk at naproseso sa bawat kahilingan ay maaaring tumaas ang mga order. Alinsunod dito, sa katotohanan, ang paghihiwalay ay may katuturan lamang kung ang lahat ng mga gumagamit na patuloy na nagtatrabaho sa database ay gagana lamang sa loob ng kanilang lugar.

4.4. Code ng programa.

Marahil ang pinaka-unibersal na paraan upang magtakda ng mga karagdagang paghihigpit ay programming code. Maaari silang makaapekto sa anumang mekanismo ng platform. Halimbawa, upang paghigpitan ang pag-access sa mga dokumento, maaaring magdagdag ang isang developer ng filter sa form ng listahan ng dokumento, sa form ng pagpili, at maaaring suriin ng programmatically ang kakayahang tingnan ang data ng dokumento kapag nagbubukas ng isang partikular na form ng dokumento. Maaaring maglapat ng filter ang developer sa kanyang mga ulat kapag pumipili ng data.

Gayunpaman, ang code ng programa walang paraan upang limitahan ang mga karapatan sa kabuuan sa pamamagitan ng pagsasaayos. Ang pinakamaraming magagawa ng developer ay ang bumuo ng mga paghihigpit sa mga partikular na indibidwal na mekanismo ng pagkuha ng data. Dahil sa ang katunayan na ang 1C ay gumagamit ng isang object model para sa pagtatrabaho sa data, ang code ng programa ay maaaring garantisadong maprotektahan ang data mula sa pagbabago, pagdaragdag kinakailangang mga tseke sa object module. Ngunit hindi ganap na magagarantiya ng developer na ang user ay tiyak na hindi makakakuha ng impormasyon tungkol sa mga dokumento ng pagpapatupad ng ibang tao sa pamamagitan ng iba pang mga ulat o pagproseso.

Ang prinsipyong ito ay ginagamit, halimbawa, sa. Sa pagkonekta sa configuration, ang extension ay nagdaragdag ng mga paghihigpit at pagsusuri ng user sa lahat ng mga direktoryo at dokumento. Sinasala nito ang data na ipinapakita sa mga user sa mga listahan, sinusuri ang access kapag tinitingnan o binabago ang data. Tinitiyak na hindi mababago ang ipinagbabawal na data. Ngunit hindi nito ma-filter ang data sa mga ulat o query.

Palaging may mga opsyon para sa pagkuha ng ipinagbabawal na data sa pamamagitan ng kahilingan, sariling pagproseso o ulat. Posible bang mahigpit na limitahan ang listahan ng functionality ng configuration na ginagamit ng user at magdagdag ng hiwalay na filter sa bawat mekanismo (form, processing, report, request) na pinapayagan sa user.

4.5. Paghahambing ng mga pagpipilian.

Subukan nating maikli na ihambing ang isinasaalang-alang na mga opsyon para sa karagdagang paghihigpit sa data.

Paano ito i-on

Ano ang mangyayari

Functional na Opsyon- mekanismo ng interface para sa pagtatago ng pag-andar

1. Magdagdag ng lokasyon ng storage para sa isang functional na opsyon: isang pare-pareho, isang katangian ng isang reference na libro, o isang mapagkukunan ng pagpaparehistro ng impormasyon.
2. Magdagdag ng functional na opsyon sa configuration at tukuyin ang dating ginawang lokasyon ng storage dito.
3. Tukuyin sa mga katangian ng functional na opsyon ang komposisyon nito, markahan ang lahat ng mga bagay sa pagsasaayos na nakasalalay dito.
4. Paganahin ang paggamit ng functional na opsyon sa enterprise mode.

1. Ang lahat ng bagay na kasama sa functional na opsyon ay hindi na ipapakita sa command interface.
2. Ang lahat ng mga field na nakatago ng opsyon ay mawawala sa mga form at ulat.

RLS (Record Level Security)- karagdagang mga filter sa pinahihintulutang mga karapatan sa tungkulin

1. Magrehistro ng mga filter ng RLS sa bawat tungkulin ng user para sa bawat karapatan na kailangang paghigpitan.

Tandaan: Sa Enterprise Mode, walang kinakailangang aksyon. Awtomatikong ilalapat ang mga filter.

1. Ang na-configure na filter ay idaragdag sa bawat kahilingan sa IB.
2. Ang data na hindi akma sa RLS filter ay hindi makukuha sa anumang paraan: hindi sila ipapakita sa mga form, mga ulat; ay hindi pipiliin ng anumang mga query.

Paghihiwalay ng data- pagpapanatili sa isang pisikal na database ng ilang independyente

1. Magdagdag ng karaniwang katangian sa configuration na tumutukoy sa komposisyon ng nakabahaging data.

2. Nagdaragdag ng dalawang parameter ng session: para sa flag ng paggamit at sa kasalukuyang halaga ng hati ng data.

3. Magdagdag ng program code upang paganahin ang paghihiwalay ng data at punan ang kasalukuyang halaga ng separator.

1. Kaagad pagkatapos idagdag ang kakayahan sa partitioning ng data sa configuration, ang mga talahanayan kung saan idinagdag ang kakayahan sa partitioning ay pisikal na itatayo.

  • Magdaragdag ng field na "Delimiter" upang iimbak ang halaga ng delimiter.
  • Ang lahat ng mga index sa mga talahanayan ay muling itatayo. Ang field ng separator ay idaragdag sa kanila bilang unang field.

2. Pagkatapos i-on ang paghihiwalay.

  • Ganap na lahat ng kahilingan sa IS ay sasalain ayon sa halaga ng separator.
  • Kapag nagsusulat ng anumang data, ang halaga ng separator ay awtomatikong mapupunan ayon sa halaga ng parameter ng session.
Code ng programa- anumang karagdagang mga paghihigpit sa punto
1. Magdagdag ng overlay code kinakailangang mga paghihigpit sa pagsasaayos.

1. Gagawin nang eksakto kung ano ang nakasulat.

Tandaan: hindi naaapektuhan ng code ang configuration sa kabuuan, ngunit ang partikular na mekanismo lamang kung saan isinulat ang aksyon

5. Mga resulta.

Ang bawat paraan ng pagtatakda ng mga paghihigpit ay may mga kalamangan at kahinaan nito. Mula sa pananaw ng teknolohiya, ang pinakatamang paraan ay isang karampatang paghahati sa mga tungkulin. Upang i-filter ang magagamit na data, ang pinaka-maaasahang paraan ay ang paggamit ng RLS. Ito ay para sa gawaing ito na ang mekanismo ay dinisenyo. Ang mga hadlang sa punto ay pinakamadaling ipatupad gamit ang code. Ang mga functional na opsyon at pagbabahagi ng data ay mga partikular na mekanismo na hindi nilayon upang paghigpitan ang pag-access. Bagaman sa ilang mga kaso maaari silang magamit para dito.

Functional na Opsyon at Parameter ng opsyon sa function- ito ay 1C 8.3 (8.2) na mga bagay sa pagsasaayos, na magkakasamang kumakatawan sa mekanismo ng mga opsyon sa paggana. Ang mekanismo ng functional na mga opsyon ay isang functional na nagbibigay-daan sa iyong tukuyin ang isang set ng functionality na kailangan ng mga user.

Sa madaling salita, ang mekanismo ng functional na mga opsyon ay isang on/off switch para sa iba't ibang functionality sa isang configuration.

Bakit kailangan mong i-disable ang functionality?

Kumuha ng 267 1C na mga aralin sa video nang libre:

Kadalasan, ang karagdagang pag-andar ay maaaring makapagpalubha sa gawain ng mga empleyado. Ang isang karaniwang halimbawa ng paggamit ng mga functional na opsyon sa 1C ay ang database ay nagpapanatili ng mga talaan para sa isang organisasyon o bodega, bakit obligado ang user na punan ang data na ito sa lahat ng mga dokumento?

Ano ang kinokontrol ng mga functional na opsyon?

Una sa lahat, ang paggamit ng mga opsyon sa pag-andar ay pinaka-maginhawang makikita sa interface: mga detalye ng form, mga form ng command, isang karaniwang interface - lahat ng ito ay maaaring maiugnay sa mga opsyon sa pagganap. Depende sa halaga ng mga functional na opsyon, maaari mong limitahan ang output ng data sa isang ulat batay sa .

Bagay 1c "Mga opsyonal na functional" - idinisenyo upang i-highlight ang pag-andar sa solusyon ng application na maaaring paganahin (hindi pinagana) sa panahon ng pagpapatupad nang hindi binabago ang sarili nito (kasama ang mga Subsystem, bumubuo sila ng 1C thin client interface). Ang mga ito ay bahagi ng mekanismo ng functional na mga opsyon.

Function Options Mechanism may kasamang dalawang metadata object:

  1. Functional na opsyon;
  2. Mga parameter ng functional na opsyon.

Higit pa

Pagpipilian sa pag-andar ay isang metadata object na maaaring direktang makaapekto sa komposisyon ng interface ng application (kung iniimbak ng functional option ang halaga nito sa isang Boolean attribute). Sa tulong ng mga bagay ng ganitong uri, maaari mong itago ang mga elemento na nauugnay sa hindi naa-access na pag-andar. Halimbawa, maaaring itago ng opsyon sa Currency accounting ang Mga Pera, ang Currency mula sa field, ang column na halaga ng Currency mula sa mga ulat.

Ang pinagmulan ng value ng functional na opsyon ay ang metadata object na pinili bilang property Storage , halimbawa, maaari itong maging .

Sa kaso ng pag-iimbak ng halaga ng isang functional na opsyon sa isang katangian ng direktoryo o mapagkukunan, kinakailangan ang karagdagang impormasyon na eksaktong nagpapahiwatig kung paano piliin ang halaga ng opsyon. Ang isang hiwalay na metadata object ay ibinigay para sa layuning ito − Mga Parameter ng Mga Pagpipilian sa Function.

Masasabi nating ang mga parameter ng mga opsyon sa pag-andar ay ang mga coordinate axes ng puwang ng mga halaga ng mga opsyon sa pag-andar. Bukod dito, ang isang parameter ng mga functional na opsyon ay maaaring matukoy ang halaga ng "nito" na coordinate axis nang sabay-sabay para sa isang mayorya ng mga functional na opsyon.

[tago]

Maaaring makaapekto ang mga functional na opsyon:

  1. sa user interface:
    • pandaigdigan ;
    • requisites (kabilang ang mga column ng requisites ng form tulad ng Talahanayan ng Halaga o Value Tree);
    • bumuo ng mga utos;
  2. sa mga ulat na ipinatupad gamit ang isang data composition system;
  3. sa mga algorithm na nakasulat sa built-in na wika - posible na makuha ang mga halaga ng mga opsyon sa pagganap mula sa built-in na wika at gamitin ang mga ito sa iba't ibang mga kondisyon, halimbawa, upang mabawasan ang dami ng mga kalkulasyon (tingnan, halimbawa, ).

PANSIN! Kung gumagana ang client application sa bersyon ng file ng infobase sa pamamagitan ng web server, ang pagpapalit ng functional na opsyon ay babaguhin lamang ang user interface pagkatapos i-restart ang web server (hindi babaguhin ng pag-restart ng client application ang user interface).

Mga Property ng 1C Functional Options

  • Imbakan - isang field kung saan kailangan mong pumili ng isang bagay na may uri ng boolean. Bilang isang patakaran, ang mga constant ay ginagamit.
  • kapag nakakakuha - ang bandila ay may pananagutan para sa posibilidad na makuha ang halaga ng functional na opsyon sa privileged mode.
  • Komposisyon - isang listahan ng mga bagay at katangian ng mga bagay, ang visibility na kung saan ay naka-on / off kapag ang functional na opsyon ay naka-off / off (upang kontrolin gamit ang isang pinamamahalaang form).

Halimbawa, depende sa mga kondisyon ng isang partikular na pagpapatupad, maaari kang magbigay para sa hindi pagpapagana ng accounting para sa mga kalakal sa pamamagitan ng mga warehouse upang kapag nagrerehistro ng mga dokumento ng resibo ng mga kalakal, ang field ng Warehouse ay hindi ipinapakita sa form ng dokumento.

Mga tampok ng paggamit ng 1C Functional Options:

  1. Ang mga opsyon sa pag-andar ay maaaring magkaroon ng mga halaga ng di-makatwirang uri (hindi kinakailangang Boolean).
  2. Kapag nagdaragdag ng bagong constant para gumamit ng functional na opsyon, tiyaking isama ito sa naaangkop na subsystem at magtalaga ng mga pahintulot dito.
  3. Ang pagtatrabaho sa mga opsyon sa pag-andar ay magagamit mula sa built-in na wika, salamat sa kung saan ang developer ay maaaring lumikha ng kanyang sariling mga algorithm para sa mga halaga ng mga opsyon sa pagganap.
  4. Ang command interface command ay hindi isasama sa command interface kung ang function na opsyon ay hindi pinagana:
    • katangian, na isang parameter ng command;
    • ang uri ng command parameter (kung ang uri ng command parameter ay compound, ang command ay magiging hindi magagamit kapag ang lahat ng mga uri ng parameter ay hindi pinagana).

PANSIN! Ang mga opsyonal na functional at ang kanilang mga parameter ay hindi nakakaapekto sa komposisyon ng database: ang lahat ng mga talahanayan at mga patlang ay naroroon sa database, anuman ang estado ng mga opsyon sa pagganap.

Impluwensya ng mga functional na opsyon sa mga detalye at utos ng form:

  1. uri ng pinamamahalaang form<Вид>Isang bagay ( DirectoryObject, DocumentObject, atbp.) ay hindi paganahin kung ang kaukulang bagay ay hindi pinagana ng functional na opsyon. Tanging ang mga functional na opsyon na walang mga parameter ang na-parse.
  2. Ang pangunahing katangian ng uri ng pinamamahalaang form DynamicList ay hindi pagaganahin kung ang configuration object na tinukoy bilang pangunahing talahanayan ng dynamic na listahan ay hindi pinagana ng functional na opsyon. Tanging ang mga functional na opsyon na walang mga parameter ang na-parse.
  3. Ang isang katangian ng form ng isang uri ng sanggunian ay hindi pinagana kung ang object ng pagsasaayos na bumubuo sa ganitong uri ay hindi pinagana sa pamamagitan ng isang functional na opsyon. Ang katangian ng form ng isang pinagsama-samang uri ay hindi pinagana kung ang mga opsyon sa paggana ay hindi pinagana ang lahat ng mga uri ng bahagi.
  4. Idi-disable ang form table kung ipapakita nito ang data ng attribute ng form na hindi pinagana ng functional na opsyon.
  5. Walang mga uri sa dialog ng pagpili ng uri (halimbawa, para sa mga field ng pag-input na nauugnay sa mga katangian ng pinagsama-samang uri) kung ang mga object ng pagsasaayos na bumubuo sa mga uri na ito ay hindi pinagana ng isang functional na opsyon. Ang impormasyon tungkol sa mga uri na hindi pinagana ng mga opsyon sa paggana ay naka-cache sa bahagi ng kliyente at iki-clear pagkatapos ng 20 minuto o sa isang method call UpdateInterface().

PANSIN! Hindi tulad ng command interface, ang mga value ng parameter ng functional na mga opsyon ay nakatakda lamang para sa isang partikular na halimbawa ng form.

Paglikha ng Parameter ng Mga Pagpipilian sa Pag-andar

Ang parameter ng functional na opsyon ay nilikha gamit ang object ng pagsasaayos ng 1C na "Mga parameter ng functional na opsyon".

[tago]

Magagawa ito sa window ng pagsasaayos sa pamamagitan ng pagdaragdag ng bagong bagay.

Mga Katangian ng Parameter ng Mga Opsyon sa Pag-andar:

  • Paggamit - nagtatakda ng isang hanay ng mga bagay na ang mga halaga ay tutukuyin kung paano dapat piliin ang halaga ng functional na opsyon. Kasama sa listahan ng mga magagamit na bagay ang mga diksyunaryo at sukat ng rehistro ng impormasyon. Para sa bawat parameter ng mga opsyon sa paggana sa listahang ito, maaari kang pumili ng isang direktoryo (mula sa buong listahan ng mga direktoryo) at isang dimensyon ng bawat rehistro ng impormasyon.

PANSIN! Hindi mo maaaring gamitin ang parehong metadata object sa higit sa isang parameter ng opsyon sa function.

Magiging interesado ka rin sa:

Naghahanap ako ng investment project
Paano gawing kaakit-akit ang iyong panukala sa negosyo at makahanap ng pribadong mamumuhunan? Saan at paano...
Mga deposito sa VTB 24 bank para sa araw na ito
Ang interes sa mga deposito ng mga indibidwal sa VTB 24 para sa 2016 ay nag-iiba mula 3.23 hanggang 11.75% sa ...
Magkano para sa unang anak?
Ang kalagayan ng demograpiko sa ating bansa ay kapansin-pansing bumuti nitong mga nakaraang taon. Ayon kay...
Sa ilalim ng maternity capital kung ano ang maaaring bilhin, ibenta, isasangla, buwanang allowance
Ang maternity capital sa 2019 ay ibinibigay alinsunod sa bagong Federal Law No. 418. Tinukoy ng batas...
Ang pamamaraan para sa pag-aayos ng isang asosasyon ng mga may-ari ng bahay sa isang gusali ng apartment
Ang Home Owners Association (pinaikling HOA) ay isang non-profit ...