تقرير 1S في SCD كيفية ضبط الفترة. المعلمة القياسية والفترة ومشاكل الاستخدام

بعض ميزات تحديد الفترة في نظام التحكم في الوصول.

تتطلب معظم التقارير التي يتم تطويرها باستخدام نظام تكوين البيانات (DCS) من المستخدم إدخال الفترة التي سيتم إنشاء التقرير لها.

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

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

الشيء هو أن الغالبية العظمى من المستخدمين "يفهمون" الفترة بشكل مختلف عن "يفهمها" 1C، على سبيل المثال:

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

"من وجهة نظر" نظام 1C، يتم تعيين فترة المعلمة و... كلا حديها يساوي 01.01.0001 وسيتم تضمين المستندات ذات التاريخ الفارغ فقط في التقرير، وهو ما يعني عمليًا لن يتم تضمين مستند واحد.

ومن وجهة نظر المستخدم، يجب أن يشمل التقرير كافة المستندات اعتباراً من تاريخ 28/01/2010.

"من وجهة نظر" 1C، فإن الفترة من 28/01/2010 إلى 01/01/0001 ستسبب استثناءً.

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

1). لم يتم تحديد بداية الفترة ونهاية الفترة -> كافة المستندات.

2). يتم تحديد بداية الفترة فقط -> كافة المستندات التي تبدأ من بداية الفترة

3). بالإضافة إلى ذلك، سوف نتحقق من أن نهاية الفترة >= بداية الفترة، وإذا لم يكن هذا صحيحًا، فسنفترض أن نهاية الفترة غير محددة، أي. 2).

بناءً على ما سبق، فإن التعبير الخاص بمعلمة تاريخ الانتهاء هو:

متى &Period.EndDate=DATETIME(1,1,1)

ثم التاريخ والوقت(3999,12,31)

متى &الفترة.تاريخ الانتهاء<&Период.ДатаНачала

ثم التاريخ والوقت(3999,12,31)التاريخ والوقت(3999,12,31,23,59,59)

&الفترة.تاريخ الانتهاء

يظهر الشكل النهائي لتصميم اختيار الفترة لدينا في

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

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

حدد المنتجات في المستودعات المتبقية. المستودع، البضائع الموجودة في المستودعات، البقايا. التسميات، المنتجات المتبقية في المستودعات. رصيد الكمية من سجل التراكم. المنتجات في المستودعات. Remains(&MyDate ,) AS ProductsInWarehousesRemains

لننتقل الآن إلى علامة تبويب المعلمات ونرى أن النظام، بالإضافة إلى المعلمة &MyDate، قام أيضًا بإنشاء المعلمة &Period.
من أجل مراقبة الفترات بشكل مرئي، سنقوم بإنشاء نموذج تقرير رئيسي ووضع حقل جدول يحتوي على البيانات: إعدادات Composer.Settings.DataParameters

لنحفظ التقرير ونفتحه في المؤسسة. في حقل الجدول الذي يحتوي على المعلمات، يتم عرض معلمة &الفترة فقط:

وعليه فإن أي تغيير في هذه المعلمة لن يعطي النتيجة المرجوة.

لماذا لا تتوفر المعلمة &MyDate؟ بالطبع، لأنه في علامة التبويب المعلمات لديه مربع اختيار محدودية التوفر.

قم بإلغاء تحديد المربع. الآن نرى كلاهما في المعلمات المتاحة. فقط عند إنشاء التقرير سنرى أن التقرير يتفاعل مع معلمة &Period، وليس مع &MyDate.

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

حدد المنتجات في المستودعات المتبقية. المستودع، البضائع الموجودة في المستودعات، البقايا. التسميات، المنتجات المتبقية في المستودعات. رصيد الكمية من سجل التراكم. المنتجات في المستودعات. Remains((&MyDate) ,) AS ProductsInWarehousesRemains

محدثمن المستخدم بوو:

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

اسمحوا لي أن أقدم لكم مثالا:

حدد الموظفين SP.Employee، WorkersSP.ReasonChangesConditions، WorkersSP.Period، WorkersSPAnotherDate.Period AS الفترة 2، WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesState2 FROM RegisterInformation.EmployeesOrganizations.SliceLast(&Period , الموظف = &Employee) AS Work nikkiSP الاتصال الأيسرسجل المعلومات.موظفو المؤسسات.شريحة من أحدث (&OtherDate ,) AS الموظفينSPAnotherDate BY الموظفينSP.Employee = الموظفينSPAnotherDate.Employee

في الاستعلام الفرعي الثاني، سيتم استخدام قيمة معلمة PERIOD "القياسية" كمعلمة تاريخ الشريحة، بدلاً من قيمة OtherDate.

سيتم ملاحظة هذا "الخلل" حتى إذا تم إخراج الاستعلام الفرعي الثاني إلى مجموعة البيانات الثانية وربطه باستخدام ACS. الخيار الذي يستخدم تعبيرًا مثل "ADDATE(&Period, MONTH, -1)" في الطلب الثاني لن يعمل أيضًا، ولن يتم طرح الشهر. لكن إعادة تسمية المعلمة "Period" في الطلب إلى "FirstDate" على سبيل المثال يحل هذه المشكلة.

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

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

لنقم بإنشاء تقرير جديد:

  1. في Configurator، حدد عنصر القائمة "ملف" - "جديد" - "تقرير خارجي".
  2. انقر فوق الزر "فتح مخطط تكوين البيانات". في مربع الحوار الذي يفتح، انقر فوق الزر "إنهاء".
  3. لنقم الآن بإنشاء جدول يصل إلى الجدول الافتراضي "سجلات التراكم".
  4. انقر بزر الماوس الأيمن على عقدة "مجموعات البيانات" وحدد السطر "إضافة مجموعة بيانات - استعلام".
  5. الآن انقر على زر "منشئ الاستعلام". دعنا نختار سجل التراكم "GoodsInWarehousesRemainsAndTurnover" (تكوين USP).
  6. لنفتح مربع حوار "معلمات الجدول الافتراضي" ونحدد أنه سيتم استخدام التردد "تلقائي"، أي أنه سيكون من الممكن تحديد عدة فترات.

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

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

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

وبالتالي، يجب ترقيم الحقول التي تظهر في طلبنا. لاحظ أن لدينا حقلي فترة - "المسجل" و"الفترة الشهرية". الحقل المنخفض هو "المسجل"، ويتم تخصيصه بواحد، والحقل المرتفع هو "PeriodMonth"، ويتم تخصيصه اثنين. سننظر في هذا بمزيد من التفصيل في المقالة التالية.

لنقم بإعداد تقريرنا:

  1. دعنا نذهب إلى علامة التبويب "الموارد" ونحدد موارد تقريرنا.
  2. انقر فوق الزر ">>" لتحديد كافة الحقول للموارد.
  3. لننتقل الآن إلى علامة التبويب "الإعدادات" وننشئ إعدادًا على شكل قائمة.
  4. انقر فوق الزر "مصمم إعدادات تكوين البيانات" (الزر على شكل عصا سحرية).
  5. نوع التقرير: "قائمة". انقر على زر "التالي".
  6. لنقم بتكوين حقول الإخراج من خلال النقر على الزر ">>". دعونا نرتبها على النحو التالي: "PeriodMonth"، "Nomenclature"، "Quality"، "Registrar".
  7. انقر فوق الزر "التالي" وقم بإعداد التجميع. سنقوم بإعداد التجميع بالترتيب التالي: "PeriodMonth"، "Nomenclature"، "Quality". سيتم عرض مجموعة "المسجل" في شكل سجلات مفصلة.
  8. انقر فوق الزر "موافق".

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

وهذا الخطأ يتعلق بخاصية استلام الأرصدة من المسجل. لكي يتم عرض هذه الأرصدة بشكل صحيح، تحتاج إلى إضافة حقل آخر إلى حقول الإخراج الخاصة بالطلب - حقل "الفترة الثانية". لإضافة حقل "PeriodSecond"، افتح التقرير في Configurator وانقر على زر "فتح مخطط تكوين البيانات". انقر الآن على زر "Query Builder" وأضف "PeriodSecond". في هذه الحالة، سيظل حقل "المسجل" هو الحقل الأول للفترة، وسيكون "PeriodSecond" هو الحقل الثاني، و"PeriodMonth" سيكون الحقل الثالث.

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

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

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

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



تتناول هذه المقالة بعض ميزات إعداد فترة عند استخدام نظام تكوين البيانات (DCS)، والمشكلات التي تنشأ بسبب الاختلافات في مفهوم الفترة بين المستخدم العادي ونظام 1C، وتقترح أيضًا طرقًا لحلها .
تتطلب معظم التقارير التي يتم تطويرها باستخدام نظام تكوين البيانات (DCS) من المستخدم إدخال الفترة التي سيتم إنشاء التقرير لها. كقاعدة عامة، في ACS، يتم تنظيم إدخال الفترة من خلال المعلمات، باستخدام البناء التالي، انظر. رسم بياني 1تعتبر طريقة إدخال الفترة "كلاسيكية"؛ وقد تم وصفها في مقال عن ITS والأدبيات الأخرى المخصصة للتنمية في 1C، لذلك دعونا نأخذها كأساس. لنأخذ على سبيل المثال طلبًا بسيطًا يتلقى جميع مستندات مبيعات السلع والخدمات لفترة معينة، انظر الصورة 2عند استخدام هذا التقرير، يقوم المستخدم بتعيين الفترة من خلال المعلمات، راجع. تين. 3يبدو أن كل شيء صحيح...ولكن هناك مشكلة صغيرة:

الشيء هو أن الغالبية العظمى من المستخدمين "يفهمون" الفترة بشكل مختلف عن "يفهمها" 1C، على سبيل المثال:
1). دعونا نفكر تين. 3
من وجهة نظر المستخدم، لم يتم تحديد الفترة، أي غير محدودة، أي أنه يجب تضمين جميع المستندات دون قيود التاريخ في التقرير.
"من وجهة نظر" نظام 1C، يتم تعيين فترة المعلمة و... كلا حديها يساوي 01.01.0001 وسيتم تضمين المستندات ذات التاريخ الفارغ فقط في التقرير، وهو ما يعني عمليًا لن يتم تضمين مستند واحد.
2). دعونا نفكر الشكل 4
ومن وجهة نظر المستخدم، يجب أن يشمل التقرير كافة المستندات اعتباراً من تاريخ 28/01/2010.
"من وجهة نظر" 1C، فإن الفترة من 28/01/2010 إلى 01/01/0001 ستسبب استثناءً.

يمكنك بالطبع أن تحاول أن تشرح للمستخدم سبب عدم عرض التقرير للمستندات التي يتوقع رؤيتها وكيف يتم عرض الفترة من "وجهة نظر" 1C، لكن هذه مهمة ناكر للجميل، وهي هو أيضا خطأ. يجب أن يكون البرنامج الجيد، أولاً وقبل كل شيء، سهل الاستخدام، لأن البرنامج موجود للمستخدم، وليس العكس، لذلك سيتعين عليك "تعليم" 1C لفهم الفترة كما يفهمها المستخدم، وهي:
1). لم يتم تحديد بداية الفترة ونهاية الفترة -> كافة المستندات.
2). يتم تحديد بداية الفترة فقط -> كافة المستندات التي تبدأ من بداية الفترة
3). بالإضافة إلى ذلك، سوف نتحقق من أن نهاية الفترة >= بداية الفترة، وإذا لم يكن هذا صحيحًا، فسنفترض أن نهاية الفترة غير محددة، أي. 2).
بناءً على ما سبق، سيبدو التعبير الخاص بمعلمة تاريخ الانتهاء كما يلي:

حدد متى &Period.EndDate=DATETIME(1,1,1) ثم DATETIME(3999,12,31,23,59,59) وإلا حدد متى &Period.EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

يظهر الشكل النهائي لتصميم اختيار الفترة لدينا في الشكل 5

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

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

هناك طريقة للالتفاف على هذا.

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

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

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

وقم بإضافتها إلى الجداول الموجودة في علامة التبويب "تكوين البيانات".

لكي يتم عرض المعلمات في إعدادات التقرير السريع، فلنقم بتمكين العلامة المقابلة لمعلمات التقرير.

الآن يبدو اختيار الفترة في نموذج التقرير بهذا الشكل.