احسب التعبير skd. أمثلة مفيدة لمخطط تكوين البيانات

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

جوهر الحل هو استخدام وظيفة لغة التعبير SKD حساب التعبير ()في الحقل المحسوب المضاف الذي اتصلت به دلتا. تحتوي الوظيفة على المعلمات التالية:

خيارات:

  • تعبير. نوع من خط;
  • التجمع. نوع من خط;
  • نوع الحساب. نوع من خط;
  • بداية
  • نهاية. سلسلة تحتوي على أحد الخيارات ؛
  • فرز. خط؛
  • هرمي;
  • التعامل مع ترتيب القيم نفسها

نحن مهتمون بالمعلمات 4 و 5 ( بدايةو نهاية). سيبدو التعبير كما يلي:

isNULL ((CALCULATE EXPRESSION ("Price"، "Previous"، "Previous") - Price)، 0)

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

ضع جدول القيم في خلية وثيقة جدول بيانات

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

للقيام بذلك ، تحتاج إلى استخدام الوظيفة: ComputeExpressionGroupedValueTable() التي لها معلمات:

  • تعبيرهو التعبير المراد تقييمه. اكتب سلسلة. يمكن أن يحتوي السطر على عدة تعبيرات مفصولة بفواصل. يمكن أن يتبع كل تعبير الكلمة الأساسية الاختيارية AS واسم العمود لجدول القيمة. على سبيل المثال: "المقاول ، المبلغ (AmountTurnover) مثل حجم المبيعات".
  • تعبيرات المجالالتجمعات- تجميع التعبيرات الميدانية مفصولة بفواصل. على سبيل المثال ، "المقاول ، الطرف" ؛
  • اختيار التسجيلهو تعبير يتم تطبيقه على السجلات التفصيلية. على سبيل المثال ، "DeletionMark = False" ؛
  • تحديد التجميع- الاختيار المطبق على سجلات المجموعة. على سبيل المثال: "Amount (AmountTurnover)> & Parameter1".

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

عدد الأعمدة

مثال على كيفية ترقيم الأعمدة في SKD.

جوهر الحل:

  1. نقوم بإنشاء استعلام نرقم فيه صفوف نتيجة الاستعلام ضمن تبعية معينة
  2. عرض النتيجة في جدول جدولي

مهم!

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

للحصول على النتيجة ، تحتاج إلى إنشاء حقل محسوب بالتعبير "الموظف" + التنسيق (NPP، "FH = 3 ؛ FH =")واسم الحقل المحسوب ، حيث يسهل وضع الموظف فيه ، ثم نضع الحقل الاسم الكامللمورد مع تعبير الحد الأقصى (الاسم الكامل)أو ببساطة الاسم الكامل- لا فرق

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

في مكان ما على Mista أو في نفس 1Cskd.ru ، كان هناك سؤال حول كيفية إبراز الخطوط التي تشكل مجموعات بألوان مختلفة

يتم تحقيق ذلك عن طريق إنشاء حقل محسوب:

حساب التعبير ("الكمية (عناصر مختلفة)" ، "الأول" ، "السابق" ، "معًا")٪ 2

نحسب عدد "التجمعات" المختلفة لحقل التسمية ، ويمكن حساب المجموعات عن طريق تعيين قيمة المعلمة ProcessingSameOrderValues ​​= "معًا"

سيوضح باقي القسمة على اثنين ما إذا كانت هذه المجموعة زوجية أم لا ، على التوالي ، نقوم بإنشاء عنصر تصميم شرطي مع الشرط مجال = 1

البقاء في سياق الخصائص. الخصائص لكل سطر مع الكمية بين قوسين

في نفس 1CSkd.ru ، كان هناك موضوع يطلب فيه المؤلف المساعدة في إعداد تقرير ، حيث يلزم في أحد الأعمدة قائمة بالخصائص (أحجام الأحذية) مع عددها. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

يتم تحقيق ذلك باستخدام نفس الوظيفة حساب التعبير باستخدام GroupingArray ()

في هذا المثال ، تبدو الوظيفة كما يلي:

حساب ExpressionW with GroupingArray ("خاصية التسمية. الوصف +
"" ("" + تنسيق (عدد المتبقي ، "" CH = 0 "") + "") "" "،
,
"ValueFilled (FeatureNomenclature)")

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

انضم إلى جدولين باستخدام سلسلة المفاتيح = الرقم

أو متغير لكيفية تحويل قيمة نوع الرقم إلى سلسلة في SKD

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

لتحويل رقم إلى سلسلة ، ما عليك سوى استخدام وظيفة لغة التعبير لنظام تكوين بيانات SKD خط()أو شكل()

لتحويل سلسلة إلى رقم ، يمكنك استخدام الوظيفة إحصاء - عد()

فرز حسب السلسلة حسب الرقم

في المثال الخاص بي ، سأقوم ببساطة بعرض دليل الموظف ، وفرزه حسب رقم (رمز) الموظف

ستبدو النتيجة كما يلي:

يتم تحقيق ذلك عن طريق إنشاء حقل محسوب واستخدام وظيفة لغة التعبير SKD إحصاء - عد()

  1. قم بإنشاء حقل محسوب TabNumberNumber، مع التعبير: احسب (رمز الموظف)
  2. فرز حسب هذا المجال

في الواقع ، هذا هو تحويل سلسلة إلى رقم باستخدام وظيفة لغة التعبير SKD إحصاء - عد()

أنصحك أيضًا بإلقاء نظرة على "دروس الفيديو على skd" (يمكن البحث عنها بسهولة في Google)

عند التطوير ، أستخدم ملف.

في ضوء الإصدار القادم من 8.2.14 ، سأحاول وصف بعض الميزات الجديدة لنظام تكوين البيانات.

افتح نظام تكوين البيانات ، ويفضل أن يكون ذلك في تقرير خارجي ، لتسهيل التحرير.

نضيف مجموعة بيانات الاستعلام ونكتب ، إما يدويًا أو باستخدام منشئ الاستعلام ، أبسط استعلام:

1. قم بإعداد طلب في ACS.

2. قم بإعداد الحقول المحسوبة في ACS

3. نقوم بتكوين تخطيط البيانات في علامة تبويب الإعدادات

4. أطلقنا 1C Enterprise 8.2.14. نفتح التقرير. نحن نشكل ونستقبل.

وصف الميزات الجديدة نفسها:

1. التاريخ الحالي ()

إرجاع تاريخ النظام. عند تخطيط التخطيط ، في جميع التعبيرات الموجودة في التخطيط ، يتم استبدال وظيفة CurrentDate () بقيمة التاريخ الحالي.

2. التعبير الحاسوبي ()

بناء الجملة:

حساب التعبير (،)

وصف:

تم تصميم الوظيفة لتقييم تعبير في سياق بعض المجموعات.

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

لا يمكن تطبيق الوظيفة على مجموعة في اختيار المجموعة لتلك المجموعة. على سبيل المثال ، في تحديد مجموعة المصطلحات ، لا يمكنك استخدام التعبير حساب التعبير ("Sum (SumTurnover)"، "TotalTotal")> 1000. لكن مثل هذا التعبير يمكن استخدامه في الاختيار الهرمي.

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

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

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

خيارات

نوع من: خط. التعبير المراد تقييمه.

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

فمثلا:

Sum (Sales.SumTurnover) / Calculate ("Sum (Sales.SumTurnover)"، "TotalTotal")

في هذا المثال ، ستكون النتيجة هي نسبة المبلغ حسب الحقل المبيعاتتجميع الإدخالات لمجموع نفس الحقل في التخطيط بأكمله ؛

نوع من: خط. يمكن أن تأخذ المعلمة القيم التالية:

· النتيجة الإجمالية- سيتم تقييم التعبير لجميع سجلات التجميع.

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

· التجمع- سيتم تقييم التعبير لسجل المجموعة الحالي للتجميع.

· GroupingNotResource- عند حساب دالة لسجل مجموعة حسب الموارد ، سيتم حساب التعبير لأول سجل مجموعة للتجميع الأولي.

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

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

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

· لأول مرة لأول مرة)

· الأخير (الأخير)

· السابق (السابق)

· التالي التالي )

· التيار الحالي)

· تحديد القيمة(قيمة الحدود) تحديد القيمة

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

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

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

· الأخير (الأخير). تحتاج إلى الحصول على أحدث إدخال تجميع. بعد الكلمة الموجودة بين قوسين ، يمكنك تحديد تعبير ، سيتم استخدام نتيجته كإزاحة من نهاية التجميع. يجب أن تكون القيمة الناتجة عددًا صحيحًا أكبر من الصفر. على سبيل المثال ، Last (3) - احصل على السجل الثالث من نهاية التجميع.

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

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

إذا كان السجل السابق خارج التجميع (على سبيل المثال ، يتطلب سجل التجميع الثاني السابق (3) ، يتم الحصول على أول سجل تجميع.

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

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

إذا تجاوز السجل التالي التجميع ، فسيتم اعتبار أنه لا توجد سجلات. على سبيل المثال ، إذا كان هناك 3 سجلات وحصل السجل الثالث على Next () ، فيُعتبر أنه لا توجد سجلات.

عند استلام السجل التالي لإجمالي التجميع ، يعتبر أنه لا يوجد سجل.

· التيار الحالي). تحتاج إلى الحصول على الإدخال الحالي.

عند استرجاعه لإجمالي تجميع ، يتم استرداد السجل الأول.

· تحديد القيمة(قيمة الحدود). ضرورة الحصول على السجل بالقيمة المحددة. بعد الكلمة تحديد القيمةبين قوسين ، تحتاج إلى تحديد التعبير بالقيمة التي تريد أن تبدأ بها الجزء ، حقل الترتيب الأول.

سيكون السجل هو السجل الأول الذي تكون قيمة حقل الترتيب فيه أكبر من القيمة المحددة أو مساوية لها. على سبيل المثال ، إذا كنت تستخدم حقل الفترة كحقل ترتيب ، وكان يحتوي على القيم 01/01/2010 ، 02/01/2010 ، 03/01/2010 ، وتريد الحصول على LimitValue (DateTime (2010، 1، 15))، ثم سيتم استلام سجل بتاريخ 02/01/2010.

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

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

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

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

· مع بعضنا البعض)يشير إلى أنه تم تحديد السجلات السابقة والتالية بناءً على قيم تعبيرات الترتيب.

على سبيل المثال ، إذا تم ترتيب التسلسل الناتج حسب التاريخ:

التاريخ الاسم الكامل المعنى
1 01 يناير 2001

إيفانوف م.

10
2 02 يناير 2001 بيتروف س. 20
3 03 يناير 2001 سيدوروف ر. 30
4 04 يناير 2001 بيتروف س. 40

بشكل منفصل، ومن بعد:

§ الإدخال السابق للقيد 3 سيكون الإدخال 2.

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

إذا كانت قيمة المعلمة هي معاً، ومن بعد:

§ الإدخال السابق للقيد 3 سيكون الإدخال 1.

§ إذا تم تعريف الجزء المحسوب على أنه التيار الحالي(على التوالي ، المعلمات بدايةو نهاية) ، ثم بالنسبة للسجل 2 ، سيتألف هذا الجزء من السجلات 2 و 3. التعبير حساب التعبير ("المجموع (القيمة)" ، الحالي ، الحالي)سيساوي 50.

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

CalculateExpression ("Amount (AmountTurnover)"، "First"، "Current")

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

CalculateExpression ("الدورة التدريبية" ، "السابق")

قائمة الجديدميزات:

ComputeExpressionGroupedArray(,) -

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

ComputeExpressionGroupedValueTable(,) -

ترجع الدالة جدولاً للقيم ، يحتوي كل صف على نتيجة تقييم التعبيرات للتجميع حسب الحقل المحدد

القيمة() - إرجاع True إذا كانت القيمة مختلفة عن القيمة الافتراضية لهذا النوع ، بخلاف NULL ، بخلاف مرجع فارغ ، بخلاف Undefined. يتم اختبار القيم المنطقية مقابل NULL. يتم فحص السلاسل بحثًا عن أحرف ليست ذات مسافات بيضاء.

شكل(،) - احصل على السلسلة المنسقة للقيمة التي تم تمريرها. يتم تعيين سلسلة التنسيق وفقًا لسلسلة التنسيق الخاصة بنظام 1C: Enterprise.

سلسلة فرعية(،) - تم تصميم هذه الوظيفة لتحديد سلسلة فرعية من سلسلة.

طول سلسلة() - الوظيفة مصممة لتحديد طول السلسلة. المعلمة هي تعبير من نوع السلسلة

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

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

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


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

    القليل من التاريخ

    في الإصدار الأول من 1C: Enterprise 8 platform ، الإصدار 8.0 ، تم عمل التقارير على النحو التالي:
    1. تمت كتابة استعلام واحد أو أكثر بلغة استعلام 1C (لغة شبيهة بلغة SQL ، والمزيد عنها أدناه).
    2. تمت كتابة التعليمات البرمجية التي تنقل نتائج الاستعلامات المنفذة إلى مستند أو مخطط جدول بيانات. يمكن أن يقوم الكود أيضًا بعمل لا يمكن إجراؤه في استعلام - على سبيل المثال ، قام بحساب القيم باستخدام لغة 1C المضمنة.
    النهج بسيط ، ولكنه ليس الأكثر ملاءمة - فهناك حد أدنى من الإعدادات المرئية ، وكل شيء يجب برمجته يدويًا. وكانت إحدى البطاقات الرابحة في ذلك الوقت لمنصة 1C الجديدة تمامًا: Enterprise 8 هي تقليل مقدار الكود في حل التطبيق الذي يجب كتابته يدويًا ، على وجه الخصوص ، بسبب التصميم المرئي. سيكون من المنطقي اتباع نفس المسار في آلية الإبلاغ. تم ذلك من خلال تطوير آلية جديدة - نظام تكوين البيانات.

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

    صياغة المشكلة

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

    لغتان

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

    لغة الاستعلام

    تعتمد لغة الاستعلام على SQL ويمكن إتقانها بسهولة من قبل أولئك الذين يعرفون SQL. طلب مثال:

    من السهل رؤية نظائرها لأقسام استعلام SQL القياسية - حدد ، من ، تجميع حسب ، ترتيب حسب.

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

    • الإشارة إلى الحقول من خلال نقطة. إذا كانت حقول الجدول تحتوي على نوع مرجعي (وهي تخزن ارتباطات إلى كائنات من جدول آخر) ، فيمكن للمطور الرجوع إليها في نص الاستعلام من خلال "." ، في حين أن عدد مستويات التداخل لهذه الروابط لا يقتصر على النظام (على سبيل المثال ، طلب العميل ، الاتفاق ، المنظمة ، الهاتف).
    • تشكيل متعدد الأبعاد ومتعدد المستويات للنتائج. يتم تشكيل المجاميع والإجماليات الفرعية مع الأخذ في الاعتبار التجميع والتسلسل الهرمي ، ويمكن تجاوز المستويات بترتيب تعسفي مع تلخيص المجاميع الفرعية ، ويتم ضمان البناء الصحيح للمجاميع حسب أبعاد الوقت.
    • دعم للجداول الافتراضية. تتيح لك الجداول الافتراضية التي يوفرها النظام الحصول على بيانات جاهزة تقريبًا لمعظم مهام التطبيق دون الحاجة إلى كتابة استعلامات معقدة. وبالتالي ، يمكن للجدول الافتراضي أن يوفر بيانات عن ميزان البضائع في سياق الفترات في نقطة زمنية معينة. في الوقت نفسه ، تستفيد الجداول الافتراضية إلى أقصى حد من المعلومات المخزنة ، على سبيل المثال ، الإجماليات المحسوبة مسبقًا ، إلخ.
    • طاولات مؤقتة. تسمح لك لغة الاستعلام باستخدام الجداول المؤقتة في الاستعلامات. بمساعدتهم ، يمكنك تحسين أداء الاستعلامات ، وفي بعض الحالات تقليل عدد الأقفال ، وتسهيل قراءة نص الاستعلام.
    • طلبات دفعة. لمزيد من العمل الملائم مع الجداول المؤقتة ، تدعم لغة الاستعلام العمل مع الاستعلامات المجمعة - وبالتالي ، يتم وضع إنشاء جدول مؤقت واستخدامه في استعلام واحد. طلب الدُفعات هو سلسلة من الطلبات مفصولة بفاصلة منقوطة ("؛"). يتم تنفيذ الطلبات في الدفعة واحدة تلو الأخرى. ستكون نتيجة تنفيذ استعلام دُفعي ، اعتمادًا على الطريقة المستخدمة ، إما النتيجة التي تم إرجاعها بواسطة الاستعلام الأخير للدُفعة ، أو مصفوفة من نتائج جميع الطلبات المجمعة بالترتيب الذي تتبعه الطلبات الموجودة في الدُفعة.
    • الحصول على وجهات النظر الميدانية المرجعية. يحتوي كل جدول كائن (حيث يتم تخزين دليل أو مستند) على حقل افتراضي - "تمثيل". يحتوي هذا الحقل على تمثيل نصي للكائن ويجعل عمل المراسل أسهل. لذلك ، بالنسبة للمستند ، يحتوي هذا الحقل على جميع المعلومات الأساسية - اسم نوع المستند ورقمه وتاريخه (على سبيل المثال ، "بيع 000000003 من 07/06/2017 17:49:14") ، حفظ المطور من كتابة حقل محسوب.
    • وإلخ.
    يقوم محرك الاستعلام تلقائيًا بتعديل الاستعلام ، مع مراعاة أدوار المستخدم الذي يتم تنفيذ الاستعلام نيابة عنه (أي أن المستخدم سيرى فقط البيانات التي له الحق في رؤيتها) والخيارات الوظيفية (أي وفقًا لـ الذي تم تكوينه في وظيفة حل التطبيق).

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

    فمثلا:

    • يختار. تصف هذه الجملة الحقول التي سيتمكن المستخدم من تحديدها للإخراج. بعد هذه الكلمة الرئيسية ، يتم سرد الأسماء المستعارة للحقول من قائمة اختيار الاستعلام الرئيسية ، والتي ستكون متاحة للتخصيص ، مفصولة بفواصل. مثال: (تحديد التسمية ، المستودع)
    • أين. يصف الحقول التي يمكن للمستخدم أن يطبق الاختيار عليها. يستخدم هذا الاقتراح حقول الجدول. استخدام الأسماء المستعارة لحقول القائمة المختارة غير مسموح به. يمكن أن يحتوي كل جزء اتحاد على عنصر WHERE الخاص به. أمثلة: (WHERE Nomenclature. *، Warehouse)، (WHERE Document.Date> = & StartDate، Document.Date<= &ДатаКонца}
    • وإلخ.
    مثال على استخدام الامتدادات:

    لغة التعبير عن تكوين البيانات

    تم تصميم لغة تعبير تكوين البيانات لكتابة التعبيرات المستخدمة ، على وجه الخصوص ، لوصف تعبيرات الحقول المخصصة. يسمح لك ACS بتعريف الحقول المخصصة في تقرير باستخدام إما التعبيرات الخاصة بك أو مجموعات من الخيارات مع شروط لاختيارهم (مماثلة لـ CASE في SQL). الحقول المخصصة مماثلة للحقول المحسوبة. يمكن ضبطها في كلٍّ من المُكوِّن و 1 C: وضع المؤسسة ، ولكن لا يمكن استخدام وظائف الوحدات النمطية الشائعة في تعبيرات الحقول المخصصة. لذلك ، تعد الحقول المخصصة للمستخدم أكثر من المطور.

    مثال:

    عملية إنشاء تقرير عن الـ ACS

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

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

    ستكون نتيجة تشغيل منشئ الاستعلام نص الاستعلام (في 1C: لغة استعلام المؤسسة). يمكن تعديل هذا النص يدويًا إذا لزم الأمر:

    يمكن أن يكون هناك العديد من مجموعات البيانات في مخطط تكوين البيانات ، ويمكن ربط مجموعات البيانات في مخطط بطريقة عشوائية ، ويمكن إضافة الحقول المحسوبة ، ويمكن تعيين معلمات التقرير ، وما إلى ذلك. تجدر الإشارة إلى ميزة مثيرة للاهتمام في آلية الاستعلام في 1C: Enterprise. تتم ترجمة الاستعلامات في النهاية إلى لهجة SQL الخاصة بـ DBMS التي يعمل بها التطبيق مباشرة. بشكل عام ، نحاول استخدام إمكانات خوادم DBMS إلى أقصى حد (نحن مقيدون بحقيقة أننا نستخدم فقط تلك القدرات المتوفرة في وقت واحد في جميع نظم إدارة قواعد البيانات التي يدعمها 1C: النظام الأساسي للمؤسسات - MS SQL و Oracle و IBM DB2 ، PostgreSQL). وبالتالي ، على مستوى الاستعلام في الحقول المحسوبة ، يمكننا فقط استخدام تلك الوظائف التي تمت ترجمتها إلى SQL.

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


    إضافة الحقول المخصصة

    يمكنك إضافة أي عدد من الجداول والمخططات إلى التقرير:


    مصمم التقارير


    تقرير في وقت التشغيل

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

    صف بإيجاز عملية إنشاء التقرير وإصداره على النحو التالي:

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


    عملية إنشاء تقرير من قبل آلية ACS

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

    إعدادات المستخدم

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


    ضبط وضع العرض في وقت التصميم


    عرض الإعداد في وضع الوصول السريع في وقت التشغيل (تحت زر إنشاء)

    خطط التنمية

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

    في ضوء الإصدار القادم من 8.2.14 ، سأحاول وصف بعض الميزات الجديدة لنظام تكوين البيانات.

    افتح نظام تكوين البيانات ، ويفضل أن يكون ذلك في تقرير خارجي ، لتسهيل التحرير.

    نضيف مجموعة بيانات الاستعلام ونكتب ، إما يدويًا أو باستخدام منشئ الاستعلام ، أبسط استعلام:

    1. قم بإعداد طلب في ACS.

    2. قم بإعداد الحقول المحسوبة في ACS

    3. نقوم بتكوين تخطيط البيانات في علامة تبويب الإعدادات

    4. أطلقنا 1C Enterprise 8.2.14. نفتح التقرير. نحن نشكل ونستقبل.

    وصف الميزات الجديدة نفسها:

    1. التاريخ الحالي ()

    إرجاع تاريخ النظام. عند تخطيط التخطيط ، في جميع التعبيرات الموجودة في التخطيط ، يتم استبدال وظيفة CurrentDate () بقيمة التاريخ الحالي.

    2. التعبير الحاسوبي ()

    بناء الجملة:

    حساب التعبير (<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

    وصف:

    تم تصميم الوظيفة لتقييم تعبير في سياق بعض المجموعات.

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

    لا يمكن تطبيق الوظيفة على مجموعة في اختيار المجموعة لتلك المجموعة. على سبيل المثال ، في تحديد مجموعة المصطلحات ، لا يمكنك استخدام التعبير حساب التعبير ("Sum (SumTurnover)" ، "TotalTotal")> 1000. ولكن يمكن استخدام مثل هذا التعبير في التحديد الهرمي.

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

    عند حساب تعبيرات الفاصل الزمني للإجمالي الكلي (تم تعيين معلمة التجميع على المجموع الكلي) ، يُعتبر أنه لا توجد سجلات لحساب البيانات التفصيلية وحساب الوظائف التجميعية.

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

    خيارات

    <Выражение>

    النوع: سلسلة. التعبير المراد تقييمه.

    <Группировка>

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

    فمثلا:

    Sum (Sales.SumTurnover) / Calculate (“Sum (Sales.SumTurnover)” ، “TotalTotal”)

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

    <ОбластьВычисления>

    النوع: سلسلة. يمكن أن تأخذ المعلمة القيم التالية:

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

    عند حساب الوظيفة حساب التعبير ()باستخدام قيمة GroupingNotResource لسجلات المجموعة التي ليست تجميعات حسب الموارد ، يتم تقييم الوظيفة بنفس الطريقة التي يتم بها حسابها إذا كانت قيمة المعلمة مساوية لقيمة التجميع.

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

    <Начало>

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

    <Конец>

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

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

    إذا كان الإدخال الأول خارج المجموعة ، فيُعتبر أنه لا توجد إدخالات. على سبيل المثال ، إذا كان هناك 3 سجلات ، وتريد getFirst (4) ، فيُعتبر أنه لا توجد سجلات.

    • الأخير (الأخير). تحتاج إلى الحصول على أحدث إدخال تجميع. بعد الكلمة الموجودة بين قوسين ، يمكنك تحديد تعبير ، سيتم استخدام نتيجته كإزاحة من نهاية التجميع. يجب أن تكون القيمة الناتجة عددًا صحيحًا أكبر من الصفر. على سبيل المثال ، Last (3) - الحصول على السجل الثالث من نهاية التجميع.

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

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

    إذا كان السجل السابق خارج التجميع (على سبيل المثال ، يتطلب سجل التجميع الثاني السابق (3) ، يتم الحصول على أول سجل تجميع.

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

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

    إذا تجاوز السجل التالي التجميع ، فسيتم اعتبار أنه لا توجد سجلات. على سبيل المثال ، إذا كان هناك 3 سجلات وحصل السجل الثالث على Next () ، فيُعتبر أنه لا توجد سجلات.

    عند استلام السجل التالي لإجمالي التجميع ، يعتبر أنه لا يوجد سجل.

    • التيار الحالي). تحتاج إلى الحصول على الإدخال الحالي.

    عند استرجاعه لإجمالي تجميع ، يتم استرداد السجل الأول.

    • قيمة الحدود. ضرورة الحصول على السجل بالقيمة المحددة. بعد كلمة RestrictingValue بين قوسين ، تحتاج إلى تحديد التعبير بالقيمة التي تريد بدء الجزء منها ، حقل الترتيب الأول.

    سيكون السجل هو السجل الأول الذي تكون قيمة حقل الترتيب فيه أكبر من القيمة المحددة أو مساوية لها. على سبيل المثال ، إذا تم استخدام حقل الفترة كحقل ترتيب ، وكان يحتوي على القيم 01/01/2010 ، 02/01/2010 ، 03/01/2010 ، وتريد الحصول على القيمة LimitValue (DateTime (2010 ، 1 ، 15)) ، ثم سيتم استلام سجل بتاريخ 02/01.2010.

    <Сортировка>

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

    <ИерархическаяСортировка>

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

    <ОбработкаОдинаковыхЗначенийПорядка>

    النوع: سلسلة. تحدد قاعدة لتحديد السجل السابق أو التالي في حالة وجود سجلات متعددة بنفس قيمة الترتيب:

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

    على سبيل المثال ، إذا تم ترتيب التسلسل الناتج حسب التاريخ:

    التاريخ الاسم الكامل المعنى
    1 01 يناير 2001 إيفانوف م. 10
    2 02 يناير 2001 بيتروف س. 20
    3 03 يناير 2001 سيدوروف ر. 30
    4 04 يناير 2001 بيتروف س. 40

    إذا كانت قيمة المعلمة هي Separate ، فحينئذٍ:

    § الإدخال السابق للقيد 3 سيكون الإدخال 2.

    § إذا تم تعريف جزء الحساب على أنه تيار ، حالي (على التوالي ، معلمات البداية والنهاية) ، فإن هذا الجزء للسجل 2 سيتألف من سجل واحد 2. التعبير حساب التعبير ("المجموع (القيمة)" ، الحالي ، الحالي) سوف تساوي 20

    إذا كانت قيمة المعلمة معًا ، فحينئذٍ:

    § الإدخال السابق للقيد 3 سيكون الإدخال 1.

    § إذا تم تعريف جزء الحساب على أنه تيار ، حالي (على التوالي ، معلمات البداية والنهاية) ، فعندئذٍ بالنسبة للسجل 2 ، سيتألف هذا الجزء من السجلات 2 و 3. تكون مساوية لـ 50.

    عند تحديد قيمة المعلمة التي تساوي معًا ، في المعلمات Start and End ، لا يمكنك تحديد إزاحة للمواضع الأول والأخير والسابق والتالي.

    CalculateExpression ("Amount (AmountTurnover)"، "First"، "Current")

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

    CalculateExpression ("الدورة التدريبية" ، "السابق")

    قائمة الجديدميزات:

    ComputeExpressionGroupedArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

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

    ComputeExpressionGroupedValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

    ترجع الدالة جدولاً للقيم ، يحتوي كل صف على نتيجة تقييم التعبيرات للتجميع حسب الحقل المحدد

    القيمة(<Выражение>) - إرجاع True إذا كانت القيمة مختلفة عن القيمة الافتراضية لهذا النوع ، بخلاف NULL ، بخلاف مرجع فارغ ، بخلاف Undefined. تم اختبار القيم المنطقية لـ NULL. يتم فحص السلاسل بحثًا عن أحرف ليست ذات مسافات بيضاء.

    شكل(<Выражение>, <Форматная строка>) - احصل على السلسلة المنسقة للقيمة التي تم تمريرها. يتم تعيين سلسلة التنسيق وفقًا لسلسلة التنسيق الخاصة بنظام 1C: Enterprise.

    سلسلة فرعية(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - تم تصميم هذه الوظيفة لتحديد سلسلة فرعية من سلسلة.

    طول سلسلة(<Выражение>) - الوظيفة مصممة لتحديد طول السلسلة. المعلمة - تعبير نوع السلسلة

    خط(<Выражение>) - إذا تم تمرير مصفوفة كمعامل ، فإن الدالة ترجع سلسلة تحتوي على تمثيلات سلسلة لجميع عناصر المصفوفة ، مفصولة بالحروف "؛ ". إذا تم تمرير جدول القيم كمعامل ، فإن الدالة ترجع سلسلة تحتوي على تمثيلات سلسلة لجميع صفوف جدول القيم ، ويتم فصل تمثيلات الخلية لكل سطر بواسطة الأحرف "؛ "، وسلاسل ذات طابع جديد. إذا كان أي عنصر يحتوي على تمثيل سلسلة فارغة ، فعندئذٍ بدلاً من تمثيله ، يتم عرض سلسلة<Пустое значение>.

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

    إعدادات إضافية لحقول ACS.

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

    عمودي "القيم المتوفرة"يسمح لك بتحديد القيم المتاحة للاختيار وقصر اختيار المستخدم على حدود معينة.

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

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

    الحقول المحسوبة

    يمكنك إنشاء الحقول المحسوبة الخاصة بك في علامة تبويب الحقول المحسوبة لتكوين البيانات.

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

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

    المبلغ - السعر * الكمية

    تحقق من موقع آخر ، ويمكنك أيضًا التنزيل باستخدام هذه الوظائف.

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

    كيف تنقل المعلمات والاختيارات إلى تقرير مبني على ACS دون إنشاء نموذج تقرير؟

    & AtClient // تمرير المعلمات إلى تقرير ACSمعالجة أوامر الإجراء (معلمة الأمر ، معلمات تنفيذ الأوامر) التحديد = البنية الجديدة ("التسمية" ، معلمة الأمر) ؛ FixedSettings = GetFixedSettings () ، FormParameters = هيكل جديد ( "ShapeOnOpen ، التحديد والمفتاح المتغير والإعدادات الثابتة "الحقيقة الاختيار "متغير تقرير المبيعات"، FixedSettings) ؛ OpenForm ( "Report.SalesReport.Form"، FormParameters) ؛ EndProcedure & AtServer Function GetFixedSettings () تقرير المبيعات = التقارير. تقرير المبيعات. خلق() ؛ SKD = ​​تقرير المبيعات. DataCompositionScheme؛ الإعدادات = SKD. الإعدادات الافتراضية؛ StartPeriod = إعدادات. المعلمات البيانات. FindParameterValue (NewDataCompositionParameter ("PeriodStart")) ؛ بداية الفترة. القيمة = MonthStart (CurrentDate ()) ؛ بداية الفترة. الاستخدام = صحيح ؛ StartPeriod = إعدادات. المعلمات البيانات. FindParameterValue (NewDataCompositionParameter ("EndPeriod")) ؛ نهاية الفترة. القيمة = EndMonth (CurrentDate ()) ؛ نهاية الفترة. الاستخدام = صحيح ؛ إعدادات العودة ؛ وظائف النهاية // GetFixedSettings ()

    كيفية محاذاة عناوين الأعمدة للمركز في تقرير SKD؟

    تحتاج إلى تعيين معلمتين في حقل "التصميم" في علامة التبويب "مجموعات البيانات":

    الوضع الأفقي: المركز الرأسي الوضع: المركز

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

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

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