الرقم بالترتيب في الطلب هو 1c. وظائف العرض وViewLink

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

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

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

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

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

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

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

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

وظيفة باطل

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

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

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

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

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

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

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

طلب. نص= "يختار
التمثيل (صحيح) كمنطقي،
التمثيل (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)
ثم "
الطرف المقابل "
اختيار آخر
عندما تكون القيم TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
ثم "
فردي"
آخر "شخص آخر" "
نهاية
نهاية كمالك
من
سجل معلومات الاتصال كمعلومات الاتصال"
;

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

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

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

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

في تكوين الاختبار في سجل المستند، من الضروري تنفيذ ترقيم الأسطر في قائمة ديناميكية. تتضمن المجلة ثلاث وثائق: "الطلب" و"الأمر الوارد" و"الأمر الصادر". في البداية، يبدو نموذج قائمة سجل المستندات كما يلي:

من حيث المبدأ، سيتم حل المشكلة بسهولة إذا تلقينا قائمة بالوثائق في التقرير. لكن هنا الأمور مختلفة.

التقارير ليست مشكلة!

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

ونتيجة لذلك، سيرى المستخدم نتيجة إنشاء تقرير مماثلة:

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

الترقيم في الطلب

لنغير الاستعلام الخاص بقائمة سجل المستندات الديناميكية كما يلي:

"اختر | ت . رقم في الطلب,| ت . وصلة،| ت . تاريخ،| ت . علامة الحذف,| ت . رقم،| ت . أُجرِي| ت . يكتب |من | (يختار" + // احصل على عدد الروابط المرفقة في الحقل "NumberByOrder"." كمية (مجلة وثائق مختلفة، مجلة الوثائق. الرابط) رقم AS بالترتيب، | مجلة الوثيقة. رابط AS رابط، | مجلة الوثيقة. التاريخ كتاريخ، | مجلة الوثيقة. MarkDeletion AS MarkDeletion, | مجلة الوثيقة. رقم AS رقم، | مجلة الوثيقة. أجريت كما أجريت، | مجلة الوثيقة. اكتب نوع AS | من | مجلة الوثيقة. مجلة الوثيقة AS مجلة الوثيقة | الانضمام الأيسر إلى DocumentJournal. مجلة الوثيقة AS مجلة الوثيقة وثيقة مجلة الوثيقة" + // قم بتوصيل جدول سجل المستند بنفسه عبر رابط مستند. عدد الاتصالات // الروابط هي الرقم التسلسلي " برنامج توثيق اليومية. الرابط > = DocumentJournalDocumentJournal. وصلة / | | مجموعة من | مجلة الوثيقة. وصلة، | مجلة الوثيقة. تاريخ، | مجلة الوثيقة. علامة الحذف, | مجلة الوثيقة. رقم، | مجلة الوثيقة. أُجرِي | مجلة الوثيقة. النوع) AS T"

عند فتح قائمة ديناميكية في وضع 1C:Enterprise، نحصل على النتيجة التالية:

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

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

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


الكلمات المفتاحية: ترقيم خطوط الاستعلام، FIRST، خطوط الترقيم في المنشئ، رقم

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

لذلك، هناك كود يحدد العناصر، مرتبة حسب الاسم:
يختار
التسميات. الرابط
من

ترتيب حسب
التسمية.الاسم
الطلب الأصلي

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

من
Directory.Nomenclature AS التسميات
Software Nomenclature.Name >= Nomenclature_1.Name // شرط الفرز للترقيم

ترتيب حسب
التسمية.الاسم
الاستعلام مع أرقام الأسطر

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

يمكن استخدام تقنية مماثلة إذا كنت بحاجة إلى تحديد ترقيم الصفوف مع مراعاة التجميع حسب بعض الحقول.
يختار
Nomenclature.Link AS Nomenclature،
Nomenclature.Parent AS Parent،
الكمية (Nomenclature_1.Link) رقم AS
من
Directory.Nomenclature AS التسميات
INNER JOIN Directory.Nomenclature AS Nomenclature_1
Nomenclature.Name >= Nomenclature_1.Name
وNomenclature.Parent = Nomenclature_1.Parent

مجموعة من
التسمية. الأصل،
التسميات. الرابط
استعلام بأرقام الأسطر ضمن مجموعة

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

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

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

على سبيل المثال، نواجه مهمة الحصول لكل طرف مقابل على آخر خمس وثائق لاستلام السلع والخدمات:
يختار
استلام البضائع والخدمات الطرف المقابل،
استلام البضائع والخدمات الرابط AS Link،
الكمية(استلام البضائع والخدمات_1.الرابط) رقم AS
من
وثيقة استلام البضائع والخدمات كيفية استلام البضائع والخدمات
وثيقة الانضمام الداخلي استلام البضائع والخدمات AS استلام البضائع والخدمات_1
تاريخ استلام البضائع والخدمات<= ПоступлениеТоваровУслуг_1.Дата
واستلام البضائع والخدمات = الطرف المقابل

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

نأخذ
الكمية(استلام البضائع والخدمات_1.الرابط)<= 5

ترتيب حسب
الطرف المقابل،
رقم
طلب بأرقام الأسطر في حالة وجود نسخ مكررة من مجال الاهتمام (المجال الذي يتم بناء العداد عليه)
يختار
الكمية (الأفراد_1.الاسم) رقم AS،
الأفراد الارتباط بالاسم الكامل
من
الدليل.الأفراد كأفراد
دليل الانضمام الداخلي.الأفراد كأفراد_1
البرنامج (Individuals.Name +dividuals.Code >= الفردي_1.الاسم + الفردي_1.الرمز)

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