إضافة حقل محسوب برمجياً. لغة تعبير نظام تكوين البيانات (1Cv8). الوصول إلى وظائف التصدير للوحدة المشتركة

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

  1. المجموع التراكمي في التجميع؛
  2. الإجمالي التراكمي في علامة تبويب؛
  3. الحصول على القيمة السابقة
  4. إخراج PM في سطر واحد.

1. الحصول على المؤشر على أساس الاستحقاق

لنحصل على كمية البضائع كإجمالي تراكمي على مستوى التجميع. للقيام بذلك، قم بإنشاء حقل محسوب (انظر الشكل 1).
في علامة التبويب "الموارد"، قم بتعيين وظيفة الحقل المحسوب:
CalculateExpression("Sum(QuantityTurnover)"، "الأول"، "الحالي")
والذي سيجمع عدد المنتجات من السجل الأول إلى السجل الحالي (انظر الشكل 2).

إذا كان من الضروري الحصول على الكمية الإجمالية التراكمية لأحد العناصر على مستوى السجلات التفصيلية، فإننا نقوم بتعيين وظيفة CalculateExpression للحقل المحسوب في علامة التبويب "الحقول المحسوبة" (انظر الشكل 3).
اعتمادا على مستوى الحصول على الإجمالي التراكمي، نقوم بإنشاء مجموعة (انظر الشكل 4): على مستوى الموارد - التجميع حسب البضائع، على مستوى التحكم عن بعد - تجميع السجلات التفصيلية.
الشكل 4. تقرير التجمعات مع المجاميع التراكمية

2. الحصول على قيمة المؤشر من الصف السابق

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

3. الحصول على مؤشر كمجموع تراكمي في علامة تبويب

دعونا نحصل على كمية البضائع على أساس الاستحقاق حسب الفترة. للقيام بذلك، قم بإنشاء حقل محسوب (انظر الشكل 1). في علامة التبويب "الموارد"، نحدد التعبير التالي للحقل المحسوب (انظر الشكل 6):
CalculateExpression("Sum(QuantityTurnover)"، "الفترة"، "الأولى"، "الحالي")
والتي ستحسب على مستوى التجميع كمية البضائع في الفترة من السطر الأول إلى السطر الحالي في سياق الفترة لكل عنصر.
في علامة التبويب "الإعدادات"، قم بإنشاء جدول يتم فيه التجميع حسب العنصر في صف واحد والتجميع حسب الفترة في عمود (انظر الشكل 7).

4. إخراج البيانات الجدولية في سطر واحد

تمت مناقشة طرق عرض البيانات الجدولية في سطر واحد، بما في ذلك الطريقة التي تستخدم الدالة CalculateExpression، في المقالة

يتيح لك الاستخدام السليم لنظام تكوين البيانات (DCS) ما يلي:

  • تقليل الوقت اللازم لإعداد التقرير بشكل كبير؛
  • القضاء على الحاجة إلى إنشاء معالج نموذج مُدار؛
  • احصل على نتيجة جميلة مع إمكانية التخصيص الإضافي من قبل المستخدم.

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

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

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

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

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

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

دعونا نذهب من خلال هذه القائمة.

مجموعة من القيم في خلية واحدة

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


وبالتالي، قمنا بإنشاء حقل حساب إضافي في مخططنا؛


كما ترون من المثال أعلاه، لا توجد صعوبات في إضافة الحقول المحسوبة ومعالجتها. استخدمنا وظيفتين: Array() و ConnectRows().

بضع كلمات عن هذا الأخير. بالإضافة إلى المعلمة الأولى التي تشير إلى معرف المصفوفة أو القيم أو القيمة، يمكن تعيين معلمتين أخريين فيه:

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

الوصول إلى وظائف التصدير للوحدة المشتركة

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

بعض النقاط المهمة:

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

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


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

تعبيرات اللغة التخطيطية

في كثير من الأحيان في عمل المطور، ينشأ موقف عندما يكون من الضروري عرض نتيجة التقسيم في حقل ACS:

  1. حساب متوسط ​​تكلفة السلعة؛
  2. جميع أنواع الاهتمام؛
  3. حسابات متوسط ​​الدخل، الخ.

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

يمكن القيام بذلك باستخدام بناء "الاختيار متى....ثم...وإلا...النهاية".

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

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

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

تم تصميم لغة تعبير نظام تكوين البيانات لكتابة التعبيرات المستخدمة في أجزاء مختلفة من النظام.

يتم استخدام التعبيرات في الأنظمة الفرعية التالية:

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

حرفية

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

  • خط؛
  • رقم؛
  • تاريخ؛
  • منطقية.

خط

تتم كتابة السلسلة الحرفية بأحرف ""، على سبيل المثال:

"سلسلة حرفية"

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

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

""حرفي""في علامتي الاقتباس"""

رقم

يتم كتابة الرقم بدون مسافات، بالتنسيق العشري. يتم فصل الجزء الكسري باستخدام الرمز "." على سبيل المثال:

10.5 200

تاريخ

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

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

DATETIME(1975, 1, 06) - 6 يناير 1975 DATETIME (2006, 12, 2, 23, 56, 57) - 2 ديسمبر 2006، 23 ساعة و56 دقيقة و57 ثانية، 23 ساعة و56 دقيقة و57 ثانية

منطقية

يمكن كتابة القيم المنطقية باستخدام القيم الحرفية True (True) وFalse (False).

معنى

لتحديد أنواع أخرى من القيم الحرفية (تعدادات النظام، البيانات المحددة مسبقًا)، يتم استخدام الكلمة الأساسية القيمة، متبوعة باسم القيمة الحرفية بين قوسين.

القيمة (نوع الحساب. نشط)

العمليات على الأعداد

أحادي –

تهدف هذه العملية إلى تغيير إشارة الرقم إلى الإشارة المقابلة لها. على سبيل المثال:

كمية المبيعات

الأحادي +

لا تؤدي هذه العملية إلى تنفيذ أية إجراءات على الرقم. على سبيل المثال:

كمية المبيعات

الثنائية -

تهدف هذه العملية إلى حساب الفرق بين رقمين. على سبيل المثال:

المتبقيات والتحويلات.المتبقات الأولية - المتبقيات والتحويلات.المتبقيات النهائيةالمتبقية والتحويلات.المتبقية الأولية - 100 400 - 357

ثنائي +

تم تصميم هذه العملية لحساب مجموع رقمين. على سبيل المثال:

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.RemainingsAndTurnover.InitialRemaining + 100 400 + 357

عمل

تم تصميم هذه العملية لحساب منتج رقمين. على سبيل المثال:

التسمية.السعر * 1.2 2 * 3.14

قسم

تم تصميم هذه العملية للحصول على نتيجة قسمة معامل على آخر. على سبيل المثال:

التسمية.السعر / 1.2 2 / 3.14

باقي القسمة

تم تصميم هذه العملية للحصول على الباقي عند قسمة معامل على آخر. على سبيل المثال:

التسميات السعر % 1.2 2 % 3.14

عمليات السلسلة

التسلسل (ثنائي +)

تم تصميم هذه العملية لسلسلة سلسلتين. على سبيل المثال:

Nomenclature.Article + ": "+ Nomenclature.Name

يحب

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

قيمة عامل التشغيل LIKE تكون TRUE إذا كانت القيمة<Выражения>يرضي النمط، وخطأ خلاف ذلك.

الأحرف التالية في<Строке_шаблона>لها معنى مختلف عن مجرد حرف آخر في السطر:

  • % - النسبة المئوية: تسلسل يحتوي على صفر أو أكثر من الأحرف العشوائية؛
  • _ - الشرطة السفلية: حرف واحد عشوائي؛
  • […] - حرف واحد أو أكثر بين قوسين مربعين: حرف واحد، أي من الأحرف المدرجة داخل القوسين المربعين. قد يحتوي التعداد على نطاقات، على سبيل المثال a-z، مما يعني حرفًا عشوائيًا مدرجًا في النطاق، بما في ذلك نهايات النطاق؛
  • [^...] - بين قوسين مربعين أيقونة النفي متبوعة بحرف واحد أو أكثر: أي حرف باستثناء تلك المدرجة بعد أيقونة النفي؛

أي رمز آخر يعني نفسه ولا يحمل أي حمولة إضافية. إذا كان أحد الأحرف المدرجة يحتاج إلى الكتابة بنفسه، فيجب أن يسبقه<Спецсимвол>، المحدد بعد الكلمة الأساسية SPECIAL CHARACTER (ESCAPE).

على سبيل المثال، القالب

"%ABV[abvg]\_abv%" الحرف الخاص "\"

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

عمليات المقارنة

يساوي

تهدف هذه العملية إلى مقارنة معاملين للمساواة. على سبيل المثال:

Sales.Counterparty = Sales.NomenclatureMainSupplier

غير متساوي

تهدف هذه العملية إلى مقارنة معاملين لعدم المساواة. على سبيل المثال:

المبيعات.الطرف المقابل<>Sales.NomenclatureMainSupplier

أقل

تم تصميم هذه العملية للتأكد من أن المعامل الأول أقل من المعامل الثاني. على سبيل المثال:

SalesCurrent.Amount< ПродажиПрошлые.Сумма

أكثر

تم تصميم هذه العملية للتأكد من أن المعامل الأول أكبر من المعامل الثاني. على سبيل المثال:

مجموع المبيعات الحالي > مجموع المبيعات الماضي

أقل أو متساوية

تم تصميم هذه العملية للتأكد من أن المعامل الأول أقل من أو يساوي المعامل الثاني. على سبيل المثال:

SalesCurrent.Amount<= ПродажиПрошлые.Сумма

أكثر أو يساوي

تم تصميم هذه العملية للتحقق من أن المعامل الأول أكبر من أو يساوي المعامل الثاني. على سبيل المثال:

SalesCurrent.Amount >= SalesPast.Amount

العملية ب

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

العنصر ب (&المنتج1، &المنتج2)

عملية التحقق من وجود قيمة في مجموعة البيانات

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

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

عملية التحقق من قيمة NULL

تُرجع هذه العملية True إذا كانت القيمة NULL. على سبيل المثال:

المبيعات.الطرف المقابل فارغ

عملية التحقق من قيمة عدم المساواة NULL

تُرجع هذه العملية True إذا لم تكن القيمة NULL. على سبيل المثال:

المبيعات. الطرف المقابل ليس فارغًا

العمليات المنطقية

تقبل العمليات المنطقية التعبيرات من النوع Boolean كمعاملات.

العملية لا

تقوم العملية NOT بإرجاع True إذا كان معاملها False وFalse إذا كان معاملها True. على سبيل المثال:

NOT Document.Consignee = Document.Consignor

العملية الأولى

تقوم العملية AND بإرجاع True إذا كان كلا المعاملين صحيحًا، وإرجاع False إذا كان أحد المعاملين خطأ. على سبيل المثال:

Document.Consignee = Document.Consignor AND Document.Consignee = &الطرف المقابل

أو العملية

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

Document.Consignee = Document.Consignor أو Document.Consignee = &الطرف المقابل

وظائف مجمعة

تقوم الوظائف المجمعة بتنفيذ بعض الإجراءات على مجموعة من البيانات.

مجموع

تحسب الدالة Sum التجميعية مجموع قيم التعبيرات التي تم تمريرها إليها كوسيطة لجميع سجلات التفاصيل. على سبيل المثال:

المبلغ(المبيعات.مبلغ الدوران)

كمية

تقوم الدالة Count بحساب عدد القيم بخلاف NULL. على سبيل المثال:

الكمية (المبيعات.الطرف المقابل)

عدد مختلف

تحسب هذه الدالة عدد القيم المميزة. على سبيل المثال:

الكمية (المبيعات المختلفة. الطرف المقابل)

أقصى

تحصل الدالة على القيمة القصوى. على سبيل المثال:

الحد الأقصى (الكمية المتبقية)

الحد الأدنى

تحصل الدالة على الحد الأدنى من القيمة. على سبيل المثال:

الحد الأدنى (الكمية المتبقية)

متوسط

تحصل الدالة على متوسط ​​القيم غير الخالية. على سبيل المثال:

المتوسط ​​(الكمية المتبقية)

عمليات أخرى

عملية التحديد

تهدف عملية التحديد إلى تحديد إحدى القيم المتعددة عند استيفاء شروط معينة. على سبيل المثال:

حدد عند المبلغ > 1000 ثم المبلغ وإلا 0 النهاية

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

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

  • فارغة (الأدنى)؛
  • منطقية؛
  • رقم؛
  • تاريخ؛
  • خط؛
  • أنواع المراجع

يتم تحديد العلاقات بين أنواع المراجع المختلفة بناءً على الأرقام المرجعية للجداول المقابلة لنوع معين.

إذا كانت أنواع البيانات هي نفسها، تتم مقارنة القيم وفقا للقواعد التالية:

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

العمل مع القيمة NULL

أي عملية يكون فيها أحد المعاملات NULL سوف تنتج نتيجة NULL.

هناك استثناءات:

  • ستعيد العملية AND القيمة NULL فقط إذا لم يكن أي من المعاملات خطأ؛
  • لن تُرجع العملية OR القيمة NULL إلا إذا لم يكن أي من معاملاتها صحيحًا.

أولويات العملية

العمليات لها الأولويات التالية (السطر الأول له الأولوية الدنيا):

  • ب، لاغية، ليست فارغة؛
  • =, <>, <=, <, >=, >;
  • ثنائي +، ثنائي - ;
  • *, /, %;
  • أحادي +، أحادي -.

وظائف لغة التعبير في نظام تكوين البيانات

احسب

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

  • تعبير. اكتب سلسلة. يحتوي على تعبير محسوب؛
  • التجميع. اكتب سلسلة. يحتوي على اسم المجموعة التي سيتم تقييم التعبير في سياقها. إذا تم استخدام سلسلة فارغة كاسم للتجميع، فسيتم إجراء الحساب في سياق التجميع الحالي. إذا تم استخدام سلسلة GrandTotal كاسم للمجموعة، فسيتم إجراء الحساب في سياق الإجمالي الكلي. وبخلاف ذلك، سيتم إجراء الحساب في سياق المجموعة الأصلية التي تحمل نفس الاسم. على سبيل المثال:
Sum(Sales.SumTurnover) / احسب("Sum(Sales.SumTurnover)"، "الإجمالي")

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

مستوى

تم تصميم الوظيفة للحصول على مستوى التسجيل الحالي.

مستوى()

NumberInOrder

احصل على الرقم التسلسلي التالي

رقم حسب الطلب ()

NumberInOrderInGrouping

إرجاع الرقم الترتيبي التالي في المجموعة الحالية.

NumberByOrderInGroup()

شكل

الحصول على سلسلة منسقة للقيمة التي تم تمريرها.

يتم تعيين سلسلة التنسيق وفقًا لسلسلة التنسيق 1C:Enterprise.

خيارات:

  • معنى؛
  • سلسلة التنسيق.

التنسيق(فواتير المواد الاستهلاكية.مبلغ المستند، "NPV=2")

بداية الفترة

خيارات:

    • دقيقة؛
    • يوم؛
    • أسبوع؛
    • شهر؛
    • ربع؛
    • عقد؛
    • نصف سنة.

فترة البداية (DateTime(2002, 10, 12, 10, 15, 34), "Month")

نتيجة:

01.10.2002 0:00:00

نهاية الفترة

تم تصميم الوظيفة لاستخراج تاريخ محدد من تاريخ معين.

خيارات:

  • تاريخ. اكتب التاريخ. تاريخ محدد؛
  • نوع الفترة. اكتب سلسلة. يحتوي على إحدى القيم التالية:
    • دقيقة؛
    • يوم؛
    • أسبوع؛
    • شهر؛
    • ربع؛
    • عقد؛
    • نصف سنة.

فترة النهاية (DateTime(2002, 10, 12, 10, 15, 34), "Week")

نتيجة:

13.10.2002 23:59:59

AddToDate

تم تصميم الوظيفة لإضافة قيمة معينة إلى تاريخ.

خيارات:

  • نوع التكبير. اكتب سلسلة. يحتوي على إحدى القيم التالية:
    • دقيقة؛
    • يوم؛
    • أسبوع؛
    • شهر؛
    • ربع؛
    • عقد؛
    • نصف سنة.
  • المبلغ - بالمبلغ الذي تحتاجه لزيادة التاريخ. نوع الرقم. يتم تجاهل الجزء الكسري.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)

نتيجة:

12.11.2002 10:15:34

فرق التاريخ

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

خيارات:

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

DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAY")

نتيجة:

سلسلة فرعية

تم تصميم هذه الوظيفة لاستخراج سلسلة فرعية من سلسلة.

خيارات:

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

سلسلة فرعية (عنوان الحسابات، 1، 4)

طول الخط

تم تصميم الوظيفة لتحديد طول السلسلة.

معامل:

  • خط. اكتب سلسلة. سلسلة تم تحديد طولها.

الخط (الأطراف المقابلة. العنوان)

سنة

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

معامل:

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

السنة (تاريخ النفقة)

ربع

تم تصميم هذه الوظيفة لاستخراج رقم الربع من قيمة نوع التاريخ. ويتراوح رقم الربع عادة من 1 إلى 4.

معامل

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم فيه تحديد الربع
الربع (تاريخ النفقة)

شهر

تم تصميم هذه الوظيفة لاستخراج رقم الشهر من قيمة نوع التاريخ. يتراوح رقم الشهر عادة من 1 إلى 12.

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم فيه تحديد الشهر.
الشهر (تاريخ النفقة)

يوم من السنة

تم تصميم هذه الوظيفة للحصول على يوم السنة من قيمة نوع التاريخ. يتراوح يوم السنة عادة من 1 إلى 365 (366).

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم فيه تحديد يوم من السنة.
DAYYEAR(ExpenseAccount.Date)

يوم

تم تصميم هذه الوظيفة للحصول على يوم الشهر من قيمة نوع التاريخ. يتراوح يوم الشهر عادة من 1 إلى 31.

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم فيه تحديد يوم الشهر.
DAY(تاريخ النفقة)

أسبوع

تم تصميم هذه الوظيفة للحصول على رقم الأسبوع في السنة من قيمة نوع التاريخ. يتم ترقيم أسابيع السنة ابتداءً من الرقم 1.

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم فيه تحديد أرقام الأسابيع.
أسبوع (تاريخ النفقة)

يوم الأسبوع

تم تصميم هذه الوظيفة للحصول على يوم الأسبوع من قيمة نوع التاريخ. يتراوح اليوم الطبيعي في الأسبوع من 1 (الاثنين) إلى 7 (الأحد).

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم فيه تحديد يوم الأسبوع.
يوم الأسبوع (تاريخ النفقة)

ساعة

تم تصميم هذه الوظيفة للحصول على الساعة من اليوم من قيمة نوع التاريخ. وتتراوح ساعة اليوم من 0 إلى 23.

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

دقيقة

تم تصميم هذه الوظيفة للحصول على دقيقة الساعة من قيمة نوع التاريخ. وتتراوح دقائق الساعة من 0 إلى 59.

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم من خلاله تحديد دقيقة الساعة.
دقيقة (تاريخ النفقة)

ثانية

تم تصميم هذه الوظيفة للحصول على ثانية الدقيقة من قيمة نوع التاريخ. تتراوح الثانية من الدقيقة من 0 إلى 59.

  • تاريخ. اكتب التاريخ. التاريخ الذي يتم من خلاله تحديد ثواني الدقيقة.
الثاني (تاريخ النفقة)

يعبر

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

خيارات:

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

صريحة (Data.Props1، "الرقم (10،3)")

باطل

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

وإلا، سيتم إرجاع قيمة المعلمة الأولى.

نعمNULL(المبلغ(المبيعات.مبلغ الدوران)، 0)

وظائف الوحدات المشتركة

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

في هذا المثال، سيتم استدعاء الدالة "AbbreviatedName" من وحدة التكوين العامة.

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

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

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

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

خيارات:

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

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

isNULL((حساب التعبير("السعر"، "السابق"، "السابق") - السعر)، 0)

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

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

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

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

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

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

ترقيم الأعمدة

مثال لكيفية ترقيم الأعمدة في نظام التحكم في الوصول.

جوهر الحل:

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

مهم!

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

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

مجموعات بديلة مع تسليط الضوء على اللون

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

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

CalculateExpression("الكمية (تسميات مختلفة)"، "الأول"، "السابق"، "معًا") % 2

نقوم بإحصاء عدد “المجموعات” المختلفة لحقل التسميات، ويمكن حساب المجموعات عن طريق تحديد قيمة المعلمة Processing Identical OrderValues ​​= “Together”

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

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

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

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

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

CalculateExpressionWithGroupArray("خاصية Nomenclature.Name +
""("" + Format(QuantityRemaining,""CHG=0"") + "")"""
,
"القيمة المملوءة (خاصية التسمية)")

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

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

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

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

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

لتحويل سلسلة إلى رقم، يمكنك استخدام الدالة احسب ()

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

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

سوف تبدو النتيجة مثل هذا:

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

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

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

أنصحك أيضًا بمشاهدة "فيديوهات تعليمية حول ACS" (يمكن البحث عنها بسهولة على Google)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&OnClient // تمرير المعلمات إلى تقرير ACSمعالجة أوامر الإجراء (معلمة الأمر، معلمات تنفيذ الأمر) Selection = New Structure("Nomenclature" , Command Parameter) ؛ FixedSettings = GetFixedSettings(); معلمات النموذج = بنية جديدة( "فورماتأوبينج، التحديد، مفتاح الخيار، الإعدادات الثابتة", الحقيقة , الاختيار , "خيار تقرير المبيعات"الإعدادات الثابتة) ؛ نموذج مفتوح( "تقرير.تقرير المبيعات.نموذج"، معلمات النموذج) ؛ EndProcedure &OnServer Function GetFixedSettings()SalesReport = Reports. تقرير المبيعات. يخلق() ؛ SKD = ​​تقرير المبيعات. DataCompositionSchema; الإعدادات = SKD. الإعدادات الافتراضية؛ بداية الفترة = الإعدادات. معلمات البيانات. FindParameterValue( NewDataCompositionParameter("BeginPeriod" ) ) ; بداية الفترة. القيمة = StartMonth(CurrentDate()) ؛ بداية الفترة. الاستخدام = صحيح؛ بداية الفترة = الإعدادات. معلمات البيانات. FindParameterValue( NewDataCompositionParameter("EndPeriod") ) ; نهاية الفترة. القيمة = EndMonth(CurrentDate()) ; نهاية الفترة. الاستخدام = صحيح؛ إعدادات العودة؛ وظيفة النهاية // GetFixedSettings ()

كيفية توسيط رؤوس الأعمدة في تقرير ACS؟

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

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

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

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

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

مقالات مماثلة