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

للقيام بذلك، تحتاج إلى استخدام الدالة Express بالتنسيق التالي:

يعبر(<Число>كرقم(<ДлинаЧисла>,<Точность>))

أين:
رقم— الحقل الذي يحتاج إلى تقريبه
أرقام الطول- الحد الأقصى لطول الرقم
دقة- دقة تقريب الأرقام

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

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

لكي تعمل، من الضروري تحويل حقل ذو طول غير محدود إلى سلسلة بطول معين؛ ويتم ذلك باستخدام الدالة Express بالتنسيق التالي:

يعبر(<Строка>كسلسلة(<ДлинаСтроки>)

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

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

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

يعبر(<Документ>كوثيقة.<ИмяТаблицы>)
يعبر(<Справочник>كدليل.< ИмяТаблицы >)
.

أين
اسم الطاولة- اسم الكائن في .

استخدم دائمًا الدالة Express عند العمل مع الأنواع المركبة، فهي تعمل على تحسين الاستعلام بشكل كبير.

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

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

لقرائي قسيمة خصم 25%: hrW0rl9Nnx

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

يمكنك تحويل أي مبلغ مباشرة:
ياندكس موني - 410012882996301
أموال الويب - R955262494655

انضم إلى مجموعاتي.

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

يشبه بناء الجملة نفسه إلى حد كبير T-SQL الكلاسيكي، باستثناء أنه في 1C، باستخدام لغة الاستعلام، يمكنك فقط تلقي البيانات باستخدام البنية المحددة. تدعم اللغة أيضًا بنيات أكثر تعقيدًا، على سبيل المثال، (الطلب ضمن الطلب). يمكن كتابة الاستعلامات في 1C 8 باللغتين السيريلية واللاتينية.

سأحاول في هذه المقالة التحدث عن الكلمات الرئيسية الرئيسية في لغة الاستعلام 1C:

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

بالإضافة إلى بعض الحيل الصغيرة للغة 1C، والتي يمكنك من خلالها إنشاء نص الطلب على النحو الأمثل.

لتصحيح الاستعلامات في نظام 1C 8.2، يتم توفير أداة خاصة - وحدة التحكم في الاستعلام. يمكنك مشاهدة الوصف وتنزيله باستخدام الرابط -.

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

يختار

في لغة الاستعلام 1C Enterprise 8، يبدأ أي استعلام بكلمة رئيسية يختار. في لغة 1C لا توجد بنيات UPDATE، DELETE، CREATE TABLE، INSERT؛ والغرض منه هو قراءة البيانات فقط.

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

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

سيرجع الاستعلام جدولاً بأسماء العناصر.

بالقرب من الهيكل يختاريمكنك العثور على الكلمات الرئيسية من أجل التغيير, مسموح, متنوع, أولاً

مسموح- تحديد السجلات من الجدول التي يتمتع المستخدم الحالي بحقوقها فقط.

متنوع- يعني أن النتيجة لن تحتوي على أسطر مكررة.

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

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

الدليل الحالي. الاسم،

عندما يكون Directory.Service الحالي بعد ذلك

"خدمة"

إنهاء كيفية عرض التسمية

Directory.Nomenclature AS الدليل الحالي

سيُرجع المثال قيمة نصية في حقل "نوع العنصر" - "المنتج" أو "الخدمة".

أين

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

يختار
اسم الدليل
من
الدليل الحالي.التسميات AS الدليل الحالي
حيث CurrentDirectory.Service = TRUE

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

"أين الخدمة"

بشكل أساسي، نحن نختار الصفوف التي يكون فيها التعبير بعد الكلمة الأساسية مساويًا لـ "True".

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

حيث الرمز = "005215"

باستخدام عامل التشغيل "VALUE()" في الشروط، استخدم الوصول إلى العناصر والتعدادات المحددة مسبقًا في طلب 1C:

حيث نوع العنصر = القيمة (Enumeration.Item Types.Product)

ويمكن تحديد القيم الزمنية على النحو التالي:

أين تاريخ الاستلام > DATETIME(2012,01,01):

في أغلب الأحيان، يتم تحديد الشروط كمعلمات تم تمريرها إلى الطلب:

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

حيث NomenclatureGroup= &NomenclatureGroup

يمكن فرض شرط على نوع السمة إذا كان من النوع المركب:

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

أين يوجد سجل التراكم ب (&قائمة المستندات للاختيار)

يمكن أن تكون الحالة أيضًا معقدة، وتتكون من عدة شروط:

حيث تاريخ الاستلام > DATETIME(2012,01,01) وNomenclatureGroup= &NomenclatureGroup وليس الخدمة

مجموعة من

تصميم لغة الاستعلام 1C 8.2 المستخدمة لتجميع النتيجة.

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

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

مجموعة من
استلام البضائعServicesGoods.Goods

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

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

نأخذ

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

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

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

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

SUM(استلام البضائع، الخدمات، السلع، الكمية) > 5

لذلك سوف نقوم باختيار عدد المنتجات التي وصلت أكثر من 5 قطع.

معنى()

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

أين البنك = القيمة (Directory.Banks.EmptyLink)

حيث نوع التسمية = القيمة (الدليل.أنواع التسمية.المنتج)

حيث نوع العنصر = القيمة (Enumeration.Item Types.Service)

اكتب في الطلب

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

يعبر()

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

بناء الجملة: يعبر(<Выражение>كيف<Тип значения>)

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

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

يختار
معلومات الاتصال. الكائن،
EXPRESS(ContactInfo.View AS ROW(150)) AS View
من
سجل المعلومات معلومات الاتصال كيف معلومات الاتصال

مجموعة من
EXPRESS(ContactInfo.Representation AS ROW(150))،
معلومات الاتصال.Object

إسنول (إسنول)

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

ISNULL(ضرائب ما قبل الشهر. فائدة FSS المطبقة، 0)

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

ينضم

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

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

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

مثال على الانضمام الأيسر في طلب 1C:

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

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

اتصال كامل

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

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

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

بواسطة

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

صلة داخلية

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

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

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

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

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

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

خاتمة

هذا ليس سوى جزء صغير من بناء الجملة من لغة الاستعلام 1C 8؛ سأحاول في المستقبل النظر في بعض النقاط بمزيد من التفصيل والعرض وغير ذلك الكثير!

في هذه المقالة نريد مناقشة كل شيء معك 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 |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GROUP BY | ProductsInWarehouses.Nomenclature، | Tres.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 | الحسابات. اتفاقية الطرف المقابل. نوع الاتفاقية كنوع العقد، | الحسابات. اتفاقية الطرف المقابل كعقد، | الحسابات. الطرف المقابل، | الحسابات. مبلغ رصيد التسوية المتبادلة كرصيد | من | سجل التراكمات. المتبادلة التسوية مع الأطراف المقابلة. الحسابات | الإجمالي |. المبلغ (الرصيد) |على |عام، |نوع الاتفاقية";

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

طلب .نص = "يختار | وحدات التخزين. الرابط |من | Directory.usStorageUnits كيفية استخدام وحدات التخزين // المثال 1: المقارنة بقيمة منطقية فارغة: |أين | StorageUnits.AllowSelectionFromReserveZone = خطأ // مثال 2. لكن إذا تم تعريف هذه القيمة المنطقية، فمن الأفضل أن تكون على النحو التالي: // شرط القيمة المنطقية السالبة: |أين | لا تسمح وحدات التخزين بالاختيار من المنطقة الاحتياطية // مثال 3. الاختيار بناءً على حالة حقل فارغ من النوع "دليل من نوع محدد" |أين | StorageUnits.ActiveSelectionArea = VALUE(Directory.usSelectionArea.EmptyRef) // مثال 3أ. الاختيار بناءً على حالة وجود حقل فارغ من النوع "مستند من نوع معين" |أين | OurInformationRegister.Document = VALUE(Document.OURDocument.EmptyLink) // مثال 3ب. يعتمد الاختيار على حالة الحقل الفارغ الذي يحتوي على نوع "مستندات من أنواع مختلفة" ( المجال المركب) |أين | (OURInformationRegister.Document = VALUE(Document.OURDocument1.EmptyLink) | أو OurInformationRegister.Document = VALUE(Document.OURDocument2.EmptyLink) | أو... (إلخ. - نقوم بإدراج الشروط لجميع الأنواع المحتملة لهذا الحقل المركب بشكل تسلسلي) ) // مثال 4. أو العكس، إذا كنت بحاجة إلى تحديد قيمة مملوءة من النوع "سلسلة"، فإن الشرط سيساعد: |أين | اسم وحدة التخزين > """" // مثال 5. إذا كنت بحاجة إلى تحديد مستندات من نوع معين، مع نوع بيانات مركب، على سبيل المثال، في سجل "RunningTasks"، فإن مورد "المهمة" له نوع مركب، من بين قيمه وثيقة "الاختيار" ممكن |أين | EXPRESS(معلومات التسجيلExecutedTasks.Task AS Document.Selection) رابط Document.Selection // مثال 5أ. مثال آخر مشابه عندما تحتاج إلى تحديد مستندات من نوع معين | الاختيار | متى يتم التعبير عن (ag مراسلات المستندات. DocumentBU AS Document. استلام البضائع والخدمات) رابط استلام البضائع والخدمات | ثم ""استلام البضائع والخدمات"" | متى يتم التعبير عن (ag مراسلات المستندات. DocumentBU AS Document. مبيعات السلع والخدمات) وثيقة الارتباط مبيعات السلع والخدمات | ثم ""مبيعات السلع والخدمات"" | آخر """" | نهاية كعرض المستند // مثال 6. الاختيار حسب الشرط لقيمة غير محددة: |أين | SavedSettings.User = غير محدد // مثال 7. الاختيار حسب نوع الحركة "الواردة" لسجل التراكم، "المصروفات" - بالمثل): |أين | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Incoming) // مثال 8. كيفية الإشارة في الطلب إلى أنه ليس من الضروري تنفيذ الطلب (على سبيل المثال، تحتاج برمجيًا، اعتمادًا على بعض الشروط، إلى إرجاع نتيجة طلب فارغة - Request.Text = StrReplace(Request.Text, "أين Doc.Link = &DocumentLink"، "أين الكذبة")؛). للقيام بذلك، فقط أضف الشرط "أين الخطأ". بالمناسبة، بغض النظر عن حجم البيانات المطلوبة في العينة، سيتم تنفيذ هذا الطلب على الفور. |أين الكذبة؟ // مثال 9. التحقق من أن نتيجة الاستعلام تحتوي على بيانات: ان لمطلب.ينفذ().فارغ() ثم // مثال 10. التحديد بناءً على تاريخ فارغ: |أين | tbStrings.CancellationDate = DATETIME(1, 1, 1)

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

أنواع القيمة

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

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

فحص

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

نوع القيمة(القيمة) = النوع(سلسلة)

في المثال أعلاه، قمنا بتعريف النوع الأبسط باستخدام الأمر. مثال آخر للتحقق من صحة الطلب:

توثيق

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

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

بالإضافة إلى ذلك، هناك مصطلحات خاصة تميز أي بيانات:

  • استمارة؛
  • خط؛
  • منطقية؛
  • رقم؛
  • تاريخ؛
  • مجموعة مصفوفة؛
  • خانة الاختيار؛
  • صورة.

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

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


يغلق