Menü
Bedava
kayıt
ev  /  Eğitim/ 1s 8 güvenli mod ayarlanır. Harici işlemeyi programlı olarak açma

1c 8 güvenli moda ayarlanmıştır. Harici işlemeyi programlı olarak açma

programatik keşif harici işleme türüne sahip ExternalProcessing global bağlam nesnesi kullanılarak gerçekleştirilir. Harici İşleme Yöneticisi... 1C platformunun her çalışma modu için (normal uygulama modu ve yönetilen uygulama) harici işleme ile çalışmak için çeşitli nesne yöntemlerini kullanır.

Normal uygulama modunda harici işlemeyi başlatın

V normal uygulama harici işleme dosyasının tam adının iletildiği ExternalProcessing nesnesinin Create () yöntemini kullanmanız gerekir. Yöntem, türde bir nesne döndürür Harici İşleme, bu nesne, açılmakta olan harici işlemdir. Harici bir işleme formu açmanız gerekiyorsa, sonuç nesnesinde ana formu döndürecek olan GetForm() yöntemini çağırın ve ardından açmak için Open() yöntemini çağırın.


İşleme = ExternalProcessing.Create (FullFileName);
Processing.GetForm().Aç();

Harici işlemcilerde, ana form her zaman normal bir form olmalıdır ve yönetilen form her zaman ek olmalıdır, aksi takdirde GetForm () yöntemi normal uygulama modunda çalışmayacaktır.

Yönetilen uygulama modunda harici işlemeyi başlatma

modunda yönetilen formlar Algoritmanın yürütme bağlamına göre bölümü görünür. İstemcide, harici işleme dosyasının tam adıyla ikili verileri alırız. Alınan ikili verileri sunucuya aktarır ve geçici depolamaya koyarız. Ardından, geçici depolamanın adresinin iletildiği ExternalProcessing nesnesinin Connect () yöntemini çağırmanız gerekir. Yöntem, bağlı harici işlemin adını döndürür. Dış işlemenin adını istemciye döndürürüz, işleme formuna bir dize yolu oluştururuz ve dış işleme formunu açmak için OpenForm() yöntemini kullanırız.

&Sunucuda
GetExternalProcessingName İşlevi (BinaryData)
AddressToTemporaryStorage = PutToTemporalStore (BinaryData);
Geri Dön ExternalProcessing.Connect (AddressInTemporaryStorage);
EndFunction

& OnClient
FullFileName = ""; // Harici işleme dosyasının tam adı.
FileData = Yeni BinaryData (FullFileName);
ExternalProcessingName = GetExternalProcessingName (FileData);
OpenForm ("ExternalProcessing." + ExternalProcessingName + ".Form");

Harici tedaviler için güvenli mod

ExternalProcessing nesnesinin Create () ve Connect () yöntemleri, SafeMode giriş parametresine sahiptir - harici işlemeyi güvenli modda bağlama işareti. Parametre belirtilmezse bağlantı güvenli modda yapılır.
Güvenli modçalışma, sistemi sunucuda "güvenilmez" program kodu yürütmekten korumak için tasarlanmıştır. Potansiyel tehlikeler, harici tedaviler veya program kodu Execute () ve Calculate () yöntemlerinde kullanım için kullanıcı tarafından girilmiştir.
Güvenli mod aşağıdaki kısıtlamalara sahiptir:
  • ayarlanmışsa ayrıcalıklı mod iptal edilir;
  • ayrıcalıklı moda girme girişimleri yoksayılır;
  • COM nesneleri ile işlemler yasaktır;
  • harici bileşenlerin yüklenmesi ve bağlanması yasaktır;
  • erişim reddedildi dosya sistemi(geçici dosyalar hariç);
  • İnternet erişimi reddedildi.
Etkileşimli olarak açılan işlemler güvenli modda gerçekleştirilmez, bu nedenle harici işlemcileri güvenli modda açmak için bir mekanizma uygulanması ve ayrıca kullanıcının harici işlemcileri etkileşimli olarak açmasını haklar düzeyinde engellemesi önerilir.
İşlemin etkileşimli açılmasını engellemek için, kullanıcıya atanan tüm rollerde "Harici işlemeyi etkileşimli olarak aç" hakkını kaldırmalısınız (bkz. Şekil 1).
Şekil 1. Harici işlemlerin / raporların etkileşimli olarak açılması hakları
Açık Harici İşlemcileri etkileşimli olarak sağ, ExternalProcessing nesnesini hiçbir şekilde etkilemez.

Harici işlemcilere benzer şekilde harici raporları programlı olarak açarken, yalnızca şu tipe sahip Harici Raporlar global bağlam nesnesini kullanmalısınız. HariciRapor Yöneticisi.

Gerçek şu ki, 1C işleminin istemci-sunucu sürümünü kullanırken, ayrıcalıklı mod kullanımının yasak olduğu güvenli modda harici işleme / raporlar açılır. Ayrıcalıklı mod, tipik konfigürasyonlarda çok sık kullanılır: formasyon basılı formlar, çeşitli resmi çekler (borsa kaydı), vb. Sonuç olarak, form olmadan ACS'de düzenli bir rapor kullanmak bile (varsayılan olarak, genel "Rapor Formu" formu kullanılır) ve tutmak özel ayarlar rapor (ilgili referansa), satırdan sonra servis amacıyla kullanılan çeşitli sabitlere ve oturum parametrelerine yetersiz erişim hakları hakkında bir hata alırsınız. SetPrivilegedMode (Doğru);

"Doğru" çözüm, güvenli modu devre dışı bırakarak veya izinler ekleyerek BSP "Ek raporlar ve işleme" mekanizmaları aracılığıyla harici işlemcileri ve raporları bağlamak olacaktır (bence, BSP sürümleri 2.2.2.1). Ancak herhangi bir nedenle tam olarak kullanılması gerekiyorsa harici dosyalar raporlar / işleme, belirli bir bilgi tabanı için güvenli mod güvenlik profili olarak kullanılan bir küme güvenlik profili yapılandırabilirsiniz.

Bu seçeneğin tercih edilmediğini hemen belirtmek isterim, ancak çeşitli koşullar nedeniyle bu kadar basitleştirilmiş bir biçimde kullanılabilir. Örneğin, farklı şehirlerde birkaç üssüm var, kesinlikle sınırlı haklara sahip ortak bir yerel oturma, kapalı USB vb., Accounting 2.0 kullandığım bir yerde ve bir yerde 3.0, neredeyse tüm raporları formsuz ACS kullanarak yapıyorum, böylece onlar her iki versiyonda da açıldı. Tüm bu raporları farklı versiyonlar ve farklı temeller zahmetli ve umutsuz bir iştir, tk. planlar, tek bir konfigürasyona ve tabana geçişi içerir ...

Bir profil oluşturuyoruz.
Küme konsolunda, bayraklar ayarladığımız bir güvenlik profili oluşturun "Güvenli mod güvenlik profili olarak kullanılabilir" ve "altında" İzin verilir tam erişim:" "ayrıcalıklı moda".

Raporların kullanıldığı birçok durumda ve basit tedaviler Bu method geçerli olacaktır. Daha karmaşık durumlar için süreci tanımlamanın bir anlamı yoktur, çünkü belgelerde belirtilmiştir (karma değerini vb. belirterek belirli harici dosyalar için güvenlik profillerini özelleştirme yeteneği).

not Güvenlik profillerinin yalnızca CORP düzeyindeki platform ve sunucu için lisanslar kullanıldığında çalıştığını düşündüm, ancak bu işlevsellik 1C: Enterprise 8.3 platformunda da yerine getiriliyor (koşullu olarak, temel / PROF / CORP tipik yapılandırmalarıyla benzer şekilde PROF'i çağırabilirsiniz) )

8.3.9.2033 platformunun piyasaya sürülmesiyle ortaya çıktı yeni mekanizma "Tehlikeli eylemlere karşı koruma".

Bu yenilik sayesinde, 1C -ka şimdi işlemenin açılışında yemin etmeye başladı (ve sadece değil):

Güvenlik uyarısı

"My_External_Processing.epf" dosyasından "Harici işlemem"i açar

kaynağına dikkat edilmesi önerilir. bu dosya... Geliştirme konusunda kaynak ile herhangi bir anlaşma yoksa ek modüller veya dosyanın içeriği hakkında şüpheler varsa, bilgisayarınıza ve verilerinize zarar verebileceğinden dosyayı açmanız önerilmez.

Bu dosyanın açılmasına izin vermek istiyor musunuz?

Böylece 1C, kötü niyetli kodlara karşı savaşmaya karar verdi!

Bu nerede olacak" zararlı kod"Girişim hala bir gizemdir)

Potansiyel olarak tehlikeli eylemler şunları içerir:

  • Harici bir rapor yükleme, yapılandırmayı işleme veya genişletme.
  • Yapılandırmayı / uzantıyı yükleyin veya güncelleyin.
  • Aşağıdaki özelliklere harici bir rapordan / işlemeden veya uzantıdan erişim:
  • İşletim sistemi komut yürütme.
  • Kullanıcı yönetimi (bir bilgi bankası kullanıcısı hakkındaki bilgileri kaydetme veya silme).
  • Harici işlemciler (raporlar) yöneticisinin Connect () yöntemini çağırma.
  • ConfigurationExtension.Write () yöntemini çağırma.
  • COM nesneleri ile çalışma.

Bu "mucize" nasıl kapatılabilir?

Bunu yapmak için, yapılandırıcı modunda 1C Enterprise'ı çalıştırmanız gerekir.
"Yönetim" - "Kullanıcılar" menüsünü seçin.
Kullanıcılarımızın açılan penceresinde, kullanıcı ayarları penceresini açmanız ve "Temel" sekmesinde onay kutusunu kaldırmanız gerekir. "Tehlikeli eylemlere karşı koruma"

Bunu kapatmanın başka yolları da var:

Tehlikeli eylemlere karşı korumanın devre dışı bırakılacağı çalışırken, bir bilgi tabanları listesi belirleme yeteneği uygulandı.
Başına bu fonksiyon conf.cfg dosyasındaki DisableUnsafeActionProtection parametresi sorumludur; bu, bağlantı dizeleri DisableUnsafeActionProtection parametresinde belirtilen maskeleri karşılayan belirli bilgi tabanlarının tüm kullanıcıları için tehlikeli eylemlere karşı koruma mekanizmasını devre dışı bırakmanıza olanak tanır.

Bu parametrede, ";" sembolüyle ayrılmış birkaç maske belirleyebilirsiniz, örneğin:

DisableUnsafeActionProtection = test _. *; Aşama _. *;

Ek olarak, tehlikeli kullanıcı eylemlerine karşı koruma, programlı olarak devre dışı bırakılabilir. aşağıdaki parametreler ve özellikleri:

  • Parametre Yöntemlerin tehlikeli eylemlerinden koruma Connect () harici işleme yöneticileri (raporlar)
  • Bu nesnenin Write () yöntemini çağırmadan önceConfigurationExtension nesnesinin HazardousActionProtection özelliği.

Tehlikeli eylemlere karşı koruma kullanma ihtiyacının kontrol edilmesi aşağıdaki sırayla gerçekleştirilir:

1. Geçerli kullanıcı için "Tehlikeli eylemlere karşı koruma" onay kutusu kaldırılırsa, koruma devre dışı olarak kabul edilir.

2. Bağlantı dizesi ile bilgi tabanı conf.cfg dosyasının DisableUnsafeActionProtection parametresinde belirtilen şablonlardan biriyle eşleşirse, koruma devre dışı olarak kabul edilir.

3. Koruma, harici bir işleme veya raporun AntiDangerousActions parametresi kullanılarak açıkça devre dışı bırakılırsa.

4. Koruma, AntiDangerousActions uzantısı özelliği kullanılarak açıkça devre dışı bırakılırsa.

Yazdır (Ctrl + P)

Yapılandırma nesneleri

Sunucuda "güvenilmez" program kodu kullanmanız gerekiyorsa: Execute () ve Calculate () yöntemlerinde kullanılmak üzere kullanıcı tarafından girilen harici işlem veya program kodu, güvenli çalışma modunu kullanabilirsiniz.

Güvenli modda:

  • ayrıcalıklı mod iptal edildi.
  • Ayrıcalıklı moda girme görmezden gelindi.
  • yasak 1C: Enterprise platformuyla ilgili olarak harici fonların kullanımına yol açan işlemler (yukarıdaki yöntemlerin engelleyici olmayan analogları dahil):
  • COM mekanizmaları:
    • COM Nesnesi ();
    • GetCOMObject();
    • Sarıcı HTMLDocument.GetCOMObject().
  • Harici bileşenlerin yüklenmesi:
    • Dış Bileşeni Yükle ();
    • Harici Bileşeni Bağlayın ().
  • Dosya sistemi erişimi:
    • ValueInFile();
    • Dosya kopyalamak ();
    • BirleştirDosyaları ();
    • Dosyayı taşı ();
    • Bölünmüş dosya ();
    • Dizin Oluştur();
    • Dosyaları sil ();
    • Yeni dosya;
    • Yeni xBase;
    • HTMLWrite.OpenFile();
    • HTML.OpenFile() okuma;
    • XML.OpenFile()'ı okuyun;
    • XMLWrite.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • WriteFastInfoset.OpenFile();
    • CanonicalXMLWriter.OpenFile();
    • ConversionXSL.LoadFromFile ();
    • WriteZipFile.Open();
    • ZipFile.Open () okuma;
    • NewTextReader (), ilk parametre bir dize ise;
    • ReadText.Open () ilk parametre bir dize ise;
    • NewWriteText (), ilk parametre bir dize ise;
    • WriteText.Open (), ilk parametre bir dize ise;
    • NewExtractText();
    • RetrieveText.FileName özelliğinin değiştirilmesi;
    • ExtractText.Write();
    • Yeni Resim (), ilk parametre bir dize ise;
    • Resim.Yaz ();
    • Yeni BinaryData();
    • BinaryData.Write();
    • NewDataWrite (), ilk parametre bir dize ise;
    • NewReaderData (), ilk parametre var - bir dize;
    • FileStreamManager nesnesinin tüm yöntemleri;
    • Yeni FileStream();
    • FormattedDocument.Write();
    • GeographicSchema.Read ();
    • GeographicSchema.Record();
    • GeographicSchema.Print ();
    • TabularDocument.Read ();
    • TabularDocument.Write();
    • TabularDocument.Print (); GraphicSchema.Read ();
    • GraphicalScheme.Write ();
    • GraphicalScheme.Print ();
    • TextDocument.Read ();
    • TextDocument.Write ().
  • İnternet girişi:
    • Yeni İnternet Bağlantısı,
    • Yeni İnternet Postası,
    • Yeni İnternetProxy,
    • Yeni HTTP Bağlantısı,
    • Yeni FTP Bağlantısı.

DİKKAT! Çalışma zamanında yasaklanmış işlemleri gerçekleştirirken bir istisna atar.

Not. Dosya - Aç menüsü kullanılarak açılan harici raporlar ve işlemler, kullanıcının yönetici erişim haklarına sahip değilse güvenli modda yürütülür.

Arıza sayısı, kapatma sayısı ile aynı olmalıdır. Bununla birlikte, bir prosedür veya işlev içinde bir güvenli mod (bir veya daha fazla) açıldıysa, ancak kapatılmadıysa, sistem, işlemde veya işlevde tamamlanmamış açmalar olduğu kadar otomatik olarak kapanacaktır. terk edilmiş.

Bir prosedür veya işlev bir yöntemi çağırırsa Güvenli Modu Ayarla (Yanlış) yöntem çağrılarından daha fazlasını yaptı Güvenli Modu Ayarla (Doğru) sonra bir istisna atılacaktır.

Yapılandırma geliştiricisi, geliştiricinin güvenilirliğini garanti edemediği üçüncü taraf (konfigürasyonla ilgili olarak) program kodunun kullanımını üstlendiğinde, güvenli mod yazılım ayarı gerekli olabilir. Yürütülebilir kodun şuradan alındığı durumlarda Execute () ve Compute () yöntemlerinin yürütülmesi bu tür kodlara bir örnektir. dış dünya... Bu durumda, bu yöntemleri uygulamadan önce güvenli modu ayarlamak iyi bir uygulamadır:

// Yürütülmesi gereken bir program kodu oluşturulur // Kodun şuradan yüklenmesi mümkündür: dış kaynaklar// veya elle girilen ExecutableCode = GetExecutableCodeFrom the OutsideWorld(); // Güvenli Modu Etkinleştir Güvenli Modu Ayarla (Doğru); // Potansiyel olarak tehlikeli kodu çalıştır Execute (Yürütülebilir Kod); // Güvenli Modu Kapat Güvenli Modu Ayarla (Yanlış);

Bazı durumlarda, güvenli mod ayarları ayrıcalıklı mod ayarlarıyla çakışabilir. Bu tür bir çakışmaya örnek olarak, güvenli modda çalışan gömülü koddan ayarlanan deftere nakilde Ayrıcalıklı modu olan bir belgeyi deftere nakletmek verilebilir. Bu durumda, ayrıcalıklı mod devre dışı bırakılır ve etkinleştirme girişimleri yok sayılır. Sonuç olarak, etkinleştirilmiş ayrıcalıklı moda "dayanan" gömülü dildeki kod, yokluğuyla "çakışır" ve bu da açık olmayan nedenlerle hatalara yol açar. Böyle bir durumu önlemek için, 1C: Enterprise sistemi, gömülü dildeki yürütülebilir kodun yapılandırma uzantısında bulunmaması koşuluyla, nesne modülünde veya yönetici modülünde bulunan olay işleyicileri için güvenli modu otomatik olarak devre dışı bırakır. Bu tür işleyiciler, sözdizimi yardımcısında özel bir şekilde işaretlenir.

Ayrıca, güvenli modu katıştırılmış dilden devre dışı bırakma seçeneği de sağlar (bağlantıyı kesmeye çalışılan program kodu bir yapılandırma uzantısında değilse). Güvenli modu devre dışı bırakmak için yöntemi kullanın Güvenli Mod Devre Dışı Bırak ()... Güvenli modun açık olup olmadığını kontrol edin şu an devre dışı (otomatik olarak veya bir yöntemi çağırarak), yöntemi kullanabilirsiniz GetDisableSafeMode().

Tek bir gömülü dil yöntemi içinde, güvenli modu ayarlama (SetSafeMode () yöntemini çağırarak) ve güvenli modu devre dışı bırakma ayarı (meta veri nesnelerinin olay işleyicileri süresince otomatik olarak veya çağırarak) birden fazla yuvalama düzeyi olamaz. SetDisableSafeMode () yöntemi). Yuvalamayı artırmaya çalışırken bir istisna atılır:

// Doğru kullanım YordamAdı () SetSafeModeDisable (True); Güvenli Modu Ayarla (Doğru); Güvenli Modu Ayarla (Yanlış); Güvenli Mod Devre Dışı Bırak (Yanlış); EndProcedure // Yanlış kullanım Prosedür ProsedürAdı () SetSafeModeDisable (True); Güvenli Modu Ayarla (Doğru); Güvenli Mod Devre Dışı Bırak (Yanlış); // İstisna EndProcedure Prosedür ProsedürAdı () SetSafeMode (True); Güvenli Mod Devre Dışı Bırak (Yanlış); // İstisna Son Prosedürü