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

Chrome يحظر استخدام النوافذ المشروطة في هذا الوضع. ماذا تفعل إذا كان "استخدام النوافذ المشروطة في هذا الوضع محظور". الحل الصحيح للمشكلة

يشير مساعد بناء الجملة لهذه الأوامر إلى أنه إذا كانت خاصية التكوين طريقة الاستخداممثبتة في لا تستخدم، إذًا يجب عليك استخدام أوامر أخرى في كود البرنامج ، مثل ShowQuestion () ، إظهار التحذير (), ShowEnterNumbers ():

للعمل مع هذه المواقف ، يوفر برنامج 1C 8.3 كائن نظام جديد "وصف التنبيه" ، والذي يستخدم لوصف استدعاء لإجراء الوحدة النمطية للبرنامج عند حدوث حدث متوقع ، مثل إغلاق نموذج أو مربع حوار غير مشروط:

هذه نظرة على المشكلة "من الداخل" لأولئك الذين يريدون التعامل مع السبب الجذري. بشكل أساسي لمبرمجي 1C. كيف ، في هذه الحالة ، يمكن للمستخدمين العاديين إصلاح الخطأ دون تفصيل كود البرنامج؟ هناك طريقة بسيطة للغاية.

تعليمات تصحيح الخطأ للمستخدمين العاديين

الخطوة 1. أكمل العمل:

الخطوة 2. عد إلى قائمة البداية لبدء التكوين. نختار عنصر القائمة "التكوين":

الخطوة 3. افتح "Configurator": في اللوحة العلوية نجد زر "Configuration" ، وفي القائمة المقترحة ، حدد قائمة "Open Configuration":

الخطوة 4. ضع المؤشر على التكوين وانقر بزر الماوس الأيمن للاتصال قائمة السياق، حيث نختار العنصر "خصائص":

الخطوة 5. افتح نموذج "الخصائص":

الخطوة 6. ابحث عن السطر "طريقة استخدام الطريقة" (أسفل القائمة):

افتراضيًا ، يتم تعيين برنامج 1C 8.3 على "عدم الاستخدام". نترجم القيمة "لا تستخدم" إلى القيمة "استخدام":

نتيجة:

إذا اختفى الخطأ "استخدام النوافذ المشروطة في هذا الوضع" في 1C 8.3 ، فيمكنك العمل أكثر. هذا ما يحدث عادة.

ولكن إذا ظل خطأ الأسلوب في 1C بعد تنفيذ كل هذه الإجراءات ، فيجب عليك الاتصال بالمبرمجين الذين يخدمون ويدعمون برنامج 1C الخاص بك.

كيفية العمل في واجهة "Taxi" ، وكيفية تخصيص مكان العمل "لنفسك" ، وتخصيص شريط التنقل المفضل ، وكيفية إجراء البحث عن نص كامل ، وتقنيات العمل مع المجلات ، وزر "تحديد" في المستندات ، ونقل من الروابط إلى المستندات والتحقق والميزات الأخرى في الواجهة الجديدة - يمكنك معرفة كل هذا من الفيديو الخاص بنا:

بمزيد من التفاصيل حول كيفية تنظيم التنقل بشكل صحيح وسريع من خلال برنامج 1C 8.3 باستخدام واجهة TAXI الجديدة ، حول الاحتمالات الجديدة في استخدام الأدوات المألوفة مثل الآلة الحاسبة المضمنة ، والتقويم ، ومقارنة الملفات ، ونقل الروابط إلى المستندات إلى الزملاء ، انظر دورتنا ""


قيم هذا المقال:

إذا كان لديك مثل هذا الخطأ أثناء استكمال الدروس ، فمن السهل جدًا إصلاحه.

ارجع إلى أداة التهيئة وحدد عنصر القائمة "التكوين" -> "فتح التكوين":

في النافذة التي تفتح ، انقر فوق انقر على اليمينفي عنصر "التكوين" وحدد عنصر "خصائص" من القائمة المنسدلة:

ستفتح نافذة بخصائص التكوين (على اليمين):

قم بالتمرير إلى الأسفل وابحث عن عنصر "وضع استخدام الطريقة" هناك:

اضبط قيمته على "يستخدم":

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

أخيرًا ، حدد "التكوين" -> عنصر القائمة "حفظ التهيئة":

مستعد! الآن الخطأ لن يحدث بعد الآن.

التفسيرات أدناه مخصصة لأولئك الذين يهتمون بما قمنا به.

لقد قمنا بتمكين وضع استخدام الطريقة في التكوين الخاص بنا. افتراضيًا ، يتم تعطيل هذا الوضع ولا يسمح لنا باستخدام أوامر مثل EnterNumber و EnterString و EnterDate و OpenValue.

النقطة المهمة هي أن هذه الأوامر مشروطة. يؤدي استدعاؤهم إلى حقيقة أن نافذة تظهر أمام المستخدم (على سبيل المثال ، لإدخال المعلومات) ، مما يمنع القدرة على العمل مع البرنامج حتى يتم إغلاق النافذة.

ونظرًا لأن وجود مثل هذه النوافذ أمر غير مرغوب فيه للغاية عند العمل مع 1C من خلال متصفح الويب ، عند تطوير تكوينات جديدة ، يتم تعطيل وضع الطريقة افتراضيًا.

يمكننا تضمينها بأمان ، حيث نكتب أمثلة تعليمية غير مصممة للعمل على الإنترنت.

ستأخذ المقالة في الاعتبار الأسباب الرئيسية للتخلي عن الطريقة في 1C: النظام الأساسي للمؤسسة والطرق الرئيسية لتحويل أقسام التعليمات البرمجية إلى نموذج غير متزامن جديد.

القابلية للتطبيق

تتناول المقالة النموذج غير المتزامن لإنشاء منطق الأعمال ، النظام الأساسي المضافة "1C: Enterprise" الإصدار 8.3. المعلومات المقدمة ذات صلة بإصدارات النظام الأساسي الحالية.

رفض استخدام النوافذ المشروطة في منصة 1C: Enterprise 8.3

عند تطوير تكوين على النظام الأساسي 1C: Enterprise 8 ، هناك حاجة لتعليق تشغيل البرنامج من وقت لآخر حتى يتخذ المستخدم قرارًا أو يقوم بأي إجراء.

على سبيل المثال ، عند النقر فوق الزر لملء القسم الجدولي ، يجب أن يُسأل المستخدم عما إذا كان من الضروري مسح القسم المجدول حتى لا تضيع البيانات التي تم إدخالها مسبقًا.

يمكن توفير هذا السلوك ، على سبيل المثال ، من خلال الكود التالي:

& على العميل
إجراء المنتجات(أمر )
الإجابة = سؤال ("سيتم مسح قسم الجدول. هل تريد المتابعة؟" ، سؤال وضع الحوار نعم لا);
إذا كانت الإجابة = رمز إرجاع مربع الحوار. نعمثم
// ملء الخوارزمية
إنهاء إذا؛
نهاية الإجراء

نتيجة لعمل هذا الجزء من الكود ، سيتم تعليق تنفيذ كود البرنامج ، ويتم عرض سؤال على الشاشة ، وتصبح واجهة التطبيق ، بالإضافة إلى مربع الحوار مع السؤال ، غير قابلة للوصول ، والنظام ينتظر لقرار من قبل المستخدم ، سيستمر تنفيذ الكود فقط بعد إجابة السؤال.

أيضًا ، يؤدي فتح النوافذ المشروطة عن طريق استدعاء طريقة OpenModal () إلى تعليق تنفيذ التعليمات البرمجية وحظر الواجهة.

عند العمل مع التكوين في وضع عميل الويب من خلال متصفح ، في هذه الحالة سيتم فتح نافذة جديدة - نافذة منبثقة لن تحظر ليس فقط علامة التبويب الحالية ، ولكن أيضًا واجهة المتصفح بالكامل ، بما في ذلك الباقي النوافذ المفتوحةوعلامات التبويب.

غالبًا ما تُستخدم النوافذ المنبثقة على الإنترنت لتوزيع الإعلانات غير المرغوب فيها بشكل ضار ، وهذا هو السبب في أن المتصفحات تتضمن ميزات حظر الإطارات المنبثقة.

في هذه الحالة ، للعمل مع تكوينات 1C: Enterprise 8 من خلال متصفح ، من الضروري تعطيل حظر النوافذ المنبثقة.

تظهر المشاكل أيضًا عند العمل أجهزة محمولة... على سبيل المثال ، لا يتم دعم الوسائط على iPad.

لحل هذه المشاكل ، يجب عليك استخدام النوافذ المحظورة بدلاً من النوافذ المشروطة. بالنسبة للمستخدم ، يبدو كل شيء كما هو بصريًا: تحجب النافذة واجهة عميل الويب.

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

وبالتالي ، لا تفتح النوافذ المنبثقة في المتصفح ويتم ضمان العمل من خلال عميل الويب على الأجهزة المحمولة.

عنصر التكوين الجذر له خاصية "نمط استخدام الوضع" ، والتي تحدد ما إذا كان يمكن فتح النوافذ المشروطة في التكوين.

إذا تم تحديد الخيار "استخدام" ، فيمكن فتح النوافذ المشروطة. إذا حددت خيار "عدم الاستخدام" ، فإن الوسائط غير صالحة. عند محاولة استدعاء طريقة تفتح نافذة مشروطة ، يعرض النظام رسالة خطأ:

باستخدام هذه القيمة لخاصية "نمط استخدام الوضع" ، يُسمح فقط بإغلاق النوافذ.

إذا تم تحديد الخيار "استخدام مع التحذيرات" ، فعند فتح النوافذ المشروطة ، يتم عرض النص التالي في نافذة الرسالة:

يمكن استخدام هذا النوع من العمل كمتغير وسيط عند إعادة صياغة التكوين لرفض استخدام النوافذ المشروطة.

يتمثل الاختلاف الرئيسي بين النوافذ المشروطة والحظر في أن فتح نافذة الحظر لا يؤدي إلى إيقاف تنفيذ التعليمات البرمجية مؤقتًا.

لذلك ، سيتعين على المطورين إعادة كتابة الكود الذي يستخدم النماذج مع وضع هذه الميزة في الاعتبار.

يجب تقسيم الكود إلى قسمين:

  • فتح نافذة حجب
  • التعامل مع اختيار المستخدم.

يجب إعادة كتابة مقتطف الشفرة في بداية المقالة على النحو التالي:

& على العميل
إجراء المنتجات(أمر )
تنبيه = جديد وصف التنبيهات(، ThisObject)؛

سؤال وضع الحوار نعم لا);
نهاية الإجراء
& على العميل
الإجراء (نتيجة ، خيارات اضافية) يصدر
إذا كانت النتيجة = رمز إرجاع مربع الحوار. نعمثم
// ملء الخوارزمية
إنهاء إذا؛
نهاية الإجراء

بعد تنفيذ إجراء ShowQuestion () ، لا يتوقف النظام ، في انتظار استجابة المستخدم ، يستمر تنفيذ الكود.

لن يكون المستخدم قادرًا على الاختيار إلا بعد إكمال الإجراء بالكامل. سيؤدي هذا إلى استدعاء إجراء التصدير FillProductsQuestionCompletion (). لقد مررنا اسمه إلى مُنشئ كائن وصف التنبيه.

يمكن أن يقع الإجراء الذي سيتم استدعاؤه بعد إجراء التحديد في وحدة نموذجية أو وحدة أوامر أو وحدة نمطية عامة غير عامة.

في المثال أعلاه ، يوجد الإجراء المطلوب في وحدة نموذج مُدارة ، لذلك قمنا بتمرير thisObject إلى المعلمة.

ضع في اعتبارك استدعاء إجراء موجود في وحدة نمطية مشتركة. للقيام بذلك ، قم بإضافة ملف وحدة مشتركةمعالجة الإشعارات ، قم بتعيين علامة "العميل (التطبيق المُدار)" لها ، ولا تقم بتعيين العلامة "عالمي". ضع إجراء FillProductsQuestionCompletion () في هذه الوحدة النمطية.

ثم سيبدو معالج أمر التعبئة كما يلي:

& على العميل
إجراء المنتجات(أمر )
تنبيه = جديد وصف التنبيهات("FillProductsQuestionFinishing",
معالجة الإخطارات);
QuestionText = "سيتم مسح قسم الجدول. تقدم؟" ؛
إظهار السؤال (تنبيه ، نص السؤال ، سؤال وضع الحوار نعم لا);
نهاية الإجراء

بعد استدعاء أي طريقة تفتح نافذة الحظر ، يجب أن يكتمل الإجراء ، ويجب أن يكون الرمز الذي تم تنفيذه أيضًا موجودًا في الإجراء الذي سيتم استدعاؤه بعد إغلاق النافذة.

لتمرير السياق (البيانات المساعدة ، بعض المعلمات ، القيم المتغيرة) من الإجراء الذي يفتح النافذة المشروطة إلى الإجراء الذي يتم استدعاؤه عند إغلاقه ، يتم توفير المعلمة الاختيارية الثالثة لمنشئ الكائن DescriptionNotifications - AdditionalParameters.

سيتم تمرير هذا الكائن (من أي نوع) إلى الإجراء الموضح في AlertDescription باعتباره المعلمة الأخيرة.

باستخدام مثال قسم الكود أعلاه ، يمكن القيام بذلك على النحو التالي:

& على العميل
إجراء المنتجات(أمر )
المعلمة 1 = 0 ؛
المعلمة 2 = 0 ؛
قائمة المعلمات= بنية جديدة ("المعلمة 1 ، المعلمة 2 ″ ، المعلمة 1 ، المعلمة 2) ؛
تنبيه = جديد وصف التنبيهات("FillProductsQuestionFinishing"، ThisObject،
قائمة المعلمات);
ShowQuestion (تنبيه ، "سيتم مسح قسم الجدول. هل تريد المتابعة؟" ،
سؤال وضع الحوار نعم لا);
نهاية الإجراء
& على العميل
إجراء ملء المنتجات السؤال التشطيب(نتيجة ، خيارات اضافية) يصدر
إذا كانت النتيجة = رمز إرجاع مربع الحوار. نعمثم
// تحليل معلمات إضافية
// تحليل معلمات إضافية
إنهاء إذا؛
نهاية الإجراء

إذا كنت بحاجة إلى تمرير قيمة واحدة فقط ، فلا يمكن استخدام البنية ، ولكن يمكنك تعيين هذه القيمة إلى معلمة AdditionalParameters لمنشئ الكائن DescriptionAlerts.

لنلقِ نظرة على بعض الأمثلة للعمل مع حظر النوافذ.

المهمة 1. فتح نموذج آخر

من نموذج المستند ، بالنقر فوق الزر "فتح المعلمات" ، تحتاج إلى فتح النموذج ، حيث يوجد مربعا اختيار Parameter1 و Parameter2 ، والتي يجب تعيينها من قبل المستخدم. بعد إغلاق النموذج ، أخرج قيم المعلمات إلى سطر الرسالة.

قم بإنشاء نموذج عام "نموذج المعلمات" ، حيث نضع المعلمات Parameter1 و Parameter2 ، بالإضافة إلى الأمر CloseForm:

يبدو معالج الأوامر كما يلي:

يبدو معالج الأمر كما يلي: & OnClient
الإجراء CloseForm (الأمر)
قائمة المعلمات= هيكل جديد ( "المعلمة 1 ، المعلمة 2"، Parameter1، Parameter2)؛
قريب ( قائمة المعلمات) ؛ نهاية الإجراء

بالنسبة للنموذج ، اضبط خاصية WindowOpening Mode على "تأمين الواجهة بالكامل":

في نموذج المستند ، ضع الأمر OpenParameters ، والذي تم وصف معالجه على النحو التالي:

& على العميل
إجراء OpenParameters(أمر )
تنبيه = جديد وصف التنبيهات("OpenParametersCompletion"، ThisObject) ؛
OpenForm ( "GeneralForm.ParameterForm"،،،،،، تنبيه)؛
نهاية الإجراء
& على العميل
إجراء OpenParametersCompletion(نتيجة ، خيارات اضافية) يصدر
إذا كان TypeZnch (النتيجة) = اكتب ("الهيكل") ثم
لكل قيمة مفتاح من دورة النتائج
الرسالة = جديد رسالة للمستخدم;
Message.Text = "Key:" " "+ KeyValue.Key +" ""، القيمة = "
+ القيمة الرئيسية. القيمة;
الرسالة();
نهاية الدورة
إنهاء إذا؛
نهاية الإجراء

في وضع المستخدم ، تشغيل التكوين ضمن عميل الويب ، نحصل على نتائج العمل التالية:

انقر على الصورة للتكبير.

يمكن أيضًا تحديد وضع فتح النافذة في المعلمة الأخيرة من إجراء OpenForm.

& على العميل
إجراء OpenParameters(أمر )
تنبيه = جديد وصف التنبيهات("OpenParametersCompletion"، ThisObject) ؛
OpenForm ( "GeneralForm.ParameterForm"،،،،،، انذار،
ModeOpenWindowForms.LockAllInterface
);
نهاية الإجراء

المهمة 2. سؤال عند إغلاق النموذج

عند إغلاق نافذة المعالجة ، اسأل المستخدم عما إذا كان يريد حقًا إغلاق النافذة.

يمكن حل هذه المهمة باستخدام الكود التالي الموجود في وحدة نموذج المعالجة:

& على العميل
يتغيرون NeedCloseForm;
& على العميل
قبل الإغلاق الإجراء (إخلاء المسؤولية ، المعالجة القياسية)
ان لم NeedCloseForm= صحيح إذن
الرفض = صحيح ؛
تنبيه = جديد وصف التنبيهات("BeforeCloseCompletion"، ThisObject) ؛
ShowQuestion (تنبيه ، "هل أنت متأكد أنك تريد إغلاق النافذة؟" ،
سؤال وضع الحوار نعم لا
);
إنهاء إذا؛
نهاية الإجراء
& على العميل
إجراء BeforeCloseCompletion(نتيجة ، خيارات اضافية) يصدر
إذا كانت النتيجة = رمز إرجاع مربع الحوار. نعمثم
NeedCloseForm= صحيح ؛
قريب ()؛
خلاف ذلك
NeedCloseForm= غير محدد ؛
إنهاء إذا؛
نهاية الإجراء

في الإجراء "قبل إغلاق النموذج" ، يُسأل المستخدم سؤالاً ، ويتم تعيين علامة "رفض" على "صواب" ، ويتم إغلاق النموذج.

بعد إجابة السؤال بالإيجاب ، يتم تعيين المتغير MustCloseForm على True ، ويتم إغلاق النموذج مرة أخرى.

المهمة 3. إدخال قيمة عددية

عند النقر فوق الزر الموجود في نموذج المعالجة ، افتح مربع الحوار القياسي لإدخال رقم.

للقيام بذلك ، استخدم طريقة ShowNumberEnter () بدلاً من NumberEnter () ، والتي تفتح نافذة حظر بدلاً من نافذة مشروطة.

& على العميل
إجراء إدخال الرقم (الأمر)
تنبيه = جديد وصف التنبيهات("EnterNumberCompletion"، ThisObject) ؛
ShowEnterNumbers(إعلان ، 0 ، "أدخل المبلغ" ، 15 ، 3) ؛
نهاية الإجراء
& على العميل
إجراء EnterNumbersCompletion(نتيجة ، خيارات اضافية) يصدر

الرسالة = جديد رسالة للمستخدم;
Message.Text = "لقد أدخلت الكمية" + النتيجة ؛
الرسالة();
إنهاء إذا؛
نهاية الإجراء

بعد إغلاق النافذة لإدخال رقم ، سيتم استدعاء إجراء ، سيتم تمرير المعلمة الأولى من الرقم الذي تم إدخاله أو القيمة غير المحددة إذا رفض المستخدم الدخول.

المهمة 4. اختيار لون

عند النقر فوق الزر الموجود في نموذج المعالجة باستخدام مربع حوار اختيار اللون القياسي ، يحدد المستخدم اللون المطلوب. اضبط هذا اللون على خلفية الزر الذي تضغط عليه.

أضف الأمر SelectColor إلى النموذج باستخدام المعالج التالي:

& على العميل
إجراء تحديد اللون (الأمر)
DialogueSelectColors= جديد DialogueSelectColors;
تنبيه = جديد وصف التنبيهات("SelectColorCompletion"، ThisObject) ؛
الحوار حدد الألوان.تظهر (إعلام) ؛
نهاية الإجراء
& على العميل
إجراء ChoiceColorsCompletion(نتيجة ، خيارات اضافية) يصدر
إذا لم تكن النتيجة = غير محدد إذن
العناصر ، اللون ، اللون ، الخلفية= النتيجة ؛
إنهاء إذا؛
نهاية الإجراء

بالنسبة لكائنات ColorSelectDialogue (بالإضافة إلى StandardPeriodEdit Dialogue و FormatString Constructor و RegularJobScheduleDialogue و FontSelect Dialogue) ، تفتح الطريقة Show () نافذة حظر.

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

لاحظ أن الكائن FileSelectDialog لا يحتوي على طريقة Show () ، على عكس مربعات حوار تحديد اللون أو الخط ، نظرًا لأن تنفيذ مربعات الحوار هذه يختلف اختلافًا كبيرًا.

لاستخدام مربع حوار تحديد الملف على عميل الويب ، يجب عليك أولاً توصيل امتداد الملف.

لا تؤدي الحوارات التي يتم تنفيذها من خلال امتداد الملف إلى حدوث مشكلات في التشغيل مثل النوافذ المشروطة للمتصفحات ، وبالتالي ، لم يتم تنفيذ فتح نوافذ الحظر لكائن FileChoiceDialog.

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

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

ولديك طريقتان فقط لحل المشكلة الموضحة أعلاه:

  1. قم بترقية النظام الأساسي لإصدار 8.3.10+ (8.3.11) ، وقم بتعيين خاصية التكوين "وضع التوافق" إلى "عدم الاستخدام" وأعد كتابة أجزاء التعليمات البرمجية التي تستخدم طرقًا نمطية إلى نموذج غير متزامن لإنشاء منطق الأعمال
  2. أوصي عملائك باستخدام متصفحات قديمة حيث لا تزال المكالمات المشروطة مدعومة ( موزيلا فايرفوكسالإصدار 37 وما دونه ، Chrome أقل من الإصدار 37 ، وما إلى ذلك).

بالمناسبة ، بدءًا من الإصدار 8.3.11 ، لم تعد مستعرضات الويب من Microsoft مدعومة متصفح الانترنتالإصداران 8 و 9.

مع متصفحات الويب في ضوء الطريقة ، اكتشفنا ، حان الوقت الآن لتوضيح الموقف مع بقية العملاء.

بدءًا من الإصدار 8.3.5 ، يتم أخذ الخاصية "نمط استخدام الوضع" في الأجهزة العميلة النحيفة والسميكة في الاعتبار فقط إذا تم تحديد معلمة سطر الأوامر / EnableCheckModal. يتم استبدال هذه المعلمة تلقائيًا في سطر الأوامرفقط عند بدء تشغيل التطبيق من أداة التهيئة. إذا لم يتم تحديد هذه المعلمة ، فلن يتم إنشاء استثناءات ولا يتم عرض التحذيرات المقابلة. أولئك. في الممارسة العملية ، في حالة استخدام عميل سميك ورقيق ، لا يلاحظ أي تغيير جوهري في العمل عند استخدام الوضع الوسيط - ستعمل المكالمات النموذجية بنفس الطريقة التي كانت تعمل بها من قبل ، دون إنشاء أي تحذيرات ، كما هو الحال في عميل الويب.

لوضع علامة على حرف "i" ، لاحظ أنه بدءًا من الإصدار 8.3.9 ، يتجاهل العميل السميك خاصية التكوين "وضع استخدام المكالمات المتزامنة إلى امتدادات النظام الأساسي والمكونات الخارجية" ، بينما تعمل الطرق المتزامنة المقابلة دون طرح استثناءات وعرض التحذيرات . تمت إضافة الخاصية المحددة التي تم تجاهلها في المراجعة 8.3.5 لدعم العمل غير المتزامن مع المكونات الخارجية والتشفير والإضافات للعمل مع الملفات في مستعرض الويب جوجل كروم... من الواضح أن هذا لا علاقة له بالعميل البدين ، وبالتالي فإن التجاهل "الصامت" لهذه الخاصية يلغي ببساطة عمليات التحقق غير الضرورية من استخدام الأساليب المتزامنة عند استخدام التكوين.

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

الزملاء ، هناك شيئان يمكن قراءتهما إلى ما لا نهاية: موجز VKontakte وقائمة التغييرات في الإصدار التالي من النظام الأساسي ، لذلك دعونا نلخص ؛)

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

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

بدلا من الاستنتاج

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

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

14
لإجبار المؤسسة على البدء في تطبيق عادي أو مُدار ، يتم استخدام المفاتيح التالية: / RunModeOrdinaryApplication يبدأ العميل السميك في الوضع العادي ، على الرغم من إعدادات التكوين و ... 3
من الضروري ألا يتمكن المستخدمون من تغيير الواجهة المكونة لهم! الحل: لتعطيله ، تحتاج إلى إزالة "حفظ بيانات المستخدم" مباشرة في حقوق الوصول لعنصر تكوين الجذر. ... 2
في العمل الحالي ، يفتح المستخدم عادة عدة كائنات. يمكن أن يكون مستندًا أو كتابًا مرجعيًا أو تقريرًا وما إلى ذلك. في الواجهة السابقة ، لم تكن هناك مشكلة في العثور بسرعة على كائن مفتوح وتحديثه لـ ... 2
في المقالة الأخيرة: تثبيت مصنف العناوين (KLADR) في 1C ، أخبرتك ما هو Kladr وكيفية تحميله في نماذج 1C العادية (8.0-8.2). سأوضح لك في هذه المقالة كيفية تحميل مُصنف العناوين (KLADR) في ... 2
غالبًا عند تطوير تكوين معين ، يرغب المستخدمون في إرفاق صور بعنصر دليل وتخزينها في قاعدة البيانات. سأخبرك في هذا المقال بكيفية توصيل كائنات البناء بالكتاب المرجعي ...

ظهر الإصدار 8.3 في منصة 1C نظام جديدعمل البرنامج - بدون استخدام طريقة. بتعبير أدق ، ظهر وضعان جديدان: بدون استخدام الطريقة واستخدام الطريقة ، ولكن مع تحذير. والطريقة القديمة للعملية هي كيفية استخدام الطريقة.

ماذا يعني كل هذا؟في الإصدارات الأولى من النظام الأساسي ، استخدمنا العديد من النوافذ النموذجية ولم نفكر في الأمر حقًا. على سبيل المثال ، تحتاج إلى عرض تحذير للمستخدم ، أو تحتاج إلى طرح سؤال أو إدخال بعض القيمة ، أو تحديد ملف. هذه كلها نوافذ مشروطة.

ماذا يعني مشروط؟هذا يعني أنه عندما يتم استدعاء هذه النافذة ، فإنها تتداخل مع جميع النوافذ الأخرى ، أي يتم إحضارها إلى الأعلى وتعمل الكتل مع النوافذ الأخرى حتى نهاية العمل مع هذه النافذة. بالإضافة إلى حظر النوافذ ، يتوقف تنفيذ الكود تمامًا في المكان الذي يتم فيه استدعاء هذه النافذة ولا يتم تنفيذ استمرار تنفيذ الكود إلا بعد إغلاق هذه النافذة. من حيث توقف الإعدام. سأوضح دعوة النافذة المشروطة بمثال استدعاء النموذج لاختيار الفترة:

& على العميل

StandardProcessing = خطأ ؛




If Dialog.Edit () ثم // استدعاء النموذج المشروط. سيحدث استمرار تنفيذ التعليمات البرمجية فقط بعد إغلاق النموذج.
Elements.Services.CurrentData.StartDate = Dialog.Period.StartDate ؛
Elements.Services.CurrentData.EndDate = Dialogue.Period.EndDate ،
إنهاء إذا؛

نهاية الإجراء


كما نرى ، يكفي إجراء واحد لمعالجة استدعاء النافذة المشروطة لاختيار الفترة.

لماذا الوسائط سيئة؟الآن دعنا نتعرف على سبب قرار 1C التخلي عن استخدام النوافذ المشروطة. حسنًا ، أولاً وقبل كل شيء ، هذا نتيجة لحقيقة أن منصة 1C يمكن استخدامها ليس فقط في شكلها المعتاد - في شكل تطبيق سطح مكتب ، ولكن يمكن أيضًا إطلاقها في متصفح ويمكن إطلاقها في النموذج من تطبيق الهاتف المحمول.

مشكلة المتصفحات كما يلي. يتم تنفيذ طريقة النوافذ فيها باستخدام نوافذ متصفح منفصلة منبثقة. يتم دعمها من قبل جميع المتصفحات تقريبًا ، ولكن نظرًا للاستخدام المتكرر لهذه النوافذ للإعلان ، فإن جميع مطوري المستعرضات تقريبًا يكافحون معهم ويعطلون استخدام هذه النوافذ افتراضيًا. نتيجة لذلك ، من أجل ضمان قدرة مستخدم 1c على العمل في المتصفح ، عليك إجباره على السماح لهذه النوافذ ، وتكريس نفسه لجميع التفاصيل الدقيقة لـ 1c والمتصفحات ، وتحمل بشكل عام معلومات غير ضرورية.

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

وأخيرا تطبيق جوال 1C أيضًا لم يقم بتكوين صداقات مع النوافذ المشروطة.

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

& على العميل
إجراء الخدمة StartDateSelectionStart (العنصر ، بيانات التحديد ، المعالجة القياسية)

StandardProcessing = خطأ ؛

الحوار = New EditStandardPeriod Dialogue () ،
StandardPeriod = فترة قياسية جديدة () ،

StartDate = Items.Services.CurrentData.StartDate ؛
EndDate = Items.Services.CurrentData.EndDate ،

StandardPeriod.StartDate = تاريخ البدء ،
StandardPeriod.EndDate = تاريخ الانتهاء ،
Dialogue.Period = StandardPeriod؛

AlertDescription = New AlertDescription ("PeriodSelectionProcessing"، ThisForm)؛

Dialogue.Show (وصف التنبيه)

نهاية الإجراء

& على العميل
إجراءات المعالجة اختيار فترة (فترة ، معلمات) تصدير

إذا كانت الفترة<>غير محدد ثم

Items.Services.CurrentData.StartDate = Period.StartDate ؛
Items.Services.CurrentData.EndDate = Period.EndDate ؛

إنهاء إذا؛

نهاية الإجراء


كما نرى ، بدلاً من Edit () ، يتم استدعاء Show (). وتجري معالجة حدث الاختيار بالفعل في إجراء آخر.

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

حسنًا ، نتخلى عن الأسلوب ونتقن التقنيات الجديدة لعمل 1C في المتصفحات وأجهزة الكمبيوتر المحمولة.