1c تجاوز جدول القائمة الديناميكي.

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

ميزات القوائم الديناميكية في 1C

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

لمعرفة كيفية تكوين قائمة ديناميكية والبيانات التي تعرضها ، تحتاج إلى فتح النماذج المُدارة ، حيث توجد ، في المُكوِّن: في قائمة التفاصيل عبر قائمة السياقافتح خصائصه وانتبه إلى البند "طلب تعسفي". إذا لم يكن هناك مربع اختيار ، فإن معلمة "الجدول الرئيسي" تعكس جدول قاعدة البيانات الذي يتم أخذ البيانات منه. بخلاف ذلك ، تعكس القائمة الديناميكية بيانات الاستعلام المخصصة ، والتي يمكن رؤيتها من خلال فتح إعداد القائمة.

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

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

  • اختيار قائمة ديناميكية ؛
  • التجمعات.
  • فرز؛
  • ديكور.

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

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

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



اختر التسمية. الاسم. الاسم كاسم ، والبضائع وعمال تكاليف المبيعات. Sklad كمستودع ، والبضائع وتكاليف المبيعات. الاجتماعية -التصميمات كعدد من التركيبات من دليل. التسمية كمصطلح للتوصيل الأيسر للسجل. الاستمرارية. الإخراج (iv auhitsaydata ،)

نظرًا لاستخدام معلمة CurrentDate في طلبنا ، نحتاج إلى تعيين قيمتها قبل استخدام المعالجة. للقيام بذلك ، في الوحدة النمطية للنموذج في الإجراء "On CreationOnServer" بواسطة أمر قياسي ، قم بتعيين الوظيفة "CurrentSessionDate" إليها باستخدام أمر قياسي. نحتاج أيضًا إلى عرض قائمة ديناميكية في نموذج التحكم وتغيير ترتيب الحقول من أجل الوضوح. اسحب الدعائم "Nomenclature Remains" إلى عناصر النموذج (أعلى اليسار) واستخدم الأسهم الزرقاء لتغيير ترتيب الحقول في الجدول في النموذج.

& في إجراء الخادم عند CreationAt Server (فشل ، معالجة قياسية) لا تزال التسمية قائمة. المعلمات. SetParameterValue ("CurrentDate"، CurrentSessionDate ()) EndProcedure


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

نضيف السمة "Remains Date" من النوع "Date" وننقلها إلى عناصر النموذج. في أحداث الحقل ، ننشئ حدثًا "عند التغيير" ونكتب الكود لتعيين معلمة "CurrentDate" المستخدمة في الاستعلام الديناميكي. لذلك عند فتح النموذج ، يفهم المستخدم على الفور التاريخ الذي يرى فيه الأرصدة ، وسنقوم بإجراء تغييرات صغيرة على إجراء OnCreateOnServer.



& OnServerProcedureOnCreateOnServer (فشل ، معالجة قياسية) RemainsDate = CurrentSessionDate () ؛ العنصر Remains.Parameters.SetParameterValue ("CurrentDate"، RemainsDate) ؛ نهاية الإجراء وفي إجراء العميل RemainsDateOnChange (Element) Item Remains.Parameters.SetParameterValue ("CurrentDate"، RemainsDate) ؛ EndProcedure

نتيجة لذلك ، يمكن أن يعرض نموذج القائمة الديناميكية لدينا أرصدة لأي تاريخ.

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

  1. اختيار؛
  2. القوائم.

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

يمكن للنظام الأساسي 1C: Enterprise 8.2 العمل مع سجلات متعددة في جدول قاعدة بيانات بطريقة ديناميكية ، أي يمكنه قراءة البيانات في أجزاء. في وقت سابق من المقالات ، درسنا آلية القوائم الديناميكية وطرق تحسين العمل معها.

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

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

تطبيق

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

الشكل والواجهة

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

ستحتوي هذه التفاصيل على القيم الإجمالية للمستندات.

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

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

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

الخوارزمية

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

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

فيما يلي خطوات إنشاء استعلام للحصول على النتائج:

1. احصل على الطلب الأولي لقائمة ديناميكية.

كما نرى ، يحدد الطلب جميع تفاصيل المستند. من أجل القليل من التعقيد ، أضفت المجال الخاص بي "LevelRating" ، الذي تم تشكيله بواسطة بنية "CHOICE".

2. نقوم بتشكيل نص شروط الطلب (قسم "أين") واستبداله في الطلب الأصلي.

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

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

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

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

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

يتم إرفاق نص الشرط المُنشأ بطلب القائمة الديناميكية الأصلي. يتم وضع نتيجة الاستعلام في جدول مؤقت.

3. نضع الاستعلام الأول في جدول مؤقت ونقوم بالتجميع حسب حقول الملخص مع الوظائف التجميعية اللازمة.

دعني أذكرك أننا بحاجة إلى الحصول على متوسط ​​قيمة حقل "التصنيف" والمبلغ الإجمالي لحقل "المبلغ". لقد شكلنا بالفعل استعلامًا مع مراعاة التحديدات ، ويبقى حساب القيم الإجمالية. يتم ذلك عن طريق الاستعلام التالي:

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

الحل الأمثل

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

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

تظهر لقطة الشاشة التالية كود البرمجةاستدعاء دالة خادم خارج السياق تقوم بإرجاع الإجماليات.

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

ملاحظة: يسمح لك استخدام الإجراءات خارج السياق بتقليل مقدار حركة المرور المرسلة عدة مرات ، نظرًا لأن بيانات النموذج لا يتم نقلها إلى الخادم ، على عكس إجراءات خادم السياق (التوجيه "& AtServer").

خاتمة

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

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

ومع ذلك ، فإن الطريقة الموضحة في المقالة تحدث عند حل المشكلات.

التحميلات:

ملاحظات منزلية من النظرة الزجاجية

2014/04/21 الحصول على بيانات القائمة الديناميكية

تم تنفيذه في الإصدار 8.3.6.1977.

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

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

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

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

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

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

الآن تم حل هذه المهمة بسهولة. يحتوي جدول القائمة الديناميكي على طريقتين جديدتين:

  • GetExecutableDataCompositionSchema ();
  • GetExecutableDataCompositionSettings ().

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

نتيجة لذلك ، ستحصل على هيكل (أو تقرير) يحتوي على أعمدة وصفوف يتم عرضها في جدول قائمة ديناميكي.

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

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

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

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

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


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

إذا حاولنا تشغيل المعالجة في هذا النموذج ، فسنحصل على خطأ:


للقضاء عليه ، يجب عليك تعيين قيمة معلمة "الفترة". للقيام بذلك ، يمكنك استخدام طريقة "SetParameterValue" لمجموعة "المعلمات" من القائمة الديناميكية. تأخذ الطريقة معلمتين:
. "المعلمة" - النوع: سلسلة ؛ تكوين البيانات المعلمة. اسم المعلمة أو معلمة تكوين البيانات التي سيتم تحديد قيمتها ؛
. "القيمة" - النوع: تعسفي. القيمة المراد تعيينها.
يمكن استدعاؤها في معالج "OnCreateOnServer" للنموذج:

هل لديك سؤال هل تحتاج الى مساعدة استشاري؟


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


في معالج "عند التغيير" لعنصر النموذج "التاريخ" ، قم باستدعاء أسلوب "SetParameterValue" ، لتمرير قيمة السمة المرتبطة كقيمة. وبالمثل ، سنقوم بتغيير الإجراء "On CreationAtServer" للنموذج. نظرًا لأن الطريقة متاحة على العميل ، فلا داعي للاتصال بالخادم:


الآن ، عندما يتغير التاريخ ، سيتم تحديث الأرصدة تلقائيًا:




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


عند تغيير قيمة التبديل ، سنقوم بتغيير نص الطلب. للقيام بذلك ، سوف نستخدم معالج الحدث "OnChange" لعنصر النموذج "DisplayQuantityToReceipt". نحتاج إلى تغيير خاصية "QueryText" للقائمة الديناميكية اعتمادًا على قيمة السمة. نظرًا لعدم توفر هذه الخاصية على العميل ، يلزم الاتصال بإجراء الخادم:


نتيجة التغييرات التي تم إجراؤها:



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

لنأخذ بعض كأساس تكوين الاختبار 1C: "محاسبة المؤسسة 3.0". لن نقوم بالاختيار الآن ، ما عليك سوى إضافة نموذج اختيار آخر في الكتاب المرجعي "التسمية" وجعله مؤقتًا هو النموذج الرئيسي:

عند الإنشاء ، سيقوم النظام افتراضيًا بإضافة حقل جدول من نوع "القائمة الديناميكية" إلى النموذج.

دعنا نذهب إلى خصائصه ونرى ما هو موجود.

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

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

احصل على 267 درس فيديو 1C مجانًا:

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

استعلام مخصص في قائمة ديناميكية

أولاً ، لنقم بإنشاء الاستعلام الذي نحتاجه بالأرصدة والأسعار. مثل هذا:

علامة التبويب "الإعدادات"

والآن اللذيذ! انتقل إلى علامة التبويب "الإعدادات". ونرى على الفور أنه في علامة التبويب الأولى يمكننا إجراء أي تحديدات لأي حقل في الطلب:

تعيين معلمات الاستعلام برمجيًا في قائمة ديناميكية 1C 8.3

لا تنس أن لدينا معاملين في الطلب: "الفترة" و "نوع السعر". يجب أن نمررها إلى الطلب ، وإلا فسيكون هناك خطأ.

لنكتب هذه المعلمات في معلمات النموذج ، ونضيف الأسطر التالية في وحدة النموذج:

& OnServerProcedure OnCreateOnServer (فشل ، معالجة قياسية). خيارات. SetParameterValue ("الفترة" ، المعلمات. التاريخ) ؛ قائمة. خيارات. SetParameterValue ("PriceType"، Parameters.PriceType) ، EndProcedure

تحميل...
قمة