أجهزة الكمبيوتر شبابيك إنترنت

كيفية تعطيل الوضع الآمن في 1s 8.3. بافل نظيف. الوضع الآمن للعلاجات الخارجية

الحقيقة هي أنه عند استخدام إصدار خادم العميل لعملية 1C ، يتم فتح المعالجة / التقارير الخارجية في الوضع الآمن ، حيث يُحظر استخدام الوضع المميز. ويتم استخدام الوضع المميز في كثير من الأحيان في التكوينات النموذجية: تشكيل النماذج المطبوعة ، وفحوصات الخدمة المتنوعة (تسجيل التبادلات) ، إلخ. نتيجة لذلك ، حتى باستخدام تقرير منتظم عن ACS بدون نموذج (بشكل افتراضي ، يتم استخدام نموذج "نموذج التقرير" العام) وحفظ إعدادات التقرير المخصصة (إلى المرجع المقابل) ، ستتلقى خطأً حول عدم كفاية الوصول حقوق لمختلف الثوابت ومعلمات الجلسة المستخدمة لأغراض الخدمة بعد السطر SetPrivilegedMode (صواب) ،

يتمثل الحل "الصحيح" في توصيل المعالجات والتقارير الخارجية من خلال آليات "التقارير الإضافية والمعالجة" الخاصة بـ BSP مع تعطيل الوضع الآمن أو إضافة أذونات (في رأيي ، من الإصدار 2.2.2.1 من BSP). ولكن إذا كان من الضروري لسبب ما استخدام بالضبط ملفات خارجيةالتقارير / المعالجة ، يمكنك تكوين ملف تعريف أمان المجموعة المستخدم كملف تعريف أمان الوضع الآمن لملف قاعدة المعلومات.

أود أن أشير على الفور إلى أن هذا الخيار ليس مفضلاً ، ولكن نظرًا لظروف مختلفة ، يمكن استخدامه في مثل هذا الشكل المبسط. على سبيل المثال ، لدي العديد من القواعد في مدن مختلفة ، ومجلس محلي مشترك بحقوق محدودة للغاية ، و USB مغلق ، وما إلى ذلك ، في مكان ما أستخدم محاسبة 2.0 ، وفي مكان ما 3.0 ، أقوم بإعداد جميع التقارير تقريبًا باستخدام ACS بدون نماذج ، بحيث فتح في كلا الإصدارين. خدمة كل هذه التقارير ل إصدارات مختلفةوالقواعد المختلفة هي عمل شاق ويائس ، tk. تتضمن الخطط الانتقال إلى تكوين وقاعدة واحدة ...

نقوم بإنشاء ملف تعريف.
في وحدة التحكم العنقودية ، قم بإنشاء ملف تعريف أمان نضع فيه العلامات "يمكن استخدامه كملف تعريف أمان الوضع الآمن"و "تحت" المسموح بها الوصول الكامل:" "إلى الوضع المميز".

في كثير من حالات استخدام التقارير والمعالجة البسيطة ، ستكون هذه الطريقة قابلة للتطبيق. بالنسبة للمواقف الأكثر تعقيدًا ، ليس من المنطقي وصف العملية ، لأن مذكور في الوثائق (القدرة على تخصيص ملفات تعريف الأمان لملفات خارجية محددة عن طريق تحديد التجزئة الخاصة بها ، وما إلى ذلك).

ملاحظة. اعتقدت أن ملفات تعريف الأمان تعمل فقط عند استخدام التراخيص للنظام الأساسي والخادم بمستوى CORP ، ولكن يتم تحقيق هذه الوظيفة أيضًا على النظام الأساسي 1C: Enterprise 8.3 (بشروط ، يمكنك استدعاء PROF عن طريق القياس مع التكوينات النموذجية Basic / PROF / CORP )

طباعة (Ctrl + P)

كائنات التكوين

إذا كان من الضروري استخدام رمز برنامج "غير موثوق به" على الخادم: معالجة خارجية أو كود البرنامجأدخلها المستخدم للاستخدام في أساليب التشغيل () و تقييم () ، يمكنك استخدام الوضع الآمن للتشغيل.

في الوضع الآمن:

  • الوضع المميز ألغيت.
  • الدخول في وضع الامتياز تجاهله.
  • يحظرالعمليات المؤدية إلى استخدام الأموال الخارجية فيما يتعلق بـ 1C: منصة المؤسسة (بما في ذلك نظائرها غير المحظورة للطرق المذكورة أعلاه):
  • آليات COM:
    • كائن COM () ؛
    • GetCOMObject () ،
    • غلاف HTMLDocument.GetCOMObject ().
  • تحميل المكونات الخارجية:
    • تحميل المكون الخارجي () ؛
    • قم بتوصيل المكون الخارجي ().
  • الولوج إلى نظام الملفات:
    • ValueInFile () ،
    • نسخة ارشيف ()؛
    • CombineFiles () ،
    • انقل الملف ()؛
    • ملف الانقسام ()؛
    • إنشاء دليل ()؛
    • حذف الملفات ()؛
    • ملف جديد؛
    • xBase جديد ؛
    • HTMLWrite.OpenFile () ،
    • قراءة HTML.OpenFile () ؛
    • قراءة XML.OpenFile () ؛
    • XMLWrite.OpenFile () ،
    • ReadingFastInfoset.OpenFile () ،
    • WriteFastInfoset.OpenFile () ،
    • CanonicalXMLWriter.OpenFile () ،
    • ConversionXSL.LoadFromFile () ،
    • WriteZipFile.Open () ،
    • قراءة ملف ZipFile.Open () ؛
    • NewTextReader () ، إذا كانت المعلمة الأولى عبارة عن سلسلة ؛
    • ReadText.Open () إذا كانت المعلمة الأولى عبارة عن سلسلة ؛
    • NewWriteText () ، إذا كانت المعلمة الأولى عبارة عن سلسلة ؛
    • WriteText.Open () ، إذا كانت المعلمة الأولى عبارة عن سلسلة ؛
    • NewExtractText () ،
    • تغيير خاصية RetrieveText.FileName ؛
    • ExtractText.Write () ،
    • صورة جديدة () ، إذا كانت المعلمة الأولى عبارة عن سلسلة ؛
    • Picture.Write () ؛
    • New BinaryData () ؛
    • BinaryData.Write () ،
    • NewDataWrite () ، إذا كانت المعلمة الأولى عبارة عن سلسلة ؛
    • NewReaderData () ، هناك المعلمة الأولى - سلسلة ؛
    • كافة طرق كائن FileStreamManager ؛
    • برنامج 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 ().
  • خدمة الإنترنت:
    • اتصال إنترنت جديد ،
    • بريد إنترنت جديد ،
    • InternetProxy الجديد ،
    • اتصال HTTPC جديد ،
    • اتصال FTPC جديد.

الانتباه! يطرح استثناء عند إجراء عمليات محظورة في وقت التشغيل.

ملحوظة. يتم فتح التقارير الخارجية والمعالجة باستخدام القائمة "ملف" - يتم تنفيذ القائمة "فتح" في الوضع الآمن إذا لم يكن لدى المستخدم حقوق وصول إدارية.

يجب أن يكون عدد حالات الفشل هو نفس عدد مرات إيقاف التشغيل. ومع ذلك ، إذا تم تشغيل الوضع الآمن (مرة واحدة أو أكثر) ضمن إجراء أو وظيفة ، ولكن لم يتم إيقاف تشغيله ، فسيتم إيقاف تشغيل النظام تلقائيًا عدة مرات حيث كانت هناك عمليات تشغيل غير مكتملة في الإجراء أو الوظيفة المراد تشغيلها مهجور.

إذا كان الإجراء أو الوظيفة يستدعي طريقة تعيين الوضع الآمن (خطأ)فعلت أكثر من طريقة المكالمات تعيين الوضع الآمن (صحيح)ثم سيتم طرح استثناء.

قد يكون إعداد الوضع الآمن برمجيًا مطلوبًا عندما يفترض مطور التكوين استخدام رمز برنامج تابع لجهة خارجية (فيما يتعلق بالتكوين) ، والذي لا يستطيع المطور ضمان موثوقيته. مثال على هذا الكود هو تنفيذ طريقتي Execute () و Compute () في الحالات التي يتم فيها الحصول على الكود القابل للتنفيذ من العالم الخارجي. في هذه الحالة ، من الأفضل تعيين الوضع الآمن قبل تنفيذ هذه الطرق:

// يتم إنشاء رمز البرنامج الذي يجب تنفيذه // من الممكن أن يتم تحميل الكود من مصادر خارجية // أو إدخاله يدويًا ExecutableCode = GetExecutiveCodeFrom the ExternalWorld ()؛ // تمكين الوضع الآمن تعيين الوضع الآمن (صحيح) ؛ // تنفيذ تنفيذ التعليمات البرمجية التي يحتمل أن تكون خطرة (التعليمات البرمجية القابلة للتنفيذ) ؛ // إيقاف تشغيل الوضع الآمن تعيين الوضع الآمن (خطأ) ؛

في بعض الحالات ، قد تتعارض إعدادات الوضع الآمن مع إعدادات الوضع المميز. أحد الأمثلة على هذا التعارض هو ترحيل مستند يحتوي على وضع الامتياز عند تعيين خاصية الترحيل من التعليمات البرمجية المضمنة التي يتم تشغيلها في الوضع الآمن. في هذه الحالة ، يتم تعطيل الوضع المميز ، ويتم تجاهل محاولات تمكينه. ونتيجة لذلك ، فإن التعليمات البرمجية في اللغة المضمنة التي "تعتمد" على الوضع المميز الممكّن "تتعارض" مع غيابها ، مما يؤدي إلى حدوث أخطاء لأسباب غير واضحة. لمنع مثل هذا الموقف ، يقوم نظام 1C: Enterprise تلقائيًا بتعطيل الوضع الآمن لمعالجات الأحداث المتوفرة في وحدة الكائن أو وحدة المدير ، بشرط ألا يكون الرمز القابل للتنفيذ في اللغة المضمنة موجودًا في ملحق التكوين. يتم تمييز هذه المعالجات بطريقة خاصة في مساعد بناء الجملة.

يوفر أيضًا خيار تعطيل الوضع الآمن من اللغة المضمنة (إذا لم يكن رمز البرنامج الذي تم محاولة قطع الاتصال منه في ملحق التكوين). لتعطيل الوضع الآمن ، استخدم الطريقة تعيين تعطيل الوضع الآمن ()... تحقق من أن الوضع الآمن في هذه اللحظةمعطل (تلقائيًا أو عن طريق استدعاء طريقة) ، يمكنك استخدام الطريقة GetDisableSafeMode ().

ضمن أسلوب لغة واحدة مضمنة ، لا يمكن أن يكون هناك أكثر من مستوى تداخل واحد لتعيين الوضع الآمن (عن طريق استدعاء طريقة SetSafeMode ()) والإعداد لتعطيل الوضع الآمن (تلقائيًا لمدة معالجات الأحداث لكائنات البيانات الوصفية أو عن طريق الاتصال طريقة SetDisableSafeMode ()). عند محاولة زيادة التداخل ، يتم طرح استثناء:

// تصحيح استخدام إجراء ProcedureName () SetSafeModeDisable (True) ؛ ضبط الوضع الآمن (صحيح) ؛ ضبط الوضع الآمن (خطأ) ؛ تعيين تعطيل الوضع الآمن (خطأ) ؛ EndProcedure // استخدام غير صحيح ProcedureName () SetSafeModeDisable (True) ؛ ضبط الوضع الآمن (صحيح) ؛ تعيين تعطيل الوضع الآمن (خطأ) ؛ // استثناء EndProcedure إجراء ProcedureName () SetSafeMode (True) ؛ تعيين تعطيل الوضع الآمن (خطأ) ؛ // استثناء EndProcedure

يتم فتح المعالجة الخارجية برمجيًا باستخدام كائن السياق العام ExternalProcessing ، والذي يحتوي على النوع مدير المعالجة الخارجية... لكل وضع تشغيل لمنصة 1C (وضع التطبيق العادي ووضع التطبيق المُدار) ، يتم استخدام طرق كائن مختلفة للعمل مع المعالجة الخارجية.

ابدأ المعالجة الخارجية في وضع التطبيق العادي

في تطبيق نموذجي ، يجب عليك استخدام طريقة Create () الخاصة بكائن ExternalProcessing ، والذي يتم تمرير الاسم الكامل لملف المعالجة الخارجية. تقوم الطريقة بإرجاع كائن من النوع المعالجة الخارجية، هذا الكائن هو المعالجة الخارجية التي يتم فتحها. إذا كنت بحاجة إلى فتح نموذج معالجة خارجي ، فقم باستدعاء طريقة GetForm () على الكائن الناتج ، والذي سيعيد النموذج الرئيسي ، ثم استدعاء طريقة Open () لفتحه.


معالجة = ExternalProcessing.Create (FullFileName) ،
Processing.GetForm (). فتح () ،

في المعالجات الخارجية ، يجب أن يكون النموذج الرئيسي دائمًا نموذجًا عاديًا ، ويجب أن يكون النموذج المُدار دائمًا نموذجًا إضافيًا ، وإلا فلن تعمل طريقة GetForm () في وضع التطبيق العادي.

بدء المعالجة الخارجية في وضع التطبيق المدار

في وضع النماذج المُدارة ، يظهر تقسيم للخوارزمية حسب سياق التنفيذ. بالنسبة للعميل ، نحصل على بيانات ثنائية بالاسم الكامل لملف المعالجة الخارجي. نقوم بنقل البيانات الثنائية المستلمة إلى الخادم ووضعها في تخزين مؤقت. بعد ذلك ، تحتاج إلى استدعاء طريقة Connect () الخاصة بكائن ExternalProcessing ، والذي يتم تمرير عنوان وحدة التخزين المؤقتة إليه. تقوم الطريقة بإرجاع اسم المعالجة الخارجية المتصلة. نعيد اسم المعالجة الخارجية إلى العميل ، ونشكل مسار سلسلة إلى نموذج المعالجة ونستخدم طريقة OpenForm () لفتح نموذج المعالجة الخارجية.

& على الخادم
دالة GetExternalProcessingName (BinaryData)
AddressToTustainStorage = PutToTemporalStore (BinaryData) ،
إرجاع ExternalProcessing.Connect (AddressInTuableStorage) ؛
وظيفة النهاية

& على العميل
FullFileName = "" ؛ // الاسم الكامل لملف المعالجة الخارجية.
FileData = New BinaryData (FullFileName) ؛
ExternalProcessingName = GetExternalProcessingName (FileData) ،
OpenForm ("معالجة خارجية." + ExternalProcessingName + ".Form") ؛

الوضع الآمن للعلاجات الخارجية

أساليب Create () و Connect () لكائن ExternalProcessing لها معلمة إدخال SafeMode - علامة على توصيل المعالجة الخارجية في الوضع الآمن. إذا لم يتم تحديد المعلمة ، فسيتم إجراء الاتصال في الوضع الآمن.
الوضع الآمنتم تصميم العمل لحماية النظام من تنفيذ كود برنامج "غير موثوق به" على الخادم. الخطر المحتمل هو المعالجة الخارجية أو رمز البرنامج الذي أدخله المستخدم لاستخدامه في طريقتي Execute () و Calculate ().
الوضع الآمن له القيود التالية:
  • يتم إلغاء الوضع المميز إذا تم ضبطه ؛
  • يتم تجاهل محاولات الدخول إلى الوضع المتميز ؛
  • يحظر العمليات باستخدام كائنات COM ؛
  • يحظر تحميل وتوصيل المكونات الخارجية ؛
  • تم رفض الوصول إلى نظام الملفات (باستثناء الملفات المؤقتة) ؛
  • تم رفض الوصول إلى الإنترنت.
لا يتم تنفيذ العمليات المفتوحة بشكل تفاعلي في الوضع الآمن ، لذلك يوصى بتنفيذ آلية لفتح المعالجات الخارجية في الوضع الآمن ، وكذلك لمنع المستخدم من فتح المعالجات الخارجية بشكل تفاعلي على مستوى الحقوق.
لمنع الفتح التفاعلي للمعالجة ، في جميع الأدوار المخصصة للمستخدم ، يجب عليك إزالة حق "فتح المعالجة الخارجية بشكل تفاعلي" (انظر الشكل 1).
الشكل 1. حقوق الافتتاح التفاعلي للعمليات / التقارير الخارجية
لا يؤثر حق المعالجات الخارجية المفتوحة بشكل تفاعلي على كائن ExternalProcessing بأي شكل من الأشكال.

عند فتح التقارير الخارجية برمجيًا ، على غرار المعالجات الخارجية ، يجب فقط استخدام كائن السياق العام للتقارير الخارجية ، والذي يحتوي على النوع ExternalReportManager.