قيمة الوظيفة. قيمة الوظيفة التعدادات في الطلب 1s 8.2

تعد لغة الاستعلام 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 8.2 يُستخدم لإنشاء وتنفيذ استعلامات لجداول قاعدة البيانات في النظام. لتنفيذ استعلام، تحتاج إلى إنشاء نص استعلام يصف الجداول التي سيتم استخدامها كمصادر بيانات استعلام، وما هي الحقول التي يجب تحديدها، وما هي عمليات الفرز والتجميع التي سيتم تطبيقها، وما إلى ذلك. يمكنك قراءة المزيد حول الاستعلامات في كتاب "دليل مطور 1C 8.2". لغة الاستعلام 1C 8.2 متشابهة جدًا في بناء الجملة مع لغات استعلام قاعدة بيانات SQL الأخرى، ولكن هناك أيضًا اختلافات. من بين المزايا الرئيسية للغة الاستعلام المضمنة، تجدر الإشارة إلى عدم مرجعية الحقول، ووجود الجداول الافتراضية، والعمل المريح مع الإجماليات، والحقول غير المكتوبة في الاستعلامات. تتمثل العيوب في أنه لا يمكنك استخدام استعلام كحقل إخراج، ولا يمكنك استخدام الإجراءات المخزنة، ولا يمكنك تحويل سلسلة إلى رقم.

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

أين المدينة = VALUE(Directory.Cities.Moscow)

أين المدينة = VALUE(Directory.Cities.EmptyLink)

WHEREProductType = VALUE(Enumeration.ProductTypes.Service)

WHEREMovementType = VALUE(MovementTypeAccumulation.Incoming)

أين تقع نقطة الطريق =

VALUE(BusinessProcess.Agreement.RoutePoint.Agreement)

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

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

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

مثال لطلب يحتوي على حقل غامض:

يختار

البضائع المتبقية المتبقية.الكمية المتبقية

Directory.Nomenclature AS التسميات

الاتصال الأيسر تسجيل التراكمات المتبقية البضائع

المنتجات المتبقية من البرنامج Remaining.Nomenclature = Nomenclature.Link

من الضروري تصحيح الاسم المستعار للجدول، على سبيل المثال، مثل هذا: يجب تصحيح "Directory.Nomenclature AS Nomenclature1" و"Nomenclature.Link" وفقًا لـ "Nomenclature1.Link".

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

يختار

التمثيل (المستند.الطرف المقابل) كمستلم،

العرض التقديمي (Document.Base)

Document.Invoice كمستند

5. استخدم في الطلب EXPRESS (نوع الحقل AS)يسمح لك بإزالة الجداول غير الضرورية من اتصال بحقل من نوع بيانات معقد. وبالتالي تسريع تنفيذ الطلب.

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

حدد مختلف
EXPRESS(البضائع المتبقية. المسجل كوثيقة.استلام البضائع).الرقم كرقم الإيصال،

EXPRESS (البضائع المتبقية. المسجل كمستند. استلام البضائع). التاريخ كتاريخ الاستلام

من
سجل تراكمات البضائع المتبقية
أين
(EXPRESS (البضائع المتبقية. المسجل كمستند. استلام البضائع) ليس فارغًا)

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

7. عند دمج الجداول التي تحتوي على جداول متداخلة (على سبيل المثال، مستند يحتوي على جزء جدولي)، يمكن أن تكون الكلمة الأساسية مفيدة فارغعلى سبيل المثال، عندما لا تحتوي إحدى المستندات على جزء جدولي.

الجمع بين كل شيء

من الوثيقة.الفاتورة

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

مثال (مفتعل بشكل معترف به، للانضمام الكامل):

يختار

ك. الطرف المقابل

التعداد

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

تشغيل (صحيح)

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

مثال ل أولاً:

اختر أول 5

Directory.Nomenclature.Name،

Directory.Nomenclature.PurchasingPrice

ترتيب حسب

Directory.Nomenclature.PurchasePrice تنازلي

مثال ل متنوع:

حدد مختلف

Document.Consumable.Counterparty

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

يختار

المبلغ(الفاتورة.المبلغ) كمبلغ

Document.Invoice.Composition كفاتورة

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

يختار


استلام البضائع والسلع الخدمات الكمية AS الكمية،
استلام البضائع والخدماتGoods.Link.Counterparty
من

أين
استلام البضائع والخدماتGoods.Link = &Link

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

يختار

استلام البضائع والسلع الخدمية.

استلام السلع والخدمات رمز التسمية.

SUM (استلام السلع والخدمات. الكمية) AS الكمية،

وثيقة استلام البضائع والخدمات. كيفية استلام البضائع والخدمات

مجموعة من

استلام البضائع والسلع الخدمية.

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

يختار

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

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

وثيقة استلام البضائع والخدمات كيفية استلام البضائع والخدمات

مجموعة من

استلام البضائع والخدمات (التسميات).

12. في بعض الأحيان، بدلاً من تحديد أي حقل في التجميع، من المفيد تضمين المعلمة التالية في حقول تحديد الاستعلام:

يختار
DocProducts.Nomenclature،
&الطرف المقابل،
&فترة،
SUM(DocProducts.Quantity * DocProducts.K) ككمية،
SUM(DocProducts.Amount) كمبلغ
من
Document.Admission.Products AS DocProducts
أين
DocProducts.Link = &Link

مجموعة من
DocProducts.Nomenclature

ثم قم بتعيين المعلمة في نص الطلب:

Request.SetParameter("&Account"، SelectAccount);

Query.SetParameter("&Period", Date);

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

أ) باستخدام آلية تسلسل السلسلة، وإضافة متغيرات إلى نص الطلب؛

OrderingType = ?(SOME VARIABLE,""DESC");

Query.Text = "حدد... ترتيب حسب الحقل1" + OrderType + "...";

Query.Text = "اختر الحقل1...";

إذا كان بعض المتغير = 1 ثم

Request.Text = Request.Text + ",Field2 ...";

إنهاء إذا؛

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

يختار

DocTch.التسميات،

&بعض DocTC AS DocTC

ثم قم بتعيين المعلمة في نص الطلب

Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Document."+Link.Metadata().Name+".Products");

يمكن استخدام المعلمات في شروط الاستعلام لتمكين شرط اختياري &المعلمة أو ليست بعض الخصائص:

Request.SetParameter("&Parameter", "Counterparty.Name=""Ivanov""");

باستخدام الحرفي حقيقييمكنك إزالة عوامل تصفية معينة في الطلب

Query.SetParameter("&Parameter"، True);

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

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

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

المنتج ب (حدد المنتج...)

16. عند تصميم تقارير ACS في الاستعلامات لموازنة السجلات، يكون من المناسب والأصح استخدام التعبير كمعلمة الفترة AddToDate(EndPeriod(Period,DAY),SECOND,1)حيث يتم الحصول على الأرصدة الافتراضية في بداية الفترة ولا تشمل الثانية الأخيرة. لا يمكن استخدام تقنية +1 ثانية مع المستندات: وفقًا للطريقة الجديدة لترحيل المستندات، يجب استلام أرصدة التسجيل للفترة المحددة بواسطة كائن الحدود مع اللحظة الزمنية للمستند بما في ذلك (وليس في تاريخ مستند +1 ثانية!)، ووفقًا لطريقة الترحيل القديمة - في وقت المستند (وليس في تاريخ المستند!). عند تحليل معدل الدوران أو البيانات لفترة ما، يكون من المناسب إضافة معلمة مع النوع فترة قياسية(في هذه الحالة ليست هناك حاجة لتقديم التاريخ الأخير للفاصل الزمني في نهاية اليوم). بالنسبة للحقل القياسي "بداية الفترة"، يجب عليك إدخال حقل "التعبير". "&الفترة.تاريخ البدء" وبالنسبة للمجال القياسي "نهاية الفترة" في حقل "التعبير" اكتب " &الفترة.تاريخ الانتهاء".يمكن العثور على الكثير من المعلومات المفيدة حول لغة الاستعلام ليس في مساعد بناء الجملة، ولكن في المساعدة الكاملة لمكون 1C 8.2 (زر F1)

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

IsNull(Reg.Remaining,0)

IsNull(Doc.Product,Doc1.Item)

18. في البناء المشروط خيارهناك صيغة بديلة للحالة البسيطة المتمثلة في اختبار المساواة لقيمة معينة، ولكنها غير موثقة:

اختيار التعبير عندما 1 ثم "عالي" عندما 2 ثم "متوسط" آخر "منخفض" النهاية

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

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

...أين المنتج.الاسم ب ("الأجهزة المنزلية"، "أجهزة الكمبيوتر")

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

...أين التسمية في التسلسل الهرمي (&المجموعة)

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

في الاستعلام الفرعي، يمكنك الوصول إلى حقول الاستعلام الخارجي في شرط ما.

// حدد أسماء المنتجات التي كانت موجودة

// في الفواتير

يختار

اسم المنتجات

Directory.Nomenclature كيف المنتجات

(يختار

InvoiceComposition.Nomenclature

Document.Invoice.Composition AS InvoiceComposition

InvoiceContent.Nomenclature = Products.Link)

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

بناء الجملة لاستعلام فرعي

(التعبير1، التعبير2،...،التعبيرN) في (اختر التعبير1، التعبير2،...،التعبيرN...)

بناء الجملة لجدول القيمة

(expression1, Expression2,...,expressionN) في (&TK)، حيث يتم استخدام الأعمدة N الأولى في جدول قيم TK

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

1C: المؤسسة تحب "اليسار".

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

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

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

مثال على طلب به خلل يتلقى آخر مستند منشور للطرف المقابل المحدد (أو بالأحرى الجزء الجدولي من المستند):

يختار

المواد الاستهلاكية. رقم السطر،

المنتجات الاستهلاكية.المنتج،

المواد الاستهلاكية.الكمية،

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

ConsumableItems.Amount

Document.Consumable AS D

الحلول الممكنة:

أ) استبدل بـ ترتيب حسبعلى

الطلب حسب D.Date DESC.

ب) يمكنك نقل الاستعلام المتداخل إلى جدول مؤقت:

Document.Consumable AS D

وD.Counterparty = &Counterparty

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

يختار

المواد الاستهلاكية. رقم السطر،

المنتجات الاستهلاكية.المنتج،

المواد الاستهلاكية.الكمية،

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

ConsumableItems.Amount

Document.Consumables.Goods AS ConsumablesGoods

ج) يمكنك الرجوع إلى الجدول الرئيسي للمستند، وبعد ذلك فقط إلى الجزء الجدولي

اختر أعلى 1

رقم السطر،

منتج،

كمية،

سعر،

مجموع

Document.Consumables كما المواد الاستهلاكية

Expense.Counterparty = &Counterparty

والمواد الاستهلاكية.أجريت

ترتيب حسب

المستهلكة. لحظة انخفاض الوقت

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

تتمثل ميزة هذا الاستعلام عن الاستعلام الموجود في الجدول المتداخل Receipt.Goods في أنه في حالة وجود نسخ مكررة في المستندات، فإن نتيجة الاستعلام ستعرض مستندات فريدة فقط دون استخدام الكلمة الأساسية متنوع.

يقارن:

ربما هذا هو كل ما في الأمر. من الواضح أنه لا تزال هناك أسئلة كثيرة في لغة الاستعلام لم أقم بتغطيتها. لكتابة هذه المقالة، استخدمت المعلومات التي تلقيتها بعد إكمال الدورة الأساسية 1C 8.2 spec8.ru، وكذلك من كتاب "1C 8.2 Developer's Guide" والإنترنت.

انتباه! هذه نسخة تمهيدية من الدرس، وقد تكون موادها غير مكتملة.

قم بالدخول إلى الموقع كطالب

قم بتسجيل الدخول كطالب للوصول إلى المواد المدرسية

لغة الاستعلام 1C 8.3 للمبرمجين المبتدئين: وظيفة VALUE

وظيفة معنى المعدة للتداولفي هيئة الطلب لقيم التعداد النظامو بيانات محددة مسبقا.

تسأل ما هي هذه التعدادات والبيانات المحددة مسبقًا؟ دعونا نتحدث عن كل شيء بالترتيب.

التحويلات

التحويلات- هذا كائن تطبيق (تذكر أن هناك أيضًا الدلائلو توثيق). لماذا كان في حاجة إليه؟

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

الثبات هو ورقتهم الرابحة الرئيسية. هذه هي نوع من ثوابت قاعدة البيانات.

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

تخيل ماذا سيحدث لو حاول استخدام الدليل لهذه الأغراض؟

أولاً، سوف يأخذها بعض المستخدمين ويضيفون نوعًا من "أرضية المريخ".

ثانيًا، سيمضي مستخدم آخر في حذف أحد الأجناس الموجودة أو تغيير اسمه.

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

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

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

هنا هو تعدادنا مع الاسم أرضية. ما هي القيم التي يمكن أن تتخذها؟

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

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

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

لنقم الآن بإنشاء استعلام يحدد العملاء وجنسهم من قاعدة البيانات:

الآن دعونا نغير الاستعلام بحيث يبقى الرجال فقط. إذا حاولنا أن نكتب شيئًا مثل:

ثم لا نحصل على شيء:

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

لذلك، واحدة من مهام الوظيفة معنى- استخدام قيم التعداد في الاستعلامات.

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

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

في قاعدة بيانات "Gastronom" الخاصة بنا (في وضع المستخدم)، افتح دليل "وحدات القياس":

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

بشكل عام، إذا تم تحديد أي عنصر من عناصر الدليل مسبقًا (أي أن هناك دائرة صفراء عليه)، فهذا عنصر خاص.

أولاً، هذا يعني أن العنصر تم إنشاؤه في مرحلة التكوين بواسطة المبرمج (في حالتنا، هذه عناصر ذات رموز 1 و2 و3).

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

هذا هو السبب في أن حذف مثل هذا العنصر ببساطة لن ينجح. حاول وضع علامة عليه للحذف:

لننتقل الآن إلى وضع التكوين ونرى أين يتم إنشاء هذه العناصر المحددة مسبقًا (في هذه الحالة لدليل وحدات القياس):

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

بالنسبة للعنصر الذي يحمل الرمز 1، يكون هذا الاسم هو Ton، مع الرمز 2 - Gram وهكذا. يسمى هذا الاسم اسم العنصر المحدد مسبقًاوبهذا الاسم يمكنك الوصول إليه من الكود (أو من الطلب في حالتنا).

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

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

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

خذ الاختبار

ابدأ الاختبار

1. يتم تعيين قيم التعداد

2. لتخزين قائمة المستودعات في الشركة، نوعها

3. لتخزين قائمة وحدات القياس في المستودع، نوعها

4. لتخزين معدلات الضرائب، لا ينبغي للمستخدم تغيير قائمتها، النوع

5. للوصول إلى قيمة التعداد في الطلب، استخدم الوظيفة

6. لتخزين معدلات الضرائب، والتي سيتم تغيير القائمة من قبل المستخدم، النوع

7. تأتي البيانات المحددة مسبقًا مع