Pavel Chistov. Xavfsiz ish rejimi 1c xavfsiz rejim o'rnatildi, ishlash taqiqlanadi

Document Upload dasturini oddiy foydalanuvchi sifatida ishga tushirganingizda, "Xavfsiz rejim o'rnatildi. Operatsiya taqiqlangan" xatosi.

Bu qiyinchilik, chunki paydo bo'ladi Tashqi ishlov berishni boshlash uchun huquqlar etarli emas. Kirish huquqlarini sozlash uchun 1C Enterprise rejimida ma'lumotlar bazasiga nomidan kiring Administrator va bo'limga o'ting Foydalanuvchi va huquq sozlamalari / Guruh profillariga kirish, bosing Guruh yaratish uchun.

Guruh nomini kiriting va ushbu guruh foydalanuvchilari uchun mavjud rollar uchun katakchalarni belgilang -

  • Tashqi hisobotlarni interaktiv ochish va qayta ishlash
  • Qo'shimcha hisobotlardan foydalanish va qayta ishlash

bosing Saqlash va yopish


Foydalanuvchilar menyusiga qayting va ro'yxatdan Hujjatni yuklash dasturi bilan ishlaydigan xodimni tanlang. Ruxsatlar-ni bosing. Profillar ro'yxatida avval yaratilgan profilni tanlang. bosing Yozing.


Foydalanuvchilar qayta ishlashni boshlashlari uchun tashqi ishlov berish ro'yxatiga Hujjatni yuklashni qo'shish tavsiya etiladi. Buni menyuda qilish uchun Ma'muriyat / Chop etilgan shakllar va qayta ishlash / Qo'shimcha hisobotlar va qayta ishlash yangi qayta ishlash yaratish. "Documents.epf yuklab olish" fayliga yo'lni belgilang va nom bering. Menyuda qayta ishlash joyini belgilang, u erdan foydalanuvchi uni keyinroq ishga tushirishi mumkin, masalan, menyuni tanlang Kataloglar

Tez kirish elementini bosish orqali siz qaysi foydalanuvchilarning qayta ishlashga ruxsati borligini ko'rsatasiz:


Sozlagandan so'ng, bosing Saqlash va yopish. Qayta ishlashni boshlash uchun foydalanuvchilar faqat ma'lumotlar bazasiga qayta kirishlari va uni kirish menyusidan ochishlari kerak (misolda - kataloglar) va tugmasini bosing. Bajarish.


Ochiq Menyu - Barcha funksiyalar.... va ro'yxatda "Xavfsizlik profillari ishlatiladi" variantini toping.


Shunchaki "Xavfsizlik profillari ishlatiladi" variantini olib tashlang.


Shundan so'ng dastur muvaffaqiyatli ishga tushadi.

Gap shundaki, 1C mijoz-server versiyasidan foydalanganda tashqi ishlov berish/hisobotlar xavfsiz rejimda ochiladi, bunda imtiyozli rejimdan foydalanish taqiqlanadi. Imtiyozli rejim odatiy konfiguratsiyalarda juda tez-tez ishlatiladi: bosma shakllarni yaratish, turli xil xizmat tekshiruvlari (birjalarni ro'yxatdan o'tkazish) va boshqalar. Natijada, kirishni boshqarish tizimi bo'yicha muntazam hisobotni formasiz ishlatsangiz ham (sukut bo'yicha "ReportForm" umumiy shakli ishlatiladi) va shaxsiy hisobot sozlamalarini saqlasangiz (tegishli katalogda), siz kirishning etarli emasligi haqida xato olasiz. qatordan keyin rasmiy maqsadlarda foydalaniladigan turli konstantalar va seans parametrlariga bo‘lgan huquqlar SetPrivilegedMode(To'g'ri);

"To'g'ri" yechim tashqi ishlov berish va hisobotlarni BSP "Qo'shimcha hisobotlar va qayta ishlash" mexanizmlari orqali xavfsiz rejimni o'chirib qo'yish yoki ruxsatlarni qo'shish orqali ulash bo'ladi (mening fikrimcha, BSP 2.2.2.1 versiyasidan). Ammo, agar biron sababga ko'ra tashqi hisobot / ishlov berish fayllaridan foydalanish kerak bo'lsa, siz ma'lum bir ma'lumot bazasi uchun xavfsiz rejim xavfsizlik profili sifatida ishlatiladigan klaster xavfsizlik profilini sozlashingiz mumkin.

Men darhol shuni ta'kidlashni istardimki, bu variant afzal emas, lekin turli holatlar tufayli uni shunday soddalashtirilgan shaklda ishlatish mumkin. Misol uchun, menda turli shaharlarda bir nechta ma'lumotlar bazalari bor, qat'iy cheklangan huquqlarga ega bo'lgan umumiy mahalliy, yopiq USB va hokazo, men qayerdadir Buxgalteriya 2.0 dan foydalanaman va qayerdadir 3.0, men deyarli barcha hisobotlarni ACS vositalaridan foydalanib, shakllarsiz tuzaman, shunda ular ikkala versiyada ham ochilgan. Ushbu hisobotlarning barchasini turli versiyalar va turli ma'lumotlar bazalari uchun saqlash juda ko'p mehnat talab qiladi va befoyda, chunki Yagona konfiguratsiya va bazaga oʻtish rejalashtirilgan...

Keling, profil yarataylik.
Klaster konsolida biz xavfsizlik profilini yaratamiz, unda biz bayroqlarni o'rnatamiz "Xavfsiz rejim xavfsizlik profili sifatida foydalanish mumkin" va "" bo'limida "To'liq kirishga ruxsat berilgan:" "imtiyozli rejimga".

Hisobotlardan foydalanish va oddiy ishlov berishning ko'p hollarda ushbu usul qo'llaniladi. Keyinchalik murakkab vaziyatlar uchun jarayonni tavsiflashning ma'nosi yo'q, chunki u hujjatlarda ko'rsatilgan (xesh miqdorini belgilash orqali ma'lum tashqi fayllar uchun xavfsizlik profillarini sozlash qobiliyati va boshqalar).

P.S. Men xavfsizlik profillari faqat CORP darajasida platforma va server litsenziyalaridan foydalanganda ishlaydi deb o'yladim, lekin bu funksiya 1C: Enterprise 8.3 platformasida ham ishlaydi (uni shartli ravishda PROF deb atash mumkin, Basic/PROF/CORP standart konfiguratsiyalariga o'xshash).

Chop etish (Ctrl+P)

Konfiguratsiya ob'ektlari

Agar serverda "ishonchsiz" dastur kodini ishlatish kerak bo'lsa: tashqi ishlov berish yoki Run() va Calculate() usullarida foydalanish uchun foydalanuvchi tomonidan kiritilgan dastur kodi, siz xavfsiz ishlash rejimidan foydalanishingiz mumkin.

Xavfsiz rejimda:

  • Imtiyozli rejim bekor qilingan.
  • Imtiyozli rejimga o'tish e'tiborga olinmagan.
  • Taqiqlangan 1C: Enterprise platformasiga nisbatan tashqi vositalardan foydalanishga olib keladigan operatsiyalar (shu jumladan ko'rsatilgan usullarning bloklanmagan analoglari):
  • COM mexanizmlari:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Tashqi komponentlarni yuklash:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Fayl tizimiga kirish:
    • ValueInFile();
    • Faylni nusxalash();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • DeleteFiles();
    • Yangi fayl;
    • Yangi xBase;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • New ReadText(), agar birinchi parametr satr bo'lsa;
    • ReadText.Open(), agar birinchi parametr satr bo'lsa;
    • NewTextRecord(), agar birinchi parametr satr bo'lsa;
    • WriteText.Open(), agar birinchi parametr satr bo'lsa;
    • NewTextExtract();
    • ExtractText.FileName xossasini o'zgartirish;
    • ExtractText.Write();
    • New Picture(), agar birinchi parametr satr bo'lsa;
    • Picture.Write();
    • new BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), agar birinchi parametr satr bo'lsa;
    • New ReadData(), birinchi parametr mavjud - satr;
    • FileStreamManager ob'ektining barcha usullari;
    • Yangi 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().
  • Internetga ulanish:
    • Yangi Internet aloqasi,
    • Yangi InternetMail,
    • Yangi InternetProksi,
    • Yangi HTTP ulanishi,
    • Yangi FTPConnection.

DIQQAT! Taqiqlangan operatsiyalarni bajarayotganda, ish vaqtida istisno chiqariladi.

Eslatma. Fayl - Ochish menyusi yordamida ochilgan tashqi hisobotlar va ishlov berish, agar foydalanuvchi ma'muriy kirish huquqiga ega bo'lmasa, xavfsiz rejimda amalga oshiriladi.

Xavfsiz rejim yoqilganligi soni uning o'chirilgan soniga mos kelishi kerak. Biroq, agar xavfsiz rejim protsedura yoki funksiya doirasida yoqilgan bo'lsa (bir yoki undan ko'p), lekin o'chirilmagan bo'lsa, tizim qoldirilgan protsedura yoki funksiyada to'liq bo'lmagan yoqishlar soni ko'p marta avtomatik ravishda o'chadi.

Agar protsedura yoki funksiyada usulni chaqirsa SetSafeMode(False) usul chaqiruvlaridan ko'ra ko'proq qildi SetSafeMode (To'g'ri), keyin istisno tashlanadi.

Agar konfiguratsiyani ishlab chiquvchi uchinchi tomon dastur kodini (konfiguratsiyaga nisbatan) ishlatmoqchi bo'lsa, xavfsiz rejimni dasturiy ta'minotni o'rnatish talab qilinishi mumkin, uning ishonchliligiga ishlab chiquvchi kafolat bera olmaydi. Bunday kodlarga misol qilib, bajariladigan kod tashqi dunyodan olingan hollarda Execute() va Compute() usullarini bajarish mumkin. Bunday holda, ushbu usullarni bajarishdan oldin xavfsiz rejimni o'rnatish yaxshi amaliyot bo'ladi:

// Bajarilishi kerak bo'lgan dastur kodi yaratildi // Kod tashqi manbalardan yuklangan bo'lishi mumkin // yoki qo'lda kiritilgan ExecutableCode = GetExecuteCodeFromExternalWorld(); // Xavfsiz rejimni yoqish SetSafeMode(True); // Potensial xavfli kodni bajaring Execute(ExecutableCode); // xavfsiz rejimni o'chirish SetSafeMode(False);

Ba'zi hollarda Xavfsiz rejim sozlamalari imtiyozli rejim sozlamalariga zid kelishi mumkin. Bunday ziddiyatga misol qilib, xavfsiz rejimda bajariladigan ichki tildagi koddan boshlab, joylashtirishda imtiyozli rejim o'rnatilgan hujjatni joylashtirishdir. Bunday holda, imtiyozli rejim o'chiriladi va uni yoqishga urinishlar e'tiborga olinmaydi. Natijada, yoqilgan imtiyozli rejimda "hisoblangan" o'rnatilgan tildagi kod uning yo'qligi bilan "uchrashadi", bu ularning paydo bo'lishining aniq bo'lmagan sabablari bilan xatolarga olib keladi. Ushbu holatning oldini olish uchun 1C: Enterprise tizimi ob'ekt moduli yoki boshqaruv modulida mavjud bo'lgan voqea ishlovchilar uchun xavfsiz rejimni avtomatik ravishda o'chirib qo'yadi, agar o'rnatilgan tilda bajariladigan kod konfiguratsiya kengaytmasida joylashgan bo'lmasa. Bunday ishlov beruvchilar sintaksis yordamchisida maxsus tarzda belgilanadi.

Shuningdek, u o'rnatilgan tildan Xavfsiz rejimni o'chirish imkoniyatini beradi (agar uni o'chirishga urinayotgan dastur kodi konfiguratsiya kengaytmasida bo'lmasa). Xavfsiz rejimni o'chirishning bir usuli bor SetDisableSafeMode(). Usul yordamida siz hozirda xavfsiz rejim o'chirilganligini tekshirishingiz mumkin (avtomatik ravishda yoki usulni chaqirish orqali). GetDisableSafeMode().

O'rnatilgan tilda bitta usulda xavfsiz rejimni o'rnatish (SetSafeMode() usulini chaqirish orqali) va xavfsiz rejimni o'chirishni o'rnatish (metama'lumotlar ob'ekti hodisasini bajarish paytida avtomatik ravishda) bir necha daraja bo'lishi mumkin emas. ishlov beruvchilar yoki SetSafeModeDisable() usulini chaqirish orqali). Uyani ko'paytirishga harakat qilganda, istisno qilinadi:

// ProcedureProcedureName() dan to'g'ri foydalanish SetDisableSafeMode(True); SetSafeMode (to'g'ri); SetSafeMode (False); SetDisableSafeMode(False); EndProcedure // ProcedureProcedureName() dan noto‘g‘ri foydalanish SetDisableSafeMode(True); SetSafeMode (to'g'ri); SetDisableSafeMode(False); // Istisno EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Istisno EndProcedure

Tashqi ishlov berishning dasturiy ochilishi turiga ega bo'lgan ExternalProcessing global kontekst ob'ekti yordamida amalga oshiriladi Tashqi ishlov berish menejeri. 1C platformasining har bir ish rejimi uchun (muntazam dastur rejimi va boshqariladigan dastur rejimi) tashqi ishlov berish bilan ishlash uchun turli xil ob'ekt usullari qo'llaniladi.

Oddiy dastur rejimida tashqi ishlov berishni ishga tushirish

Oddiy dasturda siz tashqi ishlov berish faylining to'liq nomini olgan ExternalProcessing ob'ektining Create() usulidan foydalanishingiz kerak. Usul ob'ekt turini qaytaradi Tashqi ishlov berish, bu ob'ekt ochilayotgan tashqi ishlovdir. Agar siz tashqi ishlov berish formasini ochishingiz kerak bo'lsa, qabul qilingan ob'ektda GetForm() usulini chaqiring, bu asosiy shaklni qaytaradi va uni ochish uchun Open() usulini chaqiring.


Qayta ishlash = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();

Tashqi ishlov berishda asosiy shakl har doim oddiy, boshqariladigan forma esa qo'shimcha bo'lishi kerak, aks holda GetForm() usuli oddiy dastur rejimida ishlamaydi.

Boshqariladigan dastur rejimida tashqi ishlov berishni ishga tushirish

Boshqariladigan shakllar rejimida algoritm ijro kontekstiga ko'ra bo'linadi. Mijozda biz tashqi ishlov berish faylining to'liq nomidan foydalangan holda ikkilik ma'lumotlarni olamiz. Qabul qilingan ikkilik ma'lumotlarni serverga o'tkazamiz va uni vaqtincha saqlashga joylashtiramiz. Keyinchalik, vaqtinchalik saqlash manzili uzatiladigan ExternalProcessing ob'ektining Connect() usulini chaqirishingiz kerak. Usul ulangan tashqi ishlov berish nomini qaytaradi. Biz mijozga tashqi ishlov berish nomini qaytaramiz, ishlov berish shakliga string yo'lini yaratamiz va tashqi ishlov berish shaklini ochish uchun OpenForm() usulidan foydalanamiz.

&Serverda
GetExternalProcessingName funksiyasi (BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Qaytish ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&OnClient
FullFileName = ""; // Tashqi ishlov berish faylining to'liq nomi.
FileData = yangi BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("Tashqi ishlov berish." + ExternalProcessingName + ".Form");

Tashqi ishlov berish uchun xavfsiz rejim

ExternalProcessing ob'ektining Create() va Connect() usullari kiruvchi SafeMode parametriga ega - tashqi ishlov berishni xavfsiz rejimda ulash belgisi. Agar parametr ko'rsatilmagan bo'lsa, ulanish xavfsiz rejimda amalga oshiriladi.
Xavfsiz rejim tizimni serverda "ishonchsiz" dastur kodini bajarishdan himoya qilish uchun mo'ljallangan. Potensial xavf Run() va Calculate() usullarida foydalanish uchun foydalanuvchi tomonidan kiritilgan tashqi ishlov berish yoki dastur kodidan kelib chiqadi.
Xavfsiz rejim quyidagi cheklovlarni qo'yadi:
  • agar u o'rnatilgan bo'lsa, imtiyozli rejim bekor qilinadi;
  • imtiyozli rejimga kirishga urinishlar e'tiborga olinmaydi;
  • COM ob'ektlari bilan operatsiyalarni amalga oshirish taqiqlanadi;
  • tashqi komponentlarni yuklash va ulash taqiqlanadi;
  • fayl tizimiga kirish taqiqlangan (vaqtinchalik fayllardan tashqari);
  • Internetga kirish taqiqlangan.
Interaktiv ravishda ochilgan jarayonlar xavfsiz rejimda bajarilmaydi, shuning uchun foydalanuvchiga tashqi protsessorlarni interaktiv ravishda ochishni taqiqlash uchun xavfsiz rejimda, shuningdek ruxsat darajasida tashqi protsessorlarni ochish mexanizmini amalga oshirish tavsiya etiladi.
Qayta ishlashning interaktiv ochilishini taqiqlash uchun foydalanuvchiga tayinlangan barcha rollarda "Tashqi ishlov berishning interaktiv ochilishi" ni to'g'ri olib tashlash kerak (1-rasmga qarang).
Shakl 1. Tashqi ishlov berish/hisobotlarni interaktiv ravishda ochish huquqlari
"Tashqi ishlov berishning interaktiv ochilishi" huquqi hech qanday tarzda Tashqi ishlov berish ob'ektiga ta'sir qilmaydi.

Tashqi hisobotlarning dasturiy ochilishi tashqi qayta ishlashga o'xshaydi, lekin siz tashqi hisobot turiga ega global kontekst ob'ektidan foydalanishingiz kerak. Tashqi hisobotlar menejeri.