إنشاء الطلبات والعمل معها (للمبتدئين). إنشاء الاستعلامات والعمل معها (للمبتدئين) علامة تبويب حزمة الاستعلام

إنشاء الطلبات والعمل معها (للمبتدئين). إنشاء الاستعلامات والعمل معها (للمبتدئين) علامة تبويب حزمة الاستعلام

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

1C وظائف لغة الاستعلام

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

1. وظيفة التاريخ والوقت- تقوم هذه الوظيفة بإنشاء حقل ثابت بنوع "التاريخ".

بناء الجملة: التاريخ الوقت(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

مثال الاستخدام:

2. وظيفة فرق التاريخ- إرجاع الفرق بين تاريخين في أحد الأبعاد (السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية). يتم تمرير القياس كمعلمة.

بناء الجملة: الفرق(<Дата1>, <Дата2>, <Тип>)

مثال الاستخدام:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Qty.Days";

3. قيمة الوظيفة- تعيين حقل ثابت بسجل محدد مسبقًا من قاعدة البيانات، ويمكنك أيضًا الحصول على رابط فارغ من أي نوع.

بناء الجملة: القيمة(<Имя>)

مثال الاستخدام:

Request.Text = "SELECT // عنصر محدد مسبقًا | VALUE(Directory.Curreency.Dollar) AS Dollar، //رابط فارغ | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS إيصال، //قيمة النقل | VALUE(Transfer) فرد قانوني. فرد) AS حساب فردي، // حساب محدد مسبقًا VALUE(Chart of Accounts. Self-Accounting.Materials) AS Account_10" .

4. اختر وظيفة- أمامنا نظير لبناء IF، والذي يتم استخدامه في الكود، ويتم استخدام هذا فقط في استعلامات 1C.

بناء الجملة: الاختيار متى<Выражение>ثم<Выражение>خلاف ذلك<Выражение>نهاية

مثال الاستخدام:

Request.Text = // إذا كان المبلغ أكثر من 7500، فيجب أن يكون هناك خصم قدره 300 روبل، // لذا إذا تم تشغيل الشرط، فإن الدالة // تُرجع المجموع - 300 // وإلا فسيُرجع الطلب ببساطة المجموع "SELECT | SELECT | عندما يكون TCReceipts.Amount > 7500 | ثم TCReceipts.Amount - 300 | آخر TCReceipts.Amount | ينتهي بمبلغ مع خصم | من |

5. وظيفة صريحة- يسمح لك بالتعبير عن حقل ثابت بنوع معين.

بناء الجملة: EXPRESS (اسم الحقل AS TypeName)

مثال الاستخدام:

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number، | SELECT | عندما يكون Sales.Registrar LINK Document.Consumable | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | عندما يكون Sales.Registrar LINK Document.Implementation | THEN EXPRESS(Sales.Registrar AS Document.Implementation) |. END AS Number |. تسجيل التراكم كمشتريات";

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

مثال الاستخدام:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS تعليق، | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. وظيفة ISNULL(التهجئة البديلة ISNULL) - إذا كان الحقل من النوع NULL، فسيتم استبداله بالمعلمة الثانية للدالة.

بناء الجملة: باطل(<Поле>, <ПодставляемоеЗначение>)

مثال الاستخدام:

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

Query.Text = //حدد العنصر بالكامل وأرصدته //إذا لم يكن هناك رصيد في بعض العناصر، فسيكون هناك حقل //NULL والذي سيتم استبداله بالقيمة 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Remaining |. Directory.Nomenclature AS No. |.

7. وظيفة التمثيل- يسمح لك بالحصول على تمثيل لحقل الطلب.

بناء الجملة: أداء(<НаименованиеПоля>)

مثال الاستخدام:

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenclature, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Accumulation Register.FreeRemaining.Remaining AS FreeRemainingRemaining";

يبني في لغة الاستعلام 1C

ناقشنا معك أعلاه 1C وظائف لغة الاستعلام، حان الوقت الآن للتفكير يبني في لغة الاستعلام 1Cفهي لا تقل أهمية وفائدة، فلنبدأ.

1. رابط البناء- هو عامل منطقي للتحقق من نوع المرجع. غالبًا ما تتم مواجهته عند التحقق من حقل من نوع معقد مقابل نوع معين. بناء الجملة: وصلة<Имя таблицы>

مثال الاستخدام:

Request.Text = // إذا كان نوع قيمة المسجل هو مستند إيصال، // فسيرجع الاستعلام "استلام البضائع"، وإلا "مبيعات البضائع" "SELECT | SELECT | WHEN Remainings.Registrar LINK Document.Receipt of Goods and الخدمات |. ثم ""الاستلام"" |. آخر ""الاستهلاك"" |. انتهى كنوع الحركة |. سجل التراكم للمنتجات المتبقية" ;

2. التصميم بين- يتحقق هذا العامل مما إذا كانت القيمة ضمن النطاق المحدد.

بناء الجملة: بين<Выражение>و<Выражение>

مثال الاستخدام:

Request.Text = // احصل على التسمية الكاملة التي يقع رمزها في النطاق من 1 إلى 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. التسلسل الهرمي للبناء B و B- التحقق مما إذا كانت القيمة موجودة في القائمة المنقولة (يمكن نقل المصفوفات وجداول القيم وما إلى ذلك كقائمة). يتيح لك عامل التشغيل IN HIERARCHY عرض التسلسل الهرمي (مثال على استخدام مخطط الحسابات).

بناء الجملة: في(<СписокЗначений>) ، في التسلسل الهرمي(<СписокЗначений>)

مثال الاستخدام:

Request.Text = //حدد جميع الحسابات الفرعية للحساب "حدد | الدعم الذاتي. ربط الحساب AS | من | دليل الحسابات. الدعم الذاتي AS الدعم الذاتي | أين | الدعم الذاتي. الارتباط في القيمة الهرمية (مخطط الحسابات) حسابات السلع ذاتية الدعم)"؛

4. تصميم مماثل- تتيح لنا هذه الوظيفة مقارنة سلسلة بنمط سلسلة.

بناء الجملة: يحب "<ТекстШаблона>"

خيارات نمط الصف:

% - تسلسل يحتوي على أي عدد من الأحرف العشوائية.

شخصية تعسفية واحدة.

[...] - أي حرف منفرد أو سلسلة من الأحرف المدرجة بين قوسين مربعين. يمكن للتعداد تحديد النطاقات، على سبيل المثال a-z، مما يعني تضمين حرف عشوائي في النطاق، بما في ذلك نهايات النطاق.

[^...] - أي حرف منفرد أو سلسلة من الأحرف المدرجة بين قوسين مربعين باستثناء تلك المدرجة بعد علامة النفي.

مثال الاستخدام:

Query.Text = // ابحث عن التسمية بأكملها التي تحتوي على جذر TABUR وتبدأ // إما بحرف صغير أو كبير t "SELECT | Nomenclature. Link | FROM | Directory. Nomenclature AS Nomenclature | أين | المنتجات. الاسم مثل "" [Tt]abur%""" ;

5. التصميم مسموح- يتيح لك هذا المشغل تحديد السجلات فقط من قاعدة البيانات التي حصل المتصل على إذن القراءة لها. يتم تكوين هذه الحقوق على مستوى السجل (RLS).

بناء الجملة: يتم كتابة السماح بعد الكلمة الأساسية SELECT

مثال الاستخدام:

Request.Text = "حدد المسموح به | الأطراف المقابلة. الرابط | من | الدليل. الأطراف المقابلة كأطراف مقابلة";

6. تصميم مختلف- يسمح لك بتحديد السجلات التي لا توجد بها سجلات مكررة.

بناء الجملة: VARIOUS تتم كتابته بعد الكلمة الأساسية SELECT

مثال الاستخدام:

Request.Text = // يحدد السجلات التي يتمتع القارئ بحقوقها "SELECT VARIOUS | Counterparties.Name |FROM | Directory.Counterparties AS Counterparties" ;

كما يمكن استخدام البنية المتنوعة مع المشغل المسموح به والمشغلين الآخرين.

مثال الاستخدام:

Request.Text = // يحدد السجلات المختلفة التي يتمتع القارئ بحقوقها "SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory.Counterparties AS Counterparties";

7. التصميم أولاً- تحديد عدد السجلات المحددة في المعلمة من نتيجة الاستعلام.

بناء الجملة: أولا<число>

مثال الاستخدام:

Request.Text = //اختر أول 4 أرقام CCD من الدليل "اختر أول 4 | أرقام CCD. الرابط | من | الدليل. أرقام CCD كأرقام CCD";

8. تصميم من أجل التغيير- يسمح لك بقفل الجدول، ويعمل فقط في المعاملات (ذو صلة فقط بالأقفال التلقائية).

بناء الجملة: من أجل التغيير<НаименованиеТаблицы>

مثال الاستخدام:

Query.Text = "SELECT | البقايا الحرة البقايا. التسمية، | البقايا الحرة البقايا. المستودع، | البقايا المجانية المتبقية. في المخزون المتبقية | من | سجل التراكمات. البقايا الحرة. البقايا AS الحرة البقايا المتبقية | للتغيير | سجل التراكمات البقايا الحرة"؛

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

بناء الجملة: ترتيب حسب<НаименованиеПоля>طلب تلقائي

مثال الاستخدام:

Query.Text = "SELECT | البقايا المجانية البقايا. Nomenclature AS Nomenclature، | البقايا الحرة البقايا. Warehouse AS Warehouse، | البقايا المجانية المتبقية. في المخزون المتبقية | من | تسجيل التراكمات. البقايا الحرة. المتبقية AS الحرة المتبقية المتبقية | | ترتيب حسب |.التسميات |.قراءة الطلب التلقائي"؛

10. مجموعة التصميم بواسطة- يستخدم لتجميع سلاسل الاستعلام حسب حقول محددة. يجب استخدام الحقول الرقمية مع أي دالة مجمعة.

بناء الجملة: مجموعة من<НаименованиеПоля1>, .... , <НаименованиеПоляN>

مثال الاستخدام:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature، | ProductsInWarehouses.Warehouse، | SUM(GoodsInWarehouses.InStock) AS INSTOCK |من | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GROUP BY | ProductsInWarehouses.Nomenclature، | Treasures.Warehouse";

11. وجود التصميم- يسمح لك بتطبيق دالة مجمعة على شرط اختيار البيانات، على غرار بناء WHERE.

بناء الجملة: نأخذ<агрегатная функция с условием>

مثال الاستخدام:

Query.Text = // تحديد السجلات المجمعة حيث يكون حقل InStock أكبر من 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature، | ItemsInWarehouses.Warehouse، | SUM(ItemsInStocks.InStock) AS INSTOCK |من | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | المجموعة حسب |. ProductsInWarehouses.Nomenclature، |. ProductsInWarehouses.Warehouse |. المبلغ |. (ProductsInWarehouses.In Stock) > 3" ;

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

بناء الجملة: فهرس بواسطة<Поле1, ... , ПолеN>

مثال الاستخدام:

Query.Text = "SELECT | Ts.NameOS، | Ts.FolderNumber، | Ts.CodeOS، | Ts.Term، | Ts.Type | PLACE DataTs | من | &Ts AS Ts | | INDEX BY | Ts.NameOS، | Ts .كود أو إس";

13. التصميم أين- يسمح لك بفرض شرط على أي حقول اختيار. ستتضمن النتيجة فقط السجلات التي تفي بالشرط.

بناء الجملة: أين<Условие1 ОператорЛогСоединения УсловиеN>

مثال الاستخدام:

Query.Text = // تم تحديد كافة السجلات ذات التعويض المتبقي<>0 و //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTz |FROM | تراكم التسجيل.CompensationRP.Remains AS CompensationRPORemains |حيث |CompensationRPOREmain ing.CompensationRemaining<>0 | و CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

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

بناء الجملة: نتائج<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>بواسطة<ОБЩИЕ> <Поле1, ... , ПолеN>

مثال الاستخدام:

Request.Text = "SELECT | الحسابات. اتفاقية الطرف المقابل. نوع الاتفاقية كنوع العقد، | الحسابات. اتفاقية الطرف المقابل كعقد، | الحسابات. الطرف المقابل، | الحسابات. مبلغ رصيد التسوية المتبادلة كرصيد | من | سجل التراكمات. المتبادلة التسوية مع الأطراف المقابلة. الحسابات | الإجمالي |. المبلغ (الرصيد) |على |عام، |نوع الاتفاقية";

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

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

إنشاء طلب

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

// أنشئ طلبًا
طلب = طلب جديد؛

// املأ نص الطلب
طلب. نص= "هنا نكتب نص الطلب";

// تمرير المعلمات إلى الطلب
طلب. SetParameter("ParameterName" , ParameterValue) ;

// تنفيذ الطلب
النتيجة = الاستعلام. يجري() ؛

// قم بتحميل نتيجة الاستعلام إلى التحديد
العينة = النتيجة. يختار() ؛

// قم بتحميل نتيجة الاستعلام إلى جدول القيمة
الجدول = النتيجة. تفريغ () ؛

//يمكن دمج الإجراءات الأخيرة
جلب = الاستعلام يجري() . يختار() ؛
//أو
الجدول = الاستعلام. يجري() . تفريغ () ؛

أساسيات لغة الاستعلام 1C

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

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

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

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

طلب. النص = "يختار
| *
|من
| الدليل.
;

إذا كنت بحاجة إلى الحصول على التفاصيل الفردية فقط، فقم بما يلي:

طلب. النص = "يختار
| شفرة،
| اسم،
| الأبوين
|من
| الدليل.
;

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

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

طلب. النص = "يختار
| العملاء.رمز AS رقم،

| 1000 AS FieldWithValue
|من
;

جلب = الاستعلام يجري() . يختار() ؛

وداعا الاختيار. التالي () حلقة
رقم العميل = عينة. رقم؛
اسم العميل = التحديد. اسم؛
القيمة = العينة. this.FieldWithValue;
دورة النهاية؛

استخدم علامة التبويب لتعيين الأسماء المستعارة النقابات / الأسماء المستعارةالخامس منشئ الاستعلام.

يتم إنشاء حقل بقيمة ثابتة أو محسوبة يدويًا في علامة التبويب الجداول والحقول، في عمود مجالات.

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

// اطلب العملاء حسب الاسم من الألف إلى الياء وحدد العشرة الأوائل
طلب. النص = "اختر أول 10
| العملاء.رمز AS رقم،
| العملاء.الاسم AS الاسم،
| 1000 AS FieldWithValue
|من

|الطلب حسب
| اسم"
;

// حدد أحدث عميل أبجدي
طلب. النص = "اختر أعلى 1
| العملاء.رمز AS رقم،
| العملاء.الاسم AS الاسم،
| 1000 AS FieldWithValue
|من
| الدليل. الأطراف المقابلة كعملاء
|الطلب حسب
| رفض الاسم"
;

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

// أخذ العينات من البيانات المسموح بها للمستخدم
طلب. النص = "حدد المسموح به
| العملاء.رمز AS رقم،
| العملاء.الاسم AS الاسم،
| 1000 AS FieldWithValue
|من
| الدليل الأطراف المقابلة كعملاء"
;

// اختيار العناصر غير المتكررة
طلب. النص = "اختر مختلفًا
| العملاء.رمز AS رقم،
| العملاء.الاسم AS الاسم،
| 1000 AS FieldWithValue
|من
| الدليل الأطراف المقابلة كعملاء"
;

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

يتبع…

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

المزايا الرئيسية للغة الاستعلام 1C 8.3 (8.2) مقارنة بـ SQL:

  • إلغاء مرجعية الحقول المرجعية (إحالة نقطة واحدة أو أكثر إلى تفاصيل الكائن)؛
  • العمل مع النتائج مريح للغاية.
  • القدرة على إنشاء الجداول الافتراضية.
  • يمكن كتابة الطلب باللغتين الإنجليزية والروسية؛
  • القدرة على حظر البيانات لتجنب الجمود.

عيوب لغة الاستعلام في 1C:

  • على عكس SQL، في استعلامات 1C لا تسمح بتغيير البيانات؛
  • نقص الإجراءات المخزنة.
  • استحالة تحويل سلسلة إلى رقم.

دعونا نلقي نظرة على برنامجنا التعليمي المصغر حول التركيبات الأساسية للغة الاستعلام 1C.

نظرا لحقيقة أن الاستعلامات في 1C تسمح لك فقط بتلقي البيانات، يجب أن يبدأ أي استعلام بكلمة "SELECT". بعد هذا الأمر، تتم الإشارة إلى الحقول التي يجب الحصول على البيانات منها. إذا قمت بتحديد "*"، فسيتم تحديد جميع الحقول المتاحة. تتم الإشارة إلى المكان الذي سيتم اختيار البيانات منه (المستندات والسجلات والأدلة وما إلى ذلك) بعد كلمة "من".

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

يختار
التسمية. الاسم كاسم التسمية
من
Directory.Nomenclature AS التسميات

بجانب الأمر "SELECT"، يمكنك تحديد الكلمات الرئيسية:

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

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

من أجل التغيير

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

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

يختار
التسويات المتبادلة للموظفين
التسويات المتبادلة مبلغ رصيد التسويات المتبادلة
من
سجل التراكمات التسويات المتبادلة مع الموظفين
من أجل التغيير

أين

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

فيما يلي مثال لطلب الحصول على أشخاص يمكن الاتصال بهم لوظيفة معينة. تحتوي معلمة التحديد على التنسيق: &ParameterName (اسم المعلمة عشوائي).

الاختيار (الحالة)

يتيح لك التصميم تحديد الشروط مباشرة في نص الطلب.

في المثال أدناه، سيحتوي "الحقل الإضافي" على نص بناءً على ما إذا كان المستند قد تم ترحيله أم لا:

يختار
القبولTiU.Link,
خيار
عند إجراء القبول T&U
ثم "لقد تم تمرير الوثيقة!"
آخر "لم يتم نشر المستند..."
نهاية كحقل إضافي
من
وثيقة استلام البضائع والخدمات كيفية استلام الشروط والأحكام

ينضم

تربط الصلات جدولين بناءً على حالة علاقة محددة.

اتصال يسار/يمين

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

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

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

في اليمين، كل شيء هو عكس ذلك تمامًا.

اتصال كامل

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

عند استخدام الاتصال الكامل في المثال السابق، سيتم تحديد جميع أصناف الأصناف من مستند "استلام البضائع والخدمات" وجميع الأسعار الأحدث من سجل "أسعار الأصناف". ستكون قيم السجلات غير الموجودة في الجدولين الأول والثاني مساوية لـ NULL.

صلة داخلية

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

مجموعة من

يتيح لك التجميع في استعلامات 1C طي صفوف الجدول (حقول التجميع) وفقًا لخاصية مشتركة معينة (حقول التجميع). لا يمكن عرض حقول التجميع إلا باستخدام الوظائف المجمعة.

ستكون نتيجة الاستعلام التالي قائمة بأنواع المنتجات مع الحد الأقصى لأسعارها.

يختار
,
الحد الأقصى (السعر.السعر) كما السعر
من

مجموعة من
الأسعار.التسميات.نوع التسميات

نتائج

على عكس التجميع، عند استخدام الإجماليات، يتم عرض كافة السجلات وإضافة صفوف الإجمالي إليها. يعرض التجميع السجلات المعممة فقط.

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

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

يختار
الأسعار.التسميات.نوع التسميات AS نوع التسميات،
الأسعار.السعر AS السعر
من
سجل المعلومات أسعار التسميات. لقطة من أحدث الأسعار
نتائج
الحد الأقصى(السعر)
بواسطة
نوع التسمية

نأخذ

يشبه هذا العامل عامل التشغيل WHERE، ولكنه يُستخدم فقط للوظائف المجمعة. يجب تجميع الحقول المتبقية، باستثناء تلك التي يستخدمها عامل التشغيل هذا. لا ينطبق عامل التشغيل WHERE على الوظائف المجمعة.

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

يختار

الحد الأقصى (السعر.السعر) كما السعر
من
سجل المعلومات أسعار التسميات. لقطة من أحدث الأسعار
مجموعة من
الأسعار.التسميات.نوع التسميات
نأخذ
الحد الأقصى(الأسعار.السعر) > 1000

ترتيب حسب

يقوم عامل التشغيل ORDER BY بفرز نتيجة الاستعلام. لضمان عرض السجلات بترتيب متسق، يتم استخدام AUTO ORDER. يتم فرز الأنواع البدائية وفقًا للقواعد المعتادة. يتم فرز أنواع المراجع حسب GUID.

مثال للحصول على قائمة بالموظفين مرتبة حسب الاسم:

يختار
الموظفين.الاسم AS الاسم
من
Directory.Employees كيف الموظفين
ترتيب حسب
اسم
طلب تلقائي

بنيات لغة الاستعلام 1C الأخرى

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

ميزات لغة الاستعلام

  • سلسلة فرعيةيقتطع سلسلة من موضع محدد إلى عدد محدد من الأحرف.
  • السنة...الثانيةتسمح لك بالحصول على القيمة المحددة لنوع رقمي. معلمة الإدخال هي التاريخ.
  • بداية الفترة ونهاية الفترةتستخدم عند العمل مع التواريخ. تتم الإشارة إلى نوع الفترة (يوم، شهر، سنة، وما إلى ذلك) كمعلمة إضافية.
  • تاريخ الإضافةيسمح لك بإضافة أو طرح وقت محدد من نوع معين من تاريخ (SECOND، MINUTE، DAY، إلخ).
  • الفرقيحدد الفرق بين تاريخين، مع الإشارة إلى نوع قيمة الإخراج (يوم، سنة، شهر، إلخ.).
  • باطليستبدل القيمة المفقودة بالتعبير المحدد.
  • روابط التمثيل والتمثيلالحصول على تمثيل سلسلة للحقل المحدد. تنطبق على أي قيم والقيم المرجعية فقط، على التوالي.
  • النوع، نوع القيميتم استخدامها لتحديد نوع معلمة الإدخال.
  • وصلةهو عامل مقارنة منطقي لنوع قيمة السمة.
  • يعبريستخدم لتحويل القيمة إلى النوع المطلوب.
  • التاريخ والوقتيحصل على قيمة من النوع "التاريخ" من القيم الرقمية (السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية).
  • معنىفي طلب 1C يتم استخدامه للإشارة إلى القيم المحددة مسبقًا - الدلائل والتعدادات وخطط أنواع الخصائص. مثال الاستخدام: " حيث الفرد القانوني = القيمة (التعداد. الفرد القانوني. الفرد)«.

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

لإنشاء استعلامات باستخدام 1C، توجد آلية مدمجة مريحة للغاية - مصمم الاستعلام. ويحتوي على علامات التبويب الرئيسية التالية:

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

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


طلب وحدة التحكم

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

يمكنك تنزيل وحدة تحكم الاستعلام على قرص ITS أو عبر .

تعد لغة الاستعلام في 1C 8 بمثابة تماثل مبسط لـ "لغة البرمجة المنظمة" المعروفة (كما يطلق عليها غالبًا SQL). ولكن في 1C يتم استخدامه فقط لقراءة البيانات؛ ويستخدم نموذج بيانات الكائن لتغيير البيانات.

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

طلب مثال:

يختار
البنوك. الاسم،
البنوك.حساب المراسلات
من
Directory.Banks كيف البنوك

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

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

وصف بنيات لغة الاستعلام

هيكل الاستعلام

للحصول على البيانات، يكفي استخدام الإنشاءات "SELECT" و"FROM". أبسط طلب يبدو كالتالي:

اختر * من الدلائل.التسميات

حيث تعني "*" تحديد كافة حقول الجدول، و Directorys.Nomenclature - اسم الجدول في قاعدة البيانات.

دعونا نلقي نظرة على مثال أكثر تعقيدًا وعامة:

يختار
<ИмяПоля1>كيف<ПредставлениеПоля1>,
مجموع(<ИмяПоля2>) كيف<ПредставлениеПоля2>
من
<ИмяТаблицы1>كيف<ПредставлениеТаблицы1>
<ТипСоединения>مُجَمَّع<ИмяТаблицы2>كيف<ПредставлениеТаблицы2>
بواسطة<УсловиеСоединениеТаблиц>

أين
<УсловиеОтбораДанных>

مجموعة من
<ИмяПоля1>

ترتيب حسب
<ИмяПоля1>

نتائج
<ИмяПоля2>
بواسطة
<ИмяПоля1>

في هذا الاستعلام، نختار بيانات الحقلين "FieldName1" و"FieldName1" من الجدولين "TableName1" و"TableName"، ونخصص مرادفات للحقول باستخدام عامل التشغيل "HOW"، ونربطها باستخدام شرط معين "TableConnectionCondition" ".

من البيانات المستلمة، نختار فقط البيانات التي تفي بالشرط من "أين" "شرط اختيار البيانات". بعد ذلك، نقوم بتجميع الطلب حسب الحقل "اسم الحقل 1"، بينما نقوم بجمع "اسم الحقل 2". "اسم الحقل 1" والحقل الأخير "اسم الحقل 2".

الخطوة الأخيرة هي فرز الطلب باستخدام بنية ORDER BY.

تصاميم عامة

دعونا نلقي نظرة على الهياكل العامة للغة الاستعلام 1C 8.2.

أولاًن

باستخدام هذا العامل، يمكنك الحصول على عدد n من السجلات الأولى. يتم تحديد ترتيب السجلات حسب الترتيب الموجود في الاستعلام.

اختر أول 100
البنوك. الاسم،
البنوك رمز AS BIC
من
Directory.Banks كيف البنوك
ترتيب حسب
البنوك.الاسم

سيتلقى الطلب أول 100 إدخال من دليل "البنوك"، مرتبة أبجديًا.

مسموح

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

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

اختر المسموح به
رابط مستودع المعلومات الإضافية
من
Directory.Repository للمعلومات الإضافية

متنوع

سيؤدي استخدام "مختلف" إلى منع الأسطر المكررة من إدخال نتيجة استعلام 1C. التكرار يعني أن جميع حقول الطلب متطابقة.

اختر أول 100
البنوك. الاسم،
البنوك رمز AS BIC
من
Directory.Banks كيف البنوك

جدول فارغ

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

مثال من مساعدة 1C 8:

حدد رقم الرابط، الجدول الفارغ. (الرقم، العنصر، الكمية) كتكوين
من الوثيقة. فاتورة النفقات
الجمع بين كل شيء
حدد رقم الرابط والمحتويات (رقم السطر، المنتج، الكمية)
من Document.Invoice Document.Invoice.Composition.*

باطل

ميزة مفيدة للغاية تتيح لك تجنب العديد من الأخطاء. YesNULL() يسمح لك باستبدال القيمة NULL بالقيمة المطلوبة. يُستخدم كثيرًا في التحقق من وجود قيمة في الجداول المرتبطة، على سبيل المثال:

يختار
رابط التسمية،
IsNULL(العنصر المتبقي.الكمية المتبقية,0) AS الكمية المتبقية
من


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

ISNULL(InvoiceReceived.Date، InvoiceIssued.Date)

HOW هو عامل يسمح لنا بتعيين اسم (مرادف) لجدول أو حقل. لقد رأينا مثالاً للاستخدام أعلاه.

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

يختار
عرض(رابط)، //سلسلة، على سبيل المثال "تقرير مسبق رقم 123 بتاريخ 2015/10/10"
عرض (DeletionMark) AS RemoveMarkText، // سلسلة، "نعم" أو "لا"
ViewReferences(DeletionMark) AS RemoveMarkBoolean //منطقي، صحيح أو خطأ
من
وثيقة. تقرير مسبق

يعبر

يتيح لك Express تحويل قيم الحقول إلى نوع البيانات المطلوب. يمكنك تحويل قيمة إلى نوع بدائي أو نوع مرجعي.

يتم استخدام Express لنوع مرجعي لتقييد أنواع البيانات المطلوبة في الحقول ذات النوع المعقد، وغالبًا ما يستخدم لتحسين أداء النظام. مثال:

EXPRESS (جدول التكاليف. دليل Subconto1 AS. عناصر التكاليف). نوع النشاط للمحاسبة الضريبية للتكاليف

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

صريحة (تعليق كخط (150))

الفرق

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

مثال على استخدام IS NULL في طلب 1C:

اختر من
المرجع
الاتصال الأيسر تسجيل التراكمات.المنتجات الموجودة في المستودعات.المنتج المتبقي
Software NomenclatureRef.Link = البضائع المباعةCommitteesRemains.Nomenclature
عندما لا تكون الكمية المتبقية من المنتجات فارغة

يمكن تحديد نوع البيانات في الاستعلام باستخدام الدالتين TYPE() وVALUETYPE()، أو باستخدام عامل التشغيل المرجعي المنطقي. الوظيفتين متشابهتان.

القيم المحددة مسبقًا

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

مثال الاستخدام:

حيث Nomenclature.Type of Nomenclature = القيمة (Directory.Types of Nomenclature.Product)

أين الأطراف المقابلة. نوع معلومات الاتصال = القيمة (التعداد. أنواع معلومات الاتصال. الهاتف)

أين أرصدة الحسابات.حساب المحاسبة = القيمة (مخطط الحسابات.الربح.ProfitsLoss)

روابط

هناك 4 أنواع من الاتصالات: غادر, يمين, كاملة، داخلية.

الاتصال الأيسر والأيمن

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

على سبيل المثال:

سيُرجع الجدول بأكمله للأطراف المقابلة ويملأ حقل "البنك" فقط في تلك الأماكن التي سيتم فيها استيفاء شرط "Counterparties.Name = Banks.Name". إذا لم يتم استيفاء الشرط، فسيتم تعيين حقل البنك على باطل.

الانضمام الصحيح بلغة 1Cمماثلة تماما الاتصال الأيسر، باستثناء فارق واحد - في حق الاتصالالجدول "الرئيسي" هو الثاني وليس الأول.

اتصال كامل

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

على سبيل المثال:

من

اتصال كامل
Directory.Banks كيف البنوك

بواسطة

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

صلة داخلية

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

على سبيل المثال:

من
الدليل. الأطراف المقابلة كعملاء

صلة داخلية
Directory.Banks كيف البنوك

بواسطة
اسم العملاء = اسم البنوك

سيُرجع هذا الاستعلام فقط الصفوف التي يحمل فيها البنك والطرف المقابل نفس الاسم.

ذات الصلة

تجمع بنيات JOIN وJOIN ALL بين نتيجتين في نتيجة واحدة. أولئك. سيتم "دمج" نتيجة أداء اثنين في نتيجة واحدة مشتركة.

أي أن النظام يعمل تمامًا مثل الأنظمة العادية، فقط لجدول مؤقت.

كيفية استخدام INDEX BY

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

يختار
أسعار العملات أحدث مقطع عرضي للعملة AS العملة،
أسعار العملات أحدث المقطع العرضي.
وضع أسعار العملات
من
سجل المعلومات.أسعار العملات.الشريحة الأخيرة(والفترة) AS أسعار العملاتالشريحة الأخيرة
فهرس بواسطة
عملة
;
يختار
تسميات الأسعار.التسميات،
الأسعارالتسميات.السعر،
الأسعارالتسميات.العملة،
أسعار العملات.Rate
من
سجل المعلومات.أسعار التسميات.الشريحة الأخيرة(&الفترة،
التسمية B (&التسمية) وPriceType = &PriceType) AS PriceNomenclature
LEFT JOIN أسعار العملات AS أسعار العملات
أسعار البرمجيات Nomenclatures.Currency = أسعار العملات.Currency

التجميع

تتيح لك لغة الاستعلام 1C استخدام وظائف تجميعية خاصة عند تجميع نتائج الاستعلام. يمكن أيضًا استخدام التجميع بدون وظائف تجميعية "لإزالة" التكرارات.

الوظائف التالية موجودة:

المبلغ، الكمية، عدد مختلف، الحد الأقصى، الحد الأدنى، المتوسط.

مثال 1:

يختار
مبيعات السلع والسلع الخدمات.
SUM(مبيعات السلعالخدماتالسلع.الكمية) AS الكمية،
SUM(مبيعات السلع، الخدمات، البضائع. المبلغ) AS المبلغ
من

مجموعة من
مبيعات السلع والسلع الخدمات

يقوم الطلب باستلام جميع البنود بالبضائع وتلخيصها بالكمية والمبالغ حسب الصنف.

المثال رقم 2

يختار
رمز البنوك،
الكمية (رابط البنوك المختلفة) كعدد التكرارات
من
Directory.Banks كيف البنوك
مجموعة من
البنوك.كود

سيعرض هذا المثال قائمة برموز BIC في دليل "البنوك" ويوضح عدد التكرارات الموجودة لكل منها.

نتائج

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

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

يختار




من
وثيقة مبيعات السلع والخدمات كيفية بيع السلع والخدمات
ترتيب حسب

نتائج
مجموع (الكمية)،
مجموع(مجموع)
بواسطة
التسميات

ستكون نتيجة الاستعلام هي التسلسل الهرمي التالي:

النتائج العامة

إذا كنت تريد الحصول على إجماليات لجميع "الإجماليات"، فاستخدم عامل التشغيل "عام".

يختار
مبيعات السلع والسلع الخدمات التسميات AS التسميات،
مبيعات البضائع والسلع الخدماتية كوثيقة.
مبيعات السلع والسلع الخدمات الكمية AS الكمية،
مبيعات السلع والخدمات المبلغ AS المبلغ
من
وثيقة مبيعات السلع والخدمات كيفية بيع السلع والخدمات
ترتيب حسب
تاريخ مبيعات السلع والخدمات
نتائج
مجموع (الكمية)،
مجموع(مجموع)
بواسطة
شائعة،
التسميات

ونتيجة تنفيذ الطلب نحصل على النتيجة التالية:

في أي مستوى تجميع واحد يتم تجميع كافة الحقول الضرورية.

تنظيم

يتم استخدام عامل التشغيل ORDER BY لفرز نتيجة الاستعلام.

الفرز للأنواع البدائية (سلسلة، رقم، منطقي) يتبع القواعد المعتادة. بالنسبة لحقول النوع المرجعي، يتم الفرز حسب التمثيل الداخلي للارتباط (المعرف الفريد)، بدلاً من التعليمات البرمجية أو تمثيل المرجع.

يختار

من
Directory.Nomenclature AS التسميات
ترتيب حسب
اسم

سيعرض الطلب قائمة بالأسماء في دليل التسميات، مرتبة أبجديًا.

الطلب التلقائي

نتيجة الاستعلام بدون فرز هي مجموعة من الصفوف معروضة بطريقة عشوائية. لا يضمن مطورو النظام الأساسي 1C أنه سيتم إخراج الصفوف بنفس التسلسل عند تنفيذ نفس الاستعلامات.

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

يختار
Nomenclature.Name AS الاسم
من
Directory.Nomenclature AS التسميات
طلب تلقائي

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

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

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

  • قطع الأول؛
  • قطع من الأخير.
  • بقايا الطعام.
  • الثورات.
  • الأرصدة والتداول.
  • الحركات من subconto.
  • الثورات.
  • السرعة دت كيلوطن.
  • بقايا الطعام.
  • الأرصدة والتداول
  • com.subconto.
  • قاعدة؛
  • بيانات الرسم البياني؛
  • مدة الصلاحية الفعلية.

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

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

يتيح لك هذا الاستعلام استرداد كمية كبيرة من البيانات بسرعة.

خيارات الجدول الظاهري

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

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

مثال على استخدام هذه المعلمات:

سجل تراكمات البضائع في المستودعات. الأرصدة والحركة (وبداية الفترة ونهاية الفترة والشهر والحركات وحدود الفترة والمسميات = والمسميات المطلوبة).

خوارزمية الجداول الافتراضية

على سبيل المثال، يقوم الجدول الافتراضي الأكثر استخدامًا من النوع "Remains" بتخزين البيانات من جدولين فعليين - الأرصدة والحركات.

عند استخدام جدول افتراضي، يقوم النظام بالمعالجة التالية:

  1. نحصل على أقرب قيمة محسوبة من حيث التاريخ والقياسات في جدول الإجماليات.
  2. نقوم "بإضافة" المبلغ من جدول الحركة إلى المبلغ من جدول الإجماليات.


يمكن لمثل هذه الإجراءات البسيطة أن تحسن بشكل كبير أداء النظام ككل.

استخدام منشئ الاستعلام

منشئ الاستعلام– أداة مدمجة في نظام 1C Enterprise تسهل بشكل كبير تطوير استعلامات قاعدة البيانات.

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

يتم تشغيل مُنشئ نص الاستعلام من قائمة السياق (زر الفأرة الأيمن) في المكان المطلوب في كود البرنامج.

وصف منشئ الطلب 1C

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

علامة التبويب "الجداول والحقول".

تحدد علامة التبويب هذه مصدر البيانات والحقول التي يجب عرضها في التقرير. في جوهرها، الإنشاءات SELECT.. من موصوفة هنا.

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

في قائمة سياق الجداول الافتراضية، يمكنك تعيين معلمات الجدول الافتراضي:

علامة تبويب الاتصالات

يتم استخدام علامة التبويب لوصف اتصالات عدة جداول وإنشاء إنشاءات باستخدام كلمة CONNECTION.

علامة تبويب التجميع

في علامة التبويب هذه، يسمح لك النظام بتجميع وتلخيص الحقول المطلوبة لنتيجة الجدول. يصف استخدام الإنشاءات GROUP BY، SUM، MINIMUM، AVERAGE، MAXIMUM، QUANTITY، NUMBER OF DIFFERENT.

علامة تبويب الشروط

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

علامة التبويب المتقدمة

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

التجميع اختيار السجلات:

  • أول ن- معلمة تقوم بإرجاع سجلات N فقط إلى الاستعلام (عامل التشغيل FIRST)
  • لا التكرارات- يضمن تفرد السجلات المستلمة (مشغل مختلف)
  • مسموح- يسمح لك باختيار تلك السجلات التي يسمح لك النظام بتحديدها فقط مع الأخذ بعين الاعتبار (الإنشاء المسموح به)

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

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

علامة التبويب الانضمامات/الأسماء المستعارة

في علامة التبويب هذه الخاصة بمصمم الاستعلام، يمكنك ضبط القدرة على الانضمام إلى جداول وأسماء مستعارة مختلفة (بنية HOW). الجداول موضحة على الجانب الأيسر. إذا قمت بتعيين الأعلام مقابل الجدول، فسيتم استخدام بناء UNITE، وإلا - UNITE ALL (الاختلافات بين الطريقتين). على الجانب الأيمن، تتم الإشارة إلى تطابق الحقول في جداول مختلفة؛ إذا لم يتم تحديد المراسلات، فسيرجع الاستعلام NULL.

علامة تبويب الطلب

يحدد هذا الترتيب الذي يتم به فرز القيم (ORDER BY) - تنازلي (DESC) أو تصاعدي (ASC).

هناك أيضًا علم مثير للاهتمام - الطلب التلقائي(في الطلب - الطلب التلقائي). افتراضيًا، يعرض نظام 1C البيانات بترتيب "فوضوي". إذا قمت بتعيين هذه العلامة، فسيقوم النظام بفرز البيانات حسب البيانات الداخلية.

علامة تبويب دفعة الاستعلام

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

زر "الاستعلام" في مصمم الاستعلام

يوجد في الركن الأيسر السفلي من مصمم الطلب زر طلب، والذي يمكنك من خلاله عرض نص الطلب في أي وقت:

في هذه النافذة يمكنك إجراء التعديلات على الطلب وتنفيذه.


استخدام وحدة تحكم الاستعلام

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

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

قم بتنزيل وحدة تحكم الاستعلام 1C

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

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

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

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

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

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

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

  • ينفذطلب- التنفيذ والنتائج البسيطة
  • تنفيذ الحزمة- يسمح لك بعرض كافة الاستعلامات المتوسطة في مجموعة من الاستعلامات
  • عرض الجداول المؤقتة- يسمح لك برؤية النتائج التي ترجعها الاستعلامات المؤقتة على الجدول

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

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

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

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

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

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

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

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

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

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

طلب = طلب جديد؛
طلب.نص = ”
|اختر
| العملات. الرابط
|من
| Directory.Curreency AS العملات "؛
RequestResult = Request.Execute();

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



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

تحسين الاستعلام

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

التحديدات في جدول افتراضي باستخدام بنية WHERE

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

يمين:

يختار

من
سجل التراكمات التسويات المتبادلة مع المشاركين في المنظمات (.
,
المنظمة = &التنظيم
والفرد = &الفرد) كيفية التسويات المتبادلة مع المشاركين في أرصدة المنظمات

خطأ:

يختار
التسويات المتبادلة مع المشاركين في أرصدة المنظمات
من
سجل التراكمات التسويات المتبادلة مع المشاركين في المنظمات الأرصدة (،) كيف التسويات المتبادلة مع المشاركين في المنظمات الأرصدة
أين
التسويات المتبادلة مع المشاركين في أرصدة المنظمات Organization = & Organization
والتسويات المتبادلة مع المشاركين في أرصدة المنظمات فرد = &فرد

الحصول على قيمة حقل من النوع المعقد باستخدام نقطة

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

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

خطأ:

يختار
سجل Set.Recorder.Date،
مجموعة السجلات.الكمية
من
سجل التراكمات. المنتجات المنظمات AS SetRecords

وهذا يعني، في الواقع، أن مثل هذا الاستعلام لن يصل إلى جدول واحد، بل إلى 22 جدول قاعدة بيانات (يحتوي هذا السجل على 21 نوعًا من المسجلين).

يمين:

يختار
خيار
متى ProductsOrg.Registrar LINK Document.مبيعات المنتجات والخدمات
ثم EXPRESS (ProductsOrganization.Registrar AS Document.Sales of GoodsServices).التاريخ
عندما GoodsOrg.Registrar LINK Document.Receipt of GoodsServices
ثم EXPRESS (GoodsOrg.Registrar AS Document.Receipt of GoodsServices).التاريخ
نهاية كتاريخ،
ProductsOrg.Quantity
من
تسجيل التراكمات.المنتجاتالمنظمات AS المنتجاتالمنظمة

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

يمين:

يختار
المنتجاتالمنظمات.التاريخ،
المنتجاتالمنظمات.الكمية
من
سجل التراكمات لسلع المنظمات

الاستعلامات الفرعية في حالة الانضمام

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

خطأ:

يختار …

الانضمام الأيسر (
اختر من RegisterInformation.Limits
أين …
مجموعة من...
) بواسطة …

يمين:

يختار …
وضع حدود
من سجل المعلومات. الحدود
أين …
مجموعة من...
الفهرس حسب...;

يختار …
من وثيقة مبيعات السلع والخدمات
حدود الانضمام اليسرى
بواسطة …؛

ربط السجلات باستخدام الجداول الافتراضية

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

استخدام التحديدات بناءً على الحقول غير المفهرسة

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

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

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

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

استخدام المنطق OR في الشروط

هذا كل شيء، تناولت هذه المقالة الجوانب الأساسية لتحسين الاستعلام التي يجب أن يعرفها كل خبير في 1C.

دورة فيديو مجانية مفيدة جدًا حول تطوير الاستعلام وتحسينه، أنا أوصي بشدهللمبتدئين وأكثر!

كليويف ف.

http://prof1c.kklab.ru

الخلق والعمل مع الطلبات. أبسط العملياتللمبتدئين(التطبيق العادي)

مساء الخير

أريد اليوم أن أخبرك عن كيفية البدء في العمل مع الاستعلامات والتعلم (بالتدريج بالطبع) كيفية التعامل مع الاستعلامات في 1C. لأولئك المطلعين على استعلامات MS
سيكون SQL بالطبع أبسط من ذلك بكثير.

لذلك دعونا نفتح أداة التهيئة وننشئ معالجة خارجية جديدة.

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

لذلك قمنا بإنشاء نموذج فارغ لك، مع الأزرار و. في نافذة النموذج، حدد علامات التبويب وانتقل مباشرة إلى كتابة التعليمات البرمجية التي سيتم تنفيذها عند النقر فوق زر التنفيذ. للقيام بذلك، ابحث عن الإجراء ButtonExecutePress(Button)

واكتب الكود التالي :

الإجراء ButtonExecutePress(Button) Request = New Request(); طلب. النص = "حدد | * | من| وثيقة . فاتورة الدفع للمشتري" ; النتيجة = استعلام. تنفيذ (). إلغاء التحميل ()؛ نهاية الإجراء

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

باستخدام الكلمة الرئيسية "حدد" نطلب منا تحديد جميع الحقول (*) (تفاصيل المستند) من مستند "فاتورة الدفع للمشتري".

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

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

بعد ذلك، نحفظ معالجتنا في ملف، للقيام بذلك، انقر فوق ملف->حفظ باسم واكتب اسم الملف، بالنسبة للمعالجة الخاصة بي، قمت بتعيين الاسم "ExternalProcessing1Demo"، حتى لا أبحث عن المعالجة لفترة طويلة، يمكنك حفظه على سطح المكتب، ثم سيتعين علينا فتحه)).

الآن دعونا نتعلم القليل من أساسيات التصحيح. للقيام بذلك، الآن في الحقل المجاور للنص النتيجة = ... انقر نقرًا مزدوجًا فوق زر الماوس الأيسر بحيث تظهر دائرة حمراء، يجب أن تحصل على شيء مثل ما يلي:

لذلك، قمنا الآن بتعيين نقطة توقف على السطر مع النتيجة، فلنقم الآن بتشغيل التكوين لتصحيح الأخطاء بالضغط على المفتاح (F 5) أو الزر
على شريط الأدوات:

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

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

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

نافذة فارغة -> سيتم فتح Tableau في الجزء السفلي من نافذة المكوّن. هناك خطوط فارغة في هذه النافذة. انقر نقرًا مزدوجًا فوق السطر المميز الفارغ واكتب كلمة النتيجة. يجب أن تحصل على ما يلي:

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

لنأخذ خطوة - لتنفيذ السطر المحدد من التعليمات البرمجية. للقيام بذلك، اضغط على المفتاح، أو في القائمة تصحيح->الخطوة خلال... (F 10).

وماذا نرى في لوحتنا:

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

نحصل على نافذة تحتوي على المستندات التي اخترناها والموجودة في متغير النتيجة

كي تختصر:

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

الآراء