اختيار منشئ الاستعلام 1C 8.2. العمل مع منشئ التقارير ومنشئ الاستعلامات على مصدر بيانات مخصص

1. ما هو منشئ التقارير؟

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

تتضمن إعدادات منشئ التقارير ما يلي:

  • المجموعات (على سبيل المثال: "التسميات"، "الطرف المقابل"...)،
  • المؤشرات (مثال: "الكمية"، "المبلغ"...)،
  • حقول إضافية (مثال: "Item.Service"، "Account.Code"...)،
  • التصفية (على سبيل المثال: حسب عنصر محدد، حسب مجموعة الأطراف المقابلة...) و
  • الفرز (مثال: "Nomenclature.Code"، "Counterparty.Name"...)

تحتوي إعدادات المنشئ على أدوات تصور، مما يسمح للمبرمج بتزويد المستخدم بواجهة لإعدادها بأقل جهد.

قبل الإخراج، يمكنك تصميم تخطيط منشئ التقرير باستخدام تخطيط المظهر.

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

2. أين يمكنني استخدام أداة إنشاء التقارير؟

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

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

نظرًا لأن منشئ التقارير غير متوفر على خادم 1C:Enterprise ولا يتم استخدامه في وحدة الاتصال الخارجية، فمن الضروري في هذه الحالات استخدامه منشئ الاستعلام، والتي تشبه أداة إنشاء التقارير، ولكنها لا تحتوي على خصائص وأساليب مرئية ("Layout"، "OutputReportTitle"، "Output()"، "DesignLayout()"...).

3. قليلا عن المفاهيم

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

مفهوم

وصف

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

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

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

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

4. حالة الاستخدام النموذجي لمنشئ التقرير

بشكل عام، يكون تسلسل الإجراءات عند العمل مع منشئ التقارير كما يلي:

  1. إنشاء كائن جديد "منشئ التقرير"؛
  2. تعيين نص الطلب إلى خاصية "النص"؛
  3. إذا لم يتم تحديد إعدادات منشئ التقرير في نص الطلب، فقم بتنفيذ طريقة "FillSettings()"؛
  4. تزويد المستخدم بالقدرة على تغيير إعدادات منشئ التقارير؛
  5. إذا لزم الأمر، يمكنك رفض الإنشاء التلقائي للتخطيط بواسطة منشئ التقارير وتعيين تخطيط ثابت لخاصية "التخطيط"؛
  6. إذا لزم الأمر، يمكنك تعيين خاصية "تخطيط التصميم" لأحد الخصائص القياسية أو التخطيط الخاص بك، وإذا تم استبدال التخطيط الذي تم إنشاؤه تلقائيًا لمنشئ التقارير بتخطيط ثابت، فقم بتنفيذ "DesignLayout()" طريقة؛
  7. استدعاء طريقة "Run ()" ؛
  8. اتصل بطريقة "الإخراج ()".
Builder = "منشئ التقرير" الجديد؛ Builder.Text = "SELECT ALLOWED | Company CashRemains.StructuralUnit, | SUM(CompanyCashRemains.AmountRemaining) AS Amount | |FROM | RegisterAccumulations.CompanyCash.Remains(, (StructuralUnit.*)) | .الوحدة الهيكلية | |المبلغ الإجمالي (المبلغ) بواسطة | عام، | الوحدة الهيكلية"; Builder.FillSettings(); // هنا يمكنك منح المستخدم الفرصة // لتغيير إعدادات منشئ التقارير Builder.Layout = GetLayout("CustomLayout");
Builder.AppearanceLayout = GetAppearanceLayout(StandardAppearance.Classic);
Builder.DesignLayout();
Builder.Run();
Builder.Output();

5. وصف بعض خصائص أداة إنشاء التقرير

ملكية

وصف

نص يحتوي على نص طلب منشئ التقرير. إذا كان نص استعلام منشئ التقارير لا يحتوي على عناصر الإعداد "(...)"، فيمكنك استخدام طريقة "FillSettings()" لملء الإعدادات تلقائيًا بناءً على نص الاستعلام.
نص العنوان النص الذي سيتم عرضه في رأس التقرير (مثال: "أرصدة المخزون اعتبارًا من 01/01/2004"، "مبيعات يناير 2004"...).
OutputReportTitle
رأس جدول الإخراج
النتائج العامة للإخراج
OutputFooterTables
OutputReportFootment
تحدد هذه الخصائص ما إذا كان سيتم عرض عنوان التقرير ورأس الجدول والإجماليات الكلية وتذييل الجدول وتذييل التقرير، على التوالي.
سجلات الإخراج التفصيلية الخاصية مسؤولة عن فرض إخراج أو منع إخراج السجلات التفصيلية.
السجلات التفصيلية التلقائية إذا تم تعيين خاصية "السجلات التفصيلية التلقائية" على True، فسيتم عرض كل سجل تفصيلي فقط إذا كان يختلف عن سجل المجموعة.
الحقول المتاحة تحتوي على قائمة الحقول المتاحة للإضافة إلى المجموعات وعوامل التصفية والحقول المحددة والفرز.
سلاسل الأبعاد
أعمدة الأبعاد
يحتوي على قائمة المجموعات، على التوالي، حسب الصفوف والأعمدة.
اختيار يحتوي على قائمة بالمرشحات المحددة لمنشئ التقرير.
الحقول المحددة يحتوي على قائمة بالمؤشرات المختارة وتفاصيل التجميع.
طلب يحتوي على قائمة حقول الفرز.
خيارات يحتوي على قائمة معلمات المنشئ (المعلن عنها في نص طلب المنشئ باستخدام الحرف "&").
نتيجة يحتوي على نتيجة تنفيذ استعلام منشئ التقارير (كائن من النوع نتيجة الاستعلام).

6. معالجة النصوص باستخدام أداة إنشاء التقارير

تحتوي خاصية "ملء فك التشفير" على واحد من ثلاثة خيارات لملء النص أثناء الإخراج:

الخيار 1: لا تملأ (لا تستخدم النص).

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

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

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

إذا تم استخدام الخيار الثالث لملء النص، فيمكنك استخدام طريقة "SetupTranscript()"، المصممة لتنفيذ التقرير وعرضه مع مراعاة النص الذي يقوم به المستخدم.

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

7. إعداد التقرير

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

تحتوي خصائص "ReportHeader Layout" و"TableHeaderLayout" و"DetailedRecordsLayout" و"TotalTotalsLayout" و"TableFooterLayout" و"ReportFooterLayout" على اسم المنطقة في تخطيط منشئ التقارير أو التخطيطات الفردية المستخدمة عند عرض رأس التقرير، على التوالي، رأس الجدول والسجلات التفصيلية والإجماليات العامة وتذييل الجدول وتذييل التقرير في مستند جدول بيانات. إذا كانت أسماء النطاق تتطابق مع الأسماء الموجودة في تخطيط Report Builder، فلن تحتاج إلى ملء الخصائص.

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

للحصول على أحد خيارات التصميم القياسية، يمكنك استخدام طريقة السياق العام “GetDesignLayout()”.

إذا تم تعيين تخطيط ثابت لخاصية "التخطيط" الخاصة بمنشئ التقارير، لتصميمه، يلزمك تنفيذ طريقة "DesignLayout()".

تحدد خاصية "وضع الأبعاد في الصفوف" أحد الخيارات الثلاثة لعرض التجميعات حسب الصفوف.
الخيار الأول: معًا (في عمود واحد).
مثال:

الخيار الثاني: بشكل منفصل (في أعمدة مختلفة).
مثال:


مثال:

تحدد خاصية "وضع الأبعاد في الأعمدة" أحد الخيارات الثلاثة لعرض التجميعات حسب الأعمدة.
الخيار الأول: معًا (في سطر واحد).
مثال:

الخيار الثاني: بشكل منفصل (في خطوط مختلفة).
مثال:

الخيار الثالث: بشكل منفصل وفقط في النهاية.
مثال:

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

الخيار الثاني: في الرأس والتذييل (فوق وتحت المجموعات اللاحقة والإدخالات التفصيلية).

الخيار الثالث: في الطابق السفلي (أسفل المجموعات اللاحقة والسجلات التفصيلية، وفوقها يتم عرض وصف التجميع فقط).

الخيار الرابع: فقط في الطابق السفلي (أسفل المجموعات اللاحقة والسجلات التفصيلية فقط).

ملكية " وضع الإجماليات في الأعمدة"يحدد إحدى الطرق الأربع لعرض الإجماليات في الأعمدة.

الخيار الأول: في الرأس (فقط على يسار المجموعات اللاحقة والإدخالات التفصيلية).

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

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

الخيار الرابع: فقط في الطابق السفلي (فقط على يمين التجمعات اللاحقة والسجلات التفصيلية).

ملكية " وضع تفاصيل الأبعاد في الصفوف"يحدد أحد الخيارات الثلاثة لعرض تفاصيل التجميع حسب الصف.

الخيار الأول: معًا (في عمود إضافي واحد).
مثال:

الخيار الثاني: مع القياسات (في أعمدة مع مجموعات).
مثال:

الخيار الثالث: بشكل منفصل (في أعمدة إضافية مختلفة).
مثال:

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

الخيار الأول: معًا (في سطر إضافي واحد).
مثال:

الخيار الثاني: مع الأبعاد (في صفوف ذات مجموعات).
مثال:

الخيار الثالث: بشكل منفصل (في خطوط إضافية مختلفة).
مثال:

8. تقرير مخرجات المنشئ

تقوم طريقة "Run ()" بتنفيذ طلب منشئ التقرير وملء خاصية "النتيجة".
باستخدام طريقة "GetQuery()"، يمكنك الحصول على استعلام منشئ التقارير الذي يتم تنفيذه عند استدعاء طريقة "Run()".

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

مثال على الإخراج إلى مستند جدول بيانات جديد:
Builder.Output();

مثال على الإخراج إلى مستند جدول بيانات موجود:
Builder.Output(FormElements.ResultTable);

مثال على الإخراج إلى الرسم البياني:
Builder.Output(FormElements.ResultDiagram, "Quantity");

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

9. حفظ واستعادة إعدادات المنشئ

تتيح لك طريقة "GetSettings()" الحصول على الإعدادات الحالية لمنشئ التقارير مع إمكانية تحديد الإعدادات (على سبيل المثال: التصفية فقط، التصفية والفرز...).

تتيح لك طريقة "SetSettings()" تحميل إعدادات منشئ التقارير مع إمكانية تحديد الإعدادات (على سبيل المثال: التصفية فقط، التصفية والفرز...).

10. تجميعات وحقول منشئ التقرير

بُعد منشئ التقارير عبارة عن تجميع حسب الصفوف أو الأعمدة.

التفاصيل الرئيسية للمجموعة هي

  • "الاسم" (معرف التفاصيل) ​​(مثال: "الصنف"، "الطرف المقابل"...)،
  • "التمثيل" (العرض أثناء الإخراج) (مثال: "مستند المبيعات"، "وحدة القياس"...)،
  • "PathtoData" (المسار إلى حقل تحديد الاستعلام) (مثال: "Nomenclature"، "DocumentSales.Organization"...)

وإذا تم بناء التجمع وفقا للدليل، ثم

  • "نوع البعد" (أحد خيارات التصفية حسب قيم الحقول: التسلسل الهرمي (العناصر والمجموعات)، التسلسل الهرمي فقط (المجموعات فقط) أو العناصر (العناصر فقط)).

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

  • "التخطيط" هو اسم المنطقة في تخطيط منشئ التقارير أو التخطيط المنفصل المستخدم في تجميع المخرجات.
  • "التخطيط الهرمي" هو اسم المنطقة في تخطيط منشئ التقارير أو التخطيط المنفصل المستخدم عند عرض التسلسل الهرمي للتجميع.
  • "تخطيط التذييل" هو اسم المنطقة في تخطيط المنشئ أو التخطيط المنفصل المستخدم عند عرض تذييل المجموعة.
  • "HierarchyFooterLayout" هو اسم المنطقة في تخطيط المنشئ أو التخطيط المنفصل المستخدم عند عرض تذييل التسلسل الهرمي للتجميع.
  • "تخطيطات الطابق السفلي" - مجموعة من تخطيطات الطابق السفلي لمستويات التجميع المختلفة.
  • "تخطيطات المستوى" - مجموعة من التخطيطات لمستويات مختلفة من المجموعات.

يعد حقل منشئ التقارير أحد الحقول المحددة. التفاصيل الميدانية الرئيسية هي

  • "الاسم" (معرف الحقل) ​​(مثال: "الكمية"، "رمز التسمية"، "الفترة"...)،
  • "التمثيل" (التمثيل أثناء الإخراج) (مثال: "الكمية"، "الكود"، "الفترة"...) و
  • "PathKData" (المسار إلى حقل اختيار الاستعلام) (مثال: "Quantity"، "Nomenclature. Code"، "Period"...).

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

  • "إدراج ()" - إضافة مجموعة/حقل إلى الموضع المحدد.
  • "Add()" - أضف مجموعة/حقل إلى نهاية القائمة.
  • "الفهرس ()" - احصل على فهرس التجميع/الحقل في القائمة.
  • "الكمية ()" - احصل على عدد المجموعات/الحقول في القائمة.
  • "Find()" - ابحث عن مجموعة/حقل في القائمة بالاسم.
  • "مسح ()" - يمسح قائمة المجموعات/الحقول.
  • "Get ()" - احصل على تجميع/حقل حسب الفهرس.
  • "Shift()" - قم بتبديل التجميع/الحقل حسب عدد المواضع المحدد.
  • "حذف ()" - إزالة مجموعة/حقل من القائمة.

11. لغة البناء

منشئ التقرير له لغته الخاصة. هذه لغة استعلام عادية، مكملة بالبنيات "(...)". باستخدام هذه التركيبات، يمكنك التخلي عن طريقة "FillSettings()" وتكوين منشئ التقرير في نص الطلب.
بهذه الطريقة يمكنك تخصيص عناصر "SELECT"، و"WHERE"، و"ORDER BY"، و"SUMMARY BY"، وكذلك القيام ببعض الأشياء الأخرى المثيرة للاهتمام. في هذه الحالة، سيكون نص طلب المنشئ هو الإعدادات الافتراضية، بينما تصف البنيات (...) الإعدادات المتاحة.

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

الحقول المحددة في بنية "SELECT" تحد من قائمة الحقول المتاحة للمستخدم.
الحقول المحددة في بنية "WHERE" تحد من قائمة الحقول التي يمكن استخدامها في عامل التصفية.
الحقول المحددة في بناء "ORDER BY" تحد من قائمة الحقول التي سيتم فرزها.
الحقول المحددة في إنشاء "PO RESULTS" تحد من قائمة الحقول لتجميع الإجماليات.

الآن للأشياء المثيرة للاهتمام.

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

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

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

|اختر


| الكثير من GoodsCompanyRemains.QuantityRemaining ASquantityByLots
|(حدد
| المنتجات المتبقية للشركة المنتجات المتبقية.
| المنتجات المتبقية للشركةRemainings.QuantityRemaining AS الكمية،
| الكثير من GoodsCompanyRemains.QuantityRemaining ASquantityByLots)
|من
| تسجيل التراكمات.المنتجات المتبقية للشركة.البقايا كمنتجات الشركة المتبقيةالبقايا
| (الاتصال الأيسر سجل التراكمات. الكثير من بضائع الشركة. يبقى كما هو الحال مع الكثير من بضائع الشركة
| منتجات البرامج المتبقية للشركةRemainings.Nomenclature = الكثير من منتجات الشركةRemainings.Nomenclature)
|نتائج SUM(الكمية)، SUM(QuantityByBatch) BY
| شائعة،
| التسميات

ثم سيتم تنفيذ الانضمام الأيسر بواسطة سجل الدُفعات فقط في حالة وجود حقل "QuantityByBatch" في قائمة الحقول المحددة.

ثالث، في معلمات المصدر، يمكنك تحديد أنه إذا تم تحديد المرشحات، إذا أمكن، فقم بتطبيقها ليس على نتيجة الاستعلام باستخدام عنصر "أين"، ولكن على المصدر نفسه. لذلك بدلا من
| RegisterAccumulations.CompanyProductRemains.Remains()

فمن المنطقي أن أكتب

| سجل التراكم.بقايا بضائع الشركة.بقايا(، (التسميات.*، مستودع الشركة.*، الطلب.*، سعر التجزئة، خصائص التسميات.*))

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

مثال: |اختر المسموح | الكثير من المنتجاتCompanyTurnover.Nomenclature، | SUM(الكثير من المنتجاتCompanyTurnover.CostIncoming) AS CostIncoming، | SUM(CompanyProduct LotsTurnover.CostConsumption) AS CostConsumption | |من | سجل التراكم. الكثير من بضائع الشركة. دوران(, (&التكرار), | (التسمية.*)) AS الكثير من بضائع الشركة دوران | |المجموعة حسب | الكثير من GoodsCompanyTurnover.Nomenclature | |النتائج AMOUNT(CostIncoming)، AMOUNT(CostExpenditure) BY | عام | التسميات | |(حدد | الكثير من منتجات دوران الشركة. التسمية.*، | المسجل.*، | بداية الفترة (الفترة، اليوم) ASperiodDay، | بداية الفترة (الفترة، الأسبوع) AS الفترةالأسبوع، | بداية الفترة الفترة (الفترة، العقد) AS الفترةالعقد، | بداية الفترة (الفترة، الشهر) AS الفترةالشهر، | بداية الفترة (الفترة، الربع) AS الفترةربع، | بداية الفترة (الفترة، نصف السنة) AS الفترةنصف السنة ، | بداية الفترة (الفترة، السنة) ASperiodYear، | SUM(Lots of ProductsCompanyTurnover.CostIncoming) AS CostIncoming، | SU MMA(CompanyProduct LotsTurnover.CostExpense) HOW CostExpense) | | | (أين | الكثير من منتجات دوران الشركة. التسميات. *، | المسجل. *، | SUM (الكثير من البضائع من دوران الشركة. التكلفة الواردة) AS تكلفة الدخل، | SUM (الكثير من البضائع من دوران الشركة .مصروفات التكلفة) AS مصروفات التكلفة) | |(النتائج حسب | التسمية.*, | المسجل.*, | بداية الفترة(الفترة، اليوم) ASperiodDay، | بداية الفترة(الفترة، الأسبوع) AS الفترةالأسبوع، | بداية الفترة(الفترة، العقد) AS الفترةالعقد، | بداية الفترة(الفترة، الشهر) AS الفترةالشهر، | بداية الفترة(الفترة، الربع) AS الفترةربع، | بداية الفترة(الفترة، نصف السنة) AS الفترةنصف السنة، | بداية الفترة(الفترة) ، السنة) كما الفترةالسنة)

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

إذا كان منشئ التقرير.AvailableFields.Find("التردد")<>غير محدد ثم الدورية = غير محدد؛ إذا كان منشئ التقرير.DimensionsRows.Find("PeriodYear")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodYear")<>غير محدد ثم الدورية = 9؛ إنهاء إذا؛ إذا كان منشئ التقرير.DimensionsRows.Find("PeriodHalf-Year")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodHalf-Year")<>غير محدد ثم الدورية = 8؛ إنهاء إذا؛ إذا كان منشئ التقرير.DimensionsRows.Find("PeriodQuarter")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodQuarter")<>غير محدد ثم الدورية = 7؛ إنهاء إذا؛ إذا كان ReportBuilder.DimensionsRows.Find("PeriodMonth")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodMonth")<>غير محدد ثم الدورية = 6؛ إنهاء إذا؛ إذا كان منشئ التقرير.أبعاد الصف.بحث("PeriodDecade")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodDecade")<>غير محدد ثم الدورية = 5؛ إنهاء إذا؛ إذا كان ReportBuilder.DimensionsRows.Find("PeriodWeek")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodWeek")<>غير محدد ثم الدورية = 4؛ إنهاء إذا؛ إذا كان منشئ التقرير.DimensionsRows.Find("PeriodDay")<>غير محدد أو تقرير Builder.DimensionsColumns.Find("PeriodDay")<>غير محدد ثم الدورية = 3؛ إنهاء إذا؛ إذا كان ReportBuilder.DimensionsRows.Find("المسجل")<>غير محدد أو ReportBuilder.DimensionsColumns.Find("المسجل")<>غير محدد أو ReportBuilder.SelectedFields.Find("المسجل")<>غير محدد ثم الدورية = 2؛ إنهاء إذا؛ إذا تردد<>غير محدد ثم التحديد FieldBy الدورية = Report Builder.Selection.Add("Periodicity"); SelectionFieldByPeriodicity.Value = الدورية؛ SelectionFieldByPeriodicity.Use = True; إنهاء إذا؛ إنهاء إذا؛ Builder.Run(); إذا كان حقل التحديد حسب الدورية<>غير محدد ثم تقرير Builder.Selection.Delete(Report Builder.Selection.Index(SelectionFieldByPeriodicity)); إنهاء إذا؛

12. تخصيص المنشئ

من أجل منح المستخدم الفرصة لتغيير قائمة التجميع أو التصفية أو الحقول المحددة أو الفرز، يكفي إنشاء سمة تقرير "المنشئ" ووضع حقل جدول في نموذج التقرير وتحديد "Builder.DimensionsRows"، " "Builder.DimensionsColumns" كمصدر للبيانات. أو "Builder.Selection" أو "Builder.SelectedFields" أو "Builder.Order".

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

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

أود أن أتحدث عن ماهية منشئ التقارير في 1C، وما هي الوظائف التي يؤديها، وما هي التطبيقات التي وجدها في البرمجة.

منشئ التقرير في 1C - ما هو؟

هذا هو كائن التكوين الذي يسمح لك بعرض البيانات في مستند جدول بيانات أو مخطط. يمكن أن يكون مصدر البيانات:

  1. نتيجة الطلب؛
  2. منطقة الخلية في مستند جدول البيانات؛
  3. جزء جدولي من مستند أو كتاب مرجعي؛
  4. مجموعة من إدخالات التسجيل.

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

يوضح الشكل 1 قسمًا من التعليمات البرمجية الذي يسمح لك باستخدام "منشئ التقارير" لعرض جدول قيم عشوائي

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

بالمناسبة، نتيجة تنفيذ الكود الموضح في الشكل 1 يمكن رؤيتها في الشكل 2

الصورة 2

إعداد البناء

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

مثل منشئ ACS، فهو يتضمن:

  • التجمعات (مستويات التسلسل الهرمي عند عرض المعلومات)؛
  • المؤشرات (القيم التي من الضروري الحصول على النتيجة)؛
  • الحقول المحسوبة الإضافية (تفاصيل العنصر، نتائج الإجراءات ذات القيم)؛
  • المرشحات (التحديدات)؛
  • فرز.

توفر إعدادات تخطيط تصميم المنشئ مستويات مختلفة ودقة في التفاصيل.

خوارزمية لاستخدام المنشئ

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

  1. نعلن عن إنشاء كائن جديد من نوع ReportBuilder؛
  2. في هذه المرحلة، يمكنك إما استخدام Query Builder لإنشاء نص التحديد، أو باستخدام كائن DataSourceDescription، استخدام تحديد موجود؛
  3. يمكن ضبط إعدادات منشئ التقارير باستخدام طريقة كائن المنشئFillSettings();
  4. يمكنك رفض استخدام تخطيط التصميم القياسي الذي تم إنشاؤه باستخدام طريقة الإنشاء التلقائي عن طريق تحديد خاصية كائن التخطيط للمنشئ؛
  5. إذا لم يتم استخدام DataSourceDescription، فمن الضروري في هذه المرحلة تنفيذ الطلب، واستخدام طريقة Execute()؛
  6. الخطوة الأخيرة هي إطلاق طريقة Output()؛ يمكن إجراء الإخراج في مستند جدول بيانات، أو في عنصر النموذج المقابل.

استخدام فك التشفير في المنشئ

يتضمن السطر الثالث في الشكل 1 فك تشفير الخلايا الخاصة بنتيجة تنفيذ المنشئ.

للقيام بذلك، استخدمنا خاصية ملء التشفير. نوع هذه الخاصية هو ReportBuilderDecryptionFillType؛ ويمكن أن يأخذ واحدة من ثلاث قيم:

  1. قيم التجميع – عند تنشيط الخلية، سيتم استخدام قيمة التجميع المحددة فيها؛
  2. لا تملأ – القيمة الافتراضية، مما يعني أنه لن يتم استخدام النص للنتيجة النهائية؛
  3. نسخة – سيتم ملء بنية النسخة بقيم جميع مجموعات العينة الأصلية.

بالإضافة إلى ذلك، لدى المستخدم الفرصة لضبط فك التشفير بشكل مستقل باستخدام طريقة ConfigureDecryption(). يظهر قسم الكود الذي يقوم بتشغيل هذه الطريقة في الشكل 3

تين. 3

مثال على استخدام المنشئ لتمكين التحديدات في تقرير

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

  1. لنبدأ بإنشاء تقرير خارجي وإضافة سمة إليه باسم عشوائي وكتابة ReportBuilder (الشكل 4)؛

الشكل 4

  1. نقوم بإنشاء نموذج تقرير ونضع كائن واجهة TabularField عليه، ونكتبه كـ Selection ونربطه بخاصية Selection للسمة التي تم إنشاؤها الشكل 5

الشكل 5

  1. نقوم بإنشاء إجراء OnOpen() مرتبط بالحدث المقابل لنموذجنا؛

الشكل 6

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

الشكل 7

  1. لن يتم تنفيذ شروط الاختيار المحددة بين قوسين متعرجين () في نص الطلب إلا إذا تم تنشيط التحديد المقابل واستخدامه من قبل المستخدم؛

  2. يتم عرض الإجراء الذي يعرض نتيجة المنشئ في الشكل 8 ويرتبط بالنقر فوق الزر "إنشاء"؛

الشكل 8

  1. نحن نحفظ تقريرنا.

يظهر مظهر التقرير الذي أنشأناه ونتيجته في الشكل 9

الشكل 9

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

تعد لغة الاستعلام في 1C 8 نظيرًا مبسطًا لـ "لغة البرمجة المنظمة" المعروفة (كما يطلق عليها غالبًا SQL). ولكن في 1C يتم استخدامه فقط لقراءة البيانات، ويستخدم نموذج بيانات الكائن لتغيير البيانات.

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

طلب مثال:

يختار
البنوك. الاسم،
البنوك.CorrAccount
من
Directory.Banks كيف البنوك

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

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

وصف بنيات لغة الاستعلام

هيكل الاستعلام

للحصول على البيانات، يكفي استخدام الإنشاءات "SELECT" و"FROM". أبسط طلب يبدو كالتالي:

اختر * من الدلائل.التسميات

حيث تعني "*" تحديد كافة حقول الجدول، و Directorys.Nomenclature – اسم الجدول في قاعدة البيانات.

دعونا نلقي نظرة على مثال أكثر تعقيدًا وعامة:

يختار
<ИмяПоля1>كيف<ПредставлениеПоля1>,
مجموع(<ИмяПоля2>) كيف<ПредставлениеПоля2>
من
<ИмяТаблицы1>كيف<ПредставлениеТаблицы1>
<ТипСоединения>مُجَمَّع<ИмяТаблицы2>كيف<ПредставлениеТаблицы2>
بواسطة<УсловиеСоединениеТаблиц>

أين
<УсловиеОтбораДанных>

مجموعة من
<ИмяПоля1>

ترتيب حسب
<ИмяПоля1>

نتائج
<ИмяПоля2>
بواسطة
<ИмяПоля1>

في هذا الاستعلام، نختار بيانات الحقلين "FieldName1" و"FieldName1" من الجدولين "TableName1" و"TableName"، ونخصص مرادفات للحقول باستخدام عامل التشغيل "HOW"، ونربطها باستخدام شرط معين "TableConnectionCondition" ".

من البيانات المستلمة نختار فقط البيانات التي تفي بالشرط من "أين" "شرط اختيار البيانات"، وبعد ذلك نقوم بتجميع الطلب حسب الحقل "اسم الحقل 1"، مع جمع "اسم الحقل 2"، ونقوم بإنشاء إجماليات للحقل "اسم الحقل 1" والحقل الأخير "اسم الحقل 2".

الخطوة الأخيرة هي فرز الطلب باستخدام بنية ORDER BY.

تصاميم عامة

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

أولاًن

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

اختر أول 100
البنوك. الاسم،
البنوك، الرمز AS BIC
من
Directory.Banks كيف البنوك
ترتيب حسب
البنوك.الاسم

سيتلقى الطلب أول 100 إدخال من دليل "البنوك"، مرتبة أبجديًا.

مسموح

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

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

حدد المسموح به
مستودع المعلومات الإضافية
من
Directory.Repository للمعلومات الإضافية

متنوع

سيؤدي استخدام "مختلف" إلى منع الأسطر المكررة من إدخال نتيجة استعلام 1C. التكرار يعني أن جميع حقول الطلب متطابقة.

اختر أول 100
البنوك. الاسم،
البنوك، الرمز AS BIC
من
Directory.Banks كيف البنوك

جدول فارغ

نادرًا ما يتم استخدام هذا البناء للجمع بين الاستعلامات. عند الانضمام، قد تحتاج إلى تحديد جدول متداخل فارغ في أحد الجداول. عامل التشغيل "EmptyTable" مناسب تمامًا لهذا الغرض.

مثال من مساعدة 1C 8:

حدد رقم الرابط، الجدول الفارغ. (الرقم، العنصر، الكمية) كتكوين
من الوثيقة. فاتورة النفقات
الجمع بين كل شيء
حدد رقم الرابط، المحتويات (رقم السطر، المنتج، الكمية)
من Document.Invoice Document.Invoice.Composition.*

باطل

ميزة مفيدة للغاية تتيح لك تجنب العديد من الأخطاء. YesNULL() يسمح لك باستبدال القيمة NULL بالقيمة المطلوبة. يُستخدم في كثير من الأحيان للتحقق من وجود قيمة في الجداول المرتبطة، على سبيل المثال:

يختار
رابط مرجع التسميات،
IsNULL(العنصر المتبقي.الكمية المتبقية,0) AS الكمية المتبقية
من


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

ISNULL(InvoiceReceived.Date، InvoiceIssued.Date)

HOW هو عامل يسمح لنا بتعيين اسم (مرادف) لجدول أو حقل. لقد رأينا مثالاً للاستخدام أعلاه.

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

يختار
عرض(رابط)، //سلسلة، على سبيل المثال "تقرير مسبق رقم 123 بتاريخ 2015/10/10"
عرض (DeletionMark) AS RemoveMarkText، // سلسلة، "نعم" أو "لا"
ViewReferences(DeletionMark) AS RemoveMarkBoolean //منطقي، صحيح أو خطأ
من
وثيقة. تقرير مسبق

يعبر

يتيح لك Express تحويل قيم الحقول إلى نوع البيانات المطلوب. يمكنك تحويل قيمة إلى نوع بدائي أو نوع مرجعي.

يتم استخدام Express لنوع مرجعي لتقييد أنواع البيانات المطلوبة في الحقول ذات النوع المعقد، وغالبًا ما يستخدم لتحسين أداء النظام. مثال:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).نوع النشاطForTaxAccountingCosts

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

صريحة (تعليق كخط (150))

الفرق

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

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

اختر من
المرجع
الاتصال الأيسر تسجيل التراكمات.المنتجات الموجودة في المستودعات.المنتج المتبقي
Software NomenclatureRef.Link = البضائع المباعةCommitteesRemains.Nomenclature
عندما لا تكون هناك منتجات متبقية، تكون الكمية المتبقية فارغة

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

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

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

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

حيث Nomenclature.Type of Nomenclature = القيمة (Directory.Types of Nomenclature.Product)

أين الأطراف المقابلة. نوع معلومات الاتصال = القيمة (التعداد. أنواع معلومات الاتصال. الهاتف)

أين أرصدة الحسابات.حساب المحاسبة = القيمة (مخطط الحسابات.الربح.ProfitsLoss)

روابط

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

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

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

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

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

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

اتصال كامل

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

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

من

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

بواسطة

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

صلة داخلية

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

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

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

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

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

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

ذات الصلة

تجمع بنيات JOIN وJOIN ALL بين نتيجتين في نتيجة واحدة. أولئك. سيتم "دمج" نتيجة أداء اثنين في نتيجة واحدة مشتركة.

أي أن النظام يعمل تمامًا مثل الأنظمة العادية، فقط لجدول مؤقت.

كيفية استخدام INDEX BY

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

يختار
أسعار العملات أحدث مقطع عرضي العملة AS العملة،
أسعار العملات أحدث المقطع العرضي.
بوت أسعار العملات
من
سجل المعلومات.أسعار العملات.الشريحة الأخيرة(والفترة) AS أسعار العملاتالشريحة الأخيرة
فهرس بواسطة
عملة
;
يختار
تسميات الأسعار.التسميات،
الأسعارالتسميات.السعر،
الأسعارالتسميات.العملة،
أسعار العملات.Rate
من
سجل المعلومات.أسعار التسميات.الشريحة الأخيرة(&الفترة،
التسمية B (&التسمية) وPriceType = &PriceType) AS PriceNomenclature
انضم إلى اليسار أسعار العملات مثل أسعار العملات
أسعار البرمجيات Nomenclatures.Currency = أسعار العملات.Currency

التجميع

تتيح لك لغة الاستعلام 1C استخدام وظائف تجميعية خاصة عند تجميع نتائج الاستعلام. يمكن أيضًا استخدام التجميع بدون وظائف تجميعية "لإزالة" التكرارات.

الوظائف التالية موجودة:

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

مثال 1:

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

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

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

المثال رقم 2

يختار
رمز البنوك،
الكمية (رابط البنوك المختلفة) كعدد التكرارات
من
Directory.Banks كيف البنوك
مجموعة من
البنوك.كود

سيعرض هذا المثال قائمة برموز BIC في دليل "البنوك" ويوضح عدد التكرارات الموجودة لكل منها.

نتائج

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

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

يختار




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

نتائج
مجموع (الكمية)،
مجموع(مجموع)
بواسطة
التسميات

ستكون نتيجة الاستعلام هي التسلسل الهرمي التالي:

النتائج العامة

إذا كنت تريد الحصول على إجماليات لجميع "الإجماليات"، فاستخدم عامل التشغيل "عام".

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

ونتيجة تنفيذ الطلب نحصل على النتيجة التالية:

في أي مستوى تجميع واحد يتم تجميع كافة الحقول الضرورية.

تنظيم

يتم استخدام عامل التشغيل ORDER BY لفرز نتيجة الاستعلام.

الفرز للأنواع البدائية (سلسلة، رقم، منطقي) يتبع القواعد المعتادة. بالنسبة لحقول النوع المرجعي، يتم الفرز حسب التمثيل الداخلي للارتباط (المعرف الفريد)، بدلاً من التعليمات البرمجية أو تمثيل المرجع.

يختار

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

سيعرض الطلب قائمة بالأسماء في دليل التسميات، مرتبة أبجديًا.

الطلب التلقائي

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

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

يختار
Nomenclature.Name AS الاسم
من
Directory.Nomenclature AS التسميات
طلب تلقائي

الجداول الافتراضية

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

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

  • قطع الأول؛
  • قطع من الأخير.
  • بقايا الطعام.
  • الثورات.
  • الأرصدة والتداول.
  • الحركات من subconto.
  • الثورات.
  • سرعة دتا كيلوطن.
  • بقايا الطعام.
  • الأرصدة والتداول
  • com.subconto.
  • قاعدة؛
  • بيانات الرسم البياني؛
  • مدة الصلاحية الفعلية.

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

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

يتيح لك هذا الاستعلام استرداد كمية كبيرة من البيانات بسرعة.

خيارات الجدول الظاهري

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

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

مثال على استخدام هذه المعلمات:

سجل التراكمات البضائع في المستودعات الأرصدة ودورات (وبداية الفترة ونهاية الفترة والشهر والحركات وحدود الفترة والمسميات = والمسميات المطلوبة)

خوارزمية الجداول الافتراضية

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

عند استخدام جدول افتراضي، يقوم النظام بالمعالجة التالية:

  1. نحصل على أقرب قيمة محسوبة من حيث التاريخ والقياسات في جدول الإجماليات.
  2. نقوم "بإضافة" المبلغ من جدول الحركة إلى المبلغ من جدول الإجماليات.


يمكن لمثل هذه الإجراءات البسيطة أن تحسن بشكل كبير أداء النظام ككل.

استخدام منشئ الاستعلام

منشئ الاستعلام– أداة مدمجة في نظام 1C Enterprise تسهل بشكل كبير تطوير استعلامات قاعدة البيانات.

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

يتم تشغيل مُنشئ نص الاستعلام من قائمة السياق (زر الفأرة الأيمن) في المكان المطلوب في كود البرنامج.

وصف منشئ الطلب 1C

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

علامة التبويب "الجداول والحقول".

تحدد علامة التبويب هذه مصدر البيانات والحقول التي يجب عرضها في التقرير. في جوهرها، الإنشاءات SELECT.. من موصوفة هنا.

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

في قائمة سياق الجداول الافتراضية، يمكنك تعيين معلمات الجدول الافتراضي:

علامة تبويب الاتصالات

يتم استخدام علامة التبويب لوصف اتصالات عدة جداول وإنشاء إنشاءات باستخدام كلمة CONNECTION.

علامة تبويب التجميع

في علامة التبويب هذه، يسمح لك النظام بتجميع وتلخيص الحقول المطلوبة لنتيجة الجدول. يصف استخدام الإنشاءات GROUP BY، SUM، MINIMUM، AVERAGE، MAXIMUM، QUANTITY، NUMBER OF DIFFERENT.

علامة تبويب الشروط

مسؤول عن كل ما يأتي في نص الطلب بعد إنشاء WHERE، أي عن جميع الشروط المفروضة على البيانات المستلمة.

علامة التبويب المتقدمة

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

التجميع اختيار السجلات:

  • أول ن- معلمة تقوم بإرجاع سجلات N فقط إلى الاستعلام (عامل التشغيل FIRST)
  • لا التكرارات- يضمن تفرد السجلات المستلمة (مشغل مختلف)
  • مسموح– يسمح لك باختيار تلك السجلات التي يسمح لك النظام بتحديدها فقط مع الأخذ في الاعتبار (الإنشاء المسموح به)

التجميع نوع الطلبيحدد نوع الطلب: استرجاع البيانات، أو إنشاء جدول مؤقت، أو تدمير جدول مؤقت.

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

علامة التبويب الانضمامات/الأسماء المستعارة

في علامة التبويب هذه الخاصة بمصمم الاستعلام، يمكنك ضبط القدرة على الانضمام إلى جداول وأسماء مستعارة مختلفة (بنية HOW). الجداول موضحة على الجانب الأيسر. إذا قمت بتعيين الأعلام مقابل الجدول، فسيتم استخدام بناء UNITE، وإلا - UNITE ALL (الاختلافات بين الطريقتين). على الجانب الأيمن، تتم الإشارة إلى تطابق الحقول في جداول مختلفة؛ إذا لم يتم تحديد المراسلات، فسيرجع الاستعلام NULL.

علامة تبويب الطلب

يحدد هذا الترتيب الذي يتم به فرز القيم (ORDER BY) - تنازلي (DESC) أو تصاعدي (ASC).

هناك أيضًا علم مثير للاهتمام - الطلب التلقائي(في الطلب - الطلب التلقائي). افتراضيًا، يعرض نظام 1C البيانات بترتيب "فوضوي". إذا قمت بتعيين هذه العلامة، فسيقوم النظام بفرز البيانات حسب البيانات الداخلية.

علامة تبويب دفعة الاستعلام

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

زر "الاستعلام" في مصمم الاستعلام

يوجد في الركن الأيسر السفلي من مصمم الطلب زر طلب، والذي يمكنك من خلاله عرض نص الطلب في أي وقت:

في هذه النافذة يمكنك إجراء التعديلات على الطلب وتنفيذه.


استخدام وحدة تحكم الاستعلام

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

دعونا نلقي نظرة فاحصة على هذه الأداة.

قم بتنزيل وحدة تحكم الاستعلام 1C

بادئ ذي بدء، لبدء العمل مع وحدة التحكم في الاستعلام، تحتاج إلى تنزيله من مكان ما. تنقسم العلاجات عادةً إلى نوعين - الأشكال الخاضعة للرقابة والعلاجات التقليدية (أو تسمى أحيانًا 8.1 و8.2/8.3).

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

وصف وحدة تحكم الاستعلام 1C

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

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

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

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

  • ينفذطلب- التنفيذ والنتائج البسيطة
  • تنفيذ الحزمة- يسمح لك بعرض كافة الاستعلامات المتوسطة في مجموعة من الاستعلامات
  • عرض الجداول المؤقتة- يسمح لك برؤية النتائج التي ترجعها الاستعلامات المؤقتة على الجدول

معلمات الطلب:

يسمح لك بتعيين المعلمات الحالية للطلب.

في نافذة معلمات الاستعلام، ما يلي مثير للاهتمام:

  • زر الحصول على من الطلبيجد تلقائيًا جميع المعلمات في الطلب لراحة المطور.
  • علَم المعلمات المشتركة لجميع الطلبات– عند التثبيت، لا تؤدي معالجته إلى مسح المعلمات عند الانتقال من طلب إلى آخر في قائمة الطلبات العامة.

قم بتعيين معلمة مع قائمة القيمالأمر بسيط للغاية، فقط عند اختيار قيمة المعلمة، انقر فوق زر مسح القيمة (التقاطع)، وسيطالبك النظام بتحديد نوع البيانات، حيث تحتاج إلى تحديد "قائمة القيم":

يوجد أيضًا في اللوحة العلوية زر لاستدعاء إعدادات وحدة تحكم الاستعلام:

هنا يمكنك تحديد معلمات للحفظ التلقائي للاستعلامات ومعلمات تنفيذ الاستعلام.

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

يتم استدعاء مصمم الاستعلام 1C 8 من قائمة السياق (زر الفأرة الأيمن) عند النقر فوق حقل الإدخال:

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

طلب = طلب جديد؛
طلب.نص = ”
|اختر
| العملات. الرابط
|من
| Directory.Curreency AS العملات "؛
RequestResult = Request.Execute();

يعرض الحقل السفلي لوحدة تحكم الاستعلام حقل نتيجة الاستعلام، ولهذا السبب تم إنشاء هذه المعالجة:



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

تحسين الاستعلام

من أهم النقاط في زيادة إنتاجية 1C Enterprise 8.3 تحسينطلبات. هذه النقطة مهمة جدًا أيضًا عندما اجتياز الشهادة. سنتحدث أدناه عن الأسباب النموذجية لأداء الاستعلام غير الأمثل وطرق التحسين.

التحديدات في جدول افتراضي باستخدام بنية WHERE

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

يمين:

يختار

من
سجل التراكمات التسويات المتبادلة مع المشاركين في المنظمات الأرصدة (
,
المنظمة = &التنظيم
والفرد = &الفرد) كيفية التسويات المتبادلة مع المشاركين في أرصدة المنظمات

خطأ:

يختار
التسويات المتبادلة مع المشاركين في أرصدة المنظمات مبلغ الرصيد
من
سجل التراكمات التسويات المتبادلة مع المشاركين في المنظمات الأرصدة (،) كيف التسويات المتبادلة مع المشاركين في المنظمات الأرصدة
أين
التسويات المتبادلة مع المشاركين في أرصدة المنظمات
والتسويات المتبادلة مع المشاركين في أرصدة المنظمات.الفرد = &الفرد

الحصول على قيمة حقل من النوع المعقد باستخدام نقطة

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

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

خطأ:

يختار
سجل Set.Recorder.Date،
مجموعة السجلات.الكمية
من
سجل التراكمات. المنتجات المنظمات AS SetRecords

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

يمين:

يختار
خيار
متى ProductsOrg.Registrar LINK Document.مبيعات المنتجات والخدمات
ثم EXPRESS (ProductsOrganization.Registrar AS Document.Sales of GoodsServices).التاريخ
عندما GoodsOrg.Registrar LINK Document.استلام البضائعالخدمات
ثم EXPRESS (GoodsOrg.Registrar AS Document.Receipt of GoodsServices).التاريخ
نهاية كتاريخ،
ProductsOrg.Quantity
من
تسجيل التراكمات.المنتجاتالمنظمات AS المنتجاتالمنظمة

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

يمين:

يختار
المنتجاتالمنظمات.التاريخ،
المنتجاتالمنظمات.الكمية
من
سجل التراكمات سلع المنظمات AS سلع المنظمات

الاستعلامات الفرعية في حالة الانضمام

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

خطأ:

يختار …

الانضمام الأيسر (
اختر من RegisterInformation.Limits
أين …
مجموعة من...
) بواسطة …

يمين:

يختار …
وضع حدود
من سجل المعلومات. الحدود
أين …
مجموعة من...
الفهرس حسب...;

يختار …
من المستند مبيعات السلع والخدمات
حدود الانضمام اليسرى
بواسطة …؛

ربط السجلات باستخدام الجداول الافتراضية

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

استخدام التحديدات بناءً على الحقول غير المفهرسة

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

ويجب أن يكون هناك فهرس مناسب لكل حالة. الفهرس المناسب هو الذي يلبي المتطلبات التالية:

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

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

استخدام المنطق OR في الشروط

هذا كل شيء، تناولت هذه المقالة الجوانب الأساسية لتحسين الاستعلام التي يجب أن يعرفها كل خبير في 1C.

دورة فيديو مجانية مفيدة جدًا حول تطوير الاستعلام وتحسينه، أنا أوصي بشدهللمبتدئين وأكثر!

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

  • جدول القيمة,
  • نتيجة الطلب،
  • مساحة خلايا الوثيقة الجدولية،
  • جزء جدولي,
  • سجل التراكممجموعة السجلات،
  • تسجيل المعلومات، مجموعة السجلات،
  • سجل المحاسبةمجموعة السجلات،
  • حساب التسجيلRecordSet.
لكي يتمكن منشئ التقارير من عرض تقرير لمصدر بيانات عشوائي، يكفي تعيين وصف مصدر البيانات في خاصية منشئ DataSource. يمكن أن تحتوي خاصية منشئ التقارير DataSource على قيمة من النوع DataSourceDescription. يحتوي كائن DataSourceDescription على مصدر البيانات نفسه ويحتوي أيضًا على وصف لأعمدة مصدر البيانات. يحتوي كل وصف عمود مصدر البيانات على:
  • الاسم - يحتوي على اسم العمود في مصدر البيانات،
  • DataPath - يحتوي على وصف لاعتماد الأعمدة على بعضها البعض. يعتبر العمود الذي يتم الحصول على مسار بياناته من خلال نقطة من مسار بيانات حقل آخر سمة للعمود الآخر. إذا كان الحقل يحتوي على كلمة تمثيل مفصولة بنقطة، فإن هذا الحقل يعتبر تمثيلاً للعمود من المسار إلى البيانات التي تم الحصول على التمثيل لها. أمثلة. إذا كان عمود "Nomenclature" يحتوي على مسار إلى بيانات "Nomenclature"، وكان عمود "Code" يحتوي على مسار إلى بيانات "Nomenclature.Code"، فسيتم اعتبار هذا العمود سمة لعمود "Nomenclature". سيتم اعتبار العمود الذي يحتوي على المسار إلى البيانات "Nomenclature.Representation" بمثابة تمثيل لعمود "Nomenclature"،
  • الحقل - إشارة إلى أنه يمكن استخدام هذا العمود كحقل تقرير،
  • الترتيب - إشارة إلى أن الترتيب ممكن لعمود معين،
  • التحديد هو علامة على أنه من الممكن فرض الاختيار على عمود معين،
  • البعد - إشارة إلى إمكانية استخدام هذا العمود كتجميع تقارير،
  • الإجمالي - سطر يحتوي على تعبير لحساب الإجمالي. بالنسبة لمنشئ التقرير، فإن تعبير هذا السطر يتوافق مع تعبير حساب الإجمالي المستخدم في لغة الاستعلام،
عندما تقوم بتعيين مصدر البيانات إلى كائن DataSourceDescription، يتم إنشاء أوصاف الأعمدة وتعبئتها تلقائيًا.

يحتوي كائن DataSourceDescription على مُنشئ، كمعلمة يمكن تمرير مصدر البيانات الذي يتم إنشاء الوصف له، بينما سيتم ملء خاصية DataSource بمصدر البيانات الذي تم تمريره، وسيتم ملء أوصاف الأعمدة بمعلومات حول الأعمدة من مصدر البيانات.

مثال على إعداد مصدر بيانات لمنشئ التقارير:

ReportBuilder.DataSource = NewDataSourceDescription(ValueTableResult);

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

يتطابق عمل منشئ الاستعلام مع مصدر بيانات مخصص مع العمل مع مصدر مخصص منشئ التقارير.

تتكون برمجة 1C من أكثر من مجرد كتابة برنامج. 1C عبارة عن سبيكة من إجراءات المستخدم والبيانات التي يعمل بها.

يتم تخزين البيانات في قاعدة بيانات. تعد استعلامات 1C طريقة لاسترداد البيانات من قاعدة البيانات لعرضها للمستخدم في نموذج أو لمعالجتها.

الجزء الأساسي من التقرير هو طلب 1C. في حالة التقرير، فإن ACS هو الجزء الأكبر من التقرير.

اجلس. خذ نفس. إهدئ. الآن سأخبرك بالخبر.

للبرمجة في 1C، لا يكفي معرفة لغة البرمجة 1C. تحتاج أيضًا إلى معرفة لغة الاستعلام 1C.

لغة الاستعلام 1C هي لغة منفصلة تمامًا تسمح لنا بتحديد البيانات التي نحتاج للحصول عليها من قاعدة البيانات.

وهو أيضًا ثنائي اللغة - أي أنه يمكنك الكتابة باللغة الروسية أو الإنجليزية. إنها تشبه إلى حد كبير لغة استعلام SQL ويمكن لأولئك الذين يعرفونها الاسترخاء.

كيف يتم استخدام طلبات 1C

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

استعلامات 1C هي:

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

إنشاء وتنفيذ استعلامات 1C

طلب 1C هو النص الفعلي للطلب بلغة طلب 1C.
يمكن كتابة النص بالأقلام. أي خذها واكتبها (إذا كنت تعرف هذه اللغة).

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

بمجرد أن يصبح نص طلب 1C جاهزًا، يجب تنفيذه. لهذا الغرض، يوجد كائن في رمز 1C Request(). هنا مثال:

طلب = طلب جديد ()؛
استعلام.نص = "حدد
| Nomenclature.Link
|من
| Directory.Nomenclature AS التسميات
|أين
| Nomenclature.Service";
حدد = Query.Run().Select();

تقرير(Selection.Link);
EndCycle;

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

يمكن تحميل النتيجة إلى جدول عادي:
جلب = Query.Run().Unload(); // النتيجة - جدول القيم

أو مجرد التجول سطرًا تلو الآخر.
حدد = Query.Run().Select();
أثناء حلقة Select.Next()
// افعل شيئًا ما مع نتائج الاستعلام
EndCycle;

العمل مع طلبات 1C

المبادئ الأساسية للاستعلامات 1C

المبادئ الأساسية لبناء طلب 1C –
حدد قائمة الحقول من عنوان الجدول حيث الشروط

مثال على إنشاء طلب 1C:

يختار
// قائمة الحقول المراد تحديدها
وصلة،
اسم،
شفرة
من
// اسم الجدول الذي نختار منه البيانات
// قائمة الجداول هي قائمة بالكائنات الموجودة في نافذة المكوِّن
Directory.Nomenclature
أين
// تشير إلى الاختيار
نوع المنتج = &الخدمة // التحديد حسب القيمة الخارجية
أو سمة الخدمة // "الخدمة" من النوع المنطقي، التحديد حسب القيمة صحيح
ترتيب حسب
//فرز
اسم

قائمة الجداول 1C

يمكنك رؤية أسماء الجداول في نافذة المكوّن. كل ما عليك فعله هو كتابة "الدليل" بدلاً من "الأدلة"، على سبيل المثال "الدليل.التسميات" أو "المستند.مبيعات السلع والخدمات" أو "سجل التراكم.المبيعات".

توجد جداول إضافية (افتراضية) للسجلات تتيح لك الحصول على الأرقام النهائية.

سجل المعلومات.اسم التسجيل.الشريحة الأخيرة (التاريخ) - طلب 1C من سجل المعلومات، إذا كان دوريًا، لتاريخ محدد

سجل التراكم.اسم السجل.الأرصدة (التاريخ) - طلب 1C من سجل الأرصدة لتاريخ محدد

سجل التراكم.اسم السجل.الدوران (&تاريخ البدء، &تاريخ الانتهاء) - طلب 1C من سجل الدوران للفترة من تاريخ البدء إلى تاريخ الانتهاء.

مبادئ إضافية

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

يختار
// الكمية (اسم الحقل) - لحساب الكمية
//Field AS OtherName - يعيد تسمية الحقل
الكمية (الرابط) AS كمية المستندات المرسلة
من

أين
أُجرِي

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

يختار
//مجرد حقل مستند
منظمة،
// احسب الكمية
الكمية(رابط) AS الكميةحسب المنظمات
من
وثيقة مبيعات السلع والخدمات
أين
أُجرِي
مجموعة من

منظمة

سيعيد لنا طلب 1C هذا عدد المستندات الخاصة بكل منظمة (وتسمى أيضًا "حسب المنظمة").

دعونا أيضًا نحسب مقدار هذه المستندات باستخدام طلب 1C:

يختار
//مجرد حقل مستند
منظمة،
// احسب الكمية

// احسب المبلغ

من
وثيقة مبيعات السلع والخدمات
أين
أُجرِي
مجموعة من
// يجب استخدامه إذا كانت قائمة الحقول تحتوي على وظيفة count() وحقل واحد أو أكثر في نفس الوقت - فأنت بحاجة إلى التجميع حسب هذه الحقول
منظمة

سيؤدي طلب 1C هذا أيضًا إلى إرجاع كمية المستندات إلينا.

يختار
//مجرد حقل مستند
منظمة،
// احسب الكمية
الكمية(رابط) AS الكميةحسب المنظمات،
// احسب المبلغ
المبلغ(DocumentAmount) كمبلغ
من
وثيقة مبيعات السلع والخدمات
أين
أُجرِي
مجموعة من
// يجب استخدامه إذا كانت قائمة الحقول تحتوي على وظيفة count() وحقل واحد أو أكثر في نفس الوقت - فأنت بحاجة إلى التجميع حسب هذه الحقول
منظمة
نتائج أمر الشراء عام

لغة الاستعلام 1C واسعة النطاق ومعقدة، ولن نفكر في جميع إمكانياتها في درس واحد - اقرأ دروسنا التالية.

باختصار حول الميزات الإضافية للغة الاستعلام 1C:

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

1C منشئ الاستعلام

من أجل عدم كتابة نص الطلب يدويًا، يوجد مصمم طلب 1C. فقط انقر بزر الماوس الأيمن في أي مكان في الوحدة وحدد 1C Query Designer.

حدد الجدول المطلوب على اليسار في مصمم استعلام 1C واسحبه إلى اليمين.

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

في علامة التبويب "الشروط" في مصمم استعلام 1C، يمكنك تحديد التحديدات الضرورية بنفس الطريقة (عن طريق سحب الحقول التي ستجري التحديد من خلالها). تأكد من تحديد الحالة الصحيحة.

في علامة التبويب "الترتيب"، تتم الإشارة إلى الفرز. في علامة التبويب "النتائج" - تلخيص النتائج.

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

2023 asm59.ru
الحمل والولادة. البيت و العائلة. الترفيه والتسلية