Programuotojo užrašų knygelė. Leidžiamos direktyvos, ribojančios prieigą įrašo lygiu, naudojimas


1C 8 užklausų kalba yra nepakeičiamas 1C programuotojo įrankis, leidžiantis rašyti glaustesnį, paprastesnį, suprantamesnį kodą ir naudoti mažiau sistemos išteklių dirbant su duomenimis. Šis straipsnis atidaro pamokų, skirtų 1C 8 užklausų kalbai, seriją. Pirmoje pamokoje apžvelgsime pagrindinio šios kalbos operatoriaus struktūrą - PASIRINKTI. Naudodami šį operatorių galite kurti pasirinkimus iš duomenų bazės lentelių. Pasirinktus lentelės duomenis galima rūšiuoti, dėti sąlygas, susieti ir derinti su kitų lentelių duomenimis, grupuoti pagal įvairius laukus ir dar daugiau.

Užklausos kalba 1C įmonė 8 – operatoriaus struktūra PASIRINKITE

Pažiūrėkime į operatoriaus SELECT struktūrą (neprivalomos operatoriaus dalys nurodomos laužtiniuose skliaustuose). 1C užklausų kalba suteikia daugybę įrankių duomenų pavyzdžiams kurti.

PASIRINKTI [Leidžiamą] [SKITINGĄ] [FIRST A] [Field1] [AS Alias1], [Field2] [AS Alias2], ... [FieldM] [AS AliasB] [PUT TemporaryTableName] [FROM Table1 AS AliasTableTable1 [[VIDINIS PRIJUNGIMAS ][LEFT JOIN][FULL JOIN] Table2 AS pseudonimas ​​Table2 [[VIDINIS PRISIJUNGIMAS][LEFT JOIN][FULL JOIN] Lentelė C AS Pseudonimas C lentelės pagal išraišką1 [Ir išraiška2]...[Ir išraiškaD]] .. . ... PAGAL 1 reiškinį [Ir 2 išraišką]...[Ir išraiškąE]] ... [TableF AS TableF slapyvardį] ... ] [GROUP BY GroupingField1[,] ... [GroupingFieldG]] [WHERE Expression1 [IR] Išraiška2] ... [IR išraiškaH]] [SUJUNGTI VISUS...] [; ...] [INDEKSAS PAGAL slapyvardį1 ... PseudonimasB] [IŠ viso [Agregavimo funkcija (1 laukas)][,] [Agregavimo funkcija (2 laukas)][,] ... [Agregavimo funkcija (I laukas)] PAGAL [BENDRAS DALIS][,] [ GroupingField1][,] ... [GroupingFieldj]]

Raktažodžiai ir blokai darbui su laukais

  • PASIRINKTI— raktažodis, nurodantis operatoriaus pradžią;
  • LEIDŽIAMAS nurodo, kad pasirinkimas turi apimti lentelės įrašus, turinčius skaitymo prieigą tam vartotojui;
  • ĮVAIRUS rodo, kad imtyje turi būti tik skirtingi (visuose laukuose) srautai. Kitaip tariant, pasikartojančios eilutės bus pašalintos iš imties;
  • PIRMOJI A jei nurodysite šį raktinį žodį, tada į pasirinkimą bus įtraukta tik pirmoji A iš užklausoje pasirinktų eilučių, kur A yra natūralusis skaičius;
  • Lauko blokas— šiame bloke nurodomi laukai, kuriuos reikia įtraukti į pasirinkimą. Šie laukai bus pasirinkti stulpeliai. Pačioje paprastas atvejis laukas atrodo taip: Table Alias.TableFieldName AS Lauko slapyvardis

    Taip nurodome, iš kurios lentelės paimame šį lauką. 1C užklausos kalba leidžia nurodyti bet kokius slapyvardžius, tačiau jie neturėtų būti kartojami tame pačiame SELECT sakinyje. Laukas gali būti sudėtingesnis, susidedantis iš įvairių lentelės laukų, užklausos kalbos funkcijų ir agreguotų funkcijų derinių, tačiau šioje pamokoje tokių atvejų neapžvelgsime;

Raktiniai žodžiai ir blokai darbui su lentelėmis

  • Įdėkite laikinosios lentelės pavadinimą- raktažodis VIETA skirta sukurti laikiną lentelę konkrečiu pavadinimu, kuri bus saugoma laisvosios kreipties atmintisšioje 1C 8 sesijoje, kol ji pasibaigs arba kol bus sunaikinta laikina lentelė. Reikėtų pažymėti, kad laikinųjų lentelių pavadinimai vienoje 1C 8 sesijoje neturėtų kartotis;
  • Lentelių ir ryšių blokas— bloke nurodomos visos naudojamos lentelės šį prašymą, taip pat ryšiai tarp jų. Blokas prasideda raktiniu žodžiu NUO, po kurio nurodomas pirmosios lentelės pavadinimas ir slapyvardis. Jei ši lentelė susijusi su kitomis lentelėmis, tada nurodomi ryšiai. 1C užklausos kalboje yra šie ryšio tipų rinkiniai:
    • VIDINIS PRISIJUNGIMAS— įrašas iš kairiosios lentelės bus įtrauktas į pasirinkimą tik tuo atveju, jei bus įvykdyta prisijungimo sąlyga, įrašas iš dešinės lentelės bus įtrauktas į pasirinkimą tik tada, kai bus įvykdyta prisijungimo sąlyga;
    • KAIRIS RYŠYS— įrašas iš kairės lentelės bus įtrauktas į pasirinkimą bet kuriuo atveju, įrašas iš dešinės lentelės bus įtrauktas į atranką tik tuo atveju, jei bus įvykdyta prisijungimo sąlyga;
    • PILNAS PRIJUNGIMAS— įrašas iš kairiosios lentelės bet kuriuo atveju pirmiausia bus įtrauktas į pasirinkimą, tada tik tuo atveju, jei įvykdoma prisijungimo sąlyga, įrašas iš dešinės lentelės bus įtrauktas pirmiausia į pasirinkimą bet kuriuo atveju, tada tik tuo atveju, jei prisijungimo sąlyga yra patenkintas. Tokiu atveju gautos pasikartojančios eilutės neįtraukiamos į imtį.

    Po ryšio tipo nurodomas antrosios lentelės pavadinimas ir slapyvardis. Toliau ateina raktinis žodis BY, po kurio seka ryšio sąlygos, sujungtos viena su kita loginiais operatoriais IR, ARBA. Kiekviena sąlygos išraiška turi grąžinti Būlio reikšmę (tiesa, klaidinga). Jei pirmoji lentelė yra prijungta prie kitų nei antrosios lentelės, tada vėl nurodomas ryšio tipas ir pan. Kiekviena iš jungime dalyvaujančių lentelių savo ruožtu gali būti prijungta prie kitų lentelių, tai parodyta užklausos struktūros diagramoje. Jei lentelė nesusijusi su pirmąja, tada ji nurodoma be ryšio tipo, tada gali sekti jos jungtys ir pan.;

Raktažodžiai ir duomenų konvertavimo blokai

  • Grupės blokas— šis blokas naudojamas lentelės eilutėms grupuoti. Eilutės sujungiamos į vieną, jei po raktinio žodžio nurodytos laukų reikšmės GRUPUOTI PAGAL pasirodo esąs tas pats. Šiuo atveju visi kiti laukai yra sumuojami, apskaičiuojami, maksimaliai padidinami arba sumažinami naudojant agregavimo funkcijas. Suvestinės funkcijos naudojamos lauko bloke. Pavyzdys: Maximum(TableAlias.TableFieldName) AS Lauko Alias
  • Būklės blokas- šiame bloke po raktinio žodžio KUR nurodomos sąlyginės išraiškos, atskirtos loginiais operatoriais IR, ARBA, kad kuri nors iš pasirinktų eilučių būtų įtraukta į pavyzdį, būtina, kad visos suvestinės sąlygos turėtų reikšmę Tiesa.
  • VISKĄ DERINTI— šis raktinis žodis naudojamas užklausoms (operatoriams PASIRINKTI). 1C užklausų kalba leidžia sujungti kelias užklausas į vieną. Kad užklausos būtų sujungtos, jos turi turėti tą patį laukų rinkinį;
  • «;» - kabliataškiai naudojami atskirti vienas nuo kito nepriklausomus teiginius PASIRINKTI;
  • INDEKSO PAGAL— raktažodis naudojamas po jo nurodytiems laukams indeksuoti;
  • Santraukos blokas— naudojamas į medžius panašiems pavyzdžiams statyti. Kiekvienam iš grupavimo laukų, nurodytų po raktinio žodžio PAGAL, pasirinkime bus sukurta atskira eilutė. Šioje eilutėje, naudojant suvestines funkcijas, bus apskaičiuojamos bendros laukų, nurodytų po raktinio žodžio, reikšmės REZULTATAI.

Ar norite toliau mokytis 1C 8 užklausų kalbos? Tada perskaitykite kitą straipsnį.

   

17 optimalios QUERY 1C duomenų bazės duomenų sudarymo taisyklių

Norėdami generuoti ir vykdyti duomenų bazių lentelių užklausas 1C platformoje, naudojamas specialus programavimo kalbos objektas Prašymas. Šis objektas sukuriamas iškviečiant konstrukciją Naujas prašymas. Užklausą patogu naudoti, kai reikia gauti sudėtingą duomenų pavyzdį, sugrupuotą ir surūšiuotą pagal poreikį. Klasikinis užklausos naudojimo pavyzdys – gauti kaupimo registro būsenos suvestinę tam tikru momentu. Be to, užklausos mechanizmas leidžia lengvai gauti informaciją skirtingais laikotarpiais.

Prašymo organas yra nurodymas, pagal kurį užklausa turi būti įvykdyta. Prašymo įstaiga aprašo:

  • informacinės bazės lentelės, naudojamos kaip užklausų duomenų šaltiniai;
  • lentelės laukai, kuriuos reikia apdoroti užklausoje;
  • grupavimo taisyklės;
  • rūšiavimo rezultatai;
  • ir tt

Instrukcija sudaryta specialia kalba - užklausos kalba ir susideda iš atskirų dalių - skyrių, sakinių, raktinių žodžių, funkcijų, aritmetinių ir loginių operatorių, komentarų, konstantų ir parametrų.

1C platformos užklausų kalba yra labai panaši į kitų SQL kalbų sintaksę, tačiau yra skirtumų. Pagrindiniai integruotos užklausų kalbos pranašumai yra šie: laukų nuorodų panaikinimas, virtualių lentelių buvimas, patogus darbas su rezultatais, neįvesti laukai užklausose.

Rekomendacijos, kaip rašyti duomenų bazės užklausas 1C platformos užklausų kalba:

1) Užklausos įstaigoje gali būti iš anksto nustatytų konfigūracijos duomenų, tokių kaip:

  • enum reikšmės;
  • iš anksto nustatyti duomenys:
  • Žinynai;
  • charakteristikų tipų planai;
  • sąskaitų planai;
  • skaičiavimų tipų planai;
  • tuščios nuorodos;
  • verslo procesų maršruto taškų reikšmės.

Taip pat užklausos tekste gali būti sistemos sąrašų reikšmės, kurias galima priskirti laukams duomenų bazės lentelėse: Kaupimo judėjimo tipas, Sąskaitos tipas ir Apskaitos judėjimo tipas. Užklausose iš anksto nustatyti konfigūracijos duomenys ir sistemos išvardijimo reikšmės pasiekiami naudojant VALUE funkcijos tipo literalą. Šis pažodinis žodis leidžia pagerinti užklausos skaitomumą ir sumažinti užklausos parametrų skaičių.

Literalo vartojimo pavyzdys PRASMĖ:

  • WHERE miestas = VERTĖ (Katalogas. Miestai. Maskva)
  • WHERE miestas = VERTĖ (Katalogas.Miestai.EmptyLink)
  • WHEREProductType = VERTĖ (Sąrašas.Produkto tipai.Paslauga)
  • WHEREMovementType = VALUE(MovementTypeAccumulation.Incoming)
  • WHERE RoutePoint = VALUE(BusinessProcess.BusinessProcess1.RoutePoint.Action1

2) Naudodami instrukcijas AUTOMATINIS UŽSAKYMAS Užklausa gali užtrukti ilgai, todėl jei rūšiuoti nereikia, geriau jo nenaudoti. Daugeliu atvejų geriausia naudoti instrukcijų rūšiavimą RŪŠIUOTI PAGAL.

Automatinis užsakymas veikia pagal šiuos principus:

  • Jei užklausoje buvo nurodytas punktas ORDER BY, tada kiekviena šiame punkte rasta nuoroda į lentelę bus pakeista laukais, pagal kuriuos lentelė rūšiuojama pagal numatytuosius nustatymus (žinynams tai yra kodas arba pavadinimas, dokumentams – dokumento data). Jei rūšiuojamas laukas nurodo hierarchinį katalogą, bus taikomas hierarchinis rūšiavimas pagal šį katalogą.
  • Jei užklausoje nėra sąlygos ORDER BY, bet yra sąlyga TOTAL, užklausos rezultatas bus sutvarkytas pagal laukus, esančius TOTAL sąlygoje po rakto žodžių programinė įranga, ta pačia seka ir, jei sumos buvo apskaičiuotos pagal nuorodos laukus, tai pagal numatytuosius lentelių, į kurias buvo nuorodos, rūšiavimo laukus.
  • Jei užklausoje nėra sąlygų ORDER BY ir TOTAL, bet yra sąlyga GROUP BY, tada užklausos rezultatas bus išdėstytas pagal laukelius, esančius sakinyje ta pačia seka ir, jei grupavimas atliktas pagal nuorodos laukus. , tada pagal numatytuosius nustatymus rūšiuokite lenteles, į kurias buvo nuoroda.
  • Jei užklausoje nėra sakinių ORDER BY, TOTAL arba GROUP BY, rezultatas bus surikiuotas pagal numatytuosius lentelių, iš kurių parenkami duomenys, rūšiavimo laukus tokia tvarka, kokia jie rodomi užklausoje.
  • Jei užklausoje yra sąlyga TOTAL, kiekvienas bendras lygis užsakomas atskirai.

3) Kad duomenų bazėje nebūtų kartojama užklausa, kai vartotojui rodomas užklausos rezultatas (pavyzdžiui, kuriant užklausą arba pateikiant užklausos rezultatą naudojant skaičiuoklės dokumentą), naudinga naudoti instrukciją ĮVADAS NUORODOS, kuri leidžia gauti pamatinės vertės vaizdą. Pavyzdys:

Taip pat galima naudotis instrukcijomis SPEKTAKLIS- skirtas gauti savavališko tipo reikšmės eilutės atvaizdavimą. Skirtumas tarp šių instrukcijų yra tas, kad pirmuoju atveju, jei instrukcijos perduoda nuorodą, rezultatas bus eilutė, kitais atvejais rezultatas bus perduodamo parametro reikšmė. Antruoju atveju instrukcijos rezultatas visada bus eilutė!

4) Jei užklausoje yra sudėtinio tipo laukas, tada tokiems laukams reikia konvertuoti lauko reikšmes į konkretų tipą naudojant nurodymą EXPRESS, kuris leis jums pašalinti nereikalingas lenteles iš kairiojo sujungimo su sudėtingo duomenų tipo lauku ir pagreitinti užklausos vykdymą. Pavyzdys:

Yra Likusių prekių kaupimo registras, kuriame registratoriaus laukas yra sudėtinio tipo. Prašyme pasirenkama Prekių gavimo data ir dokumento numeris, o per lauką Registratorius pasiekiant dokumento rekvizitus daug kairių kaupimo registro lentelės jungčių su registratoriaus dokumentų lentelėmis neįvyksta.

Kodas 1C v 8.x SELECT
EXPRESS (likusios prekės. Registro AS dokumentas. Prekių gavimas). AS numeris, kvito numeris,
EXPRESS (likusios prekės. Registro AS dokumentas. Prekių gavimas). Data AS gavimo data
NUO
Kaupimų registras Likusios prekės AS Likusios prekės

Jei manoma, kad tipas yra neįgyvendinamas, tada tipo atmetimo rezultatas bus vertė NULL.

5) Nepamirškite apie instrukcijas LEIDŽIAMAS, o tai reiškia, kad užklausoje bus pasirinkti tik tie įrašai, į kuriuos dabartinis vartotojas turi teises. Jei šis žodis nenurodytas, jei užklausoje pasirenkami įrašai, kuriems vartotojas neturi teisių, užklausa bus apdorojama su klaida.

6) Jei užklausoje naudojamas sujungimas, o kai kuriose sujungimo dalyse yra įdėtos lentelės (dokumentas su lentelių dalimi), o kai kuriose ne, atsiranda būtinybė papildyti pasirinkimų sąrašą laukais – tuščiomis įdėtomis lentelėmis. Tai atliekama naudojant raktinį žodį IŠTUŠTINA, po kurio skliausteliuose nurodomi laukų, kurie sudarys įdėtąją lentelę, slapyvardžiai. Pavyzdys:

Kodas 1C v 8.x // Pasirinkite laukus Skaičius ir Sudėtis
// iš virtualios lentelės Document.Expenditure
PASIRINKTI Nuoroda.Numeris, TUŠČIA LENTELĖ.(Nr., Prekė, Kiekis) AS Sudėtis
IŠ Dokumentas.Išlaidų sąskaita faktūra
VISKĄ DERINTI
PASIRINKITE Nuorodos numerį, turinį. (Eilutės numeris, produktas, kiekis)
IŠ dokumentas. sąskaita faktūra Dokumentas. sąskaita faktūra. sudėtis.*

7) Kad užklausos rezultate neatsirastų pasikartojančių eilučių, turėtumėte naudoti instrukciją ĮVAIRUS, nes tai vaizdingesnė ir suprantamesnė, ir instrukcijos GRUPUOTI PAGAL naudojamas grupavimui naudojant suvestines funkcijas. Ksati, naudojant suvestines funkcijas, pasiūlymas GRUPUOTI PAGAL gali būti visai nenurodytas, bet visi užklausos rezultatai bus sugrupuoti į vieną eilutę. Pavyzdys:

Kodas 1C v 8.x // Būtina išsiaiškinti, kurios sandorio šalys
// prekės buvo išsiųstos laikotarpiui.
Pasirinkite Įvairūs
Dokumentas. Sąskaita faktūra. Sandorio šalis

8) Instrukcijos GRUPUOTI PAGAL leidžia pasiekti aukščiausio lygio laukus, negrupuojant rezultatų pagal šiuos laukus, jei įdėtosios lentelės laukams taikomos agregacinės funkcijos. Nors 1C žinynas sako, kad grupuojant užklausos rezultatus, pasirinkimo laukų sąraše turi būti nurodytos agregacinės funkcijos, o be agregavimo funkcijų pasirinkimo laukų sąraše, leidžiama nurodyti tik tuos laukus, pagal kuriuos atliekamas grupavimas. . Pavyzdys:

Kodas 1C v 8.x SELECT
Prekių ir paslaugų gavimas. Prekės. (SUM (kiekis), nomenklatūra),
Prekių ir paslaugų gavimas. Nuoroda,
Prekių ir paslaugų gavimas. Sandorio šalis
NUO
Dokumentas.Prekių ir paslaugų gavimas KAIP Prekių ir paslaugų gavimas
GRUPUOTI PAGAL
Prekių ir paslaugų gavimas. Prekės. (Nomenklatūra)

9) Instrukcijos ISNULL skirtas pakeisti vertę NULLį kitą reikšmę, tačiau nepamirškite, kad antrasis parametras bus konvertuojamas į pirmojo tipą, jei pirmojo parametro tipas yra eilutė arba skaičius.

10) Susisiekus pagrindinė lentelė Duomenis galite pasiekti antrinėje lentelėje. Ši funkcija vadinama pavaldžios lentelės laukų nuorodų panaikinimu.

Pavyzdys (lentelės skyriuje ieškokite dokumentų, kuriuose yra konkretus produktas):

Šios užklausos pranašumas, palyginti su užklausa antrinėje lentelėje Receipt.Goods, yra tas, kad jei dokumentuose yra dublikatų, užklausos rezultatas pateiks tik unikalius dokumentus, nenaudojant DIFFERENT raktinio žodžio.

11) Įdomus operatoriaus B variantas yra tikrinimas, ar į tokių rinkinių aibę (Field1, Field2, ..., FieldN) B (Field1, Field2, ..., FieldN) įeina sutvarkyta aibė.

Kodas 1C v 8.x SELECT
Sandorio šalys.Nuoroda
KUR
(Darbo šalys. Nuoroda, Produktai. Nuoroda) B
(PASIRINKITE Pardavimai.Klientas, Pardavimas.Produktas
FROM RegisterAccumulation.Sales AS Sales)
NUO
Katalogas. Sandorio šalys,
Katalogas.Produktai

12) Kai tik įmanoma, naudokite virtualias užklausų lenteles. Kurdama užklausą sistema pateikia daugybę virtualių lentelių kaip duomenų šaltinius – tai lentelės, kurios taip pat yra užklausos, kurią sistema generuoja tuo metu, kai vykdoma atitinkama kodo dalis, rezultatas.

Kūrėjas gali savarankiškai gauti tuos pačius duomenis, kuriuos sistema jam pateikia kaip virtualias lenteles, tačiau šių duomenų gavimo algoritmas nebus optimizuotas, nes:

Visos virtualios lentelės yra parametrizuojamos, tai yra, kūrėjui suteikiama galimybė nustatyti kai kuriuos parametrus, kuriuos sistema naudos generuodama užklausą sukurti virtualią lentelę. Priklausomai nuo to, kokius virtualios lentelės parametrus nurodo kūrėjas, sistema gali sugeneruoti ĮVAIRUS užklausas, kad gautų tą pačią virtualią lentelę, ir jos bus optimizuotos pagal perduodamus parametrus.

Ne visada kūrėjas gali gauti prieigą prie duomenų, prie kurių turi prieigą sistema.

13) Kliento-serverio veikimo režime funkcija SUBSTRING() yra įgyvendinamas naudojant atitinkamo SQL sakinio, perduoto SQL serverio duomenų bazės serveriui, funkciją SUBSTRING(), kuri apskaičiuoja funkcijos SUBSTRING() rezultato tipą naudodama sudėtingas taisykles, priklausomai nuo jos parametrų tipo ir reikšmių, kaip taip pat priklausomai nuo konteksto, kuriame jis naudojamas. Daugeliu atvejų šios taisyklės neturi įtakos užklausos vykdymui, tačiau kartais SQL serverio apskaičiuotas maksimalus rezultato eilutės ilgis yra svarbus užklausos vykdymui. Svarbu nepamiršti, kad kai kuriais atvejais naudojant funkciją SUBSTRING() maksimalus jos rezultato ilgis gali būti lygus maksimaliam riboto ilgio eilutės ilgiui, kuris SQL Server yra 4000 simbolių. Dėl to užklausa gali netikėtai sugesti:

Microsoft OLE DB teikėjas, skirtas SQL serveriui: Įspėjimas: užklausų procesorius negalėjo sukurti užklausos plano iš optimizavimo priemonės, nes bendras GROUP BY arba ORDER BY sąlygos stulpelių ilgis viršija 8000 baitų.

HRESULT=80040E14, SQLSTATE=42000, gimtoji=8618

14) Naudokite atsargiai ARBA dizaino srityje KUR, nes naudojant sąlygą ARBA užklausa gali būti žymiai sunkesnė. Problema gali būti išspręsta projektuojant VISKĄ DERINTI. Pavyzdys:

Kodas 1C v 8.x SELECT

NUO

KUR
_Demo Contractors.Link =Nuoroda1
VISKĄ DERINTI
PASIRINKTI
_Demo Contractors.NameFull
NUO
Katalogas._Demonstracinės sandorio šalys KAIP _Demonstracinės sandorio šalys
KUR
_Demo Contractors.Link = Link2

15) Būklė NĖRA dizaino srityje KUR padidina užklausos vykdymo laiką, nes tai savotiškas NE (AR1 ARBA2... ARBA), todėl dideliems stalams pabandykite naudoti LEFT JOIN su sąlyga NULL. Pavyzdys:

Kodas 1C v 8.x SELECT
_Demo Contractors.Link
NUO
Katalogas._Demonstracinės sandorio šalys KAIP _Demonstracinės sandorio šalys
KAIRĖS RYŠIO dokumentas._Pirkėjo demonstracinis užsakymas KAIP _Pirkėjo demonstracinis užsakymas
Programinė įranga _Demonstracinės sandorio šalys. Nuoroda = _Demo užsakymas pirkėjo. Sandorio šalis
KUR
_Demo Pirkėjo užsakymas. Sandorio šalis NULL

16) Naudojant Laikini stalaiŠiose lentelėse reikia indeksuoti sąlygą ir sujungti laukus, BET, naudojant indeksus, užklausa gali būti dar lėtesnė. Todėl būtina išanalizuoti kiekvieną užklausą su indeksu ir be jo, išmatuoti užklausos vykdymo greitį ir priimti galutinį sprendimą.

Jei įdedate duomenis į laikiną lentelę, kuri iš pradžių buvo indeksuojama kai kuriais laukais, laikinojoje lentelėje nebebus šių laukų indekso.

17) Jei nenaudojate Laikinasis stalo vadovas, tada laikinosios lentelės nereikia aiškiai ištrinti, ji bus ištrinta užbaigus paketinę užklausą, kitu atveju turėtumėte ištrinti laikinąją lentelę vienu iš šių būdų: command NAIKINTI užklausoje iškvieskite metodą TemporaryTableManager.Close().

Be vaizdo įrašo iš Jevgenijaus Gilevo: Tipiškos klaidos rašant užklausas 1C:

Užklausos kalba yra vienas iš pagrindinių 1C 8.3 mechanizmų kūrėjams. Naudodami užklausas galite greitai gauti visus duomenų bazėje saugomus duomenis. Jo sintaksė labai panaši į SQL, tačiau yra tam tikrų skirtumų.

Pagrindiniai 1C 8.3 (8.2) užklausų kalbos pranašumai, palyginti su SQL:

  • atskaitos laukų nuorodų panaikinimas (vieno ar kelių taškų nukreipimas į objekto detales);
  • dirbti su rezultatais labai patogu;
  • galimybė kurti virtualias lenteles;
  • prašymas gali būti parašytas tiek anglų, tiek rusų kalbomis;
  • galimybė blokuoti duomenis, kad būtų išvengta aklavietės.

1C užklausos kalbos trūkumai:

  • skirtingai nei SQL, 1C užklausos neleidžia keisti duomenų;
  • saugomų procedūrų trūkumas;
  • negalėjimas konvertuoti eilutės į skaičių.

Pažvelkime į mūsų mini pamoką apie pagrindines 1C užklausų kalbos konstrukcijas.

Atsižvelgiant į tai, kad 1C užklausos leidžia gauti tik duomenis, bet kuri užklausa turi prasidėti žodžiu „SELECT“. Po šios komandos nurodomi laukai, iš kurių reikia gauti duomenis. Jei nurodysite „*“, bus pasirinkti visi galimi laukai. Po žodžio „NUO“ nurodoma vieta, iš kurios bus atrenkami duomenys (dokumentai, registrai, žinynai ir kt.).

Toliau aptariamame pavyzdyje visos nomenklatūros pavadinimai parenkami iš katalogo „Nomenklatūra“. Po žodžio „KAIP“ nurodomi lentelių ir laukų slapyvardžiai (pavadinimai).

PASIRINKTI
Nomenklatūra Pavadinimas AS Nomenklatūros pavadinimas
NUO
Katalogas.Nomenklatūra AS Nomenklatūra

Šalia komandos „SELECT“ galite nurodyti raktinius žodžius:

  • ĮVAIRUS. Užklausoje bus pasirinktos tik eilutės, kurios skiriasi bent vienu lauku (be dublikatų).
  • PIRMOJI n, Kur n– eilučių skaičius nuo rezultato pradžios, kurias reikia pasirinkti. Dažniausiai ši konstrukcija naudojama kartu su rūšiavimu (ORDER BY). Pavyzdžiui, kai reikia pasirinkti tam tikrą skaičių dokumentų, kurie yra naujausi pagal datą.
  • LEIDŽIAMAS. Šis dizainas leidžia iš duomenų bazės pasirinkti tik tuos įrašus, kurie yra prieinami dabartiniam vartotojui. Remiantis šio raktinio žodžio naudojimu, bandydamas pateikti užklausą dėl įrašų, prie kurių neturi prieigos, vartotojas gaus klaidos pranešimą.

Šie raktiniai žodžiai gali būti naudojami kartu arba atskirai.

DĖL POKYČIŲ

Šis pasiūlymas blokuoja duomenis, kad būtų išvengta tarpusavio konfliktų. Užrakinti duomenys nebus nuskaitomi iš kito ryšio, kol nesibaigs operacija. Šiame punkte galite nurodyti konkrečias lenteles, kurias reikia užrakinti. IN kitaip visi bus užblokuoti. Dizainas aktualus tik automatiniam užrakinimo režimui.

Dažniausiai, kai gaunami likučiai, naudojama sąlyga „FOR CHANGE“. Juk kai programoje vienu metu dirba keli vartotojai, o vienas gauna likučius, kitas gali juos pakeisti. Tokiu atveju gauta likutis nebebus teisinga. Jei šiuo pasiūlymu blokuosite duomenis, tol, kol pirmasis darbuotojas gaus teisingą likutį ir atliks su juo visas reikalingas manipuliacijas, antrasis darbuotojas bus priverstas laukti.

PASIRINKTI
Tarpusavio atsiskaitymai. Darbuotojas,
Tarpusavio atsiskaitymai Tarpusavio atsiskaitymų suma Likutis
NUO
Kaupimų registras Tarpusavio atsiskaitymai su darbuotojais Likutai AS Tarpusavio atsiskaitymai
DĖL POKYČIŲ

KUR

Dizainas reikalingas tam, kad įkeliami duomenys būtų atrinkti. Kai kuriais atvejais, kai gaunami duomenys iš registrų, tikslingiau virtualių lentelių parametruose nurodyti atrankos sąlygas. Naudojant „WHERE“, pirmiausia išgaunami visi įrašai, o tik tada taikomas pasirinkimas, kuris gerokai sulėtina užklausą.

Žemiau pateikiamas prašymo gauti kontaktinius asmenis konkrečioms pareigoms pavyzdys. Pasirinkimo parametras yra tokio formato: &ParameterName (parametro pavadinimas yra savavališkas).

PASIRINKIMAS (ATVEJIS)

Dizainas leidžia nurodyti sąlygas tiesiogiai užklausos turinyje.

Toliau pateiktame pavyzdyje „Papildomame lauke“ bus tekstas, atsižvelgiant į tai, ar dokumentas paskelbtas, ar ne:

PASIRINKTI
Įėjimo T&U.Link,
PASIRINKIMAS
KADA PriėmimasT&U.Atlikta
TADA „Dokumentas priimtas!
KITA „Dokumentas nebuvo paskelbtas...“
END AS Papildomas laukas
NUO
Dokumentas. Prekių ir paslaugų gavimas KAIP gavimo sąlygos ir sąlygos

PRISIJUNK

Sujungia dvi lenteles pagal konkrečią ryšio sąlygą.

KAIRĖJIS/DEŠINĖJIS PRIJUNGIMAS

LEFT sujungimo esmė ta, kad pirmoji nurodyta lentelė paimama visa, o antroji su ja susieta pagal ryšio sąlygą. Jei antrojoje nėra pirmąją lentelę atitinkančių įrašų, jų reikšmės pakeičiamos NULL. Paprasčiau tariant, pagrindinė lentelė yra pirmoji nurodyta lentelė, o antrosios lentelės duomenys (jei yra) jau yra pakeisti jos duomenimis.

Pavyzdžiui, reikia gauti prekių prekes iš „Prekių ir paslaugų gavimo“ dokumentų, o kainas – iš informacinio registro „Prekių kainos“. Tokiu atveju, jei kurios nors pozicijos kainos nerasta, pakeiskite NULL. Visos prekės iš dokumento bus atrenkamos nepriklausomai nuo to, ar jos turi kainą, ar ne.

PASIRINKTI
Kvitas ir U. Nomenklatūra,
Kainos.Kaina
NUO
Dokumentas Prekių ir paslaugų gavimas Prekės KAIP Priėmimas ir specifikacijos
INTERNAL JOIN RegistracijaInformacija.KainosNomenklatūra.SliceLast AS Kainos
Programinės įrangos kvitas&U.Nomenklatūra = Prices.Nomenclature

DEŠINĖJE viskas yra visiškai priešingai.

PILNAS PRIJUNGIMAS

Šis ryšio tipas skiriasi nuo ankstesnių tuo, kad dėl to bus grąžinti visi tiek pirmosios, tiek antrosios lentelės įrašai. Jei pagal nurodytą susiejimo sąlygą pirmoje ar antroje lentelėje nerasta jokių įrašų, vietoj to bus grąžinta NULL.

Naudojant pilną ryšį ankstesniame pavyzdyje, bus pasirinktos visos prekių prekės iš dokumento „Prekių ir paslaugų gavimas“ ir visos naujausios kainos iš registro „Prekių kainos“. Nerasta įrašų reikšmės tiek pirmoje, tiek antroje lentelėse bus lygios NULL.

VIDINIS PRISIJUNGIMAS

Skirtumas tarp INNER JOIN ir FULL JOIN yra tas, kad jei įrašas nerastas bent vienoje iš lentelių, užklausa jo nerodys. Dėl to iš dokumento „Prekių ir paslaugų gavimas“ bus pasirinktos tik tos prekių prekės, apie kurias yra įrašai informaciniame registre „Prekių kainos“, jei ankstesniame pavyzdyje „PILNAS“ pakeisime „VIDU“.

GRUPUOTI PAGAL

Grupavimas 1C užklausose leidžia sutraukti lentelės eilutes (sugrupuoti laukus) pagal konkretų bendras bruožas(sugrupuoti laukai). Grupavimo laukai gali būti rodomi tik naudojant suvestines funkcijas.

Šios užklausos rezultatas bus produktų tipų sąrašas su didžiausiomis jų kainomis.

PASIRINKTI
,
MAX(Kaina.Kaina) AS Kaina
NUO

GRUPUOTI PAGAL
Kainos.Nomenklatūra.Nomenklatūros tipas

REZULTATAI

Skirtingai nuo grupavimo, naudojant sumas, rodomi visi įrašai ir prie jų pridedamos sumos eilutės. Grupuojant rodomi tik apibendrinti įrašai.

Rezultatus galima apibendrinti visai lentelei (naudojant raktinį žodį „GENERAL“), kelių laukų, hierarchinės struktūros laukams (raktiniai žodžiai „HIERARCHIJA“, „TIK HIERARCHIJA“). Apibendrinant rezultatus nebūtina naudoti suvestinių funkcijų.

Pažiūrėkime į pavyzdį, panašų į aukščiau pateiktą pavyzdį, naudodami grupavimą. Tokiu atveju užklausos rezultatas pateiks ne tik sugrupuotus laukus, bet ir išsamius įrašus.

PASIRINKTI
Kainos. Nomenklatūra. Nomenklatūros tipas AS Nomenklatūros tipas,
Kainos.Kaina AS Kaina
NUO
Informacijos registras. Nomenklatūros kainos. Naujausių AS kainų momentinė nuotrauka
REZULTATAI
MAKSIMALUS (kaina)
BY
TipasNomenklatūra

TURIMAS

Šis operatorius yra panašus į WHERE operatorių, bet naudojamas tik suvestinėms funkcijoms. Likę laukai, išskyrus tuos, kuriuos naudoja šis operatorius, turi būti sugrupuoti. WHERE operatorius netaikomas suvestinėms funkcijoms.

Toliau pateiktame pavyzdyje maksimalios prekės kainos pasirenkamos, jei jos viršija 1000, sugrupuotos pagal prekės tipą.

PASIRINKTI

MAX(Kaina.Kaina) AS Kaina
NUO
Informacijos registras. Nomenklatūros kainos. Naujausių AS kainų momentinė nuotrauka
GRUPUOTI PAGAL
Kainos.Nomenklatūra.Nomenklatūros tipas
TURIMAS
MAKSIMALUS(Kainos.Kaina) > 1000

RŪŠIUOTI PAGAL

Operatorius ORDER BY rūšiuoja užklausos rezultatą. Siekiant užtikrinti, kad įrašai būtų rodomi nuoseklia tvarka, naudojama AUTO ORDER. Primityvūs tipai rūšiuojami pagal įprastas taisykles. Nuorodų tipai rūšiuojami pagal GUID.

Pavyzdys, kaip gauti darbuotojų sąrašą, surūšiuotą pagal pavadinimą:

PASIRINKTI
Darbuotojai.Vardas AS Vardas
NUO
Katalogas.Darbuotojai KAIP Darbuotojai
RŪŠIUOTI PAGAL
vardas
AUTOMATINIS UŽSAKYMAS

Kitos 1C užklausų kalbos konstrukcijos

  • SUJUNGTI– dviejų užklausų rezultatai į vieną.
  • VISKĄ DERINTI– panašus į COMBINE, bet negrupuojant identiškų eilučių.
  • TUŠČIAS STALAS– kartais naudojamas sujungiant užklausas, kad būtų nurodyta tuščia įdėta lentelė.
  • VIETA– sukuria laikiną lentelę sudėtingoms 1C užklausoms optimizuoti. Tokios užklausos vadinamos paketinėmis užklausomis.

Užklausos kalbos ypatybės

  • SUBSTRING sutrumpina eilutę iš nurodytos padėties iki nurodyto simbolių skaičiaus.
  • METAI...ANTRA leidžia gauti pasirinktą skaitinio tipo reikšmę. Įvesties parametras yra data.
  • LAIKOTARPIO PRADŽIA ir LAIKOTARPIO PABAIGA naudojamas dirbant su datomis. Laikotarpio tipas (DIENA, MĖNESIS, METAI ir kt.) nurodomas kaip papildomas parametras.
  • ADDKDATE leidžia iš datos pridėti arba atimti nurodytą tam tikro tipo laiką (SECOND, MINUTE, DAY ir kt.).
  • SKIRTUMAS nustato skirtumą tarp dviejų datų, nurodydamas išvesties vertės tipą (DIENA, METAI, MĖNESIS ir kt.).
  • ISNULL trūkstamą reikšmę pakeičia nurodyta išraiška.
  • ATSTOVAVIMAS ir ATSTOVAVIMO NUORODOS gauti nurodyto lauko eilutės atvaizdavimą. Taikykite atitinkamai bet kokias ir tik pamatines vertes.
  • TIPAS, TIPO VERTĖS naudojami įvesties parametro tipui nustatyti.
  • LINK yra loginis palyginimo operatorius, skirtas atributo vertės tipui.
  • EXPRESS naudojamas vertei konvertuoti į norimą tipą.
  • DATA LAIKAS iš skaitinių verčių (metai, mėnuo, diena, valanda, minutė, sekundė) gauna „datos“ tipo reikšmę.
  • PRASMĖ 1C užklausoje jis naudojamas nurodyti iš anksto nustatytas reikšmes - katalogus, sąrašus, charakteristikų tipų planus. Naudojimo pavyzdys: " Kur juridinis asmuo = vertė (išvardijimas. Juridinis asmuo. Asmuo)«.

Užklausų kūrimo priemonė

Norėdami sukurti užklausas su 1C, yra labai patogus integruotas mechanizmas - užklausų dizaineris. Jame yra šie pagrindiniai skirtukai:

  • "Lentelės ir laukai" - yra laukeliai, kuriuos reikia pasirinkti, ir jų šaltiniai.
  • „Ryšiai“ – aprašo CONNECTION struktūros sąlygas.
  • „Grupavimas“ – yra grupavimo struktūrų aprašymas ir pagal jas sumuojami laukai.
  • „Sąlygos“ – atsakingas už duomenų parinkimą užklausoje.
  • "Papildomas" - Papildomos parinktys užklausą, pvz., komandos „SELECT“ raktinius žodžius ir kt.
  • „Joins/Aliases“ – nurodomos lentelių sujungimo galimybės ir nurodomi slapyvardžiai (konstrukcija „HOW“).
  • „Užsakymas“ yra atsakingas už užklausų rezultatų rūšiavimą.
  • „Iš viso“ – panašus į skirtuką „Grupavimas“, bet naudojamas konstrukcijai „TOTALS“.

Pačią užklausos tekstą galima peržiūrėti paspaudus apatiniame kairiajame kampe esantį mygtuką „Prašyti“. Šioje formoje jį galima pataisyti rankiniu būdu arba nukopijuoti.


Užklausų konsolė

Norėdami greitai peržiūrėti užklausos rezultatą įmonės režimu arba derinti sudėtingas užklausas, naudokite . Jame yra užklausos tekstas, nustatomi parametrai ir rodomas rezultatas.

Užklausos konsolę galite atsisiųsti ITS diske arba per .

20.09.2014

Užklausos kalboje yra direktyva „Leidžiama“. Jis sukurtas tam, kad platforma galėtų išfiltruoti įrašus, į kuriuos vartotojas neturi teisių nustatant apribojimus duomenų bazės įrašų lygiu.

Atrodytų, geriau visada naudoti šią direktyvą užklausose. Pasiginčysiu, kad taip nėra. Taip pat tvirtinsiu, kad, jei įmanoma, turėtumėte vengti jo naudoti, štai kodėl.

Tarkime, darome ataskaitą apie tarpusavio atsiskaitymus asmenys. Vartotojas turi teises į vieną organizaciją, duomenų bazėje yra daugiau nei viena organizacija, duomenų bazėje įjungti įrašo lygio apribojimai. Taip pat duomenų bazėje yra registras „Savitarpiai atsiskaitymai“ su matmenimis „Organizacija“ ir „Asmuo“. Jei sistemoje yra užklausa

"Rinkis

Organizacija,

Individualus

ir jis bus vykdomas vartotojo, turinčio vienos organizacijos leidimą, vardu, tada užklausa nebus vykdoma, jei šiame registre yra kitų organizacijų įrašų. Įvyks klaida, o klaidos aprašymas bus „Vartotojas neturi pakankamai teisių užpildyti užklausą! ir tai tiesa, platforma neapgaudinėja, nes neturi teisių į kitų šiame registre esančių organizacijų įrašus.

Ką daryti tokiu atveju, naudoti direktyvą „Leidžiama“? Mano nuomone, neverta. Jums tereikia nustatyti pasirinkimą pagal organizaciją ir vartotojas galės sugeneruoti ataskaitą. Ataskaitos su duomenų sudėtimi užklausa atrodys taip

"Rinkis

Organizacija,

Individualus

(Pasirinkite

Organizacija

Individualus)

Iš Kaupimo registro Tarpusavio atsiskaitymai

(Kur

Organizacija

Individualus)

Jei vartotojas įvykdo užklausą lentelėje nepasirinkęs, ataskaita nebus generuojama, o vartotojas neatpažins kitų organizacijų duomenų, tačiau pasirinkus savo organizacijai, jis bus sugeneruotas teisingais duomenimis.

Galite dar kartą paklausti: „Kodėl neturėtumėte naudoti direktyvos Leidžiama?“ Tai iš karto nustato pasirinkimą ir apsaugos vartotoją nuo nereikalingų pranešimų!

Atsakymas į šį klausimą bus toks, kaip tokiu atveju vartotojas sužinos, kad į ataskaitą įtraukti visi reikalingi duomenys. Tarkime, kad anksčiau šis vartotojas dirbo su visomis teisėmis ir padarė klaidą ir dokumente pasirinko asmenį iš kitos organizacijos. Taip pat gali būti situacija, kai duomenys buvo atsisiunčiami - ir kitos organizacijos padalinys buvo įrašytas į organizacijos dokumentus (ZUP taip pat nustato apribojimus jų savininkui). Tokiu atveju direktyva „Leidžiama“ atkirs draudžiamus duomenis be jokių pranešimų vartotojui ir jis nežinos, kad ne viskas, kas turėtų būti įtraukta į ataskaitą.

Todėl neturėtumėte be atodairos įtraukti šios direktyvos į standartinių konfigūracijų užklausas, nes manote, kad tai klaida. Labai nerekomenduojama to daryti teikiant reguliuojamas ataskaitų teikimo užklausas. Taip pat neturėtumėte to daryti kitose ataskaitose ir dokumentuose, kur reikalingas informacijos tikslumas.

Bet kaip išvengti klaidos, kai programa „stringa“, jei neturite pakankamai teisių?

Taip, tai labai paprasta, jums reikia naudoti komandą „Išbandyti“, čia yra pavyzdys:

Bandymas

Request.Run();

Išimtis

Report(ErrorDescription());

EndAttempt;

Pranešimuose iš naudojant ACS Programos kodas ataskaitai vykdyti turi būti parašytas rankiniu būdu, taip pat bandant.

Dėl to vartotojas negaus neteisingų duomenų ir gaus pagrįstą klaidos pranešimą.

Galite susipažinti su RLS nustatymo niuansais atskiri skyriai mūsų straipsnyje.

„Vaidmenų“ konfigūracijos objektas suteikia aibę teisių operacijų (veiksmų) konfigūracijos objektuose.

Vaidmuo „Visos teisės“.

Tai tik vaidmuo (iš anksto neapibrėžtas), kuriame tikrinamos visų tipų teisės į visus konfigūracijos objektus.

Iš kitų vaidmenų jį išskiria „administravimo“ teisės buvimas.

Jei sukuriamas bent vienas vartotojas, sistema pradeda tikrinti, ar yra „Administravimo“ teisė – ją turi turėti bent vienas vartotojas.

Įrašų lygio prieigos apribojimai

Row Level Security (RLS) – rekordinio lygio apribojimas.

Prieigos prie duomenų apribojimų mechanizmas leidžia valdyti prieigos teises ne tik metaduomenų objektų, bet ir duomenų bazės objektų lygiu. Norint apriboti prieigą prie duomenų, galima naudoti šiuos objektus:

  • vaidmenys,
  • seanso parametrai,
  • funkcinės galimybės,
  • privilegijuotus bendrinamus modulius,
  • raktinis žodis LEIDŽIAMAS užklausos kalba.

Mechanizmas skirtas apriboti prieigą prie metaduomenų objektų lentelės įrašų, remiantis savavališkomis sąlygomis, nustatytomis šių lentelių eilučių laukų reikšmėmis. Pavyzdžiui, norėdami matyti tik „savo“ sandorio šalių, organizacijų ir kt. įrašus.

Techninis prieigos apribojimų įgyvendinimas 1C

1C generuoja užklausą DBVS. Serverių klasteris prie užklausos prideda skyrių WHERE, kuriame yra prieigos ribojimo per RLS sąlygos tekstas, tada ši užklausa siunčiama į DBVS, išgauti duomenys grąžinami 1C klientui.


Šis mechanizmas veiks esant bet kokiai kliento užklausai:

  • ataskaitose,
  • dinaminiuose sąrašuose ir įprastose sąrašų formose
  • pasirinktinėse užklausose.

Toks mechanizmo įgyvendinimas labai paveikia našumą.

Prieigos apribojimų apėjimo būdai.

Atliekant daug išteklių reikalaujančias operacijas (pavyzdžiui, apdorojant dokumentų perkėlimą), dalis kodo gali būti perkelta į privilegijuotus modulius.

A) Privilegijuotas modulis yra įprastas modulis, kurio ypatybėse yra žyma „Privilegijuota“.

Jo ypatumas yra tas, kad jame esantis kodas vykdomas be jokios prieigos teisių kontrolės, įskaitant RLS.


B) Taip pat privilegijuotas režimą galima įjungti dokumentų objektų moduliams. Tai daroma dokumento ypatybėse, vėliavėlėje

  • Privilegijuotas gydymas atliekant
  • Privilegijuotas režimas atšaukiant operaciją


B) Metodas SetPrivilegedMode()

Sistemos komanda leidžia jums padaryti dalį bet kurio modulio kodo privilegijuota.

Nuo kitos kodo eilutės veiks privilegijuotas vykdymo režimas.

Jis veiks iki šio režimo išjungimo linijos arba iki procedūros / funkcijos pabaigos

(Tiesa);

// bet koks kodas čia bus vykdomas be teisių kontrolės ir RLS

NustatytiPrivilegedMode(melas); // arba procedūros / funkcijos pabaiga

Privilegijuoto režimo įjungimo kartų skaičius turi sutapti su jo išjungimo skaičiumi. Tačiau jei atliekant procedūrą ar funkciją privilegijuotas režimas buvo įjungtas (vieną ar daugiau kartų), bet nebuvo išjungtas, sistema automatiškai išsijungs tiek kartų, kiek liko neužbaigtų įjungimų atliekant procedūrą ar funkciją.

Jei procedūroje ar funkcijoje iškviečiamas metodas NustatytiPrivilegedMode(Klaidinga) atliko daugiau nei metodų iškvietimus NustatytiPrivilegedMode(Tiesa), tada bus padaryta išimtis

Funkcija Privilegijuotas režimas() grąžina True, jei privilegijuotas režimas vis dar įjungtas, ir False, jei jis visiškai išjungtas. Tai neanalizuoja tam tikros funkcijos privilegijuoto režimo nustatymų skaičiaus.

Visos iškviestos procedūros ir funkcijos taip pat bus vykdomos privilegijuotuoju režimu.


Taip pat galima pradėti privilegijuotą seansą. Tai seansas, kurio metu privilegijuotas režimas nustatomas nuo pat sistemos pradžios. Be to, veikimo metu metodas Privilegijuotas režimas() visada grįš True, o galimybė išjungti privilegijuotąjį režimą nepalaikoma. Tik vartotojas, turintis administratoriaus teises (administravimo teisę), gali pradėti privilegijuotą seansą. Galite pradėti seansą naudodami klavišą komandinė eilutė paleidžiant kliento programą UsePrivilegedMode arba ryšio eilutės parametrą su informacinė bazė prmod.


Natūraliai kyla klausimas: kam tada apskritai nustatyti prieigos apribojimus, jei juos galima taip lengvai apeiti?

Saugus režimas.

Taip, galite rašyti išorinį apdorojimą naudodami privilegijuotą vykdymo režimą ir iškrauti / sugadinti duomenis. Kad to išvengtų, sistema turi globalaus konteksto metodą

SetSafeMode().

Saugusis režimas, be kita ko, nepaiso privilegijuoto režimo.

Jis turi būti įdiegtas prieš programiškai iškviečiant išorinius procesorius arba eksportuojant procedūras ir funkcijas iš jų modulių.

Atliekant draudžiamas operacijas, vykdymo metu daroma išimtis.

Be to, vaidmenų nustatymų lygiu galite išjungti vartotojų galimybę interaktyviai paleisti išorines ataskaitas ir apdoroti.

Prieigos apribojimų nustatymas

RLS galima konfigūruoti tik teisėms:

  • skaityti (pasirinkti)
  • pridėti (įterpti)
  • pakeisti (atnaujinti)
  • Ištrinti

Skaitymo operacijoms ir ištrynimas, duomenų bazėje esantis objektas turi atitikti duomenų prieigos apribojimus.

Dėl pridėjimo operacijos Prieigos prie duomenų apribojimas turi atitikti objektą, kurį planuojama įrašyti į duomenų bazę.

Keitimo operacijai prieigos prie duomenų apribojimas turi atitikti objektą tiek prieš pakeitimą (kad objektas būtų nuskaitomas), tiek po pakeitimo (kad objektas būtų parašytas).

Visoms kitoms teisėms tokios galimybės nėra.

Pridėkime naują „Nomenklatūros“ katalogo „skaitymo“ teisės apribojimą. Atsidarys laukų, kuriems galite konfigūruoti pridėtą apribojimą, sąrašas.

Tai reiškia, kad jei bandysite pasiekti pažymėtus laukus, apribojimas bus suaktyvintas, tačiau jei bandysite pasiekti nepažymėtus laukus, apribojimas neveiks.

Jei pasirinksite vėliavą " Kiti laukai“, apribojimas bus sukonfigūruotas visiems lentelės laukams, išskyrus laukus, kuriems yra aiškiai nustatyti apribojimai.


*Funkcija: teisės pridėti, keisti, ištrinti:

  • Apribojimą galima konfigūruoti tik visiems laukams.
  • Gali būti tik vienas apribojimas.

Dešinėje „Skaityti“ galite sukonfigūruoti kelias sąlygas; jos bus derinamos su loginiu operatoriumi „AND“.

Ne visi pagrindinio suvaržymo duomenų objekto laukai gali būti naudojami apribojant šių tipų duomenų bazės objektus:

  • kaupimo registruose prieigos apribojimuose gali būti tik pagrindinio apribojimo objekto išmatavimai;
  • apskaitos registruose apribojimams gali būti naudojami tik pagrindinio apribojimo objekto balansiniai matavimai

Jei ribotos prieigos prie duomenų sąlygomis apyvartinis registras kaupimas, naudojami matavimai, kurie neįtraukti į sumas, tada prieinant prie virtualios apsisukimų lentelės saugomos sumos nenaudojamos ir užklausa vykdoma visiškai pagal judėjimo lentelę.

Prieigos apribojimų nustatymo mechanizmas.

Bet kokia operacija su duomenimis, saugomais duomenų bazėje 1C: Enterprise, galiausiai sukelia iškvietimą į duomenų bazę su prašymu nuskaityti arba pakeisti duomenis. Vykdant užklausas į duomenų bazę, vidiniai 1C:Enterprise mechanizmai nustato prieigos apribojimus. Kur:

  • Sukuriamas teisių sąrašas(skaityti, pridėti, keisti, ištrinti), duomenų bazės lentelių sąrašą ir šioje užklausoje naudojamų laukų sąrašą.
  • Iš visų dabartinio vartotojo vaidmenų pasirinkti prieigos apribojimai prie visų su prašymu susijusių teisių, lentelių ir laukų duomenų. Be to, jei vaidmuo neapima prieigos prie lentelės ar lauko duomenų apribojimų, tai reiškia, kad šioje lentelėje yra bet kurio įrašo būtinų laukų reikšmės. Kitaip tariant, prieigos prie duomenų apribojimo nebuvimas reiškia apribojimo buvimą WHERE IS Truth.
  • Nuskaito esamas visų seanso parametrų ir funkcinių parinkčių reikšmes dalyvaujant pasirinktuose apribojimuose.

Norėdami gauti seanso parametro reikšmę arba funkcinis variantas Dabartinis vartotojas neprivalo turėti leidimo gauti šią reikšmę. Tačiau jei kurio nors seanso parametro reikšmė nenustatyta, įvyks klaida ir duomenų bazės užklausa nebus vykdoma.

Apribojimai, gauti iš vieno vaidmens, sujungiami naudojant operaciją IR.

Apribojimai, gauti iš skirtingų vaidmenų, derinami naudojant operaciją ARBA.

Sukurtos sąlygos pridedamos prie SQL užklausų, su kuriomis 1C: Enterprise pasiekia DBVS. Prieinant prie duomenų iš prieigos apribojimo sąlygų, teisių patikra neatliekama (nei metaduomenų objektams, nei duomenų bazės objektams). Be to, sąlygų pridėjimo mechanizmas priklauso nuo pasirinkto apribojimų „visi“ arba „leistini“ veikimo būdo.


*Ypatybė: Jei vartotojas turi prieigą prie kelių vaidmenų su sukonfigūruotais apribojimais vieno objekto įrašo lygiu, tokiu atveju apribojimų sąlygos pridedamos naudojant loginę operaciją „ARBA“. Kitaip tariant, vartotojo galios yra kumuliacinės.

Tai leidžia daryti tokią išvadą: neleiskite susikirsti sąlygų, ribojančių prieigą prie vieno objekto, atliekančio skirtingus vaidmenis, nes tokiu atveju užklausos tekstas bus labai komplikuotas ir tai turės įtakos našumui.

"Viskas" metodas.

Nustatant apribojimus naudojant „visų“ metodą, sąlygos ir laukai pridedami prie SQL užklausų, kad „1C:Enterprise“ galėtų gauti informacijos apie tai, ar vykdant duomenų bazės užklausą buvo naudojami tam tikram vartotojui draudžiami duomenys, ar ne. Jei buvo naudojami draudžiami duomenys, užklausa sugenda dėl prieigos pažeidimo.

Prieigos apribojimų nustatymas naudojant „visų“ metodą schematiškai parodytas paveikslėlyje:


„Leidžiamas“ metodas.

Taikant apribojimus naudojant „leidžiamą“ metodą, sąlygos pridedamos prie SQL užklausų, kad dabartiniam vartotojui draudžiami įrašai neturėtų įtakos užklausos rezultatui. Kitaip tariant, kai apribojimai įvedami „leidžiamu“ režimu, tam tikram vartotojui draudžiami įrašai laikomi trūkstamais ir neturi įtakos operacijos rezultatui, kuris schematiškai pateiktas paveikslėlyje:


Prieigos prie duomenų apribojimai taikomi duomenų bazės objektams tuo metu, kai „1C:Enterprise“ pasiekia duomenų bazę.

1C:Enterprise kliento-serverio versijoje apribojimai taikomi 1C:Enterprise serveriui.

Tačiau ši parinktis (LEIDŽIAMA) neveiks, jei užklausoje nurodysime lentelę, kuriai nesukonfigūruoti prieigos apribojimai, bet kurioje yra nuorodų į lentelės eilutes su sukonfigūruotais apribojimais. Tokiu atveju užklausos rezultatas bus rodomas „<Объект не найден>......“ vietoj nuorodos lauko reikšmės.


Jei kuriate ataskaitą arba apdorojate naudodami standartines arba pasirinktines konfigūracijos užklausas, visada patikrinkite vėliavėlę „Leidžiama“. kad ataskaita veiktų pagal bet kurį vartotoją su bet kokiu teisių rinkiniu.

Objektinio duomenų nuskaitymo iš duomenų bazės atveju vėliavėlės „Leidžiama“ nustatyti negalima. Todėl būtina konfigūruoti objektų skaitymo pasirinkimus, atsižvelgiant į galimus prieigos teisių apribojimus vartotojui. Objektų technologijoje nėra priemonių gauti tik leidžiamus duomenis.

Svarbu, kad jei užklausoje nenurodytas raktinis žodis LEIDŽIAMAS, visi toje užklausoje nurodyti pasirinkimai neturi prieštarauti jokiems užklausoje naudojamų duomenų bazės objektų skaitymo apribojimams. Be to, jei užklausoje naudojamos virtualios lentelės, atitinkami pasirinkimai turi būti taikomi pačioms virtualioms lentelėms.

Praktika 1. Užklausų kūrimo priemonė RLS nustatymuose.

Sukurkime užklausos skyriaus „KUR“ tekstą į katalogą. Galite naudoti užklausų kūrimo priemonę.
Dizainerė turi blankią išvaizdą.


Skirtukas "Lentelės".

Pagrindinė lentelė bus objekto, kuriam konfigūruojamas apribojimas, lentelė.

Taip pat galite pasirinkti kitas lenteles ir nustatyti įvairius ryšius tarp jų skirtuke „Ryšiai“.

Skirtukas "Sąlygos"

Čia galite konfigūruoti faktines prieigos apribojimo sąlygas

Prie nomenklatūros katalogo atributo „Kaina“ pridėkime sąlygas, kad būtų suteikta teisė „skaityti“ visus lentelės laukus.

"Nomenclature WHERE Nomenclature.Price > 500"

Pažiūrėkime, kaip veikia ši paprasta taisyklė. Katalogų lentelėje yra šie elementai:


Nustačius prieigos apribojimą, lentelėje bus rodomi tik tie elementai, kurie atitinka sąlygą:


Grupės taip pat išnyko. Pakeiskime apribojimo tekstą

„Nomenklatūra KUR Nomenklatūra.Kaina > 500

ARBA Nomenklatūra. Tai grupė"

Na, dabar to jums reikia.


Jei sąrašo nustatymuose pašalinsite „kodas“ lauko rodymą, bus rodomi visi katalogo elementai, t.y. apribojimas neveikė. Jei nustatysite rodyti lauką „Kodas“, apribojimas veiks.


Šiuo atveju, nepaisant to, kad katalogo elementas matomas sąrašo lauke, jo formos atidaryti negalima, nes sukonfigūruotas atributo apribojimas. Tas pats nutinka ir savavališkame užklausoje: bandant gauti „ribotą“ nuosavybę, atsiras prieigos klaida.


Jei bandysite programiškai gauti „apribotus“ kredencialus, taip pat bus pateikta prieigos klaida.


Be to, per nuorodą nebus galima pasiekti jokių objekto laukų, nes gavusi nuorodą sistema nuskaito visą objektą, o jei jame yra „apribotos“ detalės, objektas nebus nuskaitomas.

Todėl programiškai dirbant su duomenų bazės objektais reikia nepamiršti galimų apribojimų įrašo lygiu ir pagal užklausą gauti visus reikalingus objekto duomenis, o vėliau juos sudėti į struktūrą arba dalį kodo vykdyti privilegijuotajame modulyje.

Nustačius prieigos apribojimą, pasikeitė eilutės rodymas teisių sąraše - ji tapo pilka ir atsirado piktograma.

Apribojimai nustatant prieigą (RLS).

  • Nėra Santraukos skyriaus;
  • Negalima pasiekti virtualių registrų lentelių;
  • Jūs negalite naudoti parametrų aiškiai;
  • Galima naudoti įdėtose užklausose any>/span> užklausos kalbos įrankiai, išskyrus:
    • operatorius HIERARCHIJOJE;
    • REZULTATAI pasiūlymai;
    • įdėtos užklausos rezultatai neturi būti stalo dalių>/span>;
    • virtualūs stalai, ypač likučiai ir apyvartos

Praktika 2. Nomenklatūra su esama kaina.

Apribokite prieigą, jei reikia rodyti elementus, kurių dabartinė kaina didesnė už tam tikrą vertę, pavyzdžiui, 100.

Sprendimas:

Pridedame naują prieigos apribojimo taisyklę katalogui „Nomenklatūra“ su „skaitymo“ teise.
Pasirinkite „kiti laukai“.
Konstruktoriumi pridedame įdėtą užklausą. Jame pasirinkite informacijos registro lentelę „Prekių kainos“.
Nėra skirtuko „užsakymas“ – tai užklausų kūrėjo funkcija, skirta sukurti prieigos apribojimo užklausą.
Skirtuke „Advanced“ nustatykite „first 999999999“, pasirodys skirtukas „užsakymas“.
Mes nustatome rikiavimą pagal lauką „Laikotarpis“ mažėjančia tvarka.
Tada pagal nuorodą nustatome ryšį tarp pagrindinės lentelės ir antrinės užklausos.


Prieigos apribojimų šablonai.

3 praktika. „Sandorio šalių“ apribojimas pagal vertę konstantoje.

Nustatykime prieigos apribojimą sandorio šalių katalogui pagal konstantoje saugomą reikšmę.

Be to, turite nustatyti apribojimą visiems objektams, kurie išsamiai naudoja katalogą „Sandorio šalys“.

Sprendimas

Kataloge „Sąlygos“ nustatysime „skaitymo“ teisės apribojimą, pridėdami įdėtą užklausą prie konstantos skiltyje „Sąlygos“. Nepamirškite, kad tai yra grupė.

Matome problemą, Counterparties katalogas filtruojamas teisingai ir rodomi visi dokumentai su atributu "Counterparty", kai kurie su "sugedusiomis" nuorodomis atribute "Counterparty".

Dabar reikia sukonfigūruoti prieigos apribojimus visiems objektams, kurie naudoja nuorodą į „Paskyros“. Raskime juos naudodami paslaugą „ieškoti nuorodų į objektą“.

Nukopijuokime ir šiek tiek pakeiskime RLS sąlygos tekstą iš katalogo „Sąlygos šalys“. Tai turi būti daroma tiek kartų, kiek randama objektų.

Arba naudokite prieigos apribojimų šabloną, kad išvengtumėte kodo dubliavimo problemų.

Prieigos apribojimo šablonai konfigūruojami vaidmens lygiu ir gali būti naudojami bet kuriam redaguojamo vaidmens objektui.

Prie šablono galite pridėti bet kokį prieigos apribojimo tekstą. Šablonas iškviečiamas naudojant simbolį „#“. Pavyzdžiui, #TemplateCounterparty.

Per # in 1C instrukcijos rašomos į pirminį procesorių. Vykdydama prieigos apribojimo nustatymus, platforma pakeičia šablono skambučio tekstą šablono tekstu.

Prie šablono „Rangovo šablonas“ pridėkime tekstą po žodžio WHERE, išskyrus tekstą apie EtoGroup.

Parametrai prieigos apribojimų šablonuose.

Tęskime 2 uždavinio sprendimą.

Dabar problema yra ta, kad pagrindinė lentelė kataloge vadinama „santarvės šalimi“, dokumente „Sąskaitos gavimo sąskaita“. Kataloge tikrinamas laukas vadinamas „nuoroda“, dokumente – „Sandorio šalimi“.

Pakeiskime pagrindinės lentelės pavadinimą šablono tekste į „#CurrentTable“

„#CurrentTable“ yra iš anksto nustatytas parametras.

Ir per tašką nurodome įvesties parametro numerį - „.#Parameter(1)

„#Parameter“ taip pat yra iš anksto nustatyta reikšmė. Gali būti bet koks įvesties parametrų skaičius. Jie adresuojami serijos numeriu.

Katalogo prieigos apribojimų tekste nurodome:

Dėl dokumento:

„Prekių pardavimas KUR #TemplateCounterparty („Sandorio šalis“)“

Iškviečiant prieigos apribojimo šabloną, parametrai jam turi būti perduodami tik kaip String, t.y. kabutėse.

Pagrindinė lentelė – Nomenklatūra

Šablono tekstas yra:

#DabartinėLentelė WHERE #DabartinėLentelė.#Parameter(1) = #Parameter(2)

Šablono tekste yra dalis teksto duomenų prieigos apribojimo kalba ir gali būti parametrų, paryškintų simboliu „#“.

Po simbolio „#“ gali būti:

  • Vienas iš raktinių žodžių:
    • Parametras, po kurio skliausteliuose nurodomas parametro numeris šablone;
    • CurrentTable – nurodo įterpimą į tekstą pilno lentelės, kuriai kuriamas apribojimas, pavadinimo;
    • Dabartinės lentelės pavadinimas– žymi įterpimą į tekstą pilno lentelės pavadinimo (kaip eilutės reikšmė, kabutėse), kuriai taikoma instrukcija, dabartinėje integruotos kalbos versijoje;
    • NameCurrentAccessRight– yra teisės, kuriai vykdomas esamas apribojimas, pavadinimas: READ, ADD, INSERT, CHANGE, UPDATE, DELETE;
  • šablono parametro pavadinimas – reiškia atitinkamo šablono parametro apribojimo įterpimą į tekstą;
  • simbolis „#“ – nurodo vieno simbolio „#“ įterpimą į tekstą.

Prieigos apribojimo išraiškoje gali būti:

  • Prieigos apribojimo šablonas, kuris nurodytas formate #TemplateName("Šablono parametro vertė 1", "Šablono parametro vertė 2",...). Kiekvienas šablono parametras yra parašytas dvigubomis kabutėmis. Jei parametro tekste reikia nurodyti dvigubą kabutę, turite naudoti dvi dvigubas kabutes.
  • Funkcija StrContains (WhereWeLook, WhatWeLook). Funkcija skirta ieškoti WhatWeLook eilutės eilėje WhereWeLook. Grąžina True, jei įvykis rastas, o false kitu atveju.
  • + operatorius skirtas eilučių sujungimui.

Kad būtų lengviau redaguoti šablono tekstą, vaidmens formos skirtuke Apribojimų šablonai spustelėkite mygtuką Nustatyti šablono tekstą. Atsidariusiame dialogo lange įveskite šablono tekstą ir spustelėkite Gerai.

Jų negalima įdiegti naudojant Nustatyti parametrą () ar kažkas panašaus.

Parametrai šiuo atveju yra šie:

  • Seanso parinktys
  • Funkcinės parinktys

Seanso parametrų skaitymas prieigos apribojimo užklausoje vyksta privilegijuotuoju režimu, ty nekontroliuojant teisių su jais dirbti.

Praktika 4. Prieiga prie „savo“ sandorio šalių

Būtina sukonfigūruoti dabartinio vartotojo prieigos apribojimą „savo“ sandorio šalims.

Yra katalogas „Vartotojai“, katalogas „Sandorio šalys“, dokumentai su rekvizitais „Sandorio šalis“.

Dabartinis vartotojas turėtų matyti tik tų sandorio šalių, su kuriomis su juo užmegztas ryšys, duomenis.

Taip pat reikia sukonfigūruoti ryšį.

Galimi variantai:

Ryšių tarp vartotojo ir sandorio šalies užmezgimas

  • Išsami informacija sandorio šalių kataloge
  • Informacijos registras

Galimi problemos sprendimai:

  • Vartotojo saugojimas konstantoje yra blogas pasirinkimas; konstanta yra prieinama visiems vartotojams.
  • Saugoti fiksuotą dabartinio vartotojo partnerių masyvą seanso parametruose nėra labai gerai geras variantas, gali būti daug sandorio šalių
  • Saugoti dabartinio vartotojo sesijos parametrus, tada prašyti „jo“ sandorio šalių sąrašo yra priimtina parinktis.
  • Kiti variantai.

Sprendimas.

Sukurkime naują seanso parametrą „CurrentUser“ ir užpildykime seanso modulyje.

Sukurkime informacijos registrą „Vadovų ir rangovų atitiktis“

Sukurkime naują vaidmenį ir jame naują dokumento „Sąskaita faktūra“ prieigos apribojimą.

Prašymo tekste pagrindinę lentelę sujungsime su informacijos registru Paskyra = Paskyra ir Valdytojas = &Dabartinis naudotojas. Ryšio tipas Vidinis.

Jei įmanoma, prieigos apribojimo tekstuose geriau vengti įdėtų užklausų, nes jos bus vykdomos kiekvieną kartą, kai iš šio objekto bus nuskaitomi duomenys iš duomenų bazės.

Tikrinama – apribojimai veikia

*Ypatybė: jei pakeisite vartotojų sandorio šalių sąrašą registre, prieigos apribojimai įsigalios iš karto, neperkraunant vartotojo seanso.

Praktika 5. Pakeitimų draudimo data.

Būtina įgyvendinti duomenų redagavimo apribojimą iki nustatytos pakeitimų uždraudimo datos.
Turite jį apriboti vartotojams.

Sukurkime informacijos registrą „Pakeitimų draudimo datos“ su dimensija Vartotojas, šaltinis Draudimo data.

Sukurkime sprendimo logiką taip:

  • jei vartotojas nenurodytas, draudimas taikomas visiems vartotojams
  • jei yra apribojimas visiems vartotojams ir apribojimas konkrečiam vartotojui, tai apribojimas taikomas konkrečiam vartotojui, o kitiems pagal bendrąjį principą.

Akivaizdu, kad tokį apribojimą galima sukonfigūruoti duomenų bazės objektams, turintiems tam tikrą vietą laiko ašyje. Gali būti

  • Dokumentacija
  • Periodiniai informacijos registrai

Sukurkime naują vaidmenį „Apribojimai pagal pakeitimų uždraudimo datą“.

Jame dokumentui „Sąskaita“ už teisingą „pakeitimą“ pridėsime naują prieigos apribojimą.

Nurodome visų laukų nustatymą.

Apribojimo tekstas yra toks:

ReceiptInvoice FROM Document.ReceiptInvoice AS ReceiptInvoice

Pakeisti uždraudimo datas. Uždraudimo data AS uždraudimo data
NUO

VIDINIS JUNGIMAS (PASIRINKITE
MAX(Keisti draudžiamas datas.Vartotojas) AS vartotojas
NUO
Informacijos registras Keitimų draudimo datos AS Keitimų draudimo datos
KUR
(Keisti draudžiamas datas. Vartotojas = &Dabartinis naudotojas
ARBA datos draudžiami pakeitimai.Vartotojas = VALUE(Directory.users.EmptyLink))) AS VZ_User
PAGAL pakeitimų uždraudimo datą.Vartotojas = VZ_User.User) AS NestedQuery
Programinės įrangos kvito sąskaita faktūra.Data > Įdėta užklausa.Uždraudimo data

Patikrinkime – apribojimas veikia.

Pirminio procesoriaus instrukcijų naudojimas

#Jei Sąlyga1 #Tada

1 užklausos fragmentas

#ElseIf Sąlyga2 #Tada

2 užklausos fragmentas

#Kitaip

3 užklausos fragmentas

#EndIf

Esant sąlygoms, galite naudoti logines operacijas (ir, arba, ne ir pan.) ir prieigą prie seanso parametrų.

Šis metodas prieigos apribojimų konstravimo kontekste patogus tuo, kad, atsižvelgiant į sąlygas, bus sudarytas trumpesnis užklausos tekstas. Paprastesnė užklausa mažiau apkrauna sistemą.

Neigiama yra tai, kad užklausos konstruktorius neveiks su tokiu tekstu.

* Ypatumas:

Priešingai nei įtaisytosios kalbos išankstinio procesoriaus instrukcijos prieigos apribojimų tekstuose, prieš operatorių Tada reikia įdėti maišą - #Tada

6. pratimas. Perjunkite „Naudoti RLS“

Papildykime savo apribojimų sistemą jungikliu, kuris įjungia/išjungia apribojimų naudojimą rekordiniu lygiu.

Norėdami tai padaryti, pridėsime konstantą ir seanso parametrą pavadinimu „UseRLS“.

Parašykime Session Module, kad sesijos parametro reikšmė būtų nustatyta iš konstantos reikšmės.

Prie visų prieigos apribojimų tekstų pridėkime šį kodą:

„#If &UseRLS #Tada….. #EndIf“

Patikriname - viskas veikia.

Tačiau dabar, įjungus vėliavėlę „naudoti radarą“, pakeitimai įsigalios ne iš karto. Kodėl?

Kadangi seanso parametras nustatomas seanso pradžioje.

Galima nustatyti, kad seanso parametro reikšmė būtų nustatyta iš naujo, kai įrašoma nauja pastovi reikšmė, tačiau tai veiks tik dabartinėje vartotojo sesijoje. Kiti vartotojai turėtų būti raginami iš naujo paleisti sistemą.


Pirmos dalies pabaiga.

Redaktoriaus pasirinkimas
Jie yra tarpląsteliniai privalomi parazitai, o tai reiškia, kad jie negali daugintis ar perduoti savo genų be pagalbos...

Baltymai yra būtini sveikai organizmo veiklai, tačiau žmonėms, sergantiems inkstų ligomis, dažnai patariama apriboti jų suvartojimą...

Testosteronas Testosteronas užima ypatingą vietą tarp anabolinių steroidų. Tai sintetinis svarbiausio natūralaus steroido analogas...

1. Atropinas pasižymi ypač ryškiomis antispazminėmis savybėmis. Blokuodamas M-cholinerginius receptorius, atropinas pašalina stimuliuojamąjį poveikį...
yra vyrų sveikatos rodiklis. Trūkstant lytinių hormonų, vyrams išsivysto hipogonadizmas. Ši liga dažniausiai pasireiškia...
Kai kurie žmogaus raumenų ir kaulų sistemos sąnariai savo išvaizda yra visiškai nepastebimi, nors turi gana sudėtingą...
6. Proteinogeninių a-amino rūgščių biocheminės transformacijos: a) transamininimas; b) deamininimas. 7. Izoelektrinio taško samprata...
Šis hormonas yra lemiamas fiziniam vystymuisi vyrų brendimo metu ir reguliuoja lytinę funkciją. Maksimalus...
Hipertiroidizmas yra skydliaukės liga. Jai būdinga per didelė specifinių hormonų ir jų darinių gamyba....