مسكن / نظرة عامة على النوافذ / طلب وحدة التحكم 1s 8.3 النماذج المُدارة. العمل مع Query Console

طلب وحدة التحكم 1s 8.3 النماذج المُدارة. العمل مع Query Console

تعتبر Query Console ملائمة جدًا للاستخدام عندما تحتاج إلى تصحيح بعض الأخطاء المعقدة ، أو الحصول بسرعة على مجموعة مختارة من البيانات المعينة.

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

العمل مع Query Console

في برنامج 1C ، يتم فتح وحدة تحكم الاستعلام بنفس طريقة أي معالجة خارجية: القائمة "ملف" - "فتح" ، أو باستخدام مجموعة مفاتيح التشغيل السريع "Ctrl + O". مع الاستخدام المتكرر ، يمكن إضافته إلى المعالجة الخارجية لـ قاعدة المعلومات.

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

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

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

على يمين زر المُنشئ يوجد الزر "إدراج عوامل تشغيل الاستعلام". سيضيف على الفور بنية استعلام فارغة مع شرط وتجميع وترتيب وإجماليات.

إلى اليمين توجد أزرار مفيدة للغاية ستساعدك إذا كنت تستخدم هذا الاستعلام عند تطوير حلول لـ 1C.

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

يمكنك حفظ الطلبات إلى ملف أو التحميل منه. هذا مناسب جدًا للاستخدام في المستقبل.

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

يحدد وضع العرض كيفية عرض نتيجة الاستعلام: قائمة أو قائمة هرمية أو شجرة.

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

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

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

في مثالنا ، قمنا بعرض جميع بيانات نتائج الاستعلام. يمكنك حفظها في ملف خارجي بنسخها من مستند جدول البيانات المفتوح ، أو باستخدام مجموعة مفاتيح الاختصار Ctrl + O. هناك العديد من الخيارات لحفظ التنسيقات ، اخترنا "*. xlsx ".

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

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

تنزيل وحدة تحكم الاستعلام 1s

لبدء العمل في المعالجة ، عليك أولاً أن تقوم بذلك تنزيل استعلام وحدة 1s، أدناه سنقدم روابط التنزيل ، ولكن في الوقت الحالي ، دعنا نلاحظ حقيقة أنه يمكن تصنيف وحدة تحكم الطلب 1s وتصنيفها في أحد الأنواع التالية:

  1. للنماذج العادية (1s 8.2)
  2. للنماذج المدارة (1s 8.3)
  3. مختلط (يعمل على كل من 1s 8.2 و 1s 8.3)

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

تنزيل وحدة طلب 1s لتطبيق عادي 1s 8.2

يوجد أدناه لقطة شاشة للمعالجة ، يمكنك تنزيل وحدة تحكم الطلبات 1s لتطبيق 1s 8.2 العادي

تنزيل وحدة تحكم طلب 1s للتطبيق المدار 1s 8.3

وهذه هي وحدة التحكم الثانية ، يمكنك أيضًا مشاهدة لقطة الشاشة الخاصة بها على الشاشة أدناه ، باستخدام الرابط يمكنك تنزيل وحدة التحكم في طلب 1s للتطبيق المدار 1s 8.3

وصف مبادئ التشغيل والوظيفة الرئيسية لوحدة تحكم الطلب 1s للتطبيق العادي 1s 8.2


هذه وحدة تحكم الاستعلام 1s 8.2 لتطبيق عاديسهل الاستخدام ولا يتطلب أي معرفة خاصة من المستخدم. في لقطة الشاشة ، يمكنك رؤية حقل اختبار لكتابة استعلام ، ويمكنك كتابة استعلام فيه يدويًا وباستخدام المُنشئ. تحت الرقم 1 في الشكل ، ترى زر "المعلمات" ، بالنقر فوقه سنرى نموذجًا لاستبدال المعلمات في الطلب ، وسنعود إليه لاحقًا. تحت الرقم 2 ترى مساحة العمل وشريط الإجراءات مع الطلب نفسه ، وهنا يمكننا إضافة الطلبات وحذفها وحفظها أيضًا في ملف منفصل على القرص. تحت رقم 3 في وحدة تحكم الاستعلام 1s 8.2هناك إعداد ناتج ناتج ، يمكن عرضه في شكل جدول أو بشكل هرمي في شكل شجرة ، يتم استخدام الخيار الثاني عندما نحتاج إلى رؤية التسلسل الهرمي كنتيجة للاستعلام. يوضح لنا العنصر 4 ما إذا كانت هناك جداول مؤقتة في الاستعلام ، إذا كانت موجودة ، فيمكننا تصحيحها ورؤية نتيجة التنفيذ ، والتي يتم وضعها في جدول مؤقت.

الآن دعونا نلقي نظرة على بعض النقاط الفردية في وحدة تحكم الاستعلام 1s.

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

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

وصف موجز لوظيفة وحدة تحكم طلب 1s لتطبيق مُدار 1s 8.3

تعرفنا على الوظائف الرئيسية وحدة تحكم الاستعلام 1s 8.2، حان الوقت الآن للنظر وحدة تحكم الاستعلام 1s 8.3. هذه المعالجةلن نفكر في ذلك بالتفصيل مثل السابق ، لكننا ننتقل بإيجاز إلى المعلمات والإعدادات الرئيسية.

ومعلومات سريعة. في هذه المقالة ، سأحاول وصف كيفية استخدام Query Console وتقديم ارتباط لتنزيل Query Console.

دعنا نلقي نظرة فاحصة على هذه الأداة.

تحميل طلب وحدة التحكم 1C

بادئ ذي بدء ، لبدء استخدام وحدة تحكم الاستعلام ، تحتاج إلى تنزيلها من مكان ما. تنقسم المعالجة عادةً إلى نوعين - أشكال مُدارة وعادية (أو تسمى أحيانًا 8.1 و 8.2 / 8.3).

حاولت الجمع بين هاتين الطريقتين في معالجة واحدة - في وضع التشغيل المطلوب ، يفتح النموذج المطلوب ( في الوضع المُدار ، تعمل وحدة التحكم فقط في الوضع السميك).

يمكنك تنزيل وحدة تحكم الطلبات 1C 8.3 (8.2) للنماذج المدارة والنماذج العادية على الرابط :.

وصف وحدة تحكم الاستعلام 1C

إذا كنت مهتمًا بكيفية كتابة الاستعلامات في نظام 1C ، فأوصيك بقراءة المقالة و.

لنبدأ نظرنا في وحدة تحكم الاستعلام مع وصف لوحة المعالجة الرئيسية:

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

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

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

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

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

معلمات الطلب:

يسمح لك بتعيين المعلمات الحالية للطلب.

في نافذة معلمات الاستعلام ، يكون ما يلي مثيرًا للاهتمام:

  • زر احصل من الطلبيبحث تلقائيًا عن جميع المعلمات في الطلب ، من أجل راحة المطور.
  • علَم معلمات واحدة لجميع الطلبات- عند التثبيت ، لا تؤدي معالجتها إلى مسح المعلمات عند الانتقال من طلب إلى طلب في القائمة العامة للطلبات.

قم بتعيين معلمة كقائمة من القيمبسيط جدًا ، يكفي النقر فوق زر مسح القيمة (تقاطع) عند اختيار قيمة المعلمة ، سيطالبك النظام بتحديد نوع البيانات ، حيث تحتاج إلى تحديد "قائمة القيمة":

يوجد أيضًا في اللوحة العلوية زر لاستدعاء إعدادات وحدة تحكم الاستعلام:

حيث يمكنك تحديد خيارات الحفظ التلقائي للاستعلام وخيارات تنفيذ الاستعلام.

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

يتم الاستدعاء من قائمة السياق (زر الفأرة الأيمن) عند النقر فوق حقل الإدخال:

أيضا في هذه القائمة هي ميزات مفيدة، مثل تنظيف أو إضافة أحرف الواصلة ("|") إلى الطلب ، أو الحصول على رمز الطلب في هذا النموذج المناسب:

طلب = طلب جديد ؛ طلب. نص = "| حدد | العملات. المرجع | من | كتيب. العملات AS العملات "؛ RequestResult = طلب. ينفذ() ؛

يعرض الحقل السفلي لوحدة تحكم الاستعلام حقل نتيجة الاستعلام ، والذي تم إنشاء هذه المعالجة من أجله:

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

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

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

لإنشاء جدول المعلمات الخاص بنا ، في علامة التبويب "البيانات" في "القسم الجدولي" ، أضف جدولًا جديدًا ، دعنا نسميها معلمات الاستعلام ، وهنا نضيف أعمدة هذا الجدول: 1) اسم المعلمة ، نوع السلسلة = 25 حرفًا ؛ ParameterValue ، هنا نوع بيانات مركب ، انظر الشكل:

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

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

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

في خصائص السمة "QueryTable" ، يمكنك تحديدًا اختياريًا - "Display Grid" و "Display Headers".

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

سيتم فتح وحدة النموذج مع إجراء فارغ جاهز "مُنشئ طلب الإجراء (الأمر)". داخل هذا الإجراء ، سنصف الاستدعاء إلى منشئ الاستعلام القياسي 1c8. فمن السهل جدا: المُنشئ = مُنشئ الاستعلام الجديد ؛ولكن هناك عقبات هنا - يعمل منشئ الاستعلام المدمج في النظام الأساسي في وضع المستخدم فقط في ظل عميل كثيف! لذلك ، سنقوم بإدخال شرط تعليمات المعالج الأولي #If ، ولكن هنا تقرر بنفسك ، بناءً على نظامك الأساسي ، أو لديك نماذج عادية ، ثم اختر " ThickClientOrdinaryApplication"أو لديك نظام أساسي للنماذج المُدارة ، ثم" ThickClientManagedApplication". انظر الشكل.

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

إذا كان Constructor.OpenModally () = True ثم Object.QueryText = Constructor.Text؛ إنهاء إذا؛

ولكن يمكننا تغيير شيء ما يدويًا في نص الطلب (في وضع المستخدم - في نافذة خصائص "QueryText") ، بحيث تدخل تغييراتنا إلى QueryConstructor عندما يتم استدعاؤها مرة أخرى - دعنا نضيف شرطًا بسيطًا هنا:

إذا لم تكن EmptyString (Object.QueryText) ثم Constructor.Text = Object.QueryText؛ إنهاء إذا؛

هذا كل شيء ، لقد قمنا بتوصيل منشئ الاستعلام المدمج في النظام الأساسي 1c8 ، فلنلقِ نظرة على عملنا. للقيام بذلك ، قم بتشغيل 1C: Enterprise في وضع العميل السميك باستخدام إحدى الطرق التالية: 1) القائمة الرئيسية لـ Configurator - Debugging - StartDebugging - ThickClient ؛ 2) أو إذا كانت لديك هذه المفاتيح على لوحة التحكم في أداة التهيئة - فقط اضغط على الزر بدائرة صفراء بنقطة سميكة ، انظر الشكل:

تم تشغيل وضع المستخدم 1sEnterprise8 ، ونجد معالجتنا ، وقم بتشغيلها ، ثم انقر فوق الزر "Query Constructor" الخاص بنا وشاهد كيف يتم فتح المُنشئ المدمج في النظام الأساسي. انظر الشكل.

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

في الإجراء ExecuteRequest () ، الذي لدينا على العميل ، سنكتب شرطًا إذا لم يقم المستخدم بإدخال نص الطلب ، ولكنه يطلب تنفيذه:

إذا كان EmptyString (Object.QueryText) ثم تقرير ("أدخل نص الاستعلام!")؛ إنهاء إذا؛

لقد أنشأ النظام بالفعل ارتباطًا تلقائيًا لإجراء ExecuteRequestOnServer () لنا ؛ - هذا جيد ، دعنا ننتقل إلى هذا الإجراء ، الذي يتم تنفيذه على الخادم ونكتب هنا الكود لتنفيذ الطلب الذي أدخلناه.

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

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

بعد ذلك ، داخل الإجراء ExecuteRequestOnServer () ، سيظهر الفراغ الجاهز التالي:

دعنا ننتقل إلى التعبير الذي بناه المنشئ:

Request.Text = "" ؛

Request.Text = Object.QueryText ؛

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

دعنا نلقي نظرة فاحصة على ماهية مستند جدول البيانات - إنه يشبه ورقة Excel - يمكنك الوصول إلى سجل في خلية معينة فقط باستخدام خلايا الجدول ، هنا تسمى منطقة ، ولكن يمكننا نحن أنفسنا تحديد نطاق هذا المنطقة في خلية واحدة محددة:

لذلك ، اكتشفنا ماهية مستند جدول البيانات ، وقررنا لأنفسنا أننا بحاجة إلى تحديد البيانات من استعلامنا في خلية معينة من مستند جدول البيانات هذا. لكن دعنا نفكر: ما هي "RequestResult" التي أنشأها المُنشئ لنا بهذه السرعة؟ فتح التعليمات - نتيجة الاستعلام هي جدول يحتوي على الخصائص المقابلة! انظر الشكل.

وإذا كتبنا الآن بعد التعبير QueryResult = Query.Execute () ؛ (تم إنشاؤه بواسطة المنشئ) فهذه حلقة بسيطة للمجموعات:

لكل ColumnName من تقرير QueryResult.Columns (ColumnName.Name) ؛ نهاية الدورة

بعد هذه الحلقة ، في الوقت الحالي ، تحقق من جميع التعبيرات التي تم إنشاؤها تلقائيًا بواسطة المنشئ. قم بتشغيل 1C: Enterprise8 تحت عميل سميك. قم بإنشاء أي طلب بسيط (يمكنك استخدام Query Builder - إنه يعمل بالفعل لدينا) وانقر على زر "Run Request":

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

الآن دعنا نعرض هذه الأسماء الخاصة بحقول معاناتنا في مستند جدول بيانات:

لكل ColumnName من QueryResult.Columns Loop Cell = Object.QueryTable.Scope (1، QueryResult.Columns.Index (ColumnName) +1) ؛ Cell.Text = ColumnName.Name ؛ نهاية الدورة

لعرض تفاصيل بيانات الاستعلام ، لنقم بإلغاء تنظيم التعبيرات التي تم إنشاؤها تلقائيًا بواسطة المُنشئ وإدخال الحلقة نفسها التي استخدمناها لعرض أسماء الأعمدة داخل حلقة "SelectionDetailedRecords" ، الآن فقط نحتاج إلى نقل وليس "QueryResult" بيانات الجدول إلى نص الخلية ، وبيانات التحديد نفسه ، دعنا نرى في المساعدة كيف يمكنك الوصول إلى حقل التحديد التفصيلي للاستعلام:

SamplingDetailRecords = QueryResult.Select () ، بينما SelectionDetailedRecords.Next () Loop // في السطر الأول لدينا بالفعل أسماء أعمدة الجدول ، لذلك نقوم بتحميل البيانات أسفل السطر الأولDocumentLineNumber = Object.QueryTable.TableHeight + 1 ؛ لكل ColumnName من QueryResult.Columns Loop Cell = Object.QueryTable.Region (DocumentRowNumber، QueryResult.Columns.Index (ColumnName) +1) ؛ Cell.Text = SelectionDetailRecords [ColumnName.Name] ، نهاية الدورة نهاية الدورة

هذا كل شيء ، يمكننا التحقق ، وتحميل المؤسسة تحت عميل سميك ، وإدخال طلب بسيط بدون معلمات ، والنقر فوق الزر "تشغيل الطلب" ، انظر الشكل:

يا هلا ، كل شيء يعمل !!!

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

كل شيء ، تعمل وحدة التحكم الخاصة بنا. لكي نتمكن من كتابة استعلامات أكثر تعقيدًا مع المعلمات المحددة فيها ، نحتاج إلى إنشاء زر "FindParameters" آخر ، بالإضافة إلى رمز الزر "RunQuery" - سيتم تنفيذ رمز الزر "FindParameters" على العميل وعلى الخادم. علاوة على ذلك ، في إجراء الخادم ، نقوم بتشغيل الطلب بنفس الطريقة مع النص الذي تم تمريره إليه من نافذة "QueryText" ، باستخدام تعبير "Query.FindParameters ()" ، نجد المعلمات التي تم تمريرها ونقوم ببساطة بإدخالها في مقطع جدولي من نموذج "QueryParameters" في حلقة. لا تنس أن تمررها من جدول المعلمات المكتمل إلى إجراء "تنفيذ الطلب" لاحقًا.

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

وحدة تحكم الاستعلام الخاصة بنا جاهزة للاستخدام ، أتمنى لك حلولاً إبداعية ناجحة بمساعدة أداة بسيطة وقوية مثل وحدة تحكم الاستعلام!

تتم كتابة هذه المعالجة على النظام الأساسي 1s8.3 (النماذج المُدارة) ، ويتم تشغيلها تحت عميل سميك. يمكن كتابتها أيضًا على النظام الأساسي 1s8.2 كما هو موضح أدناه الأشكال التقليدية، وتحت السيطرة.

في التنزيل عينة من Query Console التي أنشأناها للتو.

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

ترقية وحدة تحكم الاستعلام:

1) الآن ستعمل وحدة تحكم الاستعلام محلية الصنع الخاصة بنا مع أداة إنشاء الاستعلامات المضمنة تحت أي عميل: تحت العميل السميك للنماذج العادية والمدارة وتحت العميل الرقيق وعميل الويب.

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

& منشئ استعلام إجراءات AtClient (الأمر) // استدعاء منشئ الاستعلام القياسي ممكن فقط ضمن عميل سميك #If ThickClientManagedApplication أو ThickClientRegularApplication ثم Constructor = New Query Constructor؛ إذا لم تكن EmptyString (Object.QueryText) ثم Constructor.Text = Object.QueryText؛ إنهاء إذا؛ إذا كان Constructor.OpenModally () = True ثم Object.QueryText = Constructor.Text؛ إنهاء إذا؛ // #Otherwise // Report ("لا يمكن استدعاء Query Builder إلا من خلال عميل سميك") ؛ // يعود؛ // # EndIf #Else Report ("أنت تقوم بتشغيل Query Builder تحت عميل رفيع - يختلف قليلاً في شكله وسرعة أدائه!")؛ المُنشئ = مُنشئ الطلب الجديد () ؛ إذا لم تكن EmptyString (Object.QueryText) ثم Constructor.Text = Object.QueryText؛ إنهاء إذا؛ AlertConstructor = New AlertDescription ("RunAfterClosingConstructor"، ThisForm)؛ Constructor.Show (ConstructorAlert) ؛ # EndIf EndProcedure & AtClient Procedure ExecuteAfterClosingConstructor (النتيجة ، معلمات المنشئ) تصدير // النتيجة = النص إذا تم إغلاق Concer بواسطة زر موافق Object.QueryText = ShortLP (النتيجة) ؛ // يعمل !!! EndProcedure

2) تمت إضافة القدرة إلى وحدة تحكم الاستعلام البسيطة الخاصة بنا لإدخال استعلامات معقدة باستخدام الجدول المؤقت الذي تم تمريره إلى المعلمات !!! اتضح أن الآلية بسيطة للغاية وأنيقة - بدون استخدام كود XML ، كما هو الحال في وحدات التحكم الاحترافية.

يمكنك رؤية الكود نفسه والإجراءات الخاصة بآلية النقل إلى معاملات الجداول المؤقتة في الملف المرفق الثاني. يمكن الاطلاع على كيفية البدء في تطوير نسختك الخاصة من الجداول المؤقتة في المعلمات على هذا الرابط https://forum.site/forum9/topic183700/

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

حدد ExternalData.Product، ExternalData.Quantity PUT External Data FROM & ExternalData AS ExternalData؛ ////////////////////////////////////////////////////// / ////////////////////////////// SELECT ExternalData.Item و ExternalData.Quantity و ISNULL (ItemsRemainsRemains.QuantityRemains، 0) AS Field1 ، IS NULL (ItemsRemainsRemains.QuantityRemains، 0) - ExternalData.Quantity AS RemainingFROM ExternalData AS ExternalData Product

على غرار رمز الاستعلام أعلاه - يمكنك إنشاء استعلام معقد خاص بك ، مع مراعاة كائنات البيانات الخاصة بك.

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

في جدول المعلمات هذا - أدخل معلمة التاريخ ، على سبيل المثال ، تاريخ اليوم ، ثم انقر فوق المعلمة الخاصة بنا للجدول المؤقت "ExternalData" لمحاولة التحرير ، انقر فوق ثلاث نقاط في الحقل مع "جدول القيمة" - اختيار الأنواع سيظهر ، انقر فوق السطر ، فتقوم آليتنا بقلب الصفحة على النموذج بالنسبة لنا ، حيث نحتاج إلى إدخال هذا الجدول المؤقت جدًا يدويًا.

هنا ، لاحظ أنه في هذه الحالة ، في صفحة "الجداول المؤقتة" في الجزء السفلي في حقل "اسم الجدول المؤقت في المعلمات" ، سيظهر اسم الجدول المؤقت (يتم نسخه من جدول المعلمات).

حتى الآن ، في صفحة "TempTables" ، نرى جدولًا واحدًا فارغًا فقط - هذا هو جدول أنواع جدولنا المؤقت المستقبلي. باستخدام الزر "إضافة" ، سنضيف اسم السمة ونوع الجدول المستقبلي . كن حذرًا - يجب أن يتطابق الاسم والنوع مع ما حددناه في طلب & External Data:

الآن نضغط على زر "UpdateTporaryTable" - وسيكون لدينا جدول ثان هنا - سنملأه مباشرة ببيانات الجدول المؤقت من خلال الزر "إضافة".

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

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

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

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

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

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

لذلك ، لا يفهم مدير الجدول المؤقت في الاستعلام دائمًا أنهم يعملون معه)) لذلك ، تحتاج إلى تعيين مدير الجدول المؤقت هذا بشكل صريح:

& OnServer Procedure ExecuteQueryOnServer () // Upgrade2 - تعريف صريح لمدير TemporaryTable! VTManager = NewTempTableManager ، طلب = طلب جديد ؛ // Upgrade2 - تعريف صريح لمدير TemporaryTable! Query.TempTableManager = VTManager ، Request.Text = Object.QueryText ؛

هذا الإصدار من وحدة التحكم في التمهيد الثالث.

واحدة من أقوى أدوات 1C Enterprise 8 ، بلا شك ، هي Query Builder. المُنشئ هو أداة مرئية للتعامل مع الاستعلامات بلغة 1C. لكن المنشئ له عيب كبير - فهو لا يظهر نتيجة تنفيذ الاستعلام. يشعر المطورون المبتدئون لحلول التطبيقات بهذا العيب بشكل خاص على النظام الأساسي 1C: Enterprise 8.3 و 8.2.

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

لكل هذه الحالات والعديد من الحالات الأخرى ، يسعدنا أن نقدمها لك المعالجة الخارجية وحدة تحكم الاستعلام مع القدرة على معالجة النتائج لـ 1C 8.3 و 1C 8.2!


الميزات الرئيسية لوحدة تحكم الاستعلام لـ 1C 8.3 و 1C 8.2:

المعالجة الشاملة ، يتم تشغيلها على أي تكوين لأنظمة 1C الأساسية: Enterprise 8.1 - 8.3 ؛
- يعمل في 1C: وضع المؤسسة ؛
- يمكن كتابة الاستعلام يدويًا ، أو يمكنك الاتصال بـ Query Builder ؛
- يظهر نتيجة الطلب ؛
- يمكنك تحديد معلمات التقرير مباشرة في وحدة تحكم الاستعلام ؛
- يمكن حفظ وتحميل ملفات الطلب.

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


وحدة تحكم استعلام المعالجة الخارجية تكرر الواجهة المألوفة وأكثرها وظائفمجموعة الأدوات القياسية لتجميع الاستفسارات لنظام 1C: Enterprise 8.3 و 8.2. كما يسمح لك بالحصول على نتائج الاستعلامات والاستعلامات المجمعة والجداول المؤقتة.

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

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


في العميل الرقيق ، لا يمكننا كتابة الطلبات إلا يدويًا ، وتعمل جميع الوظائف الأخرى بدون تغييرات.