مسكن / إنترنت / 1s 8 خلق من قائمة ديناميكية. إعدادات القائمة الديناميكية

1s 8 خلق من قائمة ديناميكية. إعدادات القائمة الديناميكية

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



اختر التسمية. الاسم. الاسم كاسم ، والبضائع وعمال تكاليف المبيعات. Sklad كمستودع ، والبضائع وبيانات تكاليف المبيعات. الملابس كعدد من التركيبات من دليل. التسمية كتسمية للاتصال الأيسر للسجل. الاستمرارية. التركيبات (وتشغيلها) كسلع واستهلاكات.

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

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


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

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



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

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

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

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

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

الصفحة الرئيسية ملاحظات من النظر إلى الزجاج

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

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

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

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

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

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

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

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

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

  • GetExecutableDataCompositionSchema ();
  • GetExecutableDataCompositionSettings ().

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

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

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

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

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

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

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


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

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


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

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


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


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


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




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


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


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