القيم الخالية (هناك فارغة وهناك فارغة ()). استخدام الدالة isnull() الاختلافات بين الدالة isnull() وisnull

💖 هل يعجبك؟شارك الرابط مع أصدقائك

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

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

هل لديك سؤال أو تحتاج إلى مساعدة من مستشار؟

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

تعد لغة الاستعلام 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؛ سأحاول في المستقبل النظر في بعض النقاط بمزيد من التفصيل والعرض وغير ذلك الكثير!

باطل- قيم مفقودة.
لا ينبغي الخلط بينه وبين القيمة صفر! NULL ليس رقمًا، ولا يساوي مسافة، أو مرجعًا فارغًا، أو غير محدد.

NULL هي قيمة تشكيل الكتابة، أي. يوجد نوع NULL وقيمة واحدة من هذا النوع.

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

باطلالمستخدمة في عامل التشغيل SELECT (كما لو كان التحقق من أن القيمة فارغة (القيمة فارغة)):
الكود 1C الإصدار 8.x
خيار
عندما تكون القيمة فارغة ثم ResultIfNULL
معنى آخر
نهاية

مثال آخر:
الكود 1C v 8.x حدد

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



أين

وظيفة ISNULL(القيمة، ResultIfNULL)تُرجع قيمة المعلمة الأولى الخاصة بها إذا لم تكن فارغة، وقيمة المعلمة الثانية بخلاف ذلك
تم طيه SELECT...END، ولكن يفضل ISNULL.
الكود 1C الإصدار 8.x
يختار
ISNULL(Directory.Nomenclature.Article, "---") كمادة،
Directory.Nomenclature.Presentation AS التسميات

مثال آخر:
الكود 1C الإصدار 8.x
يختار
دليل التسمية،
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS الكمية المتبقية
من
Directory.Nomenclature AS DirectoryNomenclatures
الاتصال الأيسر سجل التراكمات محاسبة الأصناف
عنصر البرنامج AccountingRemains.Nomenclature = Nomenclature Directory.Link
أين
دليل التسمية. هذه المجموعة = خطأ
في هذا المثال يتم الحصول على جميع عناصر دليل العناصر، وبعد ذلك يتم الحصول على الأرصدة الحالية لكل عنصر من سجل التراكم. لأن بالنسبة للعنصر الذي لا توجد أرصدة له، لن يقوم جدول الأرصدة الافتراضي بإرجاع سجل، ثم نتيجة للاتصال في الحقل "Item AccountingRemaining.QuantityRemaining" ستكون هناك قيم فارغة للعنصر الذي يوجد به لم تكن هناك أرصدة. للتأكد من أن نتيجة الطلب تحتوي على القيمة 0 بدلاً من القيمة NULL، استخدمنا الدالة ISNULL() التي ستقوم بالاستبدال المطلوب.

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

لا يمكنك التحقق من قيم NULL باستخدام المساواة المعتادة، لأن SQL تستخدم منطقًا ثلاثي القيمة - True، False، NULL، وستكون نتيجة هذه المقارنة غير معروفة، والتي تشبه FALSE في 1C 8.0.
باطل<>0، لذلك بالنسبة للصلات الخارجية اليسرى، راجع. التسميات مع جداول الأرصدة والأسعار والأطراف المقابلة مع التسويات المتبادلة، في حالة عدم وجود مثل هذه السجلات سيكون هناك NULL، وهو ما لا يساوي 0. الحل الأفضل هو ISNULL

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

الوظيفة غير كاملة

تطبق لغة الاستعلام الدالة ISNULL()، والغرض منها هو استبدال تعبير بتعبير آخر إذا كان التعبير له القيمة NULL. يبدو مخطط بناء الجملة لهذه الوظيفة كما يلي:

باطل(<Проверяемое выражение>, <Выражение замены>)

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


يختار
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS الكمية المتبقية
من

أين

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

باستخدام عملية التحديد

لحل المشكلة الموضحة سابقًا، يمكنك استخدام عملية لغة الاستعلام SELECT. مثال لكيفية ظهور طلب مشابه للطلب السابق سيكون كما يلي:


يختار
دليل التسمية،
اختر عندما تكون عناصر المحاسبة المتبقية.الكمية المتبقية فارغة ثم 0
بخلاف ذلك، يتم حساب الكمية المتبقية ككمية متبقية
من
Directory.Nomenclature AS DirectoryNomenclatures
الاتصال الأيسر سجل التراكمات محاسبة الأصناف
عنصر البرنامج AccountingRemains.Nomenclature = Nomenclature Directory.Link
أين
دليل التسمية. هذه المجموعة = خطأ

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

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

ميزات الدالة ISNULL

الدالة ISNULL()، على الرغم من أنها تناظرية لعملية SELECT مع التحقق من قيمة NULL، إلا أنها تحتوي على اختلاف. الفرق هو أنه إذا كان تعبير الدالة من نوع سلسلة أو رقمي، فسيتم تحويل التعبير البديل إلى نوع التعبير الذي يتم اختباره.

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

الوضع مشابه مع التعبيرات الرقمية: سيتم تحويل قيمة التعبير المستبدل إلى نوع التعبير الذي يتم التحقق منه، أي. قد يتم اقتطاع التعبير الذي يتم استبداله. إذا تعذر تحويل القيمة، فستفشل لغة الاستعلام في الاستعلام. على سبيل المثال، ستفشل محاولة تحويل الرقم 1000 إلى النوع Number(2) مع حدوث خطأ.

عند العمل مع الاستعلامات، يجب على أي مبرمج أن يتفاعل مع القيم الفارغة بطريقة أو بأخرى. ماذا نعني بالقيمة الفارغة؟

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

أنواع القيم الخالية

دعونا نلقي نظرة على أنواع القيم الفارغة التي قد تتم مواجهتها أو المطلوبة في الاستعلام.

  • بالنسبة لنوع الرقم، القيمة الفارغة هي صفر – 0.
  • بالنسبة لنوع السلسلة - سلسلة فارغة - "".
  • بالنسبة لنوع التاريخ – 1 يناير من السنة الأولى – 01/01/0001 00:00:00. ومن هذا التاريخ يتم حساب الوقت بالرقم 1C.*
  • بالنسبة للنوع المنطقي، تكون القيمة الافتراضية False من الناحية الفنية، ولكن منطقيًا تكون قيمتا النوع مبطنتين. ولذلك، فإن تحديد ما إذا كانت القيمة الفارغة خاطئة أم لا يعتمد على منطق خوارزمية محددة.

*كن حذرًا، يوجد خارج 1C أنظمة مختلفة لحساب التاريخ بنقاط بداية مختلفة.

القيمة المفقودة تتوافق تمامًا مع النوع فقط باطل.يحتوي هذا النوع على قيمة واحدة فقط، مما يشير إلى عدم وجود قيمة.

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

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

العمل مع القيم الخالية في الاستعلام

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

أنواع رقم، سلسلة، منطقيةموصوفة في الطلب كما في اللغة المضمنة:

حدد 0 AS exampleTypeNumber، "Hello World" AS exampleTypeString، True AS exampleTypeBoolean

غير محدد، كونه في الأساس نوعًا بدائيًا، يتم وصفه بالمثل:

حدد Batch.Period من تراكم التسجيل.Batch كدفعة حيث Remains.DocumentBatch = غير محدد

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

اختار القيمة(Directory.Nomenclature.EmptyLink) كيفية إفراغ التسميات

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

  • يتيح لك عامل التشغيل Is Null إنشاء تعبير منطقي يقارن القيمة المحددة بالقيمة Null.
  • تقوم الدالة IsNull بإرجاع الوسيطة الأولى إذا لم تكن خالية، والوسيطة الثانية بخلاف ذلك.

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

أمثلة عملية

استخدام وظيفة القيمة

حدد Products.Link كتسمية، Products.Link = القيمة (Directory.Nomenclature.EmptyLink) مثل هذا الرابط فارغ من TueProducts كـ TueProducts

استخدام عامل التشغيل Is Null

حدد المنتجات.الرابط كتسمية، المنتجات.الرابط فارغ مثل هذا الرابطفارغ من Tueالمنتجات كـ TueProducts

فارغة على اليسار أو الانضمام الكامل

فحص فارغ

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

حدد TueProducts.Link كتسمية، تبقى.QuantityRemaining ككمية، المتبقية.QuantityRemaining خالية كما لا تبقى من TueProducts كـ TueProducts اتصال اليسار RegisterAccumulations.ProductsInWarehouses.Remains كما تبقى بحلول TueProducts.Link = Remains.Nomenclature

التعامل مع القيم الخالية

تعديل الاستعلام السابق لتوضيح تقنية شائعة للحصول على بعض القيم الافتراضية لتحل محل القيم المفقودة. في هذا المثال، باستخدام الدالة IsNull، يتم استبدال القيمة المتبقية المفقودة بـ 0 الصحيح منطقيًا.

حدد TueProducts.Link كتسمية، IsNull (Remaining.QuantityRemaining، 0) ككمية من TueProducts كـ TueProducts اتصال اليسار RegisterAccumulations.ProductsInWarehouses.Remains كما تبقى بحلول TueProducts.Link = Remains.Nomenclature

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

أخبر الأصدقاء