1s rls parametresinin değeri ayarlanmamış. Bir programcının not defteri. RLS kısıtlaması oluşturma

1C programı, Yapılandırıcı - Genel - Roller'de bulunan yerleşik bir erişim hakları sistemine sahiptir.

Bu sistemi karakterize eden nedir ve asıl amacı nedir? Kullanıcıların konumlarına veya faaliyetlerine karşılık gelen hak kümelerini tanımlamanıza olanak tanır. Bu sistem erişim hakları statiktir, yani yönetici erişim haklarını 1C olarak ayarladığından öyledir. Statik olana ek olarak, ikinci bir erişim hakları sistemi vardır - dinamik (RLS). Bu sistemde erişim hakları, çalışma sırasında verilen parametrelere bağlı olarak dinamik bir şekilde hesaplanır.

1C'deki roller

En sık kullanılan güvenlik ayarlarına farklı programlarçeşitli kullanıcı grupları için sözde okuma / yazma izinleri kümesidir ve gelecekte: belirli bir kullanıcının gruplara dahil edilmesi veya gruplardan çıkarılması. Böyle bir sistem, örneğin, işletim sistemi Windows reklamı ( Aktif Dizin). Kullanılan güvenlik sistemi yazılım 1C, adını aldı - roller. Ne olduğunu? 1C'deki roller, şu daldaki yapılandırmada bulunan bir nesnedir: Genel - Roller. Bu 1C rolleri, hakların atandığı gruplardır. Gelecekte, her kullanıcı bu gruba dahil edilebilir ve gruptan çıkarılabilir.

Rolün adına çift tıklayarak, rolün hak düzenleyicisini açacaksınız. Solda nesnelerin bir listesi var, herhangi birini işaretleyin ve sağda olası erişim hakları için seçenekler göreceksiniz:

— okuma: bir veritabanı tablosundan kayıtların veya bunların kısmi parçalarının alınması;
- ekleme: mevcut kayıtları korurken yeni kayıtlar;
— değiştir: mevcut kayıtlarda değişiklik yapmak;
- silme: bazı kayıtlar, geri kalanı değişmeden kalır.

Tüm erişim haklarının iki ana gruba ayrılabileceğini unutmayın - bu "basit" bir haktır ve "etkileşimli" özelliğin eklenmesiyle böyle bir haktır. Burada ne kastedilmektedir? Ve olay şudur.

Kullanıcı, örneğin işleme gibi bir formu açtığında ve aynı zamanda fareyle üzerine tıkladığında, yerleşik 1C dilindeki program, örneğin belgeleri silmek gibi belirli eylemleri gerçekleştirmeye başlar. Program tarafından gerçekleştirilen bu tür eylemlerin izni için, 1C'nin hakları sırasıyla "basitçe" sorumludur.

Kullanıcının günlüğü açması ve klavyeden kendi başına bir şeyler girmeye başlaması durumunda (örneğin yeni belgeler), bu tür eylemlere izin vermekten "etkileşimli" 1C hakları sorumludur. Her kullanıcının aynı anda birkaç rolü olabilir, ardından izin eklenir.

1C'de RLS

Dizine (veya belgeye) erişimi etkinleştirebilir veya devre dışı bırakabilirsiniz. Sadece biraz açamazsın. Bu amaçla, 1C rol sisteminin RLS adı verilen belirli bir uzantısı vardır. Bu, kısmi erişim kısıtlamaları getiren dinamik bir erişim hakları sistemidir. Örneğin, yalnızca belirli bir organizasyon ve deponun belgeleri kullanıcının dikkatine sunulur, gerisini görmez.

RLS sisteminin çok dikkatli bir şekilde uygulanması gerektiği akılda tutulmalıdır, çünkü karmaşık şemasını anlamak oldukça zordur ve farklı kullanıcılar, örneğin, çeşitli kaynaklardan oluşturulan aynı raporu karşılaştırdıklarında soruları olabilir. kullanıcılar. Böyle bir örnek düşünelim. Belirli bir dizin (örneğin kuruluşlar) ve belirli bir hak (örneğin okuma) seçersiniz, yani 1C rolü için okumaya izin verirsiniz. Aynı zamanda, Veri Erişim Kısıtlamaları uzak panelinde, ayarlara bağlı olarak False veya True'nun ayarlandığı istek metnini ayarlarsınız. Tipik olarak, ayarlar özel bir bilgi kaydında saklanır.

Bu sorgu, tüm dizin girişleri için dinamik olarak yürütülecektir (okuma organize edilmeye çalışıldığında). Şu şekilde çalışır: güvenlik isteğinin atadığı kayıtlar - Doğru, kullanıcı görecek, ancak diğerleri görmeyecek. Yerleşik kısıtlamalara sahip 1C hakları gri renkle vurgulanmıştır.

Aynı kopyalama işlemi RLS ayarlarışablonlar kullanılarak yapılır. Başlangıç ​​olarak, güvenlik talebini yansıttığınız örneğin MyTemplate olarak adlandırarak bir şablon oluşturursunuz. Ardından, erişim hakları ayarlarında bu şablonun adını şu şekilde belirtin: "#Şablonum".

Bir kullanıcı 1C Enterprise modunda çalışırken, RLS'ye bağlanırken, "Yetersiz haklar" (örneğin, XXX dizinini okumak için) gibi bir hata mesajı görünebilir. Bu, RLS sisteminin bazı kayıtların okunmasını engellediğini gösterir. Bu mesajın tekrar görüntülenmemesi için istek metnine İZİN VERİLDİ kelimesini girmeniz gerekmektedir.

Bu makale çerçevesinde yapacağımız tüm kullanıcı hakları ayarları, 1C 8.3 "Yönetim" - "Kullanıcı ve hak ayarları" bölümünde yer almaktadır. Bu algoritmaçoğu yapılandırmada benzer yönetilen formlar. Örnek olarak 1C Accounting programı kullanılacak fakat diğer programlarda (1C UT 11, 1C ZUP 3, 1C ERP) yetkilendirmeler tamamen aynı şekilde yapılıyor.

Ayarlar penceresinin "Kullanıcılar" bölümüne gidelim. Burada iki köprü görüyoruz: "Kullanıcılar" ve "Giriş Ayarları". Bunlardan ilki, doğrudan bunun kullanıcı listesine gitmenizi sağlar. bilgi bankası. Yeni bir kullanıcı oluşturmadan önce olası oturum açma ayarlarını göz önünde bulundurun (sağdaki köprü).

Bu ayarlar formunda, şifre karmaşıklığını (en az 7 karakter, zorunlu içerik) belirleyebilirsiniz. çeşitli tipler karakterler vb.). Burada ayrıca şifrenin uzunluğunu, geçerlilik süresini ve belirli bir süre aktivite yapmamış kullanıcılar için programa erişim yasağını belirleyebilirsiniz.

Artık doğrudan 1C'ye yeni bir kullanıcı eklemeye gidebilirsiniz. Bunu, aşağıdaki resimde gösterildiği gibi "Oluştur" düğmesine tıklayarak yapabilirsiniz.

Öncelikle belirtelim Ad Soyad- "Antonov Dmitry Petrovich" ve uygun dizinden seçeceğiz bireysel. Burada çalışanımızın çalıştığı departmanı da belirtebilirsiniz.

"AntonovDP" oturum açma adı otomatik olarak "Antonov Dmitry Petrovich" tam adının kısaltması olarak değiştirildi. 1C Enterprise için bir şifre ve kimlik doğrulama ayarlayın. Burada şunları da belirtebilirsiniz: verilen kullanıcışifreyi kendi kendine değiştir.

Diyelim ki bu bilgi bankasını başlatırken Dmitry Petrovich Antonov'un seçim listesinde yer almasını istiyoruz. Bunu yapmak için, "Seçim listesinde göster" öğesindeki bayrağı ayarlamanız gerekir. Sonuç olarak, programı başlatırken yetkilendirme penceresi aşağıdaki şekilde gösterilen gibi görünecektir.

Kullanım kılavuzu kartındaki bir diğer önemli ayara dikkat edelim - "Programa girişe izin verilir." Gecikme ayarlanmazsa, kullanıcı bu bilgi tabanına giremez.

Erişim hakları

Kullanıcı kartındaki tüm verileri doldurduktan sonra - Antonov Dmitry Petrovich, bunları yazacağız ve aşağıdaki şekilde gösterildiği gibi erişim haklarını belirlemeye devam edeceğiz.

Önümüzde programa önceden girilen erişim profillerinin bir listesi açıldı. Gerekli kutuları işaretleyin.

Grup profillerine erişme

Erişim grubu profilleri, kullanıcıları ve hakları ayarlamak için ana formdan yapılandırılabilir. "Gruplara Erişim" bölümüne gidin ve "Grup Profillerine Erişim" köprüsüne tıklayın.

hadi yaratalım yeni Grup açılan liste formundan. "İzin verilen işlemler (roller)" sekmesindeki tablo bölümünde, oluşturduğumuz gruba dahil olan kullanıcıların erişim haklarını etkileyecek rollerin kutularını işaretlemek gerekir. Tüm bu roller yapılandırıcıda oluşturulur ve yapılandırılır. Kullanıcı modundan değiştirilemez veya oluşturulamazlar. Yalnızca mevcut bir listeden seçim yapabilirsiniz.

RLS: Kayıt Düzeyinde Erişim Kısıtlaması

Belirli bölümlerde program verilerine erişimi daha esnek bir şekilde yapılandırmanıza izin verir. Etkinleştirmek için, kullanıcı ve haklar ayarları formunda aynı ada sahip öğe üzerindeki bayrağı ayarlayın.

Lütfen bu ayarın etkinleştirilmesinin sistem performansını olumsuz yönde etkileyebileceğini unutmayın. Mesele şu ki, RLS mekanizması tüm istekleri aşağıdakilere bağlı olarak değiştirir: yerleşik kısıtlamalar.

Daha önce oluşturduğumuz "Test grubu" erişim grubu profiline geçelim. Aşağıdaki şekil, kayıt düzeyinde erişim kısıtlamasını etkinleştirdikten sonra ek bir "Erişim kısıtlamaları" sekmesinin göründüğünü göstermektedir.

Test grubunun atandığı kullanıcıların profilde belirtilenler dışında bu bilgi bankasındaki tüm kuruluşlara ait verilere erişmesini istediğimizi varsayalım.

Üst tablo bölümünde, kuruluşa göre erişim kısıtlamasını ayarlayın. Alt kısımda, Roga LLC organizasyonu için verilere (belgeler, dizinler vb.) erişim sağlanmayacağına açıklık getireceğiz.

1C yerleşik bir erişim hakları sistemine sahiptir (bu sisteme 1C rolleri denir). Bu sistem statiktir - yönetici hakları 1C olarak ayarladığından, öyle olsun.

Ek olarak, dinamik bir erişim hakları sistemi vardır (adlandırılır - RLS 1C). İçinde, 1C hakları, kullanıcının çalışması sırasında belirtilen parametrelere göre dinamik olarak hesaplanır.

Çeşitli programlardaki en yaygın güvenlik ayarlarından biri, kullanıcı grupları için bir dizi okuma / yazma izni ve ardından - bir kullanıcının gruplara dahil edilmesi veya gruplardan çıkarılmasıdır. Örneğin Windows AD'de (Active Directory) benzer bir sistem kullanılmaktadır.

1C'deki böyle bir güvenlik sistemine Roles 1C denir. Roller 1C, General / Roller dalındaki yapılandırmada bulunur. 1C rolleri, 1C haklarının atandığı gruplar olarak hareket eder. Ardından, kullanıcı bu gruba dahil edilir veya gruptan çıkarılır.

1C rolünün adına çift tıklayarak, 1C rolü için haklar düzenleyicisini açacaksınız. Solda 1C nesnelerinin bir listesi var. Herhangi birini seçin ve erişim hakları için seçenekler sağda görüntülenecektir (en azından: oku, ekle, değiştir, sil).

Üst dal için (isim Geçerli yapılandırma) 1C yönetici hakları ve çeşitli seçenekleri başlatmak için erişim yüklenir.

Tüm 1C hakları iki gruba ayrılır - "basit" hak ve "etkileşimli" ilavesiyle aynı hak. Bunun anlamı ne?

Bir kullanıcı bir formu açtığında (örneğin, işleme) ve üzerindeki düğmeye bastığında, yerleşik 1C dilindeki program, örneğin belgeleri silmek gibi belirli eylemleri gerçekleştirir. Bu eylemlerin izni için (programlı olarak gerçekleştirilir) - "basitçe" 1C'nin hakları sorumludur.

Bir kullanıcı bir günlüğü açıp kendi başına klavyeden bir şeyler yapmaya başladığında (örneğin, yeni belgeler girerek), bunlar “etkileşimli” 1C haklarıdır.

Bir kullanıcının birden fazla rolü olabilir, bu durumda izinler birbirine eklenir.

Rolleri kullanarak erişim haklarını belirleme olanaklarına ilişkin bölüm, bir 1C nesnesidir. Yani, dizine erişimi etkinleştirebilir veya devre dışı bırakabilirsiniz. Biraz açılamaz.

Bunun için 1C rol sisteminin 1C RLS adlı bir uzantısı var. Bu, erişimi kısmen kısıtlamanıza izin veren dinamik bir erişim hakları sistemidir. Örneğin, kullanıcı sadece belirli bir depo ve kuruluş için belgeleri görür ve gerisini görmez.

Dikkatlice! Kafa karıştırıcı RLS 1C şemasını kullanırken, farklı kullanıcılar tarafından oluşturulan aynı raporu doğrulamaya çalıştıklarında farklı kullanıcıların soruları olabilir.

Belirli bir dizin (örn. kuruluşlar) ve belirli bir hak (örn. okuma) alıyorsunuz. 1C rolü için okumaya izin veriyorsunuz. Veri Erişimi Kısıtlama panelinde, ayarlara bağlı olarak DOĞRU veya YANLIŞ döndüren sorgu metnini ayarlarsınız. Ayarlar genellikle bilgi kaydında saklanır (örneğin, Yapılandırma bilgileri kaydı, Accounting UserAccessRightsSettingsUsers).

Bu istek, her bir dizin girişi için (okumayı uygulamaya çalışırken) dinamik olarak yürütülür. Böylece, güvenlik sorgusunun TRUE döndürdüğü kayıtlar için kullanıcı bunu görecek, ancak geri kalanı görmeyecektir.
RLS 1C kısıtlamalarına tabi olan 1C hakları gri renkle vurgulanmıştır.

Aynı RLS 1C ayarlarının kopyalanması, şablonlar kullanılarak yapılır. Bir şablon yaparsınız, buna (örneğin) MyTemplate adını verirsiniz, içinde bir güvenlik isteği belirtirsiniz. Ardından, 1C erişim hakları ayarlarında şablon adını şu şekilde belirtin: "#MyTemplate".

Bir kullanıcı 1C Enterprise modunda çalışırken, RLS 1C çalışırken "Yetersiz haklar" hata mesajı alabilir (örneğin, Xxx dizinini okumak için).

Bu, RLS 1C'nin birkaç kaydın okunmasını engellediği anlamına gelir.

Böyle bir mesajın görünmesini önlemek için, yerleşik 1C dilinde istek metninde ALLOWED () kelimesini kullanmak gerekir.

Örneğin:

1C:Enterprise platformunun sekizinci versiyonu (bugün 8.3), "yedi" ile ilgili olarak, erişim haklarını kayıt düzeyinde kısıtlama mekanizmasının özellikle öne çıktığı birçok değişiklik içeriyordu. Teorik olarak, yalnızca rolleri kullanarak onsuz yapabilseniz de, RLS daha fazlasını başarmanıza olanak tanır. ince ayar erişim. Ancak bu mekanizmanın doğru çalışması için özünü açıkça anlamanız ve 1C'de geliştirme konusunda yeterli deneyime sahip olmanız gerekir.

HBS nedir?

Bu işlevselliğin özü, geliştiricinin belirli bir kullanıcının veya kullanıcı grubunun veritabanı tablolarının tablolarına veya alanlarına erişmesini engelleme becerisinde yatmaktadır. Tipik olarak kısıtlamalar, 1C kullanıcılarının gizli bilgileri görmesini ve düzenlemesini engellemek için kullanılır. sınıflandırılmış bilgi, örneğin, bir grup şirketinin çalışanlarını yalnızca kendi kuruluşlarına ilişkin belgeleri görüntülemeleri için kısıtlayın. Ayrıca, kayıt düzeyinde erişim haklarını kısıtlama mekanizması, gereksiz bilgileri arayüzden kaldırmak için kullanılabilir.

RLS kısıtlamaları için istek yazabilmek için bir rol oluşturmanız veya mevcut bir rolü almanız gerekir. 1C 8.3'teki RLS ayarı, aşağıdaki kullanıcı eylemleri için kullanılabilir:

  • İlave;
  • Okuma;
  • Kaldırma;
  • Değiştirmek.

Erişimi yapılandırmak için en geniş olanaklara ek olarak, RLS'nin dezavantajları da vardır:

  1. Geliştirici yeterlilik gereksinimleri, sorgunun sözdizimi kuralları dikkate alınarak yerleşik dilde yazılması gerekeceğinden;
  2. Koşullarda hızlı bir şekilde hata ayıklanamama;
  3. Sınırlı fırsatlar mantığın açıklamasına göre: çok karmaşık koşulların yine de belge ve dizin modüllerine yazılması gerekecek;
  4. Veritabanlarının istemci-sunucu versiyonunda, sorguda yer alan tabloların dolaylı olarak büyütülmesi mümkündür. Üstelik bu süreci takip etmek çok zor;
  5. kaynak gereksinimleri. RLS limitleri çok fazla istemci makine ve sunucu gücü tüketir;
  6. Küçük belgeler serbestçe kullanılabilir.

1C RLS'yi kurduktan sonra ortaya çıkabilecek bir başka sorun da raporlar olabilir. Gerçek şu ki, geliştiriciler olası RLS kısıtlamalarını tahmin eder ve raporları yalnızca izin verilen verileri gösterecek şekilde oluşturur. Kullanıcıların yapılandırılmış farklı RLS limitleri varsa aynı parametreler için rapordaki veriler onlar için farklı olabilir. Bu, soruları gündeme getirebilir, bu nedenle RLS'de rapor tasarlarken veya sorgu yazarken bu tür durumları göz önünde bulundurmanız gerekir.

RLS kısıtlaması oluşturma

Bir RLS kısıtlaması eklemek için, istediğiniz rolü bulmanız ve çift tıklayarak açmanız gerekir.

Açılan pencere 2 sekme içerir: "Haklar" ve "Kısıtlama Şablonları". Belirli bir eyleme belirli kısıtlamalar getirmek için, onu seçmeniz ve sağ alt kısımdaki yeşil artıya tıklamanız gerekir. Yerleşik 1C dilinde 1C RLS kısıtlamalarını ayarlayabileceğimiz bir satır görünecektir.


1C sözdizimini biliyorsanız (avucunuzun içi gibi), doğrudan "Erişim Kısıtlaması" alanına yazabilirsiniz. 1C geliştiricileri, size yardımcı olacak ve kısıtlamanın ne üzerinde yapılabileceğini söyleyen sorgu oluşturucuyu açma olanağı sağladı. Açmak için üç noktalı düğmeyi (Seç) veya F4'ü tıklamanız gerekir ve "Sorgu Oluşturucu ..." düğmeli bir pencere görünecektir.


Görünen pencerede, yalnızca bu dizin için değil, diğer sistem nesneleri için de kısıtlamalar yapılandırabilirsiniz. Bunu yapmak için, bunları "Tablolar ve alanlar" sekmesine eklemeniz gerekir. "Adlandırma" referans kitabının alanlarına kısıtlamalar getiriyoruz ve "Tamam" ı tıklıyoruz. Değişkenlerin adlarına dikkat edin: RLS parametreleri, kullanıcı oturumunun başlangıcında ayarlanır ve meta veri nesnesinde yer almalıdır.


"Kısıtlama şablonları" sekmesinde, aynı RLS ayarlarını 1C 8.3'te kopyalarken gerekli olan sorgular ayarlanır. Şablonunuzu ekledikten sonra, adını erişim hakları ayarlarında kullanabilirsiniz.

Aynı anda birkaç role kısıtlamalar eklemek de mümkündür. Bunu yapmak için yapılandırma ağacında "Roller" bölümüne sağ tıklayın ve "Tüm roller" öğesini seçin.


Sonuç olarak, bu makalenin 1C geliştirici danışmanlarına yönelik olduğunu ve her şeyden önce 1C:Enterprise'da geliştirme deneyimi olanlara yardımcı olabileceğini belirtmek isterim. Görünen basitliğe rağmen, hakların doğru dağıtımı için kendi girişiminizin veya müşteri kuruluşunuzun iş süreçlerinin anlambilimi ve yapısının anlaşılması, belirli bir düzeyde bilgi ve deneyim gerektirir.

Yazdır (Ctrl+P)

Veri Erişimi Kısıtlaması

Veri erişimi kısıtlama mekanizması (RLS, Row Level Security olarak da bilinir), erişim haklarını yalnızca meta veri nesneleri düzeyinde değil, aynı zamanda 1C:Enterprise veritabanı nesneleri düzeyinde de yönetmenize olanak tanır. Aşağıdaki 1C:Enterprise nesneleri, verilere erişimi kısıtlamak için kullanılabilir:
● roller,
● oturum parametreleri,
● işlevsel seçenekler,
● ayrıcalıklı ortak modüller,
● sorgu dilinde ALLOWED anahtar sözcüğü.
Bu nesneleri paylaşmak, çeşitli işlevleri yerine getiren kullanıcılar arasında verilere erişim haklarını ayırt etmek gerektiğinde maksimum esneklik sağlamanıza olanak tanır.
Aşağıdaki veri işlemlerine (erişim hakları) veri erişim kısıtlamaları getirilebilir: okuma (Okuma hakkı), ekleme (Ekleme hakkı), değiştirme (Değiştirme hakkı) ve silme (Silme hakkı). Geçerli kullanıcı, aşağıdaki durumlarda istenen işlemi gerçekleştirebilecektir:
● Okuma ve silme işlemleri için veri tabanındaki nesne veri erişim kısıtlamasına uymalıdır.
● Ekleme işlemi için veri erişim kısıtlaması, veritabanına yazmayı planladığınız nesne ile eşleşmelidir.
● Bir değişiklik işlemi için veri erişim kısıtlaması, hem değişiklikten önce (okunacak nesne için) hem de değişiklikten sonra (nesnenin yazılması için) nesneyle eşleşmelidir.
Veri erişim kısıtlamaları uygularken, değiştirme, ekleme ve silme işlemleri için yalnızca bir koşul belirtilebileceğini ve bir okuma işlemi için birden fazla veri erişim kısıtlaması belirtilebileceğini unutmayın. Bu, bir nesnenin farklı alanlarını okumak için farklı koşulların ayarlanabileceği anlamına gelir ve bir koşul ayarlarken hem belirli bir alanın adını hem de Diğer alanlar özel alanını belirtebilirsiniz. İlk durumda, koşul yalnızca seçim (verileri okuyan) kısıtlamanın ayarlandığı bir alan içeriyorsa uygulanacaktır ve ikinci durumda, kısıtlama, hariç nesnenin tüm alanları için uygulanacaktır. kısıtlamaların açıkça ayarlandığı alanlar için .
Belirli bir alan için bir kısıtlama ayarlarken, kısıtlama karşılanırsa bu alan okunur ve Diğer alanlar için bir kısıtlama ayarlarken, veri okuma isteğinde yer alan tüm nesne alanları için kısıtlama karşılanırsa nesne verileri okunur. .
Aşağıdaki türdeki veritabanı nesneleri için çeşitli kısıtlamalar getirilebilir: farklı şekiller değişiklikler (ekleme, değiştirme, silme):
Değişim Planları,
● El kitapları,
● Belgeler,
● Planlar özellik türleri,
● Hesap planları,
● Yerleşim türleri planları,
● İş süreçleri,
● Görevler.
Aşağıdaki veritabanı nesnesi türleri için, yalnızca tüm nesneyi değil, aynı zamanda tek tek alanlarını da okumaya kısıtlamalar getirmek mümkündür:
● Değişim planları,
● El kitapları,
● Belgeler,
● Belge günlükleri,
● Karakteristik tip planları,
● Hesap planları,
● Yerleşim türleri planları,
● Bilgi kayıtları,
● İş süreçleri,
● Görevler.
DİKKAT! Yerleşik 1C:Enterprise dilinden uygulama nesnelerinin özelliklerini kullanarak veritabanı nesnelerinin alanlarına erişirken, yalnızca kullanılan alanın değeri değil, tüm nesne okunur. İstisna, görünümün alındığı, yalnızca görünüm oluşturmaya dahil olan alanların değerlerinin okunacağı durumdur.
Erişim kısıtlamaları rollerde bulunur, çoğu meta veri nesnesi için belirtilebilir ve sorgu dilinin bir alt kümesi olan özel bir dilde yazılır.

Veri erişimi kısıtlama dili

Veri erişim kısıtlamaları, sorgu dilinin bir alt kümesi olan özel bir dilde açıklanmaktadır ( Detaylı Açıklama sorgu dili. Veri erişimi kısıtlama dili, sorgulama diliyle ilgili olarak aşağıdaki değişikliklere sahiptir:
● Bir veri erişimi kısıtlama sorgusunda, veri kaynağı olarak her zaman bir tablo vardır - bu, kısıtlamanın uygulandığı nesnenin tablosudur (kısıtlamanın ana nesnesi).
● İsteğin açıklaması kısaltılmıştır. Veri erişimi kısıtlama dili, sorgulama dilinin yalnızca FROM ve WHERE bölümlerini kullanır. Bu nedenle, sorgulama dilinin açıklaması aşağıdaki gibidir:
[İZİN VERİLDİ] [Farklı] [ İLK<Количество> ]
<Seçim alanlarının listesi>
[İTİBAREN <Список источников> ]
[NEREDE<Условие отбора> ]
[GRUPLANDIRMAYA GÖRE <Поля группировки> ]
[SAHİP OLMAK<Условие отбора> ]
[DEGİSİM İCİN [ <Список таблиц Üst düzey> ]]
Veri erişimi kısıtlama sorgulama dilinin açıklaması aşağıdaki gibidir:
[Ana kısıtlama nesnesinin tablo takma adı]
[İTİBAREN <Список источников> ]
[NEREDE<Условие отбора> ]

Veri erişimi kısıtlama dilinde kullanılan alt sorgular, sınırlı sayıda izin verilen olasılığa sahiptir;
● Oturum parametrelerini ve işlevsel seçenekleri koşul öğeleri olarak belirleyebilirsiniz;
● Bir veri erişimi kısıtlama sorgusunda herhangi bir yerde, kısıtlama yazmayı kolaylaştırmak için şablonlar kullanılabilir.
Kısıtlamanın ana kısmı, veri erişim kısıtlamasına tabi olan veritabanı tablosundaki her kayıt için değerlendirilen koşuldur. Kısıtlamanın ana nesnesinin tablosunun bir kaydının koşulu sonucunda boş olmayan bir tablo (yani, 1 veya daha fazla kayıt içeren bir tablo) elde edilirse, bir kayıt mevcut kabul edilir. Koşul boş bir tabloyla sonuçlanırsa, koşulun bu şekilde sağlandığı kayda erişilemez. Ayrıca, ana kısıtlama nesnesinin tablosunun kaydının değiştirilmesi
değişiklik işlemi yapılmadan önce ve sonra, hak için belirtilen kısıtlamayı ihlal etmemesi durumunda geçerli kabul edilir.

Tablo alanları

Veri erişim kısıtlamalarında şunları kullanabilirsiniz:
● Veri erişim kısıtlamasının tanımlandığı nesnenin tablo alanları.
Örneğin, Karşı Taraflar dizininin öğelerinin okunmasına bir kısıtlama getirilirse, Karşı Taraflar dizininin alanları ve tablo bölümleri kısıtlamada kullanılabilir. Özellikle, Karşı Taraflar dizininin öğelerini okumaya yönelik en basit kısıtlamalar şöyle görünebilir:

NEREDE İsim = “Tuğla Fabrikası”
Veya bunun gibi:

NEREDE Ürünler.Ad= “Kiremit kırmızısı”
ürün nerede tablo bölümü Dizin Karşı Tarafları.
● Ana kısıtlama nesnesindeki bağlantılarla erişilebilen nesnelerin tablo alanları.
Örneğin, Karşı Taraflar dizininin Birincil Yöneticisi özniteliği, Kullanıcılar dizinine bir bağlantı türüne sahipse, erişim kısıtlaması örneğin aşağıdaki biçimde olabilir:

NEREDE PrimaryManager.Code= "İvanov"
Veya:

NEREDE AsılManager.Birey.Adı= “Petrovski”
● Belirli koşullar ve bunların üzerindeki ifadeler tarafından kısıtlamanın ana nesnesi ile ilişkili nesnelerin tablo alanları.
Örneğin, Karşı Taraflar dizini öğelerinin okunmasına aşağıdaki kısıtlamalar getirilebilir:

karşı taraflar
İTİBAREN
Dizin.Yükleniciler AS Karşı Tarafları
SOL YÖNDEN KATILIM Dizin.Kullanıcılar NASIL Kullanıcılar
SW = Kullanıcılar.Adı
NEREDE = “Petrovsky”
Bu kısıtlama, Ad alanlarının değerine göre Karşı Taraflar dizininin bu öğesiyle ilişkili Kullanıcılar dizini öğelerinin alanlarını kullanır.

alt sorgular

Alt sorgular, kullanılabilecek kayıt kümelerini oluşturmak için kullanılır:
● ana kısıtlama nesnesinin tablosuyla bağlantı kurmak için;
● IN veya NOT IN karşılaştırma işlemlerinin işleneni olarak kullanılacak.
Alt sorgular, aşağıdakiler dışında herhangi bir sorgu dili özelliğini kullanabilir:
● HİYERARŞİDEKİ işleç;
● SONUÇLAR sunar;
● iç içe geçmiş sorguların sonuçları tablo bölümleri içermemelidir;
● özellikle bazı sanal tablolar Kalanlar ve Cirolar.
Aşağıdaki Karşı Taraflar dizininden okuma kısıtlaması örneğinde, kısıtlamanın ana nesnesine bağlanmak için bir kayıt kümesi olarak bir alt sorgu kullanılır:

karşı taraflar
İTİBAREN
Dizin.Yükleniciler AS Karşı Tarafları
SOL YÖNDEN KATILIM
(SEÇ
Kullanıcılar.Adı, Kullanıcılar.Bireysel
İTİBAREN
Dizin.Kullanıcılar NASIL Kullanıcılar
NEREDE
Kullanıcılar.Kodu> “Petechkin”) AS Kullanıcıları
ÜZERİNDE Karşı Taraflar.AnaYönetici.Adı = Kullanıcılar.Adı
NEREDE Kullanıcılar.Birey.Adı= “Petrovski”
Aşağıdaki örnek, içinde bir alt sorgunun kullanıldığı PassportData of Individuals dizininden okumaya ilişkin bir kısıtlamayı göstermektedir.
karşılaştırma operatörü B'nin işleneni olarak:

NEREDE
PassportDataIndividual.Individual AT
(FARKLI SEÇ
Çalışanlar.Bireysel BİREYSEL OLARAK
İTİBAREN
Bilgi kaydı.Çalışanlar AS İşçileri)
Alt sorguda tablo bölümünden veri almanız gerekiyorsa, alt sorgunun FROM bölümünde doğrudan tablo bölümüne erişmeniz gerekir. Örneğin, bunun yerine:

Bağlantı OLARAK Bağlantıyı SEÇİN.
Ürünler.Ad NASIL ürünün adı
İTİBAREN Dizin.Yükleniciler
bir kısıtlamanın içine yerleştirilmiş bir sorgu olarak şunları kullanmalısınız:

Oturum Seçenekleri

Veri erişimi kısıtlama istekleri, oturum parametrelerini içerebilir. Örneğin, dizinin öğelerini okumak için E-posta Grupları aşağıdaki erişim kısıtlaması ayarlanabilir:

NEREDE Owner.AccountAccess.User = &CurrentUser
Ve Owner.AccessAccount.Yönetim= DOĞRU

CurrentUser bir oturum parametresidir

Fonksiyonel Seçenekler

Veri erişimi kısıtlama istekleri, işlevsel seçenekleri içerebilir. Sadece parametreden bağımsız fonksiyon seçenekleri kullanılabilir. Örneğin, Terminoloji aramasında Ana Depo özniteliği varsa, bu özniteliği okuma kısıtlaması şöyle görünebilir:

NEREDE &Depo Muhasebesi = DOĞRU

Depo Muhasebesinin işlevsel bir seçenek olduğu yerler

kullanım özellikleri

Aşağıdaki türlerdeki veritabanı nesnelerine ilişkin kısıtlamalarda, kısıtlamanın ana veri nesnesinin tüm alanları kullanılamaz:
● birikim kayıtlarında, erişim kısıtlamaları yalnızca ana kısıtlama nesnesinin ölçümlerini içerebilir;
● Kısıtlamalarda muhasebe defterlerinde, kısıtlamanın ana nesnesinin sadece bilanço boyutlarını kullanabilirsiniz.
NOT. Ciro birikim kaydı verilerine erişimin kısıtlanması koşullarında, toplamlara dahil olmayan ölçümler kullanılıyorsa, o zaman
sanal ciro tablosuna erişirken, depolanan toplamlar kullanılmaz ve sorgulama tamamen hareket tablosuna göre yürütülür.

Erişim kısıtlama işlemleri

Erişim kısıtlamaları, veritabanı nesnelerinde karşılık gelen işlemlerin herhangi bir şekilde yürütülmesi sırasında kontrol edilir (diyaloglardan, yerleşik dilden, sorgular aracılığıyla) ve iki yoldan biriyle hareket edebilir:
● Tümü . "Her şey" yöntemi, bu işlemin ima ettiği tüm veritabanı nesnelerinde bazı veri işlemlerinin (diyaloglardan, yerleşik dilden veya sorgular aracılığıyla) gerçekleştirilmesi gerektiğini belirtir. Böyle bir işlemin, uygun erişim kısıtlamalarının karşılanmadığı veritabanı nesnelerini okuması veya değiştirmesi gerekiyorsa, işlem sona erer.
erişim ihlali nedeniyle çöktü.
● İzin verildi . "İzin verilen" yöntem, veriler üzerinde bir işlem gerçekleştirirken, yalnızca karşılık gelen erişim kısıtlamalarını karşılayan veritabanı nesnelerinin okunması gerektiğini belirtir. Erişim kısıtlamalarını karşılamayan veritabanı nesneleri, böyle bir işlem sırasında eksik kabul edilir ve işlemin sonucunu etkilemez.
1C:Enterprise veritabanına eriştiğinde veritabanı nesnelerine veri erişimi kısıtlamaları uygulanır. 1C:Enterprise'ın istemci-sunucu versiyonunda, 1C:Enterprise sunucusuna kısıtlamalar uygulanır.
Veriler üzerinde her işlemin gerçekleştirilmesi için seçilen kısıtlamaların etki şekli, bu işlemin amacına ve sonuçlarının sorumluluk derecesine göre belirlenir. Özellikle, görüntülerken "izin verilen" yöntem kullanılır. dinamik listeler ve diğer bazı etkileşimli etkinlikler. "all" yöntemi, yerleşik 1C:Enterprise dilinden uygulama nesneleriyle herhangi bir işlem gerçekleştirirken, veritabanı nesnelerinde yapılan değişiklikler de dahil olmak üzere kullanılır. Bu nedenle, örneğin, dizinlerin, belgelerin ve diğerlerinin yöneticilerinin Select() yöntemi için bir seçim oluşturmak ve ardından ilgili nesne üzerinde yeterince karmaşık bir kısıtlama ayarlanmışsa sonucu atlamak zor olabilir, çünkü her koşul aynı değildir. erişim hakları kısıtlamasında, Select() yöntemi için bir seçim olarak yeterince temsil edilebilir.
Sorgularda, veri erişim kısıtlamalarının nasıl çalıştığını kontrol edebilirsiniz. Bunu yapmak için, sorgu dili bir anahtar sözcük sağlar. İZİN VERİLMİŞ. İstek İZİN VERİLDİ belirtmezse, kısıtlamalar "tümü" şekilde uygulanır. İZİN VERİLDİ kelimesi belirtilirse, "izin verilir" yöntemi seçilir.
ALLOWED anahtar sözcüğü bir sorguda belirtilmemişse, o sorguda belirtilen tüm filtrelerin, sorguda kullanılan veritabanı nesnelerini okuma kısıtlamalarından herhangi biriyle çakışmaması önemlidir. Ayrıca, sorguda sanal tablolar kullanılıyorsa, sanal tablolara karşılık gelen filtrelerin uygulanması gerekir.
Örnek:

SEÇ
İletişim BilgileriSliceFirst.View
İTİBAREN RegisterInformation.ContactInformation.SliceLast(, Type = &Type)
NASIL İletişim BilgileriSliceFirst
NEREDE
ContactInformationSliceFirst.Type = &Type
Nesne tekniği kullanılırken, İZİN VERİLMİŞ modunda verilere erişim desteklenmez. Nesne tekniğinin, verilerin değiştirilmesi de dahil olmak üzere veriler üzerindeki en kritik işlemler için kullanıldığı varsayılmaktadır. Belirlenen kısıtlamalardan bağımsız olarak nesne teknolojisini kullanarak tüm verileri elde etmek için şunları yapabilirsiniz: gerekli işlemler ayrıcalıklı bir modülde veya tüm haklara sahip bir kullanıcı adına. Nesne teknolojisinde yalnızca izin verilen verileri elde etmenin bir yolu yoktur.

Kısıtlama mekanizması

1C:Enterprise veritabanında depolanan veriler üzerinde yapılan herhangi bir işlem, sonuçta veritabanına bazılarıyla erişmeye yol açar.
verileri okuma veya değiştirme isteği. Veritabanına yapılan sorguların yürütülmesi sırasında, 1C:Enterprise'ın dahili mekanizmaları erişim kısıtlamaları uygular. burada:
● Bir haklar listesi (okuma, ekleme, güncelleme, silme), veritabanı tablolarının bir listesi ve bu sorgu tarafından kullanılan alanların bir listesi oluşturulur.
● Geçerli kullanıcının tüm rollerinden, sorguda yer alan tüm haklar, tablolar ve alanlar için veri erişim kısıtlamaları seçilir. Ayrıca, herhangi bir rol, herhangi bir tablo veya alanın verilerine erişim kısıtlamaları içermiyorsa, bu, herhangi bir kayıttan gerekli alanların değerlerinin bu tabloda mevcut olduğu anlamına gelir. Başka bir deyişle, veri erişim kısıtlamasının olmaması, bir kısıtlamanın varlığı anlamına gelir.
Gerçek NEREDE.
● Seçilen kısıtlamalara katılan tüm oturum parametrelerinin ve işlevsel seçeneklerin geçerli değerleri alınır.
Geçerli kullanıcıdan bir oturum parametresinin değerini almak, o değeri alma hakkını gerektirmez. Ancak, bazı oturum parametrelerinin değeri ayarlanmamışsa, bir hata meydana gelir ve veritabanı sorgusu yürütülmez.
İşlevsel seçeneklerin alınması, işlevsel seçeneğin Alma özelliğinde Ayrıcalıklı mod tarafından etkilenir.
Bu özellik temizlenirse, geçerli kullanıcının işlev seçeneğinin depolandığı nesneye okuma erişimi olmalıdır.
● Aynı rolden türetilen kısıtlamalar, bir AND işlemiyle birleştirilir.
● Farklı rollerden alınan kısıtlamalar birlikte VEYAlanır.
● Oluşturulan koşullar, 1C:Enterprise'ın DBMS'yi çağırdığı SQL sorgularına eklenir. Erişim kısıtlama koşulları tarafından verilere erişirken, herhangi bir hak kontrolü yapılmaz (ne meta veri nesnelerine ne de veritabanı nesnelerine). Ayrıca, koşul ekleme mekanizması, "tümü" veya "izin verilen" kısıtlamalarının seçilen çalışma moduna bağlıdır.
"her şey" yolu
"all" yöntemi kullanılarak kısıtlamalar getirildiğinde, SQL sorgularına koşullar ve alanlar eklenir, böylece 1C:Enterprise, ilgili kullanıcı için yasaklanan verilerin bir veritabanı sorgusu yürütme sürecinde kullanılıp kullanılmadığı hakkında bilgi edinebilir. . Yasaklanmış veriler kullanılmışsa istek iptal edilir. Erişim kısıtlamalarının "herkes" yöntemiyle uygulanması, Şek. bir:

Pirinç. 1. "Her şey" yöntemi

"İzin verildi" yöntemi
"İzin verilen" yöntemi kullanılarak kısıtlamalar getirildiğinde, geçerli kullanıcı için yasaklanmış girişlerin sorgu sonucunu etkilememesi için bu tür koşullar SQL sorgularına eklenir. Diğer bir deyişle, “izin verilen” modda kısıtlamalar getirildiğinde, Şekil 3'te şematik olarak gösterilen bu kullanıcı için yasaklanmış kayıtların eksik olduğu kabul edilir.

Veri erişim kısıtlamalarıyla ilgili diğer nesneler

Veri erişim kısıtlamalarını kullanarak yapılandırmalar geliştirirken, oturum parametreleri, işlevsel seçenekler ve Ayrıcalıklı bayrağına sahip paylaşılan modüller gibi meta veri nesneleri yararlı olabilir.
Oturum Seçenekleri
Oturum parametreleri, veri erişim kısıtlamalarında, sorgu parametrelerinin bir sorguda kullanılabileceği şekilde kullanılabilir.
Fonksiyonel Seçenekler
Parametreden bağımsız işlevsel seçenekler, veri erişimi kısıtlamalarında, sorgu parametrelerinin bir sorguda kullanılabileceği şekilde kullanılabilir.
Ayrıcalıklı Paylaşılan Modüller

Ortak bir modül için Ayrıcalıklı onay kutusu seçilirse, bu modülün prosedürlerinin ve işlevlerinin yürütülmesi önemli ayrıntılar elde eder:
● 1C:Enterprise'ın client-server versiyonunda sadece server üzerinde çalışan modüle ayrıcalık tanınabilir.
● Ayrıcalıklı bir modülün prosedür ve işlevlerinin yürütülmesi ve bunlardan çağrılan her şey, kısıtlama sistemi kapatıldığında gerçekleştirilir.
hem meta veri nesnelerine hem de verilere ilişkin haklar. Böylece ayrıcalıklı bir modülden herhangi bir işlem yapılabilmektedir.
geçerli kullanıcı uygun haklara sahip olmasa bile herhangi bir nesne.
Ayrıcalıklı modüller ilk kurulum veri erişim kısıtlamalarında kullanılan oturum parametresi değerleri.
Hala ortak modüller, sınırlı haklara sahip bir kullanıcı tarafından veriler üzerinde bazı bütüncül eylemler için kullanılabilir.
Örneğin, kullanıcının işlevleri belge girmeyi ve göndermeyi içeriyorsa, ancak kullanıcının bir belge göndermeden etkilenen verilere erişimi olmaması gerekiyorsa, gönderme işleminin yürütülmesi ayrıcalıklı bir modüle taşınabilir. Bu, kullanıcının kendisine diğer bilgiler (örneğin kayıtlar) için haklar vermeden belgeleri göndermesine izin verecektir.
Ayrıcalıklı Mod
Verilerle çalışırken ayrıcalıklı modu programlı olarak ayarlamak mümkündür. Yazılım yüklenmesi ayrıcalıklı mod
bilgi bankası verileriyle büyük işlemler yapılması durumunda gerekli olabilir ve veri erişim haklarını kontrol etmenin bir anlamı yoktur.
Ayrıcalıklı modun açıklaması için buraya bakın.

önişlemciyi kullanma

Veri erişimi kısıtlama metnini düzenlerken, ön işlemci talimatlarını kullanmak mümkündür. Aşağıdaki talimatlar mevcuttur:

#EĞER<Выражение>#SONRA
#ELSEIF<Выражение>#SONRA
#AKSİ HALDE
#ENDESSI
<Выражение>- keyfi Boole ifadesi sonucu Boolean türünde olan yerleşik bir dilde. İfade şunları içerebilir:
● karşılaştırma işlemleri<, >, <=, >= , =, <> ;
● mantıksal işlemler AND, OR, NOT ;
● Oturum Parametreleri - Sözdizimi &Parameter şeklindedir; burada Parametre, oturum parametresinin adıdır.
#IF veya #ELSEIF ifadesinin sonucu True ise, #THEN anahtar sözcüğünden sonraki metin, erişim kısıtlama bildiriminin sonuç metnine yerleştirilir. İfade Yanlış olarak değerlendirilirse, #THEN anahtar sözcüğünden sonraki metin, erişim kısıtlama bildirimi metnine yerleştirilmez. #ELSE ifadesinden sonraki metin, daha önceki koşullardan hiçbiri karşılanmazsa, sonuçta ortaya çıkan erişim kısıtlama metnine yerleştirilecektir.
NOT. Veri erişimi kısıtlama metni ön işlemci talimatları içeriyorsa, bu tür bir kısıtlama düzenleme sırasında sözdizimi denetimini geçemez ve yapıcı kullanılarak değiştirilemez.
Örnek:

#IF &Geçerli Kullanıcı<>“Klimova” #SONRA
<текст ограничения доступа>
#ENDESSI
Burada Şu anki kullanıcı- türün oturum parametresi DirectoryLink.Users.
Bu yapı, erişim kısıtlamalarını ayarlama koşulunun, Klimova kullanıcısı dışında dizindeki tüm kullanıcılar için kontrol edileceği anlamına gelir.

Erişim Kısıtlaması Metin Şablonları

Bir rol, rol formunun Kısıtlama şablonları sekmesinde açıklanan erişim kısıtlama şablonlarının bir listesini içerebilir. Ayrıca, erişim kısıtlama şablonları, erişim kısıtlamalarının ve şablonların grup düzenleme düzenleyicisinde düzenlenebilir.
Her erişim kısıtlama şablonunun bir adı ve metni vardır. Şablon adı, 1C:Enterprise sisteminde kabul edilen adlar için olağan kurallara uyar.
Şablon metni, veri erişimi kısıtlama dilindeki metnin bir bölümünü içerir ve simgesiyle vurgulanan parametreleri içerebilir.
“#”.
Sembolden sonra “#” takip edebilir:
● biri anahtar kelimeler:
● Şablonda parantez içindeki parametre numarasının ardından gelen parametre;
● CurrentTable – kısıtlamanın oluşturulduğu tablonun tam adını metne eklemek anlamına gelir;
Geçerli TabloAdı– Yerleşik dilin geçerli sürümünde, talimatın uygulandığı tablonun tam adının (dize değeri olarak, tırnak içinde) metne eklenmesini belirtir;
● NameCurrentAccessRight - geçerli kısıtlamanın gerçekleştirildiği hakkın adını içerir: OKU/OKU, EKLE/EKLE, DEĞİŞTİR/
GÜNCELLE, SİL;
● şablon parametre adı – ilgili şablon parametresinin kısıtlamasının metne eklenmesi anlamına gelir;
● “#” sembolü – metne bir “#” sembolü eklenmesi anlamına gelir.

Bir erişim kısıtlama ifadesi şunları içerebilir:

● Biçimde belirtilen bir erişim kısıtlama modeli
#TemplateName("Şablon parametre değeri 1", "Şablon parametre değeri 2", ...). Her şablon parametresi çift tırnak içine alınır. Parametre metninde bir çift tırnak işareti belirtmeniz gerekirse, iki çift tırnak kullanın.
● işlev StrContains(Nerede, Neyi Arıyoruz). İşlev, WhereLooking for dizesinde WhatLooking for oluşumunu aramak için tasarlanmıştır. Eşleşme bulunursa True, aksi halde False döndürür.

● Dize birleştirme için + operatörü.
Şablon metnini düzenleme kolaylığı için rol formundaki Kısıtlama şablonları sekmesinde Şablon metnini ayarla düğmesine tıklayın. Açılan iletişim kutusunda şablon metnini girin ve Tamam'a tıklayın.
1C:Enterprise sistemi, şablon metinlerinin sözdizimini kontrol eder, şablonları kullanmak için sözdizimini kontrol eder ve rol erişimi kısıtlama şablonlarının metinlerini istek metnine makro olarak değiştirir.
Şablon makro değişimi:
● şablon metnindeki parametre oluşumlarının kısıtlama metnindeki şablon kullanım ifadesindeki parametre değerleriyle değiştirilmesi;
● sorgu metnindeki şablon kullanım ifadesini ortaya çıkan şablon metniyle değiştirmek.
Erişim kısıtlama kalıpları içeren bir koşul için sorgu oluşturucu çağrıldığında, tüm kalıpların değiştirilmesiyle ilgili bir uyarı verilir.
Kısıtlama kalıplarının örnekleri aşağıdadır:

Verilere kullanıcı erişimini işlevlere göre esnek bir şekilde yönetmek için, veri erişim kısıtlamalarını ayarlarken,
aşağıdaki ilkelere bağlı kalın:
● Uygun olduğu bir dizi bilgi (mevcut kullanıcıya bağlı olabilir) seçmeniz gerekir. ön hazırlık. Seçilen bilgiler bir yandan veri erişim kısıtlamalarını olabildiğince basitleştirmeli ve diğer yandan çok büyük olmamalıdır. Oturum parametrelerine göre dağıtın.
● Oturum modülünün SetSessionParameters() işleyicisinde oturum parametrelerinin değerlerini ayarlayın.
● Haklı olduğu verilere erişim kısıtlamaları ayarlayın (veriler gizlidir veya sistemin bütünlüğünü korumak için en önemlisidir). Erişim kısıtlamaları ayarlamanın, bu verilere herhangi bir erişimi yavaşlatabileceğini unutmayın. Aşırı karmaşık kısıtlamalar da yavaşlamalara neden olabilir.
● Gerekirse, bazı sınırlı sayıda veri işlemlerinin kullanıcı tarafından gerçekleştirildiğinden emin olun. tam erişim bu verilerin verilmesi, bu eylemlerin ayrıcalıklı modüllere taşınması veya ayrıcalıklı modun program kodunda uygun yerlerde açıkça etkinleştirilip devre dışı bırakılması uygun değildir.
● Nesneleri yazarken sistemin gerçekleştirdiği çeşitli kontrollere ayrıcalıklı modda erişilir.

Bu, yapılandırma bu verilerle çalışıyorsa, karşılık gelen alanlar için kayıt düzeyinde haklar üzerindeki kısıtlamaları devre dışı bırakmanıza izin vermez.
yalnızca yönetilen modda planlandı:

● kodun üstünü, sahibini ve benzersizliğini kontrol ederken dizinler için;
● numaranın benzersizliğini kontrol ederken belgeler, iş süreçleri ve görevler için;
● değişim planları için, kodun benzersizliği kontrol edilirken devre dışı bırakılır;
● ana öğeyi ve kodun benzersizliğini kontrol ederken hesap çizelgeleri ve karakteristik tip çizelgeleri için.

Bir veri kısıtlama sorgusu oluştururken akılda tutulması gereken bazı kısıtlamalar ve özellikler vardır:

● Bir nesne tablosu için veri erişim kısıtlamaları ayarlanmışsa ve veri sorgusunda böyle bir tabloyla birleştirme kullanılıyorsa, birleştirme koşulu (yazılım sorgu bölümü), nesnenin tablolu bölümünün belirtilen erişim kısıtlamasıyla kullanılmasına izin vermez.
● Bir sorgu, sorguda tek bir alan kullanmayan bir tablo belirtirse, tüm veri erişim kısıtlamaları bu tabloya uygulanır. Örneğin, bir istek Directory.Counterparties'TEN MİKTAR(*) SEÇİN Test dizini için belirtilen tüm erişim kısıtlamalarına tabi olarak yürütülecektir. Kısıtlamalar "OR tarafından" uygulanır. Bu, en az bir koşulla erişilebilen tüm kayıtların kullanılabilir olacağı anlamına gelir. Bazı alanlar için koşullar ayarlanmamışsa, sorgu tüm tablo kayıtları için yürütülür.
Sorgu bir üst düzey tablo kullanıyorsa, iç içe geçmiş tabloların sütunları için belirtilen kısıtlamalar uygulanmaz.
Bir sorgu iç içe tablo kullanıyorsa, kısıtlamalar hem iç içe tablo hem de üst düzey tablo için geçerlidir.
Örneğin, bir istek Directory.Counterparties.Agreements'DAN MİKTAR(*) SEÇİN Karşı Taraflar dizini için tüm kısıtlamalar dikkate alınarak ve ayrıca Sözleşme'nin tablo bölümü ile ilgili kısıtlamalar dikkate alınarak yürütülecektir.

● Başvurulan meta veri nesnesinin temsilini elde etmek için gereken alanlara erişim, erişim kısıtlamaları tarafından reddedilirse
veri veya nesneye erişim erişim düzeyinde reddedilirse, böyle bir nesnenin temsilinin elde edilmesi geçerli işlemin seyrini etkilemez.

Veri erişimi kısıtlama oluşturucu

Veri Erişim Kısıtlamaları tablo alanındaki kurucuyu çağırmak için Erişim Kısıtlama sütununda düzenleme moduna geçin ve
seç düğmesine tıklayın ve açılan formda Sorgu Oluşturucu… düğmesine tıklayın.
Yapıcı formu ekranda görüntülenir:


Pirinç. 3. Kısıt oluşturucunun "Tablolar ve alanlar" sekmesi

Yardımı ile veri erişim kısıtlamalarını ayarlamak için koşullar oluşturulur.
Tablolar ve alanlar sekmesinde, Veritabanı listesinden gerekli nesneleri seçin ve Tablolar listesine aktarın. Birden fazla tablo belirtilirse, tasarımcı formuna İlişkiler sekmesi eklenir.


Pirinç. 4. Kısıt oluşturucunun "Bağlantılar" sekmesi

Bağlantılar sekmesinde, tablo alanları arasındaki bağlantılara uygulanan koşullar oluşturulur. Yeni bir koşul girmek için Ekle düğmesine tıklayın ve Tablo1 sütunundaki tablolardan birini seçin. Tablo2 sütununda, alanları ilkinin alanlarıyla ilişkili olan tabloyu seçin. Koşullar listesinin altında, tabloları bağlamak için koşulu oluşturan kontroller vardır.
Basit koşul tipi seçilirse, Alan1 ve Alan2'de belirtilen tabloların ilgili alanları seçilir ve karşılaştırma koşulu ayarlanır. Karşılaştırılmayan alanlar seçilirse, Bağlantı koşulu sütunundaki Koşul liste satırında aşağıdaki metin görüntülenir: Yanlış doldurulmuş koşul.
Koşullar sekmesinde, gerekirse, kaynak verilerin seçileceği koşulları belirtmeniz gerekir.


Pirinç. 5. Kısıt oluşturucunun "Koşullar" sekmesi

Seçilen her alan için koşul türünü seçmeli ve parametrenin adını belirtmelisiniz. Parametre olarak bir oturum parametresine izin verilir. Birden fazla koşula izin verilir. Bu durumda, koşul tablosu alanının Koşul sütununda koşul metni birkaç satırda görüntülenir.
Talep oluştururken herhangi bir zamanda Talep Et butonu tıklanarak talebin metni görüntülenebilir.

Erişim kısıtlamalarının ve şablonların toplu olarak düzenlenmesi

Erişim hakları kısıtlamalarının ve şablonlarının grup düzenleme modu, Tüm erişim kısıtlamaları komutuyla çağrılır. bağlam menüsü Rol dalları. Açılan form iki sekme içerir: Erişim Kısıtlamaları ve Kısıtlama Şablonları.


Pirinç. 6 Tüm izin kısıtlamaları ve şablonlar

Yer imi Erişim kısıtlamaları girilen tüm erişim kısıtlamalarını genel listede görüntüleyebilirsiniz (tüm roller, nesneler, haklar, alan kombinasyonları için).
Aynı anda birkaç rol, nesne, hak ve rol kombinasyonu için erişim kısıtlaması eklemek mümkündür.
Listeyi çeşitli kriterlere göre filtreleyebilirsiniz.


Pirinç. 7. Erişim kısıtlamalarının seçimi

Grup düzenleme modu, listede seçilen kısıtlamaları silmenizi sağlar.
Seçilen kısıtlamaları düzenlemek mümkündür. Bu durumda, alanların bileşimini ve/veya erişim kısıtlamasını değiştirmek mümkündür.
Toplu düzenleme modu, seçili kısıtlamaları diğer rollere kopyalamanıza da olanak tanır.

Yer imi Kısıtlama kalıpları uygulanan çözümde bulunan tüm erişim kısıtlama şablonlarını görebilirsiniz, ancak şablon metninin kendisinin yalnızca ilk 10 satırı tabloda görüntülenir ve şablon metni 10 satırdan fazlaysa "..." simgesiyle biter. Şablon düzenleme penceresi, şablonun tam metnini görüntüler.


Şekil 8. Tam Erişim Kısıtlama Şablonları

Aynı anda birkaç rol için bir erişim kısıtlama şablonu eklemek mümkündür.