كيفية فتح نموذج قائمة مع بعض التحديد؟ كيفية ضبط الاختيار في نموذج قائمة الدليل؟ فتح النموذج مع التحديد 8.2

14.12.2023

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

التحديد في النموذج في حقل الإدخال 1C 8.2 بعدة قيم

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

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

تحديد التحديد في حقل الإدخال في النموذج في 1C 8.3، حدث بداية التحديد

الآن دعونا نفكر التحديد في حقل الإدخال في نموذج مُدار في 1C 8.3. دعونا نجد في النموذج العنصر الذي نهتم به، والذي سنحدد فيه الاختيار، في حالتنا هذا هو حقل "المنظمة". نجد حدث "بدء التحديد"، انقر على العدسة المكبرة ونجد أنفسنا في الإجراء. نرى معلمة بيانات التحديد؛ هذه المعلمة من نوع ValueList. لكي يقتصر الاختيار على العناصر الضرورية، نحتاج إلى ملء قائمة القيم. يمكننا تحديد العناصر فقط على الخادم، لذلك نقوم بإنشاء إجراء باستخدام توجيه التحويل البرمجي &OnServer. في هذا الإجراء، قم بملء بيانات التحديد.

يتيح لك هذا الرمز فتح قائمة المستندات مع التحديد المحدد، ويمكنك أيضًا فتح قائمة عناصر الدليل بالتحديد المطلوب

Code 1C v 8.2 UP Form = OpenForm("Document.Invoice.Form.ListForm"); // افتح النموذج
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); // إضافة التحديد
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; // كيف سنقارن
SelectOwner.Use = True; // قم بتعيين مربع الاختيار لاستخدام NewDataCompositionField("Nomenclature")
SelectionOwner.LeftValue = NewDataCompositionField("الحساب"); // ما هي التفاصيل التي سنستخدمها لإجراء الاختيار؟
SelectionOwner.RightValue = Object.Account; // ومعنى الاختيار ذاته

بغرض افتح نموذج قائمة مع تحديد محدد مسبقًااستخدم الطرق التالية:

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

تمثل معلمة التحديد البنية. تتوافق أسماء العناصر مع أسماء الحقول التي يتم الاختيار من خلالها، وتحتوي القيم على قيم التحديد. هذا هو خيار ملحق نموذج مُدار بالقائمة الديناميكية. أي أنه موجود للنماذج التي تكون سمتها الرئيسية هي سمة من نوع DynamicList، على سبيل المثال، نماذج القائمة ونماذج التحديد.

على سبيل المثال، في المثال التالي، يتم فتح قائمة الفواتير مع تحديدها بواسطة حقل الرقم، يساوي 333.

Code 1C v 8.2 UE Selection Value = New Structure("Number"، "333");
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Document.Receipt Invoice. List Form"، Selection Options);

الطريقة الثانية

يمكنك فتح نموذج قائمة بدون معلمات:

Code 1C v 8.2 UP OpenForm("Document.Receipt Invoice. List Form");

وبعد ذلك، في معالج الحدث الخاص بالنموذج الخاص بقائمة الفواتير، عند إنشاء CreatedOnServer، اكتب التعليمات البرمجية التي تنشئ تحديدًا في القائمة الديناميكية، وهي السمة الرئيسية للنموذج:

كود 1C v 8.2 UP &OnServer
الإجراء عند CreatedOnServer (الفشل، المعالجة القياسية)
Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
نهاية الإجراء

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

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

الطريق الثالث

وأخيرًا، يمكن وضع شرط التحديد في استعلام مخصص يحدد البيانات لقائمة ديناميكية.

على سبيل المثال، نحتاج إلى فتح قائمة الفواتير التي تحتوي على العنصر المميز في قائمة العناصر.

للقيام بذلك، في شكل قائمة العناصر، قم بإنشاء أمر والزر المقابل استلام الفواتير.

لنملأ معالج التنفيذ لهذا الأمر على النحو التالي:

الكود 1C v 8.2 UP &OnClient
إجراءات الإيصالاتالفواتير (الأمر)
SelectionParameters = New Structure("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Document.Receipt Invoice. List Form"، Selection Options);
نهاية الإجراء

في هذا المعالج، نفتح النموذج الخاص بقائمة الفواتير، ونمرر رابطًا إلى العنصر الحالي في قائمة العناصر إلى معلمة النموذج FilterByProduct.

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

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

في حقل الطلب، أدخل نص الطلب التالي:

كود 1C v 8.2 UP SELECT
رقم فاتورة استلام الوثيقة،
فاتورة استلام الوثيقة.التاريخ
من
Document.ReceiptInvoice AS DocumentReceiptInvoice
أين
مستند استلام الفاتورة.المنتجات.المنتج = &المنتج

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

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

الكود 1C v 8.2 UP &OnClient
إجراء الافتتاح (الفشل)
List.Parameters.SetParameterValue("Product", Parameters.FilterByProduct);
نهاية الإجراء

هنا List.Parameters عبارة عن قائمة بمعلمات طلب القائمة الديناميكية لسمة القائمة. يتم تعيين قيمة معلمة المنتج مساوية لقيمة معلمة نموذج FilterByProduct.

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

هناك عدة طرق لفتح نموذج قائمة مع بعض التحديدات المحددة مسبقًا. دعونا ننظر إليهم:

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

عند فتح النموذج، سيتم الاختيار بناءً على الحقل المحدد. على سبيل المثال، في المثال التالي، يتم فتح قائمة الفواتير مع التحديد بواسطة حقل الطرف المقابل الذي يساوي "OJSC Horns and Hooves".

قيمة الاختيار = الهيكل الجديد ("الطرف المقابل" , ""JSC الأبواق والحوافر"");
خيارات التحديد= بنية جديدة("Selection"، SelectionValue);
OpenForm ("المستند. فاتورة الاستلام. نموذج القائمة"، خيارات التحديد);

2. يمكنك فتح نموذج قائمة بدون معلمات:

OpenForm ("المستند. فاتورة الاستلام. نموذج القائمة")؛

وبعد ذلك، في معالج الحدث لنموذج قائمة الفواتير عندما تم إنشاءه على الخادم كتابة التعليمات البرمجية التي تنشئ تحديدًا في قائمة ديناميكية، وهي السمة الرئيسية للنموذج:

&على الخادم
إجراء عندما تم إنشاءه على الخادم(الرفض، المعالجة القياسية)
عنصر التحديد = القائمة . اختيار. عناصر. إضافة (نوع
("DataCompositionSelectionElement"))؛
عنصر التحديد .LeftValue = جديد مجال تخطيط البيانات("قيمة المستند")؛
عنصر الاختيار. عرض المقارنة = مقارنة تخطيط عرض البيانات. أكثر ؛
عنصر الاختيار. الاستخدام = صحيح؛
عنصر الاختيار. القيمة الصحيحة = 150000؛
نهاية الإجراء

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

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

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

للقيام بذلك، في شكل قائمة العناصر، قم بإنشاء أمر وزر مناسب فواتير المواد الاستهلاكية

لنملأ معالج التنفيذ لهذا الأمر على النحو التالي:

&OnClient
إجراء فواتير المواد الاستهلاكية(فريق )
ListForm = GetForm("Document.Invoice.ListForm");
ListForm. FilterByProduct = العناصر . قائمة . الصف الحالي ;
ListForm. يفتح()؛
نهاية الإجراء

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

في الميدان طلبدعنا ندخل نص الطلب التالي:

يختار

رقم فاتورة استلام الوثيقة،
فاتورة استلام الوثيقة.التاريخ
من
Document.ReceiptInvoice AS DocumentReceiptInvoice
أين
مستند استلام الفاتورة.المنتجات.المنتج = &المنتج

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

&OnClient
إجراء الافتتاح (الفشل)
قائمة . حدود. SetParameterValue("المنتج"، FilterByProduct)؛
نهاية الإجراء

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

- هذه قائمة بمعلمات طلب القائمة الديناميكية لسمة القائمة.

الكود 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="مقبول";
DirectoryList.Selection.Status.Set();

ل1C 8.2:
هناك عدة طرق لفتح نموذج قائمة مع بعض التحديدات المحددة مسبقًا. دعونا ننظر إليها بالترتيب:

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

عند فتح النموذج، سيتم الاختيار بناءً على الحقل المحدد.
Code 1C v 8.2 UP // على سبيل المثال، في المثال التالي، يتم فتح قائمة الفواتير مع التحديد بواسطة حقل الرقم الذي يساوي 333.
قيمة التحديد = بنية جديدة("Number"، "333");
SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Document.Receipt Invoice. List Form"، Selection Options);

// على سبيل المثال، يفتح المثال التالي قائمة الفواتير
// مع التحديد بواسطة حقل المقاول يساوي "OJSC Horns and Hooves".
قيمة التحديد = هيكل جديد ("الطرف المقابل"، "OJSC Horns and Hooves")؛
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Document.Receipt Invoice. List Form"، Selection Options);

2. يمكنك فتح نموذج قائمة بدون معلمات:
Code 1C v 8.2 UE OpenForm("Document.Receipt Invoice.List Form");

وبعد ذلك، في معالج الحدث الخاص بالنموذج الخاص بقائمة الفواتير، عند إنشاء CreatedOnServer، اكتب التعليمات البرمجية التي تنشئ تحديدًا في القائمة الديناميكية، وهي السمة الرئيسية للنموذج:
كود 1C v 8.2 UP &OnServer

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
نهاية الإجراء

&على الخادم
الإجراء عند CreatedOnServer (الفشل، المعالجة القياسية)
عنصر التحديد = List.Selection.Elements.Add(Type
("DataCompositionSelectionElement"))؛
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
نهاية الإجراء

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

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

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

للقيام بذلك، في شكل قائمة العناصر، قم بإنشاء أمر والزر المقابل استلام الفواتير.

لنملأ معالج التنفيذ لهذا الأمر على النحو التالي:
الكود 1C v 8.2 UP &OnClient
الإجراء - فواتير الاستلام (الأمر)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

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

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

بعد ذلك، سنقوم بإنشاء نموذج لقائمة المستندات: فاتورة الاستلام وإنشاء سمة نموذج منتج FilterBy، والتي سنستخدمها كمعلمة نموذج عند فتحه. الآن دعونا نفتح لوحة الخصائص للسمة الرئيسية لنموذج القائمة. قم بتعيين علامة ArbitraryRequestوفي سطر إعدادات القائمة، انقر فوق يفتح.

في حقل الطلب، أدخل نص الطلب التالي:
كود 1C v 8.2 UP SELECT
رقم فاتورة استلام الوثيقة،
فاتورة استلام الوثيقة.التاريخ
من
Document.ReceiptInvoice AS DocumentReceiptInvoice
أين
مستند استلام الفاتورة.المنتجات.المنتج = &المنتج

في الطلب، نستخدم معلمة العنصر، والتي ستتلقى رابطًا إلى السطر الحالي في قائمة العناصر، الموجودة في معلمة نموذج قائمة فاتورة العنصر FilterBy. للقيام بذلك، في معالج أحداث نموذج قائمة OnOpen، سنكتب تعليمات برمجية لتعيين قيمة معلمة طلب المنتج:
الكود 1C الإصدار 8.2 UP
&OnClient
إجراء الافتتاح (الفشل)

List.Parameters.SetParameterValue("Product", FilterByProduct);

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

هنا قائمة.خياراتهي قائمة بمعلمات طلب القائمة الديناميكية لسمة القائمة. يتم تعيين قيمة معلمة المنتج مساوية لقيمة معلمة نموذج FilterByProduct.

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

المعلومات مأخوذة من الموقع

كيفية فتح نموذج قائمة مع بعض التحديد؟

هناك عدة طرق لفتح نموذج قائمة مع بعض التحديدات المحددة مسبقًا. دعونا ننظر إليها بالترتيب:

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

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

قيمة التحديد = بنية جديدة("Number"، "333");

SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Document.Receipt Invoice. List Form"، Selection Options);

2. يمكنك فتح نموذج قائمة بدون معلمات:

OpenForm("Document.Invoice.ListForm");

وبعد ذلك، في معالج الحدث لنموذج قائمة الفواتير عندما تم إنشاءه على الخادمكتابة التعليمات البرمجية التي تنشئ تحديدًا في قائمة ديناميكية، وهي السمة الرئيسية للنموذج:

&على الخادم

الإجراء عند CreatedOnServer (الفشل، المعالجة القياسية)

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));

SelectionElement.LeftValue = NewDataCompositionField("Number");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

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

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

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

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

للقيام بذلك، في شكل قائمة العناصر، قم بإنشاء أمر وزر مناسب استلام الفواتير.

لنملأ معالج التنفيذ لهذا الأمر على النحو التالي:

&OnClient

إجراءات الإيصالاتالفواتير (الأمر)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

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

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

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

في حقل الطلب، أدخل نص الطلب التالي:

يختار

رقم فاتورة استلام الوثيقة،

فاتورة استلام الوثيقة.التاريخ

من

Document.ReceiptInvoice AS DocumentReceiptInvoice

أين

مستند استلام الفاتورة.المنتجات.المنتج = &المنتج

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

&OnClient

إجراء الافتتاح (الفشل)

List.Parameters.SetParameterValue("Product", FilterByProduct);

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

هنا قائمة.خياراتهي قائمة بمعلمات طلب القائمة الديناميكية لسمة القائمة. يتم تعيين قيمة معلمة المنتج مساوية لقيمة معلمة نموذج FilterByProduct.

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

يوجد مثال تجريبي للخيار الثالث في الدليل 1CITS/EXE/FAQ/OpenFormWithSelection.dt. تم تنفيذ المثال على إصدار النظام الأساسي 8.2.9.356.