internet pencereler Android
Genişletmek

1C verilerine erişim sınırlamaları. RLS kullanma

Yapıcı kısıtlamalar, kayıt ve veritabanı alanlarının seviyesinde erişim sınırları yapmanızı sağlar. Kullanılabilir kısıtlamaların listesi bağlam menüsü yapılandırma ağacı rolü dalları; Yapıcı yeni bir kısıtlama eklenirken çağrılır (düğme) Daha ileri) veya mevcut düzenleme:

Bir yapıcıyı aramak için, yeni bir kısıtlama oluştururken, sorgu yapıcısı düğmesine basın:

Sınır tasarım dili, sırasıyla, sorgu dili, yapıcıya benzerdir. Kısıtlamaların ayarlanacağı bir veya daha fazla ilgili tabloyu tanımlayabilir:

Kısıtlamanın kendisi de bir sorgu metni olarak formüle edilmiştir:

Soru 04.51 Sınavı 1C: Platformda profesyonel. Veri Erişim Kısıtlamaları Tasarımcısı'nda:

  1. Sınırın belirlendiği nesne alanlarını yalnızca kullanabilirsiniz.
  2. Yalnızca iç içe geçmiş tabloların sınırlandırılması ve alanının belirlendiği nesne alanlarını kullanabilirsiniz (nesnenin alanlarına göre)
  3. Sorgudaki herhangi bir tablo, limitin belirlendiği nesne alanlarıyla ilişkilendirilebilir.

Doğru cevap üçüncü. Yapıcı birkaç veri tablosu ayarlarsa, iletişim sekmesi içinde görünür:

Diğer tablolarla ilgili kısıtlamaları kaydedebilirsiniz:

Soru 04.52 1C sınavı: Platformda profesyonel. Veri Üzerindeki Erişim Kısıtlamaları Tasarımcısında Erişim Kısıtlamasının Belirlenmesinde ...

  1. sorgu metni yalnızca tasarımcı tarafından oluşturulabilir.
  2. sorgu metni yalnızca manuel olarak girilebilir.
  3. sorgu metni, hem tasarımcı tarafından hem de manuel olarak oluşturulabilir.

Doğru cevap üçüncü - manuel olarak tasarlanabilir.

Soru 04.53 Sınav 1C: Platformda profesyonel. Veri erişim sınırı yapıcısındaki erişim kısıtlamalarını belirlerken:

  1. Sınır kuralı sadece "iletişim" sekmesinde belirlenir
  2. Sınır kuralı sadece "Koşullar" sekmesinde belirlenir
  3. Her iki yapıcı yer imlerinde yapılan ayarlar, verilere erişmek için koşulların tanımına katılın

Doğru cevap üçüncüsü, her iki yer imine, aksi takdirde neden olduklarına ihtiyacımız var.

Soru 04.54 Sınav 1C: Platformda profesyonel. Veri üzerine erişim kısıtlamaları yapıcısındaki erişim kısıtlamalarını belirlerken, aşağıdaki koşullar:

  1. "Seç" anahtar kelimesiyle başlar.
  2. Sadece "çeşitli seç" tasarımıyla başlar
  3. Sadece "İzin verilen izin" tasarımı ile başlar.
  4. "Seç" anahtar kelimesi belirlenmedi
  5. Çeşitli seçenekler 1 ve 3

Doğru cevap dördüncüdir - talep dilinin aksine, burada seçilecek kelimeler.

Soru 07.01 Sınavı 1C: Platformda profesyonel. Veri erişimine erişim ayarlarken, birkaç (alan sayısına göre) kısıtlamaları ayarlar:

  1. Doğru "okuma" için
  2. Doğru "değişim" için
  3. Doğru "ekleme" için
  4. "Sil" için
  5. Yukarıdaki hakların tümü için
  6. Tüm olası haklar için

1.0 sistem platformundan başlayarak, işletme, kullanıcı erişim haklarını giriş seviyesinde sınırlamak mümkündür. Bunun için RLS (Kayıt Seviyesi Güvenliği) mekanizması kullanılır. Böyle bir "ince" ayar, kuruluşlara, müşterilere, isimlendirmeye vb. Erişimi kısıtlamak için faydalı olabilir.

RLS, geliştiricinin bazı kullanıcıların (kullanıcı grupları) veritabanı tablosunda bir durum belirlemesi ve onlara çok fazla vermemesidir. Durumun bir Boolean türüne sahiptir. Durumun değeri "gerçek" değerini alırsa, erişim sağlanır, aksi takdirde yasaktır.

RLS, sıradan erişim haklarının ayarlanmasıyla aynı anda kullanılır. Bu nedenle, RLS yapılandırmasına devam etmeden önce, her zamanki hakları yapılandırma nesnelerine dağıtmanız gerekir.

RLS aşağıdaki erişim hakları türleri için kullanılır:
* Okuma
* İlave
* Değişim
* Sil

RLS ayarlama prosedürü

Yapılandırma basit bir örneği düşünün. Ekran görüntüleri, 1C kurumsal 8.2 (8.2.9.356) için yapılır. Kısıtlamaların şablon şablonlarının sözdizimi, "Geliştirici Kılavuzu'ndaki 8.2 belgelerinde açıklanmaktadır. Bölüm 1 ", bu yüzden üzerinde durmayacağız.

Öyleyse, her bir rol için kısıtlama şablonlarını tanımlamanız gereken ilk şey.

Bundan sonra, belirtilen şablonlar temelinde, kısıtlamalar gerekli nesnelere ayarlanır. Metni düzenlemek için, koşullar veri erişim sınırı yapıcısı tarafından kullanılabilir.

Birden fazla rolü düzenlemek için, "tüm roller" penceresini yönetmek uygundur.

Koşulları diğer rollere kopyalamak için "Tüm Erişim Sınırlamaları" penceresini kullanabilirsiniz. Diğer rollere şablonlar sadece manuel olarak kopyalanabilir.

Bu kadar. Sonucu kontrol edebilirsiniz.

RLS kullanmanın dezavantajları:
1. Kayıt düzeyinde erişim kontrol mekanizması uygulamak, talebe katılan masalarda, veritabanının istemci-sunucusu modunda hatalara yol açabilecek şekilde örtük bir artışa yol açar.
2. Kayıtları kontrol etmek için, uygulamanın karmaşık mantığını uygulamak zordur veya imkansızdır. Bu gibi durumlarda, hazırlık prosedüründeki koşulları kullanmak daha iyidir ().
3. Koşul (sorgu) yazma, geliştiricinin belirli bir gelişmesini gerektirir.
4. Ek zorluklar, durumun (sorgu) hata ayıklamasının imkansızlığını yaratabilir.

Varlık seviyesinin standart konfigürasyonlarında, aşağıdaki nesneler için etkileşimli olarak belirtilebilir: organizasyonlar, karşı taraflar, isimlendirme, depolar, birimler, bireyler, aday uygulamaları ve diğerleri.

Kayıt düzeyinde erişim haklarının kısıtlanması, oldukça yoğun bir mekanizma ve koyduğunuz daha karmaşık kısıtlamaların, programın yavaş, özellikle büyük bir veritabanı ile çalışacağı daha karmaşık kısıtlamalar olduğu unutulmamalıdır.
Melkostutov Alexander

Siteden alınan bilgiler

Sistem 1c Enterprise 8'de, bugün RLS Mekanizması (Haklar Düzeylerinin Kısıtlanması) için Hakların Mekanizmanını ve Daha Derinlik Mekanizmasını incelemeye devam edeceğiz.

Aşağıda avantajlara ve dezavantajlara bakacağız. bu method Ve örnekte 1C kurumsal 8.3'teki RL'leri ayarlamayı düşünün.

1C RLS (Kayıt Seviyesi Güvenliği) veya Kayıt Seviyesi Sınırı - Bunlar, 1C sistemdeki kullanıcı haklarıdır, bu da kullanıcıların haklarını dinamik olarak değişen veri bağlamında bölmenize olanak sağlar.

En yaygın ayar 1C RLS türü, kullanıcının kuruluşlar veya müşteriler bağlamında görünürlüğünün sınırdır (kullanıcı yalnızca "verilerini" görür).

Ana avantaj, genel olarak bir mekanizmanın varlığıdır, mekanizma oldukça karmaşık ve ilginçtir. Kullanıcı haklarını çok ince bir şekilde sınırlamanıza izin verir - kullanıcılar, diğer verilerdeki sistemdeki varlığını bile tahmin edemezler.

Dezavantajları 1C 8 RLS

Dezavantajları arasında sistem performansında gözle görülür bir düşüş belirtilebilir. Bu, veritabanında bir sorgu oluştururken platformun, herhangi bir geliştirici talebini ek koşullarla karşılaştırdığı gerçeğinden kaynaklanmaktadır.

Ayrıca dezavantajları arasında - bu işlevselliğin ortamının karmaşıklığı ve hata ayıklama karmaşıklığı. 1C, bu işlevi ayarlamak ve kullanarak çok az malzeme serbest bıraktı. Mekanizmayı yetkin bir şekilde yapılandıracak bir uzman bulmak oldukça zordur.

1C RLS Kayıtlarında Doğru Sınırları Ayarlama

Kısıtlama Haklar Seviyesi (RLS), aşağıdaki haklar türlerini sınırlamak için kullanılır:

  • Okuma
  • İlave
  • Değişim
  • Kaldırma

Ücretsiz 1C için 267 video eğitimi alın:

Dışarıdan, RLS ayarı (hak seviyesi), basit bir hazırlığına benzer. Müşteri üzerindeki belgelerin belge başlığından görünürlüğüne erişimi kısıtlamak için bir şablonun örneği:

## IF & Tools Agivities ## O zaman

Geçerli Saray # akım stüdyosu akışlı olarak
Sol bağlantı (farklı seç
Yapılandırma. Grup yönetimi olarak bağlantı
NIN-NİN
Dizin. Grup kullanıcıları. Bir içerik olarak kullanıcı grupları
NEREDE
Konfigürasyon. Kullanıcı \u003d & TELER) Grup kullanıcıları olarak
(Ve sınırlıdır, kayıtların kontrolleri)
Nerede (& Araçlar dizüstü bilgisayar tamirini başlatır \u003d yanlış
Veya (1 in yok
(İlk 1'i seçin
1 Saha Görevi olarak
NIN-NİN
Kayıt Ol. NaniancenewsObjectStype Olarak PrescribedeveVSPSP
NEREDE
Randevu -Evow-boutstype. Grup Grupları \u003d Kullanıcı Grubu Grupları
Ve seçim
Yöntemlerin atanması eklendiğinde. VIDAKENTADPORT \u003d değer (listeleme. Vido-boutstostup. Yükleniciler)
Ve mevcut. # Parametre (1) link dizini. Kontrgentler
Ve Mevcut Değil. # Parametre (1) \u003d Değer (Referans Kitabı. Kontrbentler. Restoran)
Sonra seçim
Ne zaman 1 B.
(İlk 1'i seçin
1
NIN-NİN
Rehber. Karşı taraf olarak kontrgasyonlar İç mekan bağlantılarının bağlantısı. Kullanıcıların yönetimini yapılandırma kurallarını yapılandırın.
TARAFINDAN
Yönergeleri ayarlama. Schectstype \u003d karşı taraf. Grup fazıPaccontrants
Ve destek kullanıcılarını yapılandırın. VIDAKELYADPORT \u003d değer (numaralandırma. Vidabext sitesi. Yükleniciler)
Ve (Yapılandırma destekleri kullanıcıları. Kullanıcı \u003d prescribedevewpeutup. Grup kullanıcıları
Veya yapılandırma kullanıcıları. Kullanıcı \u003d değer (dizin. Gruppuse kullanıcıları. Kullanıcıları takip edin))
Ve yapılandırma kullanıcıları. Kayıt \u003d gerçek
NEREDE
Karşı taraflar. Bağlantı \u003d GeçerliTack. # Parametre (1))
Sonra gerçek
Aksi halde yatıyor
SON
Gerçek dışında
Son \u003d yalan))
Ve grup kullanıcıları değil. Grup kullanıcıları null)
## en iyi

Aslında, "Mevcut Saray" tablosunu talep ederken her seferinde bu sorgu eklenir. Hangi ek yükün kayıt seviyesi limit mekanizmasını taşıdığını hayal edebileceğiniz.

Gördüğünüz gibi, sorguda özel parametreler var, örneğin "ve kayıtların sınırlarını kullanır." Radardaki bu parametreler meta veri nesnelerinden seçilir - "". Kural olarak, kullanıcının oturumunun başlangıcında ayarlanırlar.

Veri Erişim Kısıtlama Tasarımcısı

1C 8.3'te geliştiricinin rahatlığı için var Özel program RLS ayarlarına, veri kısıtlama sınırı tasarımcısına yardımcı olmak için. "Erişim Kısıtlaması" alanından çağrılır. Aşağıdaki gibi:

"Rol" yapılandırma nesnesi, yapılandırma nesnelerinin üzerinde işlemlere (eylemler) bir dizi hak verir.

"Tam hakların" rolü.

Bu, tüm konfigürasyon nesnelerine her tür hak üzerine bayrakların kurulduğu sadece bir roldür (önceden tanımlanmış değildir).

Diğer rollerden farkı - doğru "İdare" varlığı.

En az bir kullanıcının oluşturulması durumunda, sistem doğru "Yönetim" olup olmadığını kontrol etmeye başlar - en az bir kullanıcı olmalıdır.

Giriş seviyesindeki erişimin kısıtlanması

Sıra seviyesi güvenliği (RLS) - kayıt düzeyinde kısıtlamalar.

Veri Erişim Kısıtlamaları Mekanizması, yalnızca meta veri nesneleri düzeyinde değil, aynı zamanda veritabanı nesnesi seviyesinde de erişim haklarını yönetmenize olanak sağlar. Veri erişimini sınırlamak için aşağıdaki nesneler kullanılabilir:

  • rol
  • oturum parametreleri,
  • İşlevsel seçenekler,
  • ayrıcalıklı Genel Modüller,
  • anahtar kelime Sorgu dilinde izin verilir.

Mekanizma, bu tabloların satır alanlarının değerlerine uygulanan isteğe bağlı koşullardaki meta veri nesnelerinin kümelerine erişimi kısıtlamak için tasarlanmıştır. Örneğin, kayıtları yalnızca "onun" karşı tarafları, kuruluşları vb.

1C'de Erişim Kısıtlamalarının Teknik Uygulanması

1C, DBMS'ye bir istek oluşturur. Sunucu kümesi, RLS ile erişimi kısıtlamak için durumun metnini içeren sorgu bölümüne ekler, daha sonra bu istek DBMS'ye gönderilir, çıkarılan veriler 1C istemciye döndürülür.


Böyle bir mekanizma, istemciden herhangi bir istekle çalışacaktır:

  • raporlarda,
  • içinde dinamik listeler ve sıradan liste biçimlerinde
  • keyfi sorgularda.

Böyle bir mekanizma uygulaması performansı büyük ölçüde etkiler.

Erişim kısıtlamalarını atlamanın yolları.

Büyük kaynak yoğun operasyonlarda (örneğin belgeleri belgelendirme işlemlerinin işlenmesi), kodun bir kısmı tercih edilen modüllere alınabilir.

FAKAT) Ayrıcalıklı modül - bu ortak modül Özelliklerdeki "ayrıcalıklı" bayrağınızla.

Özelliği, içindeki kodun RLS de dahil olmak üzere erişim haklarının herhangi bir kontrolü olmadan yürütülmesidir.


B) ayrıca ayrıcalıklı Mod açılabilir belge nesneleri modülleri için. Bu, belgenin özelliklerinde, bayrak yapılır.

  • Yapılırken Ayrıcalıklı Mod
  • İptal ederken ayrıcalıklı mod


C) yöntem Kurulan ()

Sistem komutu, herhangi bir modülün kodunun bir kısmını imtiyaz etmenizi sağlar.

Kodun bir sonraki satırında, tercih edilen bir yürütme modu çalıştırılacaktır.

Bu modun bağlantısı kesilmesi veya prosedür / işlevin sonuna kadar hareket edecektir.

(Hakikat);

// Buradaki herhangi bir kod, hakların ve RL'lerin kontrolü olmadan gerçekleştirilecektir.

YüklemePrivigated(Yanlış ); // veya prosedürün / fonksiyonun sonu

Ayrıcalıklı modun sayısı kapanma sayısı kapanma miktarıyla eşleşmelidir. Bununla birlikte, eğer ayrıcalıklı mod (bir veya daha fazla) prosedürün veya fonksiyonun içinde açıldıysa, ancak kapanmadı, sistem eğilimli kapanımların eğik prosedür veya fonksiyonda olduğu kadar otomatik olarak kapanacaktır.

Prosedür veya fonksiyon çağrısı işlevleriniz varsa YüklemePrivigated(YANLIŞ) yöntem çağrılarından daha fazlasını yaptı YüklemePrivigated(Gerçek), o zaman bir istisna neden olur

İşlev Ayrıcalık() Ayrıcalıklı mod hala açıksa doğru döndürür ve tamamen kapatılırsa, yatıyor. Bu, tercih edilen mod ayarlarının sayısını belirli bir işlevde analiz etmemektedir.

Tüm nedenlere neden olan prosedürler ve fonksiyonlar ayrıcalıklı bir modda da yapılır.


Ayrıca ayrıcalıklı bir oturum başlatma yeteneği de var. Bu, ayrıcalıklı modun sistemin başlangıcından kaynaklandığı bir oturumdur. Operasyon yöntemi sırasında aynı anda Ayrıcalık() Her zaman gerçeği döndürür ve ayrıcalıklı modu devre dışı bırakma yeteneği desteklenmiyor. Ayrıcalıklı bir oturum başlatmak için yalnızca idari haklar için geçerli olan kullanıcı (doğru idari). Bir oturum başlatmak, anahtar kullanarak gerçekleştirilebilir. komut satırı USEPrivilegedMode istemci uygulaması veya bağlantı dizesi parametresinin başlatılması bilgi tabanı Prmod.


Soru doğal olarak ortaya çıkar: Neden genel olarak erişim hakkındaki kısıtlamaları ayarlamak için, eğer etrafta dolaşmak çok kolay olabilir mi?

Güvenli mod.

Evet, ayrıcalıklı bir yürütme modu ile dış işlemeyi yazabilir ve verileri boşaltabilir / bozabilirsiniz. Bunu sistemde önlemek için, küresel bir bağlam yöntemi var.

Takma().

Güvenli Mod Diğer şeylere ek olarak, ayrıcalıklı modun göz ardı edilir.

Program meydan okumasından önce kurulması gerekiyor dış işlemler veya modüllerinden ithalat prosedürleri ve işlevleri.

Yasaklanan işlemleri yürütme sırasında gerçekleştirirken, bir istisna oluşturur.

Ek olarak, kullanıcılar için rol ayarları düzeyinde interaktif başlangıç \u200b\u200bolasılığını kapatabilirsiniz. dış Raporlar ve tedaviler.

Erişim Kısıtlamalarını Ayarlama

RL'ler yalnızca haklar için yapılandırılabilir:

  • seçmek)
  • ekleme (ekleme)
  • değişim (güncelleme)
  • sil (Sil)

Okuma işlemleri için ve veritabanındaki bir nesneyi silin, verilere erişimin kısıtlanmasına uymalıdır.

Ekleme işlemi için Veri Erişim Kısıtlaması, veritabanında kaydedilmesi planlanan nesne olmalıdır.

Değişim işlemi için Veri erişim kısıtlaması, değişiklikten önce olduğu gibi nesneye uyulmalıdır (böylece nesnenin okunması için) ve değiştirildikten sonra (böylece nesne kaydedilir).

Diğer tüm haklar için böyle bir olasılık yoktur.

"Adlandırma" dizininin "okunması" dizini için yeni bir kısıtlama ekleyin. Eklenen sınırı yapılandırabileceğiniz bir alanların bir listesi açılır.

Bu, bayraklarla işaretlenmiş alanlara, kısıtlamanın işe yaramadığı ve kontrolsüz alanlara erişmeye çalıştığınızda, kısıtlama çalışmayacağı anlamına gelir.

Bayrağı seçerseniz " Diğer alanlar"Kısıtlama, sınırlamaların özel olarak tanımlandığı alanlar hariç tüm tablo alanları için yapılandırılacak.


* Özellik: Haklar için ekleme, değişiklik, kaldırma:

  • Kısıtlama yalnızca tüm alanlar için yapılandırılabilir.
  • Kısıtlama sadece bir olabilir.

Doğru okumak için, çeşitli koşulları yapılandırabilirsiniz, mantıksal bir operatörle birleştirilecektir "ve".

Aşağıdaki türlerin veritabanı nesnelerinin sınırlamalarında, bu kısıtlamaların ana nesnesinin tüm alanları kullanılamaz:

  • birikim kayıtlarında, erişim kısıtlamaları sadece ana nesne limit nesnesinin ölçümlerini içerebilir;
  • kısıtlamalardaki muhasebe kayıtlarının kaydedilmesinde, yalnızca ana nesne limit nesnesinin denge ölçümlerini kullanabilirsiniz.

Mevcut birikim kaydı verilerine erişimi kısıtlama koşullarında, sonuçlara ölçümler dahil değildir, daha sonra sanal cirona erişirken, depolanan sonuçlar kullanılmaz ve sorgu tamamen hareket tablosunda gerçekleştirilir.

Erişim kısıtlamaları mekanizması.

Veritabanında depolanan veriler, 1C: Kurumsal olarak, sonuçta belirli bir okuma talebi veya veri değişikliği olan bir veritabanına yol açar. Veritabanına sorgular yürütme sürecinde, iç mekanizmalar "1c: İşletmeler" bir kaplama erişim kısıtlamaları gerçekleştirir. Burada:

  • Hakların bir listesini oluşturdu (Okuma, ekleme, değiştirme, silme), veritabanı tablolarının listesi ve bu istek tarafından kullanılan alanların listesi.
  • Tüm rollerden Şu anki kullanıcı kısıtlamalar seçildi İsteğe bağlı olan tüm haklar, tablolar ve alanlar için veri için. Bu durumda, herhangi bir rolün herhangi bir tabloda veya alan verilerinde erişim kısıtlamaları içermiyorsa, bu, bu, gerekli alanların herhangi bir kayıttan değerlerinin bu tabloda mevcut olduğu anlamına gelir. Başka bir deyişle, veri erişimini kısıtlama eksikliği, gerçeğin olduğu bir kısıtlamanın varlığı anlamına gelir.
  • Tüm oturum parametrelerinin ve işlevsel seçeneklerin mevcut değerleri elde edilir.seçilen kısıtlamalara katılmak.

Oturum parametresinin değerini veya işlevsel seçeneğinin değerini elde etmek için, geçerli kullanıcı bu değeri alma hakkını gerektirmez. Bununla birlikte, belirli bir oturum parametresinin değeri ayarlanmamışsa, bir hata oluşacak ve veritabanı isteği yürütülmez.

Aynı rolden elde edilen sınırlamalar operasyon tarafından birleştirilir ve.

Farklı rollerden elde edilen sınırlamalar, işlem tarafından birleştirilir veya.

"1C: Enterprise" nın DBM'leri ifade ettiği SQL isteklerine inşa edilmiş koşullar eklenir. Verilere koşul sınırlama koşullarından erişirken, hak kontrolü yapılmaz (meta veri nesnelerinin veya veritabanı nesnelerinin hiçbiri). Ayrıca, koşullar eklemek için mekanizma, "tüm" veya "izin verilen" sınırlamaların seçilen eylem yöntemine bağlıdır.


* Özellik: Kullanıcı, giriş seviyesindeki bir nesneye yapılandırılmış kısıtlamalarla birkaç rol oynarsa, bu durumda kısıtlamalar için şartlar "veya". Başka bir deyişle, kullanıcının yetkisi ekliyor.

Buradan aşağıdaki sonuçtan: farklı rollerde bir nesneye erişimi kısıtlamak için koşulun kesişimine izin vermeyin, çünkü bu durumda sorgunun metni büyük ölçüde karmaşıktır ve performansı etkileyecektir.

"Hepsi" yöntemi.

SQL-Taleplere göre "tüm" yöntemiyle kısıtlamalar getirdiğinizde, SQL isteklerine koşullar ve alanlar eklenir, böylece "1C: Kurumsal", bu kullanıcı için yasaklanan verilerin veritabanının yürütülmesi sırasında kullanıldığı hakkında bilgi alabilir. istek ya da değil. Yasaklanan veriler kullanılıyorsa, erişim haklarının ihlali nedeniyle talebin acil durum tamamlanması başlatılır.

Erişim kısıtlamalarının "tüm" yönteminde şematik olarak gösterilmesi Şekilde gösterilmiştir:


Yöntem "izin verildi".

"Yetkili" yöntemle kısıtlamalar getirdiğinizde, bu tür koşullar SQL isteklerine eklenir, böylece mevcut kullanıcının yasaklanması, isteğin sonucu üzerinde bir etkisi yoktur. Başka bir deyişle, "izin verilen" modda kısıtlamalar yaparken yasaktır bu kullanıcı Kayıtlar eksik olarak kabul edilir ve işlemin sonucu Şekilde şematik olanı etkilemez:


Veri erişim kısıtlamaları, veritabanına "1C: işletmeler" sırasında "1C: İşletmeler" sırasında veritabanı nesnelerine bindirilir.

"1C: İşletmeler" istemci-sunucu sürümünde, "1C: İşletmeler" sunucusunda kısıtlamaların dayatılması gerçekleştirilir.

Bununla birlikte, bu seçenek (izin verilen), erişim kısıtlamalarının yapılandırılmadığı sorgudaki tabloya dönersek çalışmaz, ancak tablo satırlarına yapılandırılmış sınırlamalarla referanslar var. Bu durumda, talep sonucu "<Объект не найден>... "referans alanının değeri yerine.


Tipik veya kendi kendine yazılı yapılandırma sorgularını kullanarak bir rapor veya işleme geliştiriyorsanız, her zaman "izin verilen" bayrağını koyunBöylece rapor çalıştı herhangi bir kullanıcı altında Herhangi bir hak ile.

Veritabanından nesne okuması durumunda, "izin verilen" bayrağını belirleme imkanı yoktur. Çok ihtiyacım var olası kısıtlamaları dikkate alarak nesne okuması için seçim seçimlerini yapın kullanıcı için. Nesne teknisyeninde yalnızca izin verilen verilerin resepsiyonları sağlanmaz.

Anahtar kelimenin sorguda belirtilmemişse, bu istekteki tüm seçimler, sorguda kullanılan veritabanı nesnelerini okumadaki kısıtlamaların hiçbirine aykırı olmaması önemlidir. Aynı zamanda, sanal tablolar sorguda kullanılıyorsa, ilgili seçimler sanal tabloların kendilerine uygulanmalıdır.

Uygulama 1. RLS ayarlarında tasarımcı isteyin.

"Nerede" talebinde bulunan bölümün metnini oluşturacağız. İstek tasarımcısını kullanabilirsiniz.
Tasarımcının kesilmiş bir görünüme sahip.


Masa sekmesi

Ana tablo, kısıtlamanın yapılandırıldığı nesnenin tablosu olacaktır.

Ayrıca diğer tabloları da seçebilir ve "İletişim" sekmesinde aralarında çeşitli bağlantıları yapılandırabilirsiniz.

Yer imi "Koşullar"

İşte gerçek erişim sınırlama koşulları

Dizinin "fiyat" sahnelerinin koşullarını ekleriz. Masanın tüm alanlarına okuma hakkının adlandırılması.

"Adlandırmanın Nomansiyonu. Fiyat\u003e 500"

Nasıl çalışacağını kontrol edin. Dizin tablosu bu tür öğeleri içerir:


Erişim kısıtlamasını yapılandırdıktan sonra, tablo yalnızca durumları karşılayan eşyaları gösterecektir:


Ayrıca gruplar verdi. Kısıtlamanın metnini değiştirin

"Adlandırma Nomansiyonu. Fiyat\u003e 500

Veya isimlendirme. Lategroup "

Peki şimdi neye ihtiyaç var.


Listeyi ayarlarken "Kod" alanını kaldırırsanız, referans kitabının tüm öğeleri görüntülenir, yani Kısıtlama işe yaramadı. "Kod" alanının ekranını eklerseniz, kısıtlama çalışacaktır.


Aynı zamanda, referans kitabının elemanının liste alanında göründüğü gerçeğine rağmen, Formu açılamıyor, çünkü sahnelerdeki kısıtlama yapılandırıldı. Keyfi bir sorguda aynı: "Sınırlı" bir sahne almaya çalışırken, erişim hatası olacaktır.


Programlı bir "sınırlı" sahne almaya çalışırsanız, bir erişim hatası da aranacaktır.


Ayrıca, nesnenin herhangi bir alanına bağlantı yoluyla ifade etmek imkansızdır, çünkü referans alırken, sistem tüm nesnenin tüm nesnesini okur ve "sınırlı" detaylar varsa, nesne okunmaz.

Bu nedenle, veritabanı nesneleriyle programlanırken, giriş seviyesindeki olası kısıtlamaları akılda tutmanız ve gerekli tüm nesneleri sorgudan almanız ve daha sonra bunları imtiyazlı modüldeki kodun bir kısmını yapmaya veya yürüttüğünü almanız gerekir.

Erişim kısıtlamasını yapılandırdıktan sonra, hattın gösterimi haklar listesinde değişti - gri oldu ve piktogram ortaya çıktı.

Erişim (RLS) ayarlarken kısıtlamalar.

  • Bölüm sonuçları yok;
  • Sanal kayıt tablolarına atıfta bulunmak gerekli değildir;
  • Açık formda parametreleri kullanamazsınız;
  • Yuvalanmış sorgularda kullanılabilir herhangi bir\u003e / span\u003e Sorgu Dil Araçları hariç:
    • hiyerarşide operatör;
    • cümleler sonuçları;
    • yatırım isteklerinin sonuçları tablo parçaları\u003e / span\u003e içermemelidir;
    • sanal tablolar, özellikle, artık

Uygulama 2. İlgili fiyat ile adlandırma.

Mevcut bir fiyatla belirli bir değerden daha fazla bir değerle bir isimlendirme yapmanız gerekirse, erişim sınırlamasını yapın, örneğin, 100.

Karar:

Doğru "okuma" için "adlandırma" dizini için kısıtlamalara erişmek için yeni bir kural ekliyoruz.
"Diğer alanları" seçin.
Yapıcıda, yatırım yapılan bir istek ekleyin. "Rasik yerleşim" bilgisinin bilgisi tablosu tarafından seçilir.
"Sipariş" sekmeleri, bir erişim limiti isteği oluşturmak için istek tasarımcısının bir özelliği değildir.
Gelişmiş sekmesinde "İlk 999999999", "Sipariş" sekmesi göründük.
"Periyot" alanında sipariş vermeyi yapılandırın.
Ardından ana tablonun bağlantısını ekli istek ile referans olarak yapılandırın.


Erişim Kısıtlama Şablonları.

Uygulama 3. Sabit olarak değere göre "karşı taraflara" kısıtlama.

Dizin dizini için erişim kısıtlamasını sabit olarak depolanan değere göre yapılandırın.

Ek olarak, detaylardaki sözleşme referansını kullanarak tüm nesnelerin kısıtlamasını yapılandırmanız gerekir.

Karar

"Kısıtlamalar" dizinini "Koşullar" bölümüne sabit bir istek ekleyerek bir kısıtlamayı yapılandırmak için doğru okumak için "karşı taraflar" dizininin. Etco grubunu unutma.

Sorunu görüyoruz, dizin karşı tarafları doğru filtrelenir ve "meslektaş" detaylarıyla ilgili belgeler, "Counterparty" detaylarındaki "bit" referansları olan bazı "bit" referansları.

Artık "karşı taraflara" referans kullanan tüm nesneler için erişim sınırlamasını yapılandırmanız gerekir. Hizmetlerini "nesneye arama bağlantıları" buluyoruz.

RLS koşullarının metnini "karşı taraflar" referans defterinden kopyalayın ve değiştirin. Nesnelerin bulunduğu kadar yapılması gerekiyor.

Veya kod çoğaltma sorunlarını önlemek için erişim kısıtlama şablonu kullanın.

Erişim kısıtlama şablonları rol düzeyinde yapılandırılmıştır ve düzenlenebilir roldeki herhangi bir nesne için kullanılabilir.

Şablonda herhangi bir metin kısıtlama metninde dayanabilirsiniz. Şablon "#" sembolünden çağrılır. Örneğin, # tempter tragent.

# 1C yazarlar için ön işlem talimatları. Yürütme ayarları bağlamında, erişim kısıtlamaları, platform, şablon metnini aramak için şablonun metnini değiştirir.

Metni, "Desendeki Etco Grubu ile ilgili metin dışında,")

Erişim kısıtlama şablonlarında parametreler.

Sorunun çözümü 2'ye devam edin.

Sorun, dizindeki ana tablonun "Parish Fatura" belgesinde "meslektaş" olarak adlandırılmasıdır. Referans kitabındaki kontrol edilen alan, "Counterparty" belgesinde "link" denir.

Metin şablonunda ana tablonun adını "akım sayısı" olarak değiştirin

"# Konsinye" önceden tanımlanmış bir parametredir.

Ve giriş parametresinin sayısı - ". # Parametre (1)

"# Parametre" de önceden belirlenmiş bir değerdir. Keyfi sayıda giriş parametresi içerebilir. Onlara itiraz, sipariş numarasında ortaya çıkar.

Dizin için erişim kısıtlamaları metinde aşağıdakileri belirtin:

Belge için aşağıdakiler için:

"Nerede # temptragent (" meslektaş ") uygulamak"

Erişim kısıtlama şablonunu aradığınızda, parametreler yalnızca bir dize olarak, yani alıntılar halinde iletilmelidir.

Ana Tablo - Adlandırma

Şablon metni böyle:

# Akım hesabı burada # akışlı. # Parametre (1) \u003d # parametre (2)

Şablon metni, veri kısıtlama limit dilinde metnin bir bölümünü içerir ve "#" sembolü kullanılarak tahsis edilen parametreleri içerebilir.

"#" Sembolünden sonra takip edebilir:

  • Anahtar Kelimelerden biri:
    • Sonra parametre numarasının şablondaki parantez içinde belirtildiği parametre;
    • Mevcut yolcu - kısıtlamanın inşa edildiği tablonun tam adının metnine bir eki belirtir;
    • İmzymecuttable - Tablonun tam adının (bir dize değeri olarak, tırnaklar halinde), geçerli gömülü dilde;
    • İmzyucePhealthwood - Geçerli limitin yapıldığı sağın adını içerir: Okuma / Okuma, Ekleme / Ekleme, Değiştirme / Güncelleme, Sil / Sil;
  • Şablon parametresinin adı - şablonun karşılık gelen parametresini sınırlama metnine eklemek anlamına gelir;
  • "#" Sembolü - ekleri "#" sembolünün metnine belirtir.

Erişimin ifadesinde kısıtlamalar içerebilir:

  • Formatta belirtilen erişim kısıtlama şablonu # Ad ("şablonun parametresinin değeri", "şablonun 2 parametresinin değeri", ...). Her şablon parametresi çift tırnak. Sembol parametre metnini belirtmeniz gerekiyorsa İkili alıntı İki çift tırnak kullanılmalıdır.
  • İşlev strly-boyutludur (bu durumda). İşlev, satırdaki bir yerde olduğu hattın satırını aramak için tasarlanmıştır. Giriş tespit edilirse ve yalanlar varsa, gerçeği döndürür.
  • Operatör + dizeleri birleştirmeye.

Sınır şablonları sekmesinde düzenleme şablon metnini düzenleme için, Set Şablon Metin düğmesini tıklamanız gerekir. Açılan iletişim kutusunda, şablon metnini girin ve Tamam'ı tıklayın.

Yöntemle kurulamazlar Parametre kurmak () Veya benzeri.

Bu durumda parametreler şunlardır:

  • Oturum parametreleri
  • İşlevsel seçenekler

Erişim limiti isteğinde oturum parametrelerinin okunması ayrıcalıklı bir modda, yani onlarla operasyonların haklarını kontrol etmeden oluşur.

Uygulama 4. "Sizin" karşı taraflarına erişim

Mevcut kullanıcının kendi katılımcılarına "Geçerli kullanıcınızın" kendi bölümlerine olan kısıtlamasını yapılandırmanız gerekir.

"Kullanıcılar", dizin "karşı taraf", detayları olan "karşı taraf" olan bir referans kitabı var.

Mevcut kullanıcı, yalnızca bağlantının bununla bağlantının kurulduğu karşı taraflardaki verileri görmelidir.

İletişim ayrıca yapılandırılması gerekir.

Muhtemel Seçenekler:

Bağlantıları Ayarlama Kullanıcı + Muhafaza

  • Dizin sözleşmelerinde gerekli
  • Bilgi Kaydı

Muhtemel Görev Çözümleri:

  • Kullanıcıyı sabit - kötü seçeneğinde saklayın, sabit olan tüm kullanıcılar için kullanılabilir.
  • Oturum parametrelerinde saklayın sabit dizi Geçerli kullanıcının karşı tarafları - çok değil iyi bir seçenek, karşı taraflar çok olabilir
  • Mevcut kullanıcının oturum parametrelerinde saklayın, ardından "onun" karşı tarafların bir listesini alma talebi kabul edilebilir bir seçenektir.
  • Diğer seçenekler.

Karar.

"Geçerli kullanıcı" yeni bir oturum parametresi oluşturun ve oturum modülündeki dolumunun inhibisyonu.

"Yöneticilerin ve karşı tarafların uyumluluğu" bilgi kaydı oluşturun

Yeni bir rol oluşturun ve "Parsel" belgesi için yeni bir erişim kısıtlaması oluşturun.

Metin metninde, ana tabloyu karşı taraftaki bilgi kaydı ile bağlayın \u003d Counterpart ve Manager \u003d & Mevcut Kullanıcı. İç bağlantı türü.

Mümkünse, erişim sınırlayıcı metinlerdeki iç içe geçmiş istekleri önlemek daha iyidir, çünkü bu nesneden veri veritabanından veri okuma her zaman gerçekleştirilecektir.

Kontrol et - kısıtlamalar çalışmaları

* Özellik: Erişim kısıtlama kaydındaki kullanıcı karşı tarafların listesini değiştirirseniz, kullanıcı oturumunu yeniden başlatmadan hemen geçerli olacaktır.

Uygulama 5. Değişikliklerin yasaklanma tarihi.

Değişiklik yapmadan önce verileri düzenleme konusunda bir sınırı uygulamak gerekir.
Kullanıcılar için kısıtlamanız gerekir.

Kullanıcı boyutu, bir veri sorunu kaynağı ile "Tarih Pupgulentülasyonları" Bilgi Kayıt Olun.

Çözümün mantığını bu şekilde inşa ediyoruz:

  • kullanıcı belirtmezse, yasak tüm kullanıcılar için geçerlidir.
  • tüm kullanıcılar için bir kısıtlama ve belirli bir kullanıcı için bir kısıtlama varsa, belirli bir kullanıcı için bir kısıtlama vardır ve gerisi için genel prensibe göre.

Açıkçası, böyle bir sınırlama, zaman ekseni üzerinde bir konuma sahip olan veritabanı nesneleri için yapılandırılabilir. Olabilir

  • Belgeler
  • Periyodik bilgi kayıtları

"Sıralamalar" nın yeni bir rolü oluşturun.

İçinde, "Mülkiyet" belgesi için "Değişim" için yeni bir erişim kısıtlaması ekleme hakkı.

Tüm alanlar için ayar noktası.

Kısıtlamanın metni:

Belgedeki parseller. Karlı selamlama

DATESTESES. Veri sorunu olarak veri kontrolü
NIN-NİN

Dahili bağlantı (seçin
Bir kullanıcı olarak maksimum (tarih sayfası. Kullanıcı)
NIN-NİN
Kayıt Oluşturma. Veri tarihi olarak alındı
NEREDE
(Tarih sayfası. Kullanıcı \u003d ve Texter
Veya tarih kaydı. Kullanıcı \u003d değer (dizin. Kullanıcılar. Güç kaynağı)) kullanıcı olarak
Tarihe göre isked. Kullanıcı \u003d seçici. Kullanıcı) Gömülü bir istek olarak
Satın almaya göre. Veri\u003e İç içe istekler. Veri

Kontrol - Kısıtlama işleri.

Ön İşlemci talimatlarının kullanımı

# Eğer durum1 # sonra

İstek parçası 1.

# İlgilenen koşulu2 # sonra

İstek parçası 2.

# Aksi takdirde

Sorgu parçası 3.

# Endox

Koşullar altında, mantıksal işlemleri (ve. Veya. Veya değil vb.) Kullanabilirsiniz ve oturumun parametrelerine hitap edebilirsiniz.

Böyle bir yaklaşım, bina erişim kısıtlamaları bağlamında uygundur, çünkü koşullara bağlı olarak, sorgunun en kısa metni derlenir. Daha basit bir istek daha az sistem yükler.

Eksi, bu tür bir metinle olan istek tasarımcısının işe yaramayacağı gerçeğindedir.

* Özellik:

Operatörün önündeki erişim kısıtlamalarının metinlerinde gömülü dilin ön işleme talimatının aksine, o zaman kafasını koymanız gerekir.

Uygulama 6. RLS anahtarı kullanarak

Sınır sistemimizi, kayıt seviyesi sınırının kullanımını içeren / devre dışı bırakan bir anahtarla ekleyin.

Bunu yapmak için, "userls" adlı bir sabit ve oturum parametresi ekleyin.

Oturum modülünde oturum parametresinin değerini sabit değerden ayarlama.

Tüm metinlere tüm metinlere erişim ekleyin:

"# Eğer & kullanıcıları # sonra .... # Endesi"

Kontrol - her şey çalışır.

Ancak, şimdi "RL'leri kullanmak için" bayrağını açtıktan sonra, değişiklikler derhal yürürlüğe girmez. Neden?

Oturum başlatıldığında oturum parametresi kurulduğundan.

Yapılabilir, böylece sabitin yeni değerini kaydetme sırasında oturum parametresinin değerini yeniden yükler, ancak yalnızca geçerli kullanıcı oturumu için çalışacaktır. Diğer kullanıcıların sistemi yeniden başlatma ihtiyacı hakkında bir mesaj verilmesi gerekir.


İlk parçanın sonu.