وظائف للعمل مع سلاسل الاستعلام 1S. ميزة وظيفة السلسلة الفرعية (). الحصول على قيمة حقل من النوع المعقد باستخدام نقطة

وظائف للعمل مع سلاسل الاستعلام 1S. ميزة وظيفة السلسلة الفرعية (). الحصول على قيمة حقل من النوع المعقد باستخدام نقطة

تحياتي لكم أيها القراء الأعزاء في موقع المدونة! اليوم، بمساعدة الأمثلة، سننظر في كيفية استخدام وظيفة الاستعلام 1C في الممارسة العملية سلسلة فرعية. يعد استخدام هذه الوظيفة مفيدًا ليس فقط في الاستعلامات البسيطة التي سنتناولها هنا، ولكن أيضًا في الاستعلامات والاستعلامات.

كانت المهمة هي ما هو مطلوب من تفاصيل الوثيقة امتثالحدد سطرين وقم بالفرز حسبهما. الالتزام بحساب من هذا النوع: 779000/004599. كيف يمكنني تقسيم هذه القيمة إلى قسمين؟

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

دعنا ننتقل إلى الممارسة:

حدد Typical.Recorder AS الاسم، سلسلة فرعية(نموذجي.المسجل.حسب الاسم، 1، 6) حساب تكلفة AS، سلسلة فرعية(Typical.Registrar.According.Name, 8, 11) القسم AS، AMOUNT(SELECT WHEN MONTH(Typical.Period) = 3 THEN EXPRESS(Typical.Amount AS NUMBER(15, 2)) ELSE 0 END) كما مارس من RegisterAccounting .Typical AS Typical حيث Typical.AccountKt = &AccountKt وTypical.Period بين &PeriodStart و&PeriodEnGROUP بواسطة سلسلة فرعية(نموذجي.المسجل.حسب الاسم، 1، 6)، سلسلة فرعية(نموذجي.المسجل.حسب.الاسم، 8، 11)، نموذجي.المسجل حسب القسم، حساب التكلفة

نتيجة هذا الاستعلام هي التالية:

اسم حساب التكلفة قسم يمشي
أمر دفع صادر 00000000319 من 03/01/2010 14:42:54 779000 004599 9 000
أمر دفع صادر 00000000320 من 03/02/2010 12:07:34 779000 004599 4 721,6
أمر دفع صادر 00000000203 من 03/01/2010 12:28:52 786500 004599 987 614,51
أمر دفع صادر 00000000227 من 03/03/2010 14:16:00 786500 004599 400 000
أمر دفع صادر 00000000238 من 03/05/2010 12:37:57 732000 004600 5 400
أمر دفع صادر 00000000197 من 03/01/2010 11:53:11 732500 004600 12 100
أمر دفع صادر 00000000198 من 03/01/2010 11:55:39 732500 004600 12 100
أمر الدفع الصادر 00000000279 من 26/03/2010 0:00:00 734100 004600 19 609
أمر دفع صادر 00000000287 من 29/03/2010 14:15:36 734100 004600 55 300
أمر دفع صادر 00000000291 من 30/03/2010 11:01:10 734100 004600 18 090
أمر دفع صادر 00000000268 من 18/03/2010 10:34:25 738000 004600 10 050
أمر دفع صادر 00000000276 من 18/03/2010 12:20:20 750400 004600 13 060,98
أمر دفع صادر 00000000281 من 29/03/2010 12:33:46 750400 004600 555 645,41
أمر دفع صادر 00000000234 من 03/04/2010 12:21:55 754450 004600 24 120
أمر دفع صادر 00000000290 من 30/03/2010 10:44:39 754450 004600 100 000
أمر دفع صادر 00000000240 من 03/09/2010 10:53:24 786300 004600 20 800
أمر دفع صادر 00000000269 من 18/03/2010 10:58:04 786300 004600 61 012
أمر دفع صادر 00000000289 من 30/03/2010 9:27:14 786300 004600 6 000
أمر دفع صادر 00000000223 من 03/03/2010 12:13:38 786500 004600 36 000
أمر دفع صادر 00000000228 من 03/04/2010 9:52:35 786500 004600 378 138,85
أمر دفع صادر 00000000229 من 03/04/2010 9:57:50 786503 004600 126 117,75
أمر دفع صادر 00000000200 من 03/01/2010 11:58:06 754422 004762 63 000
أمر دفع صادر 00000000286 من 29/03/2010 14:10:18 764422 004762 10 000
أمر دفع صادر 00000000267 من 17/03/2010 0:00:00 764423 004762 464 370
أمر دفع صادر 00000000261 من 15/03/2010 11:16:28 764522 004762 81 357

لذلك، إذا أخذنا السطر 779000/004599، فإن SUBSTRING(Typical.Recorder.Respective.Name, 1, 6) سوف يسلط الضوء على السطر "779000". سيتم إخراج سلسلة فرعية (Typical.Recorder.Respective.Name، 8، 11) "004599".

في نفس الاستعلام، يتم استخدام التعبير:

SUM(الاختيار عندما يكون الشهر(Typical.Period) = 3 ثم EXPRESS(Typical.Sum AS NUMBER(15, 2)) ELSE 0 END) AS يمشي

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

المبلغ(حدد متى الشهر(نموذجي.الفترة) = 1 ثم EXPRESS(Typical.Sum AS NUMBER(15, 2)) ELSE 0 END) AS يناير

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

نص الاستعلام = " |SELECT |Typical.Registrar AS Name، |SUB-STRING(Typical.Registrar.Respective.Name, 1, 6) AS حساب التكلفة، |SUB-STRING(Typical.Registrar.Respective.Name, 8, 11) ) قسم AS،"؛ لSch = 1 إلى 12 دورة إذا Sch< 11 Тогда Мес = Сч + 2; Иначе Мес = Сч - 10; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |СУММА(ВЫБОР | КОГДА МЕСЯЦ(Типовой.Период) = " + Мес + " | ТОГДА ВЫРАЗИТЬ(Типовой.Сумма КАК ЧИСЛО(15, 2)) | ИНАЧЕ 0 |КОНЕЦ) КАК Поле" + Мес + ?(Сч=12,"",","); КонецЦикла; نص الاستعلام = نص الاستعلام + " | من | تسجيل المحاسبة." + AccountingRegisterName + ".MovementsSSubconto(| &StartPeriod, | &EndPeriod,"; سطر القيود على التفاصيل = " (النشاط = TRUE) و(الحساب في التسلسل الهرمي (&حساب التحليل)")؛ نص الاستعلام = نص الطلب + سطر الحدود في التفاصيل + " |) كنموذجي |"؛ نص الاستعلام = نص الاستعلام + " | أين | Typical.AccountCt = &AnalysAccount | AND Typical.Period بين &StartPeriod و &EndPeriod |GROUP BY | SUBSTRING(Typical.Recorder.Resp.Name, 1, 6), | SUBSTRING(Typical.Registrar. اسم المسؤول، 8، 11)، | نموذجي.المسجل | الطلب حسب | القسم، | حساب التكلفة"؛

لذلك، باستخدام الكود أعلاه (بالخط العريض)، يتم عرض أجزاء الطلب مع الأشهر. وبذلك يتم إضافة أعمدة جديدة بأسماء الأشهر والمبالغ الخاصة بها.

يحتوي القسم على وصف لخصائص تنفيذ وظيفة SUBSTRING() للغة الاستعلام في إصدار عمل خادم العميل والتوصيات الناتجة لإنشاء الاستعلامات.

دالة فرعية ().

في لغة الاستعلام 1C:Enterprise، يمكن تطبيق وظيفة SUBSTRING() بتنسيق SUBSTRING(,) على بيانات نوع السلسلة وتسمح لك بتحديد جزء يبدأ برقم الحرف (يتم ترقيم الأحرف في السلسلة بدءًا من 1) وطول الشخصيات . نتيجة الدالة SUBSTRING() هي نوع سلسلة متغيرة الطول، وسيتم اعتبار الطول غير محدود إذا كان له طول غير محدود والمعلمة ليست ثابتة أو تتجاوز 1024.

حساب الدالة SUBSTRING() في خادم SQL

في إصدار العمل العميل-الخادم، يتم تنفيذ وظيفة SUBSTRING() باستخدام وظيفة SUBSTRING() الخاصة بعبارة SQL المقابلة، والتي تم تمريرها إلى خادم قاعدة بيانات SQL Server، والذي يحسب نوع نتيجة وظيفة SUBSTRING() باستخدام قواعد معقدة اعتمادًا على نوع وقيم معلماتها، وكذلك اعتمادًا على السياق الذي تستخدم فيه.

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

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

يختار
خيار

آخر لاغية
النهاية كعرض تقديمي،
خيار
عندما اكتب = & العنوان القانونيIndividual
ثم سلسلة فرعية (التمثيل، 0، 200)
آخر لاغية
نهاية العرض التقديمي1
من

ترتيب حسب
أداء،
الأداء1

تعطل مع الرسالة:

خطأ في نظام إدارة قواعد البيانات:
موفر Microsoft OLE DB لـ SQL Server: تحذير: تعذر على معالج الاستعلام إنتاج خطة استعلام من المحسن لأن إجمالي طول كافة الأعمدة في جملة GROUP BY أو ORDER BY يتجاوز 8000 بايت.
HRESULT=80040E14، SQLSTATE=42000، أصلي=8618

يحدث هذا لأن Microsoft SQL Server يقوم بحساب الحد الأقصى لطول السلسلة الناتجة عن التعبير:

خيار
عندما اكتب = & العنوان القانونيIndividual
ثم سلسلة فرعية (التمثيل، 0، 200)
آخر لاغية
النهاية كعرض تقديمي،

يساوي 4000 حرف. ولذلك، فإن طول السجل الذي يتكون من حقلين من هذه الحقول يتجاوز 8000 بايت المسموح بها لعملية الفرز.

نظرًا لخصوصية تنفيذ الدالة SUBSTRING() على SQL Server، فمن غير المستحسن استخدام الدالة SUBSTRING() لتحويل سلاسل ذات طول غير محدود إلى سلاسل ذات طول محدود. بدلاً من ذلك، من الأفضل استخدام عامل الإرسال EXPRESS(). على وجه الخصوص، يمكن إعادة كتابة المثال أعلاه على النحو التالي:

يختار
خيار
عندما اكتب = & العنوان القانونيIndividual
آخر لاغية
النهاية كعرض تقديمي،
خيار
عندما اكتب = & العنوان القانونيIndividual
ثم اكسبرس (التمثيل كسلسلة (200))
آخر لاغية
نهاية العرض التقديمي1
من
سجل المعلومات. معلومات الاتصال كيفية معلومات الاتصال
ترتيب حسب
أداء،
الأداء1

في هذه المقالة نريد مناقشة كل شيء معك 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(مخطط الحسابات. الدعم الذاتي. المواد) AS Account_10" ;

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

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

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

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

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

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

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

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number، | SELECT | عندما يقوم Sales.Registrar بربط Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ELSE SELECT | عندما يقوم Sales.Registrar بربط Document.Implementation | THEN EXPRESS(Sales.Registrar AS Document.Implementation) | END | ... | END AS Number | FROM | RegisterAccumulations.Purchases AS المشتريات";

هل هناك خيار آخر لاستخدام الدالة 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 | FROM | Directory.Nomenclature AS No. | LEFT CONNECTION تسجيل التراكمات. GoodsInWarehouses. Remainings AS GoodsInWarehousesRemains | ON (GoodsInWarehousesRemains. Nomenclature = No. Link)";

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 Remaining.Registrar LINK Document.Receipt of GoodsServices | ثم ""الاستلام"" | آخر ""الاستهلاك"" | النهاية كنوع الحركة | من | سجل التراكم. المنتجات المتبقية في المستودعات كباقي" ;

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 الحرة المتبقية المتبقية | | ترتيب حسب | التسميات | AUTO ORDER VANIE";

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

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

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

Query.Text = "SELECT | ItemsInWarehouses.Nomenclature AS Nomenclature، | ItemsInWarehouses.Warehouse، | SUM(ItemsInWarehouses.InStock) AS INSTOCK |من | RegisterAccumulations.ItemsInWarehouses AS ItemsInWarehouses | |التجميع حسب | ItemsInWarehouses.Nomenclature، | ItemsAtWarehouse ah.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 | |AVAILABLE | AMOUNT(ProductsInWarehouses.InStock) > 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 |من | تراكم التسجيل.CompensationRP.Remains AS CompensationRPRemains | أين |CompensationRPOREmaining .التعويض المتبقي<>0 | و CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

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

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

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

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

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

دعونا ننظر إلى الباقي الآن.

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

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

أولاً، يمكن إضافة سلاسل في الاستعلامات. للقيام بذلك، استخدم عامل التشغيل "+":

طلب. النص = "حدد
" "خط: " " + اسم المصدر
;

ثانيا، يمكنك تحديد جزء من الخط. للقيام بذلك، استخدم الوظيفة البناء.الوظيفة مشابهة للغة 1C المدمجة. لديها ثلاث معلمات:

  1. سلسلة المصدر.
  2. رقم الحرف الذي يجب أن يبدأ به السطر المحدد.
  3. الشخصيات.

طلب. نص= "يختار
سلسلة فرعية("
"خط: " "، 4، 3) كنتيجة"; // النتيجة: حسنًا

وظيفة باطل

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

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

لديها معلمتين:

  1. القيمة التي يتم فحصها.
  2. القيمة التي سيتم استبدال المعلمة الأولى بها إذا تبين أنها فارغة.

طلب. نص= "يختار
ISNULL(Source.Remainder, 0) AS Remainder"
; // إذا كانت نتيجة الطلب هي الحقل المتبقي = NULL،
// ثم سيتم استبداله بالصفر، ويمكنك إجراء العمليات الحسابية به

المهام أداءو روابط مقدمة

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

طلب. نص= "يختار
التمثيل (صحيح) AS منطقية،
التمثيل (4) كرقم،
التمثيل (Source.Link) كرابط،
التمثيل (DATETIME(2016,10,07)) كتاريخ"
;
// Boolean = "Yes"، Number = "4"، Link = "رقم أمر استلام النقد المستندي.... من..."
// التاريخ = "07.10.2016 0:00:00"

طلب. نص= "يختار
مرجع التمثيل (صحيح) AS منطقية،
مرجع التمثيل (4) كرقم
PRESENTINGLINK(Source.Link) كرابط،
مرجع التمثيل (DATETIME(2016,10,07)) كتاريخ"
;
// Boolean = TRUE, Number = 4, Link = "رقم أمر استلام النقد المستندي.... من..."
// التاريخ=07.10.2016 0:00:00

المهام يكتبو قيم النوع

وظيفة يكتبتقوم بإرجاع نوع بيانات النظام الأساسي 1C:Enterprise.

طلب. نص= "يختار
نوع الرقم)
النوع (سلسلة)،
النوع (المستند. أمر الإنفاق النقدي)"
;

وظيفة قيم النوعإرجاع نوع القيمة التي تم تمريرها إليها.

طلب. نص= "يختار
نوع القيم (5) كرقم،
يكتب ("
"خط" ") كسلسلة،
اكتب (Source.Link) كمرجع
من Directory.Source AS المصدر "
;
// رقم = رقم، سلسلة = سلسلة، الدليل = DirectoryLink.Source

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

طلب. نص= "يختار

من

أين
نوع القيم (ContactInformation.Object) = TYPE (Directory.Counterparties)"
;

وظيفة معنى

وظيفة معنىيسمح لك باستخدام كائنات تكوين 1C مباشرة في الطلب، دون استخدام .

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

طلب. نص= "يختار
معلومات الاتصال.مقدمة
من
سجل المعلومات معلومات الاتصال كيف معلومات الاتصال
أين
نوع القيم (ContactInformation.Object) = TYPE (Directory.Counterparties)
AND ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

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

المشغل أو العامل وصلة

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

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

طلب. نص= "يختار
معلومات الاتصال.مقدمة
من
سجل المعلومات معلومات الاتصال كيف معلومات الاتصال
أين
ContactInformation.Object LINK Directory.Counterparties"
;

المشغل أو العامل يعبر

المشغل أو العامل يعبرتستخدم في استعلامات 1C في حالتين:

  • عندما تحتاج إلى تغيير خصائص النوع البدائي؛
  • عندما تحتاج إلى تحويل حقل بنوع بيانات مركب إلى حقل بنوع واحد.

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

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

طلب. نص= "يختار
الكمية (وصول مختلف للسلع والخدمات. الرابط) كرابط
من
وثيقة استلام البضائع والخدمات كيفية استلام البضائع والخدمات
مجموعة من
EXPRESS(استلام البضائع والخدمات. تعليق في الصف (200))"
;

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

طلب. نص= "يختار
EXPRESS(حركة دوران البضائع.الطلب كوثيقة.طلب العميل).التاريخ كتاريخ الطلب،
حركة دوران البضائع.التسميات
من
سجل التراكمات.حركة البضائع.الدوران AS حركة البضائع
أين
حركة دوران البضائع.رابط الطلب.وثيقة الطلب.طلب العميل"
;

العاملين خيارو باطل

المشغل أو العامل خيارمماثلة للمشغل لوفي لغة 1C المضمنة، ولكن لديها وظائف منخفضة إلى حد ما.

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

طلب. نص= "يختار
معلومات الاتصال.المقدمة،
خيار
عند نوع القيم (ContactInformation.Object) = TYPE (Directory.Counterparties)
ثم "
الطرف المقابل "
اختيار آخر
عندما تكون القيم نوع (ContactInformation.Object) = TYPE (Directory.Individuals)
ثم "
فردي"
آخر "شخص آخر" "
نهاية
إنهاء كمالك
من
سجل المعلومات. معلومات الاتصال كمعلومات اتصال"
;

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

المشغل أو العامل باطلالمستخدمة في التصميم خيارلمقارنة حقل استعلام بالنوع NULL.

طلب. نص= "يختار
خيار
عندما تكون القيمة فارغة ثم 0
معنى آخر
نهاية"
;

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

الآراء