Mode aman telah diatur. Operasi ini dilarang. Mode aman Pavel Chistov Com disetel, pengoperasian dilarang

Pembukaan terprogram dari pemrosesan eksternal dilakukan menggunakan objek konteks global ExternalProcessing, yang memiliki tipe Manajer Pemrosesan Eksternal. Untuk setiap mode operasi platform 1C (mode aplikasi reguler dan mode aplikasi terkelola), metode objek yang berbeda digunakan untuk bekerja dengan pemrosesan eksternal.

Menjalankan pemrosesan eksternal dalam mode aplikasi normal

Dalam aplikasi biasa, Anda harus menggunakan metode Create() pada objek ExternalProcessing, yang meneruskan nama lengkap file pemrosesan eksternal. Metode mengembalikan objek bertipe Pemrosesan Eksternal, objek ini adalah pemrosesan eksternal yang sedang dibuka. Jika Anda perlu membuka formulir pemrosesan eksternal, panggil metode GetForm() pada objek yang diterima, yang akan mengembalikan formulir utama, lalu panggil metode Open() untuk membukanya.


Pemrosesan = Pemrosesan Eksternal.Buat(NamaFile Lengkap);
Memproses.GetForm().Open();

Dalam pemrosesan eksternal, formulir utama harus selalu berupa formulir biasa, dan formulir yang dikontrol harus selalu berupa formulir tambahan, jika tidak, metode GetForm() tidak akan berfungsi dalam mode aplikasi normal.

Menjalankan pemrosesan eksternal dalam mode aplikasi terkelola

Dalam mode formulir terkelola, algoritme dibagi berdasarkan konteks eksekusi. Di klien, kami menerima data biner menggunakan nama lengkap file pemrosesan eksternal. Kami mentransfer data biner yang diterima ke server dan menempatkannya di penyimpanan sementara. Selanjutnya, Anda perlu memanggil metode Connect() dari objek ExternalProcessing, ke mana alamat penyimpanan sementara diteruskan. Metode ini mengembalikan nama pemrosesan eksternal yang terhubung. Kami mengembalikan nama pemrosesan eksternal ke klien, membuat jalur string ke formulir pemrosesan, dan menggunakan metode OpenForm() untuk membuka formulir pemrosesan eksternal.

&Di Server
Fungsi DapatkanExternalProcessingName(BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Kembalikan ExternalProcessing.Connect(AddressInTemporaryStorage);
Fungsi Akhir

&Pada Klien
NamaFile Lengkap = ""; // Nama lengkap file pemrosesan eksternal.
FileData = BinaryData baru (Nama File Lengkap);
ExternalProcessingName = DapatkanExternalProcessingName(FileData);
OpenForm("Pemrosesan Eksternal." + NamaPemrosesan Eksternal + ".Form");

Mode aman untuk pemrosesan eksternal

Metode Create() dan Connect() pada objek ExternalProcessing memiliki parameter masuk SafeMode - tanda menghubungkan pemrosesan eksternal dalam mode aman. Jika parameter tidak ditentukan, sambungan akan dibuat dalam mode aman.
Mode aman dirancang untuk melindungi sistem dari eksekusi kode program “tidak tepercaya” di server. Potensi bahaya berasal dari pemrosesan eksternal atau kode program yang dimasukkan oleh pengguna untuk digunakan dalam metode Run() dan Hitung().
Mode aman menerapkan batasan berikut:
  • mode istimewa dibatalkan jika telah diinstal;
  • upaya untuk masuk ke mode istimewa diabaikan;
  • operasi dengan objek COM dilarang;
  • memuat dan menghubungkan komponen eksternal dilarang;
  • akses ke sistem file dilarang (kecuali untuk file sementara);
  • Akses internet dilarang.
Proses yang dibuka secara interaktif tidak dilakukan dalam mode aman, oleh karena itu disarankan untuk menerapkan mekanisme untuk membuka prosesor eksternal dalam mode aman, serta pada tingkat izin untuk melarang pengguna membuka prosesor eksternal secara interaktif.
Untuk melarang pembukaan interaktif pemrosesan, di semua peran yang ditetapkan kepada pengguna, perlu untuk menghapus hak “Pembukaan interaktif pemrosesan eksternal” (lihat Gambar 1).
Gambar 1. Hak untuk membuka pemrosesan/laporan eksternal secara interaktif
Hak "Pembukaan interaktif pemrosesan eksternal" tidak mempengaruhi objek Pemrosesan Eksternal dengan cara apa pun.

Pembukaan laporan eksternal secara terprogram mirip dengan pemrosesan eksternal, namun Anda harus menggunakan objek konteks global ExternalReports, yang memiliki tipe Manajer Laporan Eksternal.

Dengan menggunakan “Manajemen Perdagangan 11.3” sebagai contoh, kami akan mempertimbangkan proses sederhana menghubungkan formulir pencetakan eksternal. Kami juga akan mempertimbangkan fitur sistem keamanan baru.

Lompat Cepat

Tindakan awal

Pertama, Anda harus melakukannya mengaktifkan fungsionalitas atau periksa ketersediaannya

1. Masuk dengan hak penuh ke database informasi.

2. Masuk ke menu “Master data dan administrasi”/Blok “Administrasi”/Perintah “Cetak formulir, laporan dan pengolahan”.

Tambahan

Di bagian yang terbuka:

Kami menambahkan pemrosesan menggunakan tombol “Buat” (ini penting) atau “Perbarui!” yang ada:

  • Pilih dari daftar (jika tidak dipilih atau kosong, perintah tidak akan berfungsi, tetapi tidak akan mengatakan apa pun).
  • Klik tombol "Muat dari file".

Setelah kemunculan 1C dalam pemrosesan eksternal, pemeriksaan keamanan muncul di konfigurasi baru.

Anda harus menginstal hanya pemrosesan yang dibuat secara mandiri atau diterima melalui saluran komunikasi yang dikenal (bukan dari surat, hanya dari situs web dengan sertifikat yang valid, atau disediakan oleh karyawan pengembang, dikonfirmasi olehnya melalui telepon).

Jika segala sesuatu dalam pemrosesan ditentukan oleh pengembang, maka "Penempatan" akan diatur - objek di mana pemrosesan akan terlibat, perintah akan muncul.
Untuk bekerja, cukup klik "Simpan dan tutup".

Penyelidikan

Segera setelah ini, tergantung pada jenis pengobatannya:

  • Formulir yang dicetak tersedia saat dokumen dibuka atau dari daftarnya (untuk dokumen yang sudah terbuka saat dibuka kembali) dengan mengklik tombol "Cetak".
  • Pemrosesan tersedia di bagian “Pemrosesan Tambahan” di setiap subsistem
  • Pemrosesan pengisian menggunakan tombol “Isi” pada daftar atau panel perintah utama formulir objek.

Untuk proses di atas, peluncurannya akan terlihat seperti ini:

Jika dokumen tersebut baru, maka harus dituliskan; mekanisme pemrosesan eksternal akan memperingatkan Anda tentang hal ini:

Perilaku lebih lanjut bergantung pada fungsionalitas bawaan: dimungkinkan untuk membuka formulir atau sekadar memproses data.

Peringatan keamanan di 1C

Rilis dan konfigurasi platform baru telah meningkatkan perlindungan terhadap peluncuran program jahat.

Pemrosesan dapat menyebabkan Excel diluncurkan untuk dimuat, dalam hal ini subsistem keamanan baru juga akan memperingatkan Anda:

Dalam hal ini, kode pengendali diinterupsi.

Jika Anda mengklik “Ya”, sistem akan meminta Anda untuk menjalankan perintah lagi:

Pengguna infobase dapat menonaktifkan perlindungan terhadap tindakan berbahaya melalui "Configurator":

Ini tidak dapat diubah dari mode “Perusahaan”, mungkin ini dilakukan dengan sengaja, dan mungkin muncul setelah pembaruan.

Perlu juga dicatat bahwa jika pemrosesan menggunakan Excel, maka harus dijalankan dalam mode tidak aman (ini adalah kasus sebelum diperkenalkannya sistem baru, ini bekerja secara paralel):

"Tidak dapat memuat MS EXCEL!!!" “Mode aman telah disetel. Operasi ini dilarang"

Dalam pemrosesan eksternal, tampilannya seperti ini:

Pengembang harus menyetelnya ke "False" dalam deskripsi pemrosesan internal, maka semuanya akan baik-baik saja:

Fungsi InformationOnExternalProcessing() EksporRegistrationParameters = Struktur Baru;

Parameter Registrasi.Insert("SafeMode", False);

Faktanya adalah ketika menggunakan versi client-server 1C, pemrosesan/laporan eksternal dibuka dalam mode aman, di mana penggunaan mode istimewa dilarang. Dan mode istimewa sangat sering digunakan dalam konfigurasi umum: pembuatan formulir cetak, berbagai pemeriksaan layanan (pendaftaran pertukaran), dll. Akibatnya, bahkan menggunakan laporan reguler pada sistem kontrol akses tanpa formulir (secara default, formulir umum "Formulir Laporan" digunakan) dan menyimpan pengaturan laporan khusus (di direktori terkait), Anda akan menerima kesalahan tentang akses yang tidak memadai hak atas berbagai konstanta dan parameter sesi yang digunakan untuk tujuan resmi setelah baris SetPrivilegedMode(Benar) ;

Solusi yang “benar” adalah dengan menghubungkan pemrosesan dan laporan eksternal melalui mekanisme “Laporan dan pemrosesan tambahan” BSP dengan menonaktifkan mode aman atau menambahkan izin (menurut saya, dari BSP versi 2.2.2.1). Namun jika karena alasan tertentu perlu menggunakan file pelaporan/pemrosesan eksternal, maka Anda dapat mengonfigurasi profil keamanan cluster yang digunakan sebagai profil keamanan mode aman untuk basis info tertentu.

Saya ingin segera mencatat bahwa opsi ini tidak disukai, tetapi karena berbagai keadaan, opsi ini dapat digunakan dalam bentuk yang disederhanakan. Misalnya, saya memiliki beberapa database di kota yang berbeda, database lokal umum dengan hak yang sangat terbatas, USB tertutup, dll., di suatu tempat saya menggunakan Accounting 2.0, dan di suatu tempat 3.0, saya membuat hampir semua laporan menggunakan alat ACS tanpa formulir, sehingga mereka dibuka di kedua versi. Mempertahankan semua laporan ini untuk versi berbeda dan database berbeda membutuhkan banyak tenaga dan sia-sia Ada rencana untuk beralih ke konfigurasi dan basis tunggal...

Mari buat profil.
Di konsol cluster, kami membuat profil keamanan tempat kami menyetel tandanya "Dapat digunakan sebagai profil keamanan Safe Mode" dan " di bagian "Akses penuh diperbolehkan:" "ke mode istimewa".

Dalam banyak kasus penggunaan laporan dan pemrosesan sederhana, metode ini dapat diterapkan. Untuk situasi yang lebih kompleks, tidak ada gunanya menjelaskan prosesnya, karena itu diuraikan dalam dokumentasi (kemampuan untuk mengonfigurasi profil keamanan untuk file eksternal tertentu dengan menentukan jumlah hashnya, dll.).

P.S. Saya pikir profil keamanan hanya berfungsi ketika menggunakan lisensi platform dan server di tingkat CORP, tetapi fungsi ini juga berfungsi pada platform 1C:Enterprise 8.3 (secara kondisional dapat disebut PROF, dengan analogi dengan konfigurasi standar Basic/PROF/CORP)

Saat menjalankan program Unggah Dokumen sebagai pengguna biasa, kesalahan "Mode aman disetel. Pengoperasian dilarang."

Kesulitan ini muncul karena Hak untuk memulai pemrosesan eksternal tidak cukup. Untuk mengkonfigurasi hak akses, masuk ke database dalam mode 1C Enterprise atas nama Administrator dan pergi ke bagian tersebut Pengaturan pengguna dan hak / Akses profil grup, klik Buat grup.

Masukkan nama grup dan centang kotak peran yang tersedia untuk pengguna grup ini -

  • Pembukaan laporan dan pemrosesan eksternal secara interaktif
  • Menggunakan laporan dan pemrosesan tambahan

Klik Simpan dan tutup


Kembali ke menu Pengguna dan pilih dari daftar karyawan yang akan bekerja dengan program Unggah Dokumen. Klik Izin. Dalam daftar profil, pilih profil yang dibuat sebelumnya. Klik Tuliskan.


Agar pengguna dapat memulai pemrosesan, disarankan untuk menambahkan Pemuatan Dokumen ke daftar pemrosesan eksternal. Untuk melakukan ini di menu Administrasi / Formulir cetak dan pemrosesan / Laporan dan pemrosesan tambahan membuat pemrosesan baru. Tentukan jalur ke file "Unduh Dokumen.epf" dan berikan nama. Tentukan lokasi pemrosesan dalam menu, dari mana pengguna dapat meluncurkannya nanti, misalnya memilih menu Direktori

Dengan mengklik item Akses cepat, Anda menunjukkan pengguna mana yang memiliki akses ke pemrosesan:


Setelah pengaturan, klik Simpan dan tutup. Untuk memulai pemrosesan, pengguna hanya perlu memasukkan kembali database dan membukanya dari menu akses (dalam contoh - Direktori) dan klik Menjalankan.


Membuka Menu - Semua fungsi.... dan temukan opsi "Profil keamanan digunakan" dalam daftar.


Hapus centang pada opsi "Profil keamanan digunakan".


Setelah ini, program akan berhasil diluncurkan.

Cetak (Ctrl+P)

Objek Konfigurasi

Jika perlu menggunakan kode program “tidak tepercaya” di server: pemrosesan eksternal atau kode program yang dimasukkan oleh pengguna untuk digunakan dalam metode Run() dan Hitung(), Anda dapat menggunakan mode operasi aman.

Dalam mode aman:

  • Mode istimewa dibatalkan.
  • Beralih ke mode istimewa diabaikan.
  • Dilarang operasi yang mengarah pada penggunaan sarana eksternal sehubungan dengan platform 1C:Enterprise (termasuk analog non-pemblokiran dari metode yang ditentukan):
  • Mekanisme COM:
    • Objek COM();
    • DapatkanCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Memuat komponen eksternal:
    • LoadExternalComponent();
    • HubungkanKomponen Eksternal().
  • Akses sistem file:
    • ValueInFile();
    • SalinFile();
    • Gabungkan File();
    • PindahkanFile();
    • SplitFile();
    • BuatDirektori();
    • HapusFile();
    • Berkas Baru;
    • xBase baru;
    • EntriHTML.OpenFile();
    • BacaHTML.OpenFile();
    • BacaXML.OpenFile();
    • TulisXML.OpenFile();
    • MembacaFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Buka();
    • MembacaZipFile.Open();
    • ReadText() baru, jika parameter pertama adalah string;
    • ReadText.Open(), jika parameter pertama adalah string;
    • NewTextRecord(), jika parameter pertama adalah string;
    • WriteText.Open(), jika parameter pertama adalah string;
    • EkstrakTeks Baru();
    • mengubah properti ExtractText.FileName;
    • EkstrakTeks.Tulis();
    • Gambar Baru(), jika parameter pertama adalah string;
    • Gambar.Tulis();
    • BinerData baru();
    • BinerData.Tulis();
    • NewDataRecord(), jika parameter pertama adalah string;
    • ReadData() baru, ada parameter pertama - string;
    • semua metode objek FileStreamManager;
    • FileStream Baru();
    • Dokumen Terformat.Tulis();
    • Skema Geografis.Baca();
    • Skema Geografis.Tulis();
    • Skema Geografis.Print();
    • TabularDocument.Baca();
    • TabularDocument.Write();
    • TabularDocument.Print(); Skema Grafis.Baca();
    • Skema Grafis.Tulis();
    • Skema Grafis.Cetak();
    • Dokumen Teks.Baca();
    • Dokumen Teks.Tulis().
  • Akses Internet:
    • Koneksi Internet Baru,
    • InternetMail baru,
    • Proksi Internet Baru,
    • Koneksi HTTP baru,
    • Koneksi FTP baru.

PERHATIAN! Saat melakukan operasi terlarang, pengecualian diberikan saat runtime.

Catatan. Laporan dan pemrosesan eksternal yang dibuka menggunakan menu File - Buka dijalankan dalam mode aman jika pengguna tidak memiliki hak akses administratif.

Jumlah aktivasi mode aman harus sesuai dengan jumlah penonaktifan. Namun, jika mode aman diaktifkan dalam suatu prosedur atau fungsi (sekali atau lebih), namun tidak dimatikan, sistem akan mati secara otomatis sebanyak ada pengaktifan yang belum selesai pada prosedur atau fungsi yang ditinggalkan.

Jika dalam suatu prosedur atau fungsi memanggil suatu metode SetSafeMode(Salah) membuat lebih dari sekedar pemanggilan metode SetSafeMode(Benar), maka pengecualian akan dilempar.

Instalasi perangkat lunak mode aman mungkin diperlukan jika pengembang konfigurasi bermaksud menggunakan kode program pihak ketiga (sehubungan dengan konfigurasi), yang keandalannya tidak dapat dijamin oleh pengembang. Contoh kode tersebut adalah eksekusi metode Execute() dan Compute() jika kode yang dapat dieksekusi diperoleh dari dunia luar. Dalam hal ini, praktik yang baik adalah menyetel Mode Aman sebelum menjalankan metode berikut:

// Kode program dihasilkan yang harus dieksekusi // Ada kemungkinan kode tersebut diambil dari sumber eksternal // atau dimasukkan secara manual ExecutableCode = GetExecutedCodeFromExternalWorld(); // Aktifkan mode aman SetSafeMode(Benar); // Jalankan kode yang berpotensi berbahaya Execute(ExecutableCode); // Matikan mode aman SetSafeMode(False);

Dalam beberapa kasus, pengaturan Safe Mode mungkin bertentangan dengan pengaturan Mode Istimewa. Contoh konflik semacam itu adalah pengeposan dokumen yang mengatur mode Istimewa saat properti pengeposan, dari kode dalam bahasa bawaan yang dijalankan dalam mode aman. Dalam hal ini, mode istimewa dinonaktifkan dan upaya untuk mengaktifkannya diabaikan. Akibatnya, kode dalam bahasa yang disematkan, yang "diandalkan" pada mode hak istimewa yang diaktifkan, "menghadapi" ketidakhadirannya, yang menyebabkan kesalahan dengan alasan kemunculannya yang tidak jelas. Untuk mencegah situasi ini, sistem 1C:Enterprise secara otomatis menonaktifkan mode aman untuk pengendali peristiwa yang tersedia di modul objek atau modul manajer, asalkan kode yang dapat dieksekusi dalam bahasa bawaan tidak terletak di ekstensi konfigurasi. Penangan seperti itu ditandai dengan cara khusus di asisten sintaksis.

Ini juga menyediakan kemampuan untuk menonaktifkan Safe Mode dari bahasa bawaan (jika kode program yang mencoba menonaktifkannya tidak ada dalam ekstensi konfigurasi). Untuk menonaktifkan mode aman ada metodenya SetDisableSafeMode(). Anda dapat memeriksa apakah mode aman saat ini dinonaktifkan (secara otomatis atau dengan memanggil suatu metode) menggunakan metode tersebut DapatkanDisableSafeMode().

Dalam satu metode dalam bahasa bawaan, tidak boleh ada lebih dari satu tingkat pengaturan mode aman (dengan memanggil metode SetSafeMode()) dan mengatur penonaktifan mode aman (secara otomatis selama eksekusi peristiwa objek metadata penangan atau dengan memanggil metode SetSafeModeDisable()). Saat mencoba meningkatkan sarang, pengecualian muncul:

// Penggunaan yang benar dari ProcedureProcedureName() SetDisableSafeMode(True);