مسكن / جلسة / 1c تمرير المعلمات إلى نموذج التحديد. تمرير المعلمات إلى النماذج المدارة والمنتظمة. كيفية فتح نموذج التحديد ثم الحصول على القيمة المحددة

1c تمرير المعلمات إلى نموذج التحديد. تمرير المعلمات إلى النماذج المدارة والمنتظمة. كيفية فتح نموذج التحديد ثم الحصول على القيمة المحددة

طباعة (Ctrl + P)

خيارات النموذج

1. معلومات عامة

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

// في موقع الاتصال.
// شكل معلمة النموذج.
المعلمات = هيكل جديد () ؛
خيارات لصق("أهمية"، القيمة المحددة مسبقًا(“Enumeration.Importance.Mportant”)) ؛
// فتح النموذج مع المعلمات.
OpenForm ("GeneralForm.ViewForm" ، معلمات) ؛

// في النموذج.
& على الخادم
إجراء OnCreateOnServer (فشل ، معالجة قياسية)
اذا كان المعلمات. الأهمية = Enums. أهمية. مهماوه وبعد ذلك

إنهاء إذا؛
EndProcedure

اهتمام! بعد استدعاء معالج الحدث OnCreateOnServerتتم إزالة كافة معلمات النموذج غير الرئيسية من مجموعة المعلمات.
النصيحة. يجب تخزين معلمات النموذج غير الرئيسية الضرورية لمزيد من العمل في بيانات النموذج.

2. خيارات النموذج القياسي

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

3. مثال على العمل مع معلمات النموذج

لتوضيح كيفية عمل معلمات النموذج ، دعنا نفكر في تنفيذ اختيار عنصر في حقل الإدخال. سيكون جوهر المثال هو تنفيذ آلية اختيار عنصر من القائمة في اللغة المضمنة.
بحلول الوقت الذي تبدأ فيه العمل مع المثال ، يجب أن يكون لديك تكوين يحتوي على الخصائص التالية:
● يوجد دليل سلع به تسلسل هرمي للمجموعات والعناصر ؛
● هناك دليل نظائرها مع السمة SelectedProduct من النوع دليل Link. المنتجات;
● يحتوي كلا الكتابين المرجعيين على نماذج عناصر.
ننفذ الآن في هذا التكوين جميع الآليات التي يستخدمها النظام الأساسي لتحديد عنصر من القائمة ، باللغة المضمنة. عند القيام بذلك ، سوف نرى:
● كيفية استخدام معلمات النموذج القياسي ؛
● كيف يستخدمها النظام ؛
● كيف يمكن للمطور استخدامها.
دعونا نضيف معلمة إضافيةيتحكم في إغلاق النموذج المحدد بعد تحديد عنصر. دعنا نسمي هذه المعلمة CloseAfterSelection(نوع منطقي). دعنا نضيفها كمعامل لنموذج التحديد من دليل البضائع.
لفتح نموذج اختيار العنصر ، من الضروري إنشاء معالج حدث لحدث SelectStart في عنصر النموذج SelectedItem في شكل عنصر دليل نظير.

& AtClient
إجراء SelectedItemSelectionStart (العنصر ، معالجة قياسية)
المعالجة القياسية= خطأ ؛
خيارات الاختيار= هيكل جديد.
المعلمات التحديد("SelectionMode" ، صحيح) ؛
المعلمات التحديد("SelectGroupsAndItems" ، باستخدامالمجموعات والعناصر);
المعلمات التحديد("AllowRootSelection" ، خطأ) ؛
المعلمات التحديد("الخط الحالي"، Object.SelectedItem);
المعلمات التحديد("CloseAfterSelection" ، خطأ) ؛
OpenForm ("Catalog.Products.ChoiceForm" ، خيارات الاختيار, العناصر);
EndProcedure
يجب أن نتناول بشكل منفصل المعامل الثالث لطريقة OpenForm (). تحدد هذه المعلمة من سيكون مالك نموذج التحديد ومن سيتم إخطاره بالاختيار الذي تم إجراؤه. في هذه القضيةلقد حددنا عنصر النموذج نفسه كمالك لنموذج التحديد ، ولكن يمكننا أيضًا تحديد النموذج نفسه باستخدام هذه المعلمة. في هذه الحالة ، سيكون من الضروري تنفيذ المعالج اختيار المناولةوحدة النموذج وتقرر فيه سمة النموذج لوضع البيانات المحددة فيها.
ملاحظة. إذا لم ننفذ معالج الأحداث StartChoice ، فسيقوم النظام نفسه بتنفيذ إجراءاته. هذا صحيح لجميع المعالجات الإضافية المستخدمة في المثال.
الآن نحن بحاجة إلى معالجة المعلمات التي تم تمريرها في نموذج التحديد. دعونا نفعل ذلك في المعالج OnCreateOnServer() من وحدة نموذج التحديد.

& على الخادم
إجراء OnCreateOnServer (فشل ، معالجة قياسية)
المعالجة القياسية= خطأ ؛
Elements.List.SelectGroupsAndItems = Parameters.SelectGroupsAndItems;
Elements.List.AllowSelectRoot = Parameters.AllowSelectRoot;
Items.List.CurrentRow = Parameters.CurrentRow ؛
CloseOnSelection = Parameters.CloseAfterSelection;
EndProcedure
من أجل التحقق من أداء معلمات النموذج التي حددناها ، سنقوم بتعيين خاصية القائمة لجدول نموذج التحديد باستخدام أداة التهيئة اخترالمجموعات والعناصرإلى قيمة المجموعات (بدون تطبيق المعلمة ، لن يكون اختيار عناصر القاموس متاحًا).
ملاحظة. إذا لم يتم تعيين خاصية SelectionMode في جدول القائمة ، الذي يعرض قائمة المنتجات ، إلى True ، فلن يكون اختيار المنتجات متاحًا.
نحتاج الآن إلى التعامل مع اختيار العنصر المطلوب في نموذج التحديد. للقيام بذلك ، تحتاج إلى تحديد معالج حدث للحدث SelectValues ​​لجدول النموذج.

& AtClient
إجراء ListSelectionValues ​​(Item ، StandardProcessing ، Value)
المعالجة القياسية= خطأ ؛
NotifySelection (القيمة);
EndProcedure
يبقى بالنسبة لنا تنفيذ معالجة اختيار عنصر في حقل الإدخال نفسه. للقيام بذلك ، تحتاج إلى التعامل مع الحدث اختيار المناولةلدينا حقل الإدخال SelectedProduct.

& AtClient
إجراء SelectedItemProcessingChoice (عنصر ، قيمة محددة ، معالجة قياسية)
المعالجة القياسية= خطأ ؛
Object.SelectedItem = SelectedValue ؛
EndProcedure
قمنا بشكل مستقل بتنفيذ آلية نظام لاختيار قيمة في حقل الإدخال في النموذج.
اهتمام!هذا المثال لم يكتمل. والغرض الوحيد منه هو إظهار آليات العمل باستخدام معلمات الشكل.
إذا عند إنشاء المعلمات (معالج SelectedItemSelectionStart ()) استبدل الخط:

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

من أجل دعم التفاعل التلقائي بين النماذج ، يوفر النظام عددًا من الخيارات القياسية التي تُستخدم للتحكم في النماذج عند فتحها. بمساعدة هذه المعلمات ، ينفذ النظام في حقول النموذج التحديد من نماذج التحديد ، وفتح نماذج الكائن ، وتشغيل الأوامر القياسية ، وما إلى ذلك ، أي أنها توفر سيناريوهات تشغيل واجهة مختلفة مضمنة في النظام. لكن يمكن للمطور أيضًا استخدام هذه المعلمات في 1C: لغة Enterprise بتمريرها عند استدعاء طريقة OpenForm ().

نسرد المعلمات التي يوفرها النظام والغرض منها:

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

مثال على العمل مع معلمات النموذج

لتوضيح كيفية عمل معلمات النموذج ، دعنا نفكر في تنفيذ اختيار عنصر في حقل الإدخال. سيكون جوهر المثال هو تنفيذ آلية اختيار عنصر من القائمة في اللغة المضمنة.

بحلول الوقت الذي تبدأ فيه العمل مع المثال ، يجب أن يكون لديك تكوين يحتوي على الخصائص التالية:

  • وضع التشغيل الرئيسي هو التطبيق المدار ؛
  • يوجد دليل بضائع به تسلسل هرمي للمجموعات والعناصر ؛
  • هناك دليل نظائرها مع السمة SelectedItem من نوع DirectoryReference.Goods ؛
  • كلا الكتابين المرجعيين لهما نماذج عناصر مُدارة.

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

دعنا نضيف علمًا إضافيًا يتحكم في إغلاق نموذج التحديد بعد تحديد عنصر. دعنا نسمي هذه العلامة CloseAfterSelection (النوع المنطقي). دعنا نضيفها كمعامل نموذج لنموذج تحديد دليل البضائع.

لفتح نموذج اختيار العنصر ، من الضروري إنشاء معالج حدث لحدث SelectStart لعنصر النموذج SelectedItem في نموذج عنصر كتالوج Analogues:

& AtClient

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

StandardProcessing = خطأ ؛

ChoiceParameters = هيكل جديد ؛ SelectionParameters.Insert ("SelectionMode"، True) ؛ SelectionParameters.Insert ("SelectGroupsAndItems"، UseGroupsAndItems.Elements) ؛ SelectionParameters.Insert ("AllowRootSelection"، False) ؛ ChoiceParameters.Insert ("CurrentRow"، Object.SelectedItem) ؛ SelectionParameters.Insert ("CloseAfterSelection"، False) ؛ OpenForm ("Catalog.Products.ChoiceForm" ، ChoiceParameters ، Elements.SelectedProduct) ؛

EndProcedure

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

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

GetForm (). يفتح()

هذه أبطأ طريقة لفتح النماذج. ومع ذلك ، فإنه يسمح لك بمعالجة النموذج برمجيًا قبل فتحه. للمعالجة ، يجب تعديل الرمز بشكل طفيف:

النموذج = GetForm ( "المستند. استلام البضائع والخدمات. نموذج المستند") ;
// هنا نقوم بتنفيذ الإجراءات مع النموذج
الاستمارة. يفتح() ؛

يجب أن يؤخذ في الاعتبار أنه عند استلام النموذج ، سيتم تنفيذ إجراء حدث آخر OnCreateOnServer.

ضع في اعتبارك الطرق الأخرى التي تسمح لك بفتح النماذج في تطبيق 1C مُدار بشكل أسرع وأكثر ملاءمة. يمكن استخدام طرق مختلفة حسب الحالة المحددة.

1. كيفية فتح نموذج كائن في تطبيق مدار إذا كان هناك ارتباط به.

في هذه الحالة ، كل شيء بسيط للغاية.

RefReference = مراجع. التسمية. FindByCode ("000000001") ،
OpenValue (مرجع المرجع) ؛

2. كيفية فتح نموذج التحديد ثم الحصول على القيمة المحددة.

هناك وظيفة لهذا أدخل القيمة().تحتوي الوظيفة على 3 معلمات:

  • المتغير الذي ستكتب فيه القيمة المختارة ؛
  • التلميح الذي سيتم عرضه في مربع الاختيار ؛
  • وصف أنواع القيم المختارة. يمكن أن يكون هناك عدة أنواع ، ثم قبل اختيار قيمة معينة ، سيُطلب منك تحديد نوع.

نتيجة لتنفيذ الوظيفة ، سيتم فتح نموذج التحديد الافتراضي للكائن من النوع المحدد.

قيمة متغيرة
صفيف = صفيف جديد ؛
مجموعة مصفوفة. إضافة (النوع ( "DirectoryLink.Nomenclature") ) ;
مجموعة مصفوفة. إضافة (النوع ( "DirectoryLink. الأطراف المقابلة") ) ;

TypeDescription = وصف نوع جديد (صفيف) ؛

Res = EnterValue (القيمة ، "تلميح" ، TypeDescription) ؛

سمحت الطرق السابقة بفتح النماذج المحددة للكائنات بشكل افتراضي فقط (شكل الكائن أو نموذج التحديد). إذا كنت بحاجة إلى فتح نموذج تعسفي ، يمكنك استخدام الوظيفة OpenForm ().

تحتوي هذه الوظيفة على عدد قليل من المعلمات. دعونا نفكر في بعضها:

  • اسم النموذج- هنا يمكنك تحديد أحد الأشكال القياسية للكائن ، على سبيل المثال ، النموذجأو FormList. أو نموذج محدد تم إنشاؤه بواسطة المطورين.
  • خيارات- يسمح لك بالتحويل إلى النموذج الموجود في النموذج الهياكلبعض المعلمات قبل فتحه ، وبالتالي تحديد بيانات الإخراج. يمكن أن تكون المعلمات أي بيانات يمكن تمريرها من العميل إلى الخادم. يمكن معالجة المعلمات التي تم تمريرها عند فتح النموذج في الإجراء OnCreateOnServer ()في النموذج المفتوح.
  • وضع فتح النموذج- لديه 3 خيارات: مستقل ، حظر الواجهة بالكامل ، حظر نموذج المالك.

دعونا نرى كيف يتم استخدام الوظيفة OpenForm ()في مواقف مختلفة.

3. كيفية فتح شكل كائن موجود

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

& AtClient
أمر الإجراء 1 (الأمر)
معلمة = هيكل جديد ؛
معامل. إدراج ("مفتاح" ، FindC ()) ؛
OpenForm (، معلمة) ؛
EndProcedure

& على الخادم
وظيفة FindC () ؛
كتيبات العودة. النظراء. FindByAttribute ("TIN"، "745107734623")
وظائف النهاية

4. كيفية فتح شكل كائن جديد

هذه مجرد وظيفة OpenForm ()بدون أي معلمات.

& AtClient
أمر الإجراء 1 (الأمر)
OpenForm ( "كتاب مرجعي. نظراء. نموذج كائن") ;
EndProcedure

5. كيفية فتح نموذج كائن جديد وتعبئته بناءً على شيء ما

تحتاج لتمرير المعلمة يتمركز، التي ستكون قيمتها مرجعًا لكائن قاعدة التعبئة. سيبدأ هذا الإجراء HandFill ().

& AtClient
أمر الإجراء 1 (الأمر)
معلمة = هيكل جديد ؛
معامل. أدخل ("السبب" ، LinkToAccountToBuyer) ؛
OpenForm ( "المستند. تحقيق السلع والخدمات. نموذج الكائن"، معامل) ؛
EndProcedure

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

6. كيفية فتح نموذج وتحديد الاختيار عليه

يمكن أن يكون الاختيار على نماذج 1C بسيطًا ومعقدًا. الاختيار البسيط يتضمن تعبيرات مثل Organization = Horns and Hooves LLC.يتضمن الاختيار المعقد أنواعًا أخرى من المقارنة ، على سبيل المثال ، مدرج. في هذه المقالة ، سننظر في تنظيم اختيار بسيط ، وسيتم تخصيص مقال منفصل للمجموعة المعقدة.

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

على سبيل المثال ، لنفتح نموذج قائمة البحث غير GTEوسنقوم بالاختيار هناك من قبل المالك - عنصر الدليل التسمية.

& AtClient
أمر الإجراء 1 (الأمر)
معلمة = هيكل جديد ؛

اختيار = هيكل جديد ؛
اختيار. يضاف ("المالك" ، LinkToNomenclature) ؛

معامل. إدراج ("اختيار" ، تحديد) ؛

OpenForm ( "Directory.GTE Numbers.List Form"، معامل) ؛
EndProcedure

7. كيفية فتح نموذج إدخال سجل المعلومات

للقيام بذلك ، تحتاج إلى مفتاح تسجيل لسجل المعلومات.

مفتاح التسجيلهي قيم جميع القياسات والفترة (إذا كان السجل دوريًا). أي أن مفتاح السجل هو المعلمات التي يمكن من خلالها تحديد السجل بشكل فريد.

خوارزمية الفتح هي كما يلي:

  1. نقوم بإدخال بيانات مفتاح التسجيل بالقيم اللازمة في الهيكل.
  2. نضع الهيكل الناتج في مصفوفة.
  3. من المصفوفة نقوم بإنشاء مفتاح التسجيل.
  4. تمرير المعامل إلى النموذج المفتوح مفتاحمع مفتاح التسجيل من العنصر 3 كقيمة.

& AtClient
أمر الإجراء 1 (الأمر)
معلمة = هيكل جديد ؛

KeyParameters = هيكل جديد ؛
المعلمات الرئيسية. يضاف ("التسمية" ، LinkToNomenclature) ؛
المعلمات الرئيسية. إدراج ("PriceType" ، LinkToPriceType) ؛
المعلمات الرئيسية. يضاف ("الفترة" ، التاريخ) ؛

ArrayKey = صفيف جديد ؛
ArrayKey. إضافة (KeyParameters) ؛

RecordKey = جديد ( "سجل المعلومات ، RecordKey.NomenclaturePrices"، ArrayKey) ؛

معامل. إدراج ("مفتاح" ، RecordKey) ؛

OpenForm ( "سجل المعلومات. أسعار التسمية. نموذج التسجيل"، معامل) ؛
EndProcedure

توضح هذه المقالة كيفية تمرير قيمة كمعلمة كمعلمة عند فتح نموذج مُدار 8.2 مقارنة بكيفية تنفيذ عملية مماثلة في النماذج العادية.

كيف يتم تمرير المعلمات في الأشكال العادية

في الأشكال العادية ، كان هناك احتمالان لتمرير المعلمة:
1) طريقة أقل شيوعًا: في شكل كائن في علامة التبويب "التفاصيل" ، تمت إضافة التفاصيل ، إذا لزم الأمر ، تم تحديد الوصول بالوسائل المرئية
2) طريقة أكثر شيوعًا: تم الإعلان عن متغير تصدير في وحدة النموذج وتمت معالجة القيمة في معالج "BeforeOpening"

في كلتا الحالتين ، بدا نموذج الاستدعاء كالتالي:

Form = Object.GetForm ("ChoiceForm"، FormOwner، UniqueKey) ؛
Form.Parameter = ParameterValue ؛
Form.Open () ؛

كيف يتم تمرير المعلمات في النماذج المدارة

تتمتع النماذج المُدارة الآن بالقدرة على تمرير المعلمات فورًا عند استلام النموذج. يتم تمرير المعلمات كهيكل:

المعلمات = هيكل جديد ("CurrentValue" ، LastItem) ؛
ChoiceForm = GetForm ("Catalog.Nomenclature.ChoiceForm" ، معلمات) ؛
FoundItem = ChoiceForm.OpenModal () ،

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

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

لتمرير معلمة معالجة معينة ، عليك فعل المزيد:

1) تحديد معلمة في نموذج مُدار.
في معالج OnCreateAtServer ، حدد معالجة هذه المعلمة (الوصول إلى المعلمات التي تم تمريرها من خلال خاصية "Parameters" لنوع FormDataStructure)
2) وصف استلام النموذج وتمرير قيمة المعلمة الجديدة في معلمات دالة GetForm.
لذلك سيبدو الرمز كما يلي:
- في مكان استلام الاستمارة

المعلمات = هيكل جديد ("NewParameter" ، LastElement) ؛
ChoiceForm = GetForm ("Catalog.Nomenclature.ChoiceForm" ، معلمات) ؛

في وحدة النموذج المدارة

& على الخادم
الإجراء عند CreationOnServer (فشل ، معالجة قياسية)
If Parameters.Property ("NewParameter") ثم
// كود معالجة المعلمة هنا
إنهاء إذا؛
EndProcedure

خاتمة

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

[تحتاج إلى التسجيل لمشاهدة الرابط]