استفسارات بسيطة. طلبات الدُفعات طلب الدُفعة 1s 8.3

يعد طلب الدُفعات ضروريًا عندما يكون الطلب معقدًا للغاية بحيث لا يمكن صياغته وجعله يعمل بكفاءة. لفهم ماهية الطلب المجمع ، يمكنك استخدام المخطط:

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

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

لماذا لا يمكنك الاستغناء عن الطلبات المجمعة؟

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

إعلان عن الطلبات المجمعة من مطوري 1C
  • تحسين كبير للبرنامج ككل ؛
  • زيادة قابلية تطوير الحل المعروف ؛
  • الأداء الفعال بسبب تنفيذ إمكانيات وضع الدُفعات ؛
  • إدارة نظام بسيطة ومباشرة ؛
  • فرص أفضل للتكامل مع الحلول الأخرى.
ما هي وظائفطلبات في 8.1.11؟

إنها الاستعلامات التي تعمل على تحسين العمل بشكل ملحوظ مع الجداول المؤقتة. تشير وظيفة طلبات الدُفعات إلى أن أي جدول تم تشكيله لطلب معين من مجموعة تعمل حتى ينتهي طلب الدُفعة من الإجراء بالكامل أو حتى يتم الوصول إلى أمر إتلافه. يمكنك الآن الحصول على نتيجة أحدث طلب - سيكون هذا هو الأمر Execute () ، ومجموعة كاملة من النتائج باستخدام طريقة ExecutePackage ().

خوارزمية لإنشاء طلب دفعي بكفاءة

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

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

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

نتيجة لذلك ، لدينا طاولة:

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

انتبه ، جمع الاستعلام الثالث نتائج أول اثنين ، دعنا نرى ما حدث:

الآن دعنا نحاول إضافة الجمال وتغيير نص الطلب الثالث قليلاً ، مثل هذا:

الآن لدينا هذا:

يبقى دمج الأعمدة مع التسمية ، ووضع الأصفار في خلايا فارغة.

إنها تزيد من قابلية القراءة بشكل كبير ، مما يقلل من احتمالية الأخطاء => هذا وحده كافٍ بالنسبة لي.

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

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

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

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

استفسارات بسيطة

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

يوضح الشكل هيكل التكوين.

لنقم بإنشاء استعلام للجدول الافتراضي بقايا سجل التراكم والقسم الجدولي من المستند. لمراعاة التكرارات المحتملة للأسطر في المستند ، سنقوم بتجميع السجلات.

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


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

طاولات مؤقتة

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

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

دعونا نعدل الاستعلام لمراعاة استخدام الجداول المؤقتة. ستحتوي الجداول المؤقتة على قسم جدولي من المستند في نموذج مجمع وقائمة منتجات لتصفية الجداول الافتراضية:

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

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

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

طلبات الدفعة

تعمل الاستعلامات المجمعة على توسيع وظائف الجداول المؤقتة بشكل ملحوظ وتوفر إمكانات جديدة عند العمل مع الاستعلامات.

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

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

دعنا نغير الإجراء لمراعاة الطلبات المجمعة:

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

بعد تنفيذ الاستعلام ، سيحتوي المتغير ArrayResults على 3 عناصر. الأولان هما عدد السجلات DOCT و List of Goods الموضوعة في جداول مؤقتة ، وسيحتوي الثالث على تحديد مع حقول Doc_Quantity و Nomenclature و Reg_Quantity.

يحتوي متغير QueryResult على تحديد فقط.

وبالتالي ، تعد الاستعلامات المجمعة أداة ملائمة للغاية لكتابة وقراءة الاستعلامات المعقدة.

مدونة 1C GOODWILL

تتيح لك منصة 1C Enterprise تنفيذ عدة طلبات بالتسلسل في وقت واحد. في 1C ، يسمى هذا مجموعة من الطلبات. ضمن حزمة واحدة ، يتم فصل كل طلب بفاصلة منقوطة.

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

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

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

مثال على إنشاء حزمة طلبات بلغة 1C

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

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

الوالد الذي يدعم نفسه ،

رمز الدعم الذاتي ،

الدعم الذاتي. رمز الاختيار السريع ،

الدعم الذاتي.

نوع الدعم الذاتي ،

الدعم الذاتي ، خارج الميزانية العمومية ،

الدعم الذاتي والكمي

خطة الحسابات: دعم ذاتي مثل دعم ذاتي

////////////////////////////////////////////////////////////////////////////////

أنواع الدعم الذاتي

أنواع الدعم الذاتي Subkonto.Subkonto اكتب AS

أنواع الدعم الذاتي من كونتو الفرعية نوع كونتو الفرعية.

أنواع الدعم الذاتي Subconto.Subconto.TypeValues ​​AS TypeValues

أنواع الدعم الذاتي

أنواع الدعم الذاتي

خطة الحسابات ، الدعم الذاتي ، أنواع Subconto AS ذاتي الدعم

صنف حسب

أنواع الدعم الذاتي

يبدو مثل هذا بالنسبة لي:

الآن دعنا ننتقل إلى منشئ الاستعلام. هنا سنكون مهتمين بعلامة التبويب "طلب الحزمة":

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

اضغط على زر "موافق" وحاول أن ترى نتيجة الطلب دفعة واحدة.

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

الأسلوبان Execute () و ExecutePackage ()

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

ArrayResults = Request.RunBatch () ،

Sample1 = صفيف النتائج اختر () ؛

إذا كان Sample1. التالي () ثم

// الإجراءات مع الاختيار 1

إنهاء إذا؛

SelectionViewSubconto = ArrayResults.Select () ،

سجل العمل مع طلبات الدُفعات في 1C 8.3 و 8.2 ظهرت لأول مرة مدونة لشركة 1C GOODWILL.

استفساراتمصممة لاسترداد ومعالجة المعلومات من قاعدة البيانات لتزويد المستخدم بالشكل المطلوب. تعني المعالجة هنا تجميع الحقول وفرز الصفوف وحساب الإجماليات وما إلى ذلك. لا يمكنك تغيير البيانات باستخدام الاستعلامات في 1C!

يتم تنفيذ الطلب حسب التعليمات المعطاة - طلب نص... يتكون نص الطلب وفقًا للصيغة والقواعد لغة الاستعلام... تعتمد لغة الاستعلام 1C: Enterprise 8 على المعيار SQL، ولكن لديها بعض الاختلافات والإضافات.

مخطط العمل مع الطلب

يتكون المخطط العام للعمل مع الطلب من عدة مراحل متتالية:

  1. إنشاء كائن طلب وتحديد نص الطلب ؛
  2. تحديد معلمات الطلب ؛
  3. تنفيذ الطلب والحصول على النتيجة.
  4. تجاوز نتيجة الاستعلام ومعالجة البيانات المستلمة.

1. الكائن سؤاللديه الممتلكات نصالذي تريد تعيين نص الاستعلام إليه.

// الخيار 1
طلب = طلب جديد ؛
سؤال ... نص =
"تحديد
| أسعار العملات.
| أسعار العملات.
| أسعار العملات.
| من

| أين
;

// الخيار 2
طلب = طلب جديد("تحديد
| أسعار العملات.
| أسعار العملات.
| أسعار العملات.
| من
| سجل المعلومات أسعار العملات AS أسعار العملات
| أين
| CurrencyCurrency.Currency = & العملة ");

2. يتم تحديد قيم المعلمات بواسطة الطريقة SetParameter (< Имя>, < Значение>) ... يُشار إلى المعلمات في نص الطلب بالرمز " & »وعادة ما تستخدم في شروط الاختيار (قسم أين) وفي معلمات الجداول الافتراضية.

سؤال)؛

3. بعد تعيين النص وتعيين المعلمات ، يجب تنفيذ الاستعلام والحصول على نتيجة التنفيذ. يتم تنفيذ التنفيذ بواسطة طريقة Run () ، والتي تُرجع كائنًا نتيجة الطلب... من نتيجة الاستعلام ، يمكنك:

  • الحصول على العينة باستخدام طريقة التحديد (< ТипОбхода>, < Группировки>, < ГруппировкиДляЗначенийГруппировок>) ;
  • تفريغ القيم في جدول قيم أو شجرة قيم باستخدام طريقة Unload (< ТипОбхода>) .

// احصل على العينة

عينة = نتيجة الطلب. يختار();

// احصل على جدول القيم
QueryResult = استعلام. يركض ()؛
طاولة = نتيجة الطلب. تفريغ();

4. يمكنك تجاوز تحديد نتيجة الاستعلام باستخدام حلقة:

وداعا عينة. الحلقة التالية ()
تقرير (نموذج. بالطبع) ؛
نهاية الدورة

قد يبدو المثال الكامل للعمل مع أحد الطلبات كما يلي:

// المرحلة 1. إنشاء طلب وتحديد نص الطلب
طلب = طلب جديد ؛
سؤال ... نص =
"تحديد
| أسعار العملات.
| أسعار العملات.
| أسعار العملات.
| من
| سجل المعلومات أسعار العملات AS أسعار العملات
| أين
| CurrencyCurrency.Currency = & العملة ";

// المرحلة 2. ضبط المعلمات
سؤال ... SetParameter ("العملة" ، العملة المختارة);

// المرحلة 3. تنفيذ الطلب والحصول على الاختيار
QueryResult = استعلام. يركض ()؛
عينة = نتيجة الطلب. يختار();

// تجاوز التحديد
وداعا عينة. الحلقة التالية ()
تقرير (نموذج. بالطبع) ؛
نهاية الدورة

تكوين نص الطلب

يتكون نص الطلب من عدة أقسام:

  1. وصف الطلب- قائمة الحقول المختارة ومصادر البيانات ؛
  2. الجمع بين الاستعلامات- التعبيرات "COMBINE" و "COMBINE ALL" ؛
  3. ترتيب النتائج- التعبير "ORDER BY ..." ؛
  4. الطلب التلقائي- عبارة "طلب تلقائي" ؛
  5. وصف النتيجة- عبارة "النتائج ... على ...".

مطلوب فقط القسم الأول.

الجداول المؤقتة والاستعلامات الدفعية

لغة الاستعلام 1C تدعم استخدام طاولات مؤقتة- الجداول التي تم الحصول عليها نتيجة تنفيذ استعلام وتخزينها على أساس مؤقت.

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

ManagerBT = مدير جديد لـ TemporaryTables ؛
طلب = طلب جديد ؛
سؤال ... مدير الجدول المؤقت = مدير VT ؛

سؤال ... نص =
"تحديد
| العملات.
| العملات.
| ما بعد عملات VTC
| من
| الدليل. العملات AS العملات ";

QueryResult = استعلام. ينفذ();

لاستخدام الجدول المؤقت VTVCurrency في استعلامات أخرى ، من الضروري تعيين مدير مشترك للجداول المؤقتة لهذه الاستعلامات - Manager VT.

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

بالنسبة لطلبات الدُفعات ، يتوفر أسلوب ExecuteBatch () ، والذي ينفذ جميع الطلبات ويعيد مجموعة من النتائج. سيتم تمثيل الجداول المؤقتة في استعلام دفعي بجدول يحتوي على صف واحد وعمود واحد "عدد" ، والذي يخزن عدد السجلات. لتصحيح أخطاء الطلبات المجمعة ، يمكنك استخدام الطريقة RunPacketWith IntermediateData(): تقوم بإرجاع المحتويات الفعلية للجداول المؤقتة ، وليس عدد السجلات.

// مثال على العمل مع طلب دفعي
طلب = طلب جديد ؛
سؤال ... نص =
"تحديد
| العملات.
| من
| Directory.Currency AS العملات
|;
| اختر
| التسمية.
| من
| الدليل. التسمية AS Nomenclature ";

PackageResult = طلب. RunPackage () ،

عملات TK = PacketResult [0]. تفريغ () ؛
TZNomenclature = ResultPackage [1]. تفريغ () ؛

// مثال على استخدام الجداول المؤقتة في استعلام دُفعي
طلب = طلب جديد ؛
سؤال ... نص =
"تحديد
| Products.Link AS المنتج
| ضع VTGoods
| من
| Directory.Nomenclature AS المنتجات
| أين
| Products.Manufacturer = والشركة المصنعة
|;
| اختر
| VTGoods. البضائع ،
| رقم PTU ،
| سعر PTU ،
| PTU.Link AS المستند
| من
| VTGoods AS VTGoods
| LEFT JOIN Document.GoodsServices.Goods AS VET
| ON VTGoods.Goods = تسمية PTU "
;

سؤال ... SetParameter ( "الصانع"، الصانع)؛

QueryResult = استعلام. يركض ()؛
عينة = نتيجة الطلب. يختار();

وداعا عينة. الحلقة التالية ()

نهاية الدورة

الجداول الافتراضية

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

توجد الجداول الافتراضية التالية (يشار إلى المعلمات الممكنة بين قوسين):

  • لسجلات المعلومات:
    • سلايس فيرست (<Период>, <Условие>) - أقدم السجلات للتاريخ المحدد ؛
    • SliceLast (<Период>, <Условие>) - أحدث السجلات للتاريخ المحدد ؛
  • لسجلات التراكم:
    • بقايا (<Период>, <Условие>) - أرصدة التاريخ المحدد ؛
    • تحولات (<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>) - معدل دوران الفترة ؛
    • أرصدة وتحولات (<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <Условие>) - أرصدة ودوران الفترة ؛
  • لسجلات المحاسبة:
    • بقايا (<Период>, <УсловиеСчета>, <Субконто>, <Условие>) - أرصدة اعتبارًا من التاريخ المحدد في سياق الحساب والقياسات و subconto ؛
    • تحولات (<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчета>, <Субконто>, <Условие>, <УсловиеКорСчета>, <КорСубконто>) - تحولات الفترة في سياق الحسابات والقياسات ، كو. حسابات ، subconto ، cor. فرعي.
    • بقايا ودوران (<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <УсловиеСчета>, <Субконто>, <Условие>) - الأرصدة والتحولات في سياق الحسابات والقياسات والفرعية ؛
    • تحولات DtKt (<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчетаДт>, <СубконтоДт>, <УсловиеСчетаКт>, <СубконтоКт>, <Условие>) - معدل دوران الفترة في سياق الحساب Dt ، الحساب Kt ، Subkonto Dt ، Subkonto Kt ؛
    • الحركات<НачалоПериода>, <КонецПериода>, <Условие>, <Порядок>, <Первые>) - الحركات مع قيم subconto ؛
  • لسجلات الحساب:
    • يتمركز(<ИзмеренияОсновногоРегистра>, <ИзмеренияБазовогоРегистра>, <Разрезы>, <Условие>) - البيانات الأساسية لسجل الحساب ؛
    • داتاجرافيكس (<Условие>) - بيانات الرسم البياني ؛
    • فترة الصلاحية الفعلية (<Условие>) - فترة الصلاحية الفعلية.

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

مُنشئ الاستعلام

لتسريع إدخال نصوص الاستعلام ، تحتوي المنصة على أدوات خاصة: مُنشئ الاستعلامو مُنشئ الاستعلام مع معالجة النتائج... لاستدعاء المُنشئين ، انقر بزر الماوس الأيمن وحدد العنصر المطلوب:

يمكن أيضًا استدعاء المُنشئين من القائمة الرئيسية نص.

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

ينشئ مُنشئ الاستعلام مع معالجة النتيجة ، بالإضافة إلى إنشاء نص الاستعلام ، جزءًا جاهزًا من التعليمات البرمجية لتلقي البيانات ومعالجتها.

طلب كائن مخطط

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

  • SetRequestText (< Текст>) - يملأ خاصية RequestBacket بناءً على نص الطلب المرسل ؛
  • نص GetRequest() - إرجاع نص الطلب الذي تم إنشاؤه على أساس خاصية QueryBatch ؛
  • FindParameters () - إرجاع معلمات الاستعلام.

دعنا نفكر في مثال للعمل مع كائن QuerySchema. لإنشاء نص الطلب برمجيًا

صنف حسب
رمز العملات

قد تبدو التعليمات البرمجية المضمنة كما يلي:

RequestSchema = طلب جديد ؛
الحزمة 1 = QuerySchema. PackageRequests [0] ،
المشغل 1 = الحزمة 1. عوامل التشغيل [0]؛
// إضافة مصدر
سجل الجدول = المشغل 1. مصادر. يضيف( "الدليل. العملات"، "العملات") ؛
// إضافة الحقول
الميدان = عامل التشغيل 1. الحقول القابلة للتحديد. إضافة ("Currencies.Link"، 0) ؛
كود الحقل = عامل التشغيل 1. الحقول القابلة للتحديد. إضافة ("رمز العملات" ، 1) ؛
// تحديد أسماء الحقول المستعارة
الحزمة 1 ... الأعمدة [0]. اللقب = "العملة" ؛
الحزمة 1 ... الأعمدة [1]. الاسم المستعار = "كود" ؛
// إضافة شرط
المشغل 1 ... اختيار. يضيف( "ليس علامة حذف");
// أضف الطلب
الحزمة 1 ... ترتيب. إضافة (FieldCode) ؛
QueryText = QuerySchema. نص GetRequest();