Təhlükəsiz rejim universal xml mübadiləsi üçün təyin edilmişdir. Təhlükəsiz rejim qurulub. Əməliyyat qadağandır. Xarici emal üçün təhlükəsiz rejim

Nümunə olaraq "Ticarətin İdarə Edilməsi 11.3" istifadə edərək, biz xarici çap formasını birləşdirməyin sadə prosesini nəzərdən keçirəcəyik. Yeni təhlükəsizlik sisteminin xüsusiyyətlərini də nəzərdən keçirəcəyik.

Sürətli tullanma

İlkin tədbirlər

Əvvəlcə etməlisən funksionallığı aktivləşdirin və ya onun mövcudluğunu yoxlayın

1. Məlumat bazasına tam hüquqlarla daxil olun.

2. Menyuya keçin “Master data və administration”/Blok “İdarəetmə”/Command “Çap formaları, hesabatlar və emal”.

Əlavə

Açılan bölmədə:

Biz “Yarat” düyməsini (bu vacibdir) və ya “Yenilə!” düyməsini istifadə edərək emal əlavə edirik. mövcud:

  • Siyahıda seçin (seçilməmiş və ya boş olsa, əmr işləməyəcək, lakin heç nə deməyəcək).
  • "Fayldan yüklə" düyməsini basın.

Xarici emalda 1C üçün göründükdən sonra yeni konfiqurasiyalarda təhlükəsizlik yoxlamaları göründü.

Siz yalnız müstəqil olaraq yaradılmış və ya məlum rabitə kanalları vasitəsilə qəbul edilmiş emalları quraşdırmalısınız (poçtdan deyil, yalnız etibarlı sertifikatı olan veb saytından və ya telefonla təsdiqlənmiş tərtibatçının əməkdaşları tərəfindən təqdim olunur).

Əgər emalda hər şey tərtibatçı tərəfindən təyin edilərsə, o zaman "Yerləşdirmə" təyin ediləcək - emalın cəlb olunacağı obyektlər, əmr (lər) görünəcəkdir.
İşləmək üçün "Saxla və bağla" düyməsini sıxmaq kifayətdir.

İmtahan

Bundan dərhal sonra, müalicənin növündən asılı olaraq:

  • Çap edilmiş forma sənədi açarkən və ya onun siyahısından (yenidən açarkən artıq açıq olan üçün) “Çap et” düyməsini sıxmaqla əlçatan olur.
  • Emal hər bir alt sistemdə “Əlavə emal” bölmələrində mövcuddur
  • Siyahının “Doldur” düyməsini və ya obyekt formasının əsas komanda panelindən istifadə edərək doldurmanın işlənməsi.

Yuxarıdakı emal üçün işə salınma belə görünəcək:

Sənəd yenidirsə, onu yazmaq lazımdır, xarici emal mexanizmi bu barədə sizə xəbərdarlıq edəcəkdir:

Sonrakı davranış daxili funksionallıqdan asılıdır: formanı açmaq və ya sadəcə məlumatları emal etmək mümkündür.

Təhlükəsizlik xəbərdarlıqları 1c

Platformanın yeni buraxılışları və konfiqurasiyaları zərərli proqramların işə salınmasına qarşı müdafiəni artırıb.

Emal Excel-in yüklənməsinə səbəb ola bilər, bu halda yeni təhlükəsizlik alt sistemi də sizi xəbərdar edəcək:

Bu halda işləyici kodu kəsilir.

Əgər “Bəli” düyməsini sıxsanız, sistem sizdən əmri yenidən yerinə yetirməyi xahiş edəcək:

Məlumat bazası istifadəçisi "Konfiqurator" vasitəsilə təhlükəli hərəkətlərdən qorunmanı söndürə bilər:

Bunu “Müəssisə” rejimindən dəyişdirmək mümkün deyil, bəlkə də bu məqsədli şəkildə edilib və yeniləmədən sonra görünə bilər.

Onu da qeyd etmək lazımdır ki, emal Excel-dən istifadə edirsə, o, təhlükəli rejimdə işləməlidir (yeni sistemin tətbiqindən əvvəl belə idi, bu paralel işləyir):

"MS EXCEL-i yükləmək mümkün deyil!!!" “Təhlükəsiz rejim qurulub. Əməliyyat qadağandır”

Xarici emalda belə görünür:

Tərtibatçı onu daxili emal təsvirində "Yanlış" olaraq təyin etməlidir, onda hər şey yaxşı olacaq:

Function InformationOnExternalProcessing() ExportRegistrationParameters = Yeni Struktur;

Qeydiyyat Parametrləri.Insert("SafeMode", False);

Konfiqurasiyanı yeniləyərkən konfiqurasiya faylının əldə edildiyi mənbə haqqında xəbərdarlıq mətni də göründü: Fakt budur ki, 1C-nin müştəri-server versiyasından istifadə edərkən, imtiyazlı rejimdən istifadənin qadağan olunduğu təhlükəsiz rejimdə xarici emal/hesabatlar açılır. Və imtiyazlı rejim tipik konfiqurasiyalarda çox tez-tez istifadə olunur: çap formalarının yaradılması, müxtəlif xidmət yoxlamaları (mübadilələrin qeydiyyatı) və s. Nəticədə, hətta forma olmadan girişə nəzarət sistemi haqqında müntəzəm hesabatdan istifadə etsəniz (standart olaraq "ReportForm" ümumi forması istifadə olunur) və xüsusi hesabat parametrlərini (müvafiq kataloqda) saxlasanız da, qeyri-kafi giriş haqqında səhv alacaqsınız. xəttdən sonra rəsmi məqsədlər üçün istifadə edilən müxtəlif konstantalara və sessiya parametrlərinə hüquqlar

SetPrivilegedMode(True);

Dərhal qeyd etmək istərdim ki, bu seçim üstünlük təşkil etmir, lakin müxtəlif vəziyyətlərə görə belə sadələşdirilmiş formada istifadə edilə bilər. Məsələn, mənim müxtəlif şəhərlərdə bir neçə verilənlər bazam var, ciddi məhdud hüquqları olan ümumi yerli, qapalı USB və s. hər iki versiyada açılır. Bütün bu hesabatları müxtəlif versiyalar və müxtəlif verilənlər bazaları üçün saxlamaq çox əmək tələb edir və faydasızdır, çünki Tək konfiqurasiyaya və bazaya keçid planları var...

Gəlin profil yaradaq.
Klaster konsolunda biz bayraqları təyin etdiyimiz təhlükəsizlik profili yaradırıq "Təhlükəsiz rejim təhlükəsizlik profili kimi istifadə edilə bilər" və "Tam girişə icazə verilir:" bölməsində "imtiyazlı rejimə".

Hesabatlardan istifadənin və sadə emalın bir çox hallarda bu üsul tətbiq olunacaq. Daha mürəkkəb vəziyyətlər üçün prosesi təsvir etməyin mənası yoxdur, çünki bu, sənədlərdə təsvir edilmişdir (hesh miqdarını göstərərək xüsusi xarici fayllar üçün təhlükəsizlik profillərini konfiqurasiya etmək imkanı və s.).

P.S. Düşündüm ki, təhlükəsizlik profilləri yalnız CORP səviyyəsində platforma və server lisenziyalarından istifadə edərkən işləyir, lakin bu funksionallıq 1C:Enterprise 8.3 platformasında da işləyir (basic/PROF/CORP standart konfiqurasiyalarına bənzətməklə, onu şərti olaraq PROF adlandırmaq olar)

Çap (Ctrl+P)

Konfiqurasiya Obyektləri

Əgər serverdə “etibarsız” proqram kodundan istifadə etmək lazımdırsa: xarici emal və ya Run() və Calculate() metodlarında istifadə üçün istifadəçi tərəfindən daxil edilmiş proqram kodu, siz təhlükəsiz iş rejimindən istifadə edə bilərsiniz.

Təhlükəsiz rejimdə:

  • İmtiyazlı rejim ləğv edildi.
  • İmtiyazlı rejimə keçid nəzərə alınmadı.
  • Qadağandır 1C: Enterprise platforması ilə əlaqədar xarici vasitələrin istifadəsinə səbəb olan əməliyyatlar (o cümlədən göstərilən metodların bloklanmayan analoqları):
  • COM mexanizmləri:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Xarici komponentlərin yüklənməsi:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Fayl sisteminə giriş:
    • ValueInFile();
    • Faylı Kopyala();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • DeleteFiles();
    • Yeni Fayl;
    • Yeni xBase;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • New ReadText(), əgər birinci parametr sətirdirsə;
    • ReadText.Open(), əgər birinci parametr sətirdirsə;
    • NewTextRecord(), əgər birinci parametr sətirdirsə;
    • WriteText.Open(), əgər birinci parametr sətirdirsə;
    • NewTextExtract();
    • ExtractText.FileName xassəsinin dəyişdirilməsi;
    • ExtractText.Write();
    • New Picture(), əgər birinci parametr sətirdirsə;
    • Şəkil.Yaz();
    • yeni BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), əgər birinci parametr sətirdirsə;
    • New ReadData(), birinci parametr var - sətir;
    • FileStreamManager obyektinin bütün üsulları;
    • Yeni FileStream();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • İnternetə çıxış:
    • Yeni İnternet Bağlantısı,
    • Yeni İnternet Poçtu,
    • Yeni InternetProxy,
    • Yeni HTTPConnection,
    • Yeni FTPConnection.

DİQQƏT! Qadağan edilmiş əməliyyatları yerinə yetirərkən, iş vaxtında bir istisna atılır.

Qeyd. Xarici hesabatlar və Fayl - Aç menyusundan istifadə etməklə açılmış emal, istifadəçinin inzibati giriş hüquqları olmadığı halda təhlükəsiz rejimdə icra olunur.

Təhlükəsiz rejimin aktivləşdirilməsinin sayı söndürmələrin sayına uyğun olmalıdır. Bununla belə, əgər təhlükəsiz rejim prosedur və ya funksiya daxilində yandırılıbsa (bir və ya daha çox), lakin söndürülməyibsə, qalan prosedur və ya funksiyada natamam növbələr olduğu qədər sistem avtomatik olaraq bir neçə dəfə bağlanacaq.

Əgər prosedurda və ya funksiyada metodu çağırırsa SetSafeMode(Yanlış) metod çağırışlarından daha çox etdi SetSafeMode(Doğru), sonra bir istisna atılacaq.

Təhlükəsiz rejimin proqram təminatının quraşdırılması, konfiqurasiya tərtibatçısının etibarlılığına zəmanət verə bilmədiyi üçüncü tərəfin (konfiqurasiya ilə əlaqədar) proqram kodundan istifadə etmək niyyətində olduğu halda tələb oluna bilər. Belə kodun nümunəsi icra olunan kodun xarici aləmdən alındığı hallarda Execute() və Compute() metodlarının icrasını göstərmək olar. Bu halda, bu üsulları yerinə yetirməzdən əvvəl Təhlükəsiz rejimi qurmaq yaxşı təcrübə olardı:

// İcra edilməli olan proqram kodu yaradılıb // Ola bilər ki, kodun xarici mənbələrdən yüklənməsi // və ya əl ilə daxil edilib ExecutableCode = GetExecutedCodeFromExternalWorld(); // Təhlükəsiz rejimi aktivləşdirin SetSafeMode(True); // Potensial təhlükəli kodu icra et Execute(ExecutableCode); // Təhlükəsiz rejimi söndürün SetSafeMode(False);

Bəzi hallarda Təhlükəsiz Rejim parametrləri Privileged Mode parametrləri ilə ziddiyyət təşkil edə bilər. Belə bir ziddiyyətə misal olaraq, təhlükəsiz rejimdə icra edilən daxili dildəki koddan, göndərmə mülkiyyəti üçün İmtiyazlı rejimin təyin olunduğu sənədin yerləşdirilməsidir. Bu halda, imtiyazlı rejim deaktiv edilir və onu işə salmaq cəhdlərinə məhəl qoyulmur. Nəticədə, aktivləşdirilmiş imtiyazlı rejimdə "hesablanan" daxil edilmiş dildəki kod, onun olmaması ilə "qarşılaşır" və bu, onların görünüşünün aydın olmayan səbəbləri ilə səhvlərə səbəb olur. Bu vəziyyətin qarşısını almaq üçün 1C: Enterprise sistemi daxili dildə icra olunan kodun konfiqurasiya uzantısında yerləşməməsi şərti ilə obyekt modulunda və ya menecer modulunda mövcud olan hadisə idarəçiləri üçün təhlükəsiz rejimi avtomatik olaraq söndürür. Belə işləyicilər sintaksis köməkçisində xüsusi şəkildə qeyd olunur.

O, həmçinin daxili dildən Təhlükəsiz rejimi söndürmək imkanı verir (əgər onu söndürməyə çalışan proqram kodu konfiqurasiya genişlənməsində deyilsə). Təhlükəsiz rejimi söndürmək üçün bir üsul var SetDisableSafeMode(). Metoddan istifadə edərək təhlükəsiz rejimin hazırda söndürüldüyünü yoxlaya bilərsiniz (avtomatik olaraq və ya metodu çağırmaqla). GetDisableSafeMode().

Quraşdırılmış dildə bir metod daxilində təhlükəsiz rejimin qurulması (SetSafeMode() metodunu çağırmaqla) və təhlükəsiz rejimin söndürülməsi (metaməlumat obyekti hadisəsinin icrası zamanı avtomatik olaraq) bir neçə səviyyəli yuva ola bilməz. işləyiciləri və ya SetSafeModeDisable() metodunu çağırmaqla). Yuvaları artırmağa çalışarkən, bir istisna atılır:

// ProcedureProcedureName() SetDisableSafeMode(True) funksiyasından düzgün istifadə;

SetSafeMode(doğru); SetSafeMode(Yanlış); SetDisableSafeMode(Yanlış); Prosedurun Sonu // Prosedurun səhv istifadəsi ProcedureName() SetDisableSafeMode(True);

SetSafeMode(doğru);

SetDisableSafeMode(Yanlış); // İstisna EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(Yanlış); // İstisna Son Proseduru Xarici emalın proqramlı açılması növü olan ExternalProcessing qlobal kontekst obyektindən istifadə etməklə həyata keçirilir


Xarici Proses Meneceri
. 1C platformasının hər bir iş rejimi üçün (müntəzəm tətbiq rejimi və idarə olunan tətbiq rejimi) xarici emal ilə işləmək üçün müxtəlif obyekt metodlarından istifadə olunur.

Normal tətbiq rejimində xarici emalın icrası

Tipik bir proqramda siz xarici emal faylının tam adı ilə ötürülən ExternalProcessing obyektinin Create() metodundan istifadə etməlisiniz. Metod tipli bir obyekti qaytarır

Xarici emal

, bu obyekt açılan xarici emaldır. Xarici emal formasını açmaq lazımdırsa, o zaman qəbul edilmiş obyektdə əsas formanı qaytaracaq GetForm() metodunu çağırın və onu açmaq üçün Open() metodunu çağırın.
Emal = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();
Xarici emalda əsas forma həmişə müntəzəm, idarə olunan forma isə həmişə əlavə olmalıdır, əks halda GetForm() metodu normal tətbiq rejimində işləməyəcək.
EndFunction

&OnClient
FullFileName = ""; // Xarici emal faylının tam adı.
FileData = yeni BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Xarici emal üçün təhlükəsiz rejim

ExternalProcessing obyektinin Create() və Connect() metodları SafeMode daxil olan parametrə malikdir - xarici emalın təhlükəsiz rejimdə qoşulmasının əlaməti. Parametr göstərilməyibsə, əlaqə təhlükəsiz rejimdə həyata keçiriləcək.
Təhlükəsiz rejim sistemi serverdə “etibarsız” proqram kodunu icra etməkdən qorumaq üçün nəzərdə tutulmuşdur. Potensial təhlükə Run() və Calculate() metodlarında istifadə üçün istifadəçi tərəfindən daxil edilmiş xarici emal və ya proqram kodundan irəli gəlir.
Təhlükəsiz rejim aşağıdakı məhdudiyyətləri qoyur:
  • imtiyazlı rejim quraşdırılıbsa ləğv edilir;
  • imtiyazlı rejimə daxil olmaq cəhdləri nəzərə alınmır;
  • COM obyektləri ilə əməliyyatlar qadağandır;
  • xarici komponentlərin yüklənməsi və birləşdirilməsi qadağandır;
  • fayl sisteminə giriş qadağandır (müvəqqəti fayllar istisna olmaqla);
  • İnternetə çıxış qadağandır.
İnteraktiv şəkildə açılan proseslər təhlükəsiz rejimdə həyata keçirilmir, buna görə də istifadəçiyə xarici prosessorları interaktiv şəkildə açmağı qadağan etmək üçün təhlükəsiz rejimdə, eləcə də icazə səviyyəsində xarici prosessorların açılması mexanizmini tətbiq etmək tövsiyə olunur.
İstifadəçiyə təyin edilmiş bütün rollarda emalın interaktiv açılmasını qadağan etmək üçün düzgün "Xarici emalın interaktiv açılması" nı çıxarmaq lazımdır (Şəkil 1-ə baxın).
Şəkil 1. Xarici emal/hesabatları interaktiv şəkildə açmaq hüququ
"Xarici emalın interaktiv açılması" hüququ heç bir şəkildə Xarici Emal obyektinə təsir göstərmir.

Xarici hesabatların proqramlı açılması xarici emala bənzəyir, lakin siz qlobal kontekst obyekti olan ExternalReports-dan istifadə etməlisiniz. Xarici Hesabatlar Meneceri.

Konfiqurasiyanı yeniləyərkən konfiqurasiya faylının əldə edildiyi mənbə haqqında xəbərdarlıq mətni də göründü: Fakt budur ki, 1C-nin müştəri-server versiyasından istifadə edərkən, imtiyazlı rejimdən istifadənin qadağan olunduğu təhlükəsiz rejimdə xarici emal/hesabatlar açılır. Və imtiyazlı rejim tipik konfiqurasiyalarda çox tez-tez istifadə olunur: çap formalarının yaradılması, müxtəlif xidmət yoxlamaları (mübadilələrin qeydiyyatı) və s. Nəticədə, hətta forma olmadan girişə nəzarət sistemi haqqında müntəzəm hesabatdan istifadə etsəniz (standart olaraq "ReportForm" ümumi forması istifadə olunur) və xüsusi hesabat parametrlərini (müvafiq kataloqda) saxlasanız da, qeyri-kafi giriş haqqında səhv alacaqsınız. xəttdən sonra rəsmi məqsədlər üçün istifadə edilən müxtəlif konstantalara və sessiya parametrlərinə hüquqlar

SetPrivilegedMode(True);

Dərhal qeyd etmək istərdim ki, bu seçim üstünlük təşkil etmir, lakin müxtəlif vəziyyətlərə görə belə sadələşdirilmiş formada istifadə edilə bilər. Məsələn, mənim müxtəlif şəhərlərdə bir neçə verilənlər bazam var, ciddi məhdud hüquqları olan ümumi yerli, qapalı USB və s. hər iki versiyada açılır. Bütün bu hesabatları müxtəlif versiyalar və müxtəlif verilənlər bazaları üçün saxlamaq çox əmək tələb edir və faydasızdır, çünki Tək konfiqurasiyaya və bazaya keçid planları var...

Gəlin profil yaradaq.
Klaster konsolunda biz bayraqları təyin etdiyimiz təhlükəsizlik profili yaradırıq "Təhlükəsiz rejim təhlükəsizlik profili kimi istifadə edilə bilər" və "Tam girişə icazə verilir:" bölməsində "imtiyazlı rejimə".

Hesabatlardan istifadənin və sadə emalın bir çox hallarda bu üsul tətbiq olunacaq. Daha mürəkkəb vəziyyətlər üçün prosesi təsvir etməyin mənası yoxdur, çünki bu, sənədlərdə təsvir edilmişdir (hesh miqdarını göstərərək xüsusi xarici fayllar üçün təhlükəsizlik profillərini konfiqurasiya etmək imkanı və s.).

P.S. Düşündüm ki, təhlükəsizlik profilləri yalnız CORP səviyyəsində platforma və server lisenziyalarından istifadə edərkən işləyir, lakin bu funksionallıq 1C:Enterprise 8.3 platformasında da işləyir (basic/PROF/CORP standart konfiqurasiyalarına bənzətməklə, onu şərti olaraq PROF adlandırmaq olar)