التحويلات 1s 8.3. التحويلات. سلوك الحد الأقصى () في استعلام التعداد

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

الآن، باستخدام زر الفأرة الأيمن، سنقوم بإنشاء التعداد الأول لدينا.

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

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

تتم إضافة تفاصيل أخرى إلى المستند مع النقل الذي اخترناه.

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

لذا، معنى التحويلات في 1S 8.2كبيرة جدًا وواضحة. قبل إنشاء دليل أو تعدادات، يجب على المبرمج الإجابة على سؤالين: 1) هل يحتاج المستخدمون إلى إنشاء عناصر جديدة بأنفسهم؟؛ 2) كم عدد هذه العناصر التي يمكن أن تكون موجودة في حالة معينة: كثيرة أو
عدد قليل؟ إذا كان هناك عدد قليل من خيارات الإجابة ولم يكن المستخدمون بحاجة إلى إنشاء أي شيء آخر، فاستخدم التعدادات 1c. وإلا فإن الكتب المرجعية سوف تفعل.

في الطلب يتم تحديد قيمة التعداد من خلال الدالة Value().

ملحوظة، أنه في الطلب يتم استخدام اسم كائن البيانات التعريفية بصيغة المفرد: "التعداد «

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

حدد القيمة (Enumeration.GenderIndividuals.Male) AS الحقل

القيمة الفارغة (غير محددة):

حدد القيمة (Enumeration.GenderIndividuals.EmptyLink) كحقل

يتم الحصول على تعداد النظام بطريقة مماثلة، ولكن دون تحديد "التعداد":

حدد القيمة (MovementTypeAccumulation.Receipt) كحقل

مرور سريع

وليس في الطلب؟

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

القيمة = Transfers.GenderIndividuals.Male; //or Value = PrefiniteValue("Enumeration.Gender ofdividuals.Male");

والثاني هو أكثر عالمية، لأنه يتم تنفيذه أيضًا &OnClient. يتم تنفيذ الاستدعاء الأولي للقيمة بشكل أبطأ، ثم يتم تخزينها مؤقتًا بواسطة النظام.

في الإصدار 8.1، يتوفر الخيار الأول فقط.

سلوك الحد الأقصى () في استعلام التعداد

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

  • خارج عن السيطرة
  • ليس بالاسم
  • وليس بطول الاسم
  • على الأرجح من خلال نوع القيمة الداخلية، والتي لا تتوفر لنا بوسائل بسيطة، خاصة في الطلب

مهمة

هناك تعداد بالقيم

ويجب الحصول على الحد الأقصى أو الأدنى للقيمة في الطلب حسب ترتيبه

حل

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

SELECT VALUE(Enumeration.Types of Insurance Products.Casco) AS Field PLACE Transfers COMBINE ALL SELECT VALUE(Enumeration.Types of Insurance Products.OSAGO) COMBINE ALL SELECT VALUE(Enumeration.Types of Insurance Products.VZR) اجمع كل SELECT VALUE(Enumeration) .أنواع منتجات التأمين.GO) الجمع بين كل القيم المختارة (التعداد.أنواع منتجات التأمين.OPO)؛ SELECT ScoreMin.Ref as MinByOrder، Int.MinStandard، ScoreMax.Ref as MaxByOrder، Int.MaxStandard FROM (SELECT // تحديد الحد الأقصى لقيم العينة ​​MIN(enumerations.Order) AS Min، MAX(enumerations.Order) AS الحد الأقصى، MIN( enumeration.Field) AS MinStandard، MAXIMUM(enumerations.Field) AS MaxStandard FROM (حدد // تحديد الترتيب لكل قيمة في حقل Enumeration.Field AS، وأنواع منتجات التأمين. ترتيب AS من Enumeration AS Enumerations LEFT JOIN Enumeration.أنواع منتجات التأمين AS أنواع منتجات التأمين أرقام أمر الشراء. الحقل = أنواع منتجات التأمين. رابط) AS enclosure // باستخدام حدود قصوى معينة، نحدد القيمة المطلوبة LEFT JOIN Enumeration الحد الأقصى لإدراج أمر الشراء = الحد الأقصى للطلب LEFT JOIN أنواع منتجات التأمين AS الحد الأدنى لإدخال أمر الشراء = الحد الأدنى للطلب

التحويلات في 1C: نظام المؤسسة

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

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

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

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

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

في خصائصه، يشبه التعداد الدليل، ولكن به عدد من الاختلافات المهمة.

بادئ ذي بدء، لا يمكن تجديد التعداد أثناء العمل معه: يتم تحديد قائمة قيمه عند إعداد التعداد في أداة التهيئة.

التعداد غير متداخل - جميع قيمه على نفس المستوى.

والفرق الرئيسي هو أن قائمة قيم التعداد معروفة ومتوفرة في أداة التهيئة - يستخدم التكوين نفسه قيم تعداد محددة.

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

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

قائمة إدارة التحويلات

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

تحرير التعداد

يتضمن تحرير التعداد إنشاء قائمة بقيم التعداد. لتحرير تعداد، استخدم نافذة التحرير "التعداد".

يتم شرح الغرض من عناصر التحكم في الحوار أدناه.

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

وصف. يهدف زر "الوصف" إلى استدعاء محرر نصوص يمكنك من خلاله وصف الغرض وترتيب استخدام التعداد.

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

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

تتم إدارة قائمة قيم التعداد وتحديد خصائص هذه القيم باستخدام عناصر التحكم في مجموعة "القيم" في مربع حوار "التعداد". يمكنك معرفة كيفية استخدام عناصر التحكم هذه في "تحرير قوائم كائنات البيانات التعريفية" في الصفحة 21.

تحرير خصائص قيمة التعداد

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

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

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

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

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

إذا ترك حقل التمثيل فارغًا، فسيتم استخدام معرف قيمة التعداد لإنتاج القائمة.

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

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

الدليل كتعداد

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

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

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

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

بالفعل في هذه النافذة، يمكنك بسهولة إضافة قيمتين جديدتين محددتين مسبقًا لـ 1C. يرجى ملاحظة أنه عند الإضافة يجب أن نحدد اسمين:

1. والذي سيتم عرضه في الكود.
2. الذي سيراه المستخدم.

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

وهنا تنشأ مشكلة أخرى: ماذا سيحدث إذا انتقل المستخدم إلى دليلنا، وأدخل خيارًا ثالثًا هناك وحدده؟

تعداد الكائنات

التعداد هو كائن يسمح لك بتحديد قائمة القيم المحددة مسبقًا والتي يمكن للمستخدم استخدامها عند تحديد قيمة معينة:

1. لا يمكن للمستخدم تغييره.
2. يمكن استخدامها في نص البرنامج.

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

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

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

كيفية الحصول على اسم التعداد عن طريق مرادف
خوارزميًا، يمكنك الحصول على مجموعة من التعدادات من التكوين، ومن خلال تكرارها، يمكنك مقارنة قيمة سمة المرادف مع معلمة الوظيفة وإرجاع اسم التعداد.
الكود المصدري للوظيفة EnumNameBySynonym (SynonymEnumerations):

// إرجاع اسم التعداد من قيمة مرادفة معروفة // مثال على pSysnonym Enumerations = سلسلة من النوع "كيان قانوني"، // اسم قيمة الإرجاع = "YurFizLitso"، اكتب سلسلةالدالة EnumerationNameBySynonym (pSynonymEnumerations) ExportEnumerationCollection = Metadata. التحويلات لكل pFoundValue من مجموعة التعدادات، قم بحلقة If pFoundValue. المرادف = pSynonymEnumerations ثم قم بإرجاع pFoundValue. اسم؛ إنهاء إذا؛ EndCycle; العودة غير محددة؛ وظيفة النهاية // اسم التعداد حسب المرادف

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

// تقوم الدالة بإرجاع اسم سمة بيانات التعداد حسب الاسم // التعداد ومرادفات قيمته // القيم المقبولة: // pName of Enumeration - نوع السلسلة. اسم كائن تكوين التعدادات // pSynonymValues ​​​​- نوع السلسلة. قيمة الخاصية مرادف لسمة بيانات التعداد // قيمة الإرجاع: // اسم سمة بيانات التعدادالدالة EnumerationValueNameBySynonym ( pEnumerName, pValueSynonym) ExportValueCollectionEnumerations = Metadata. التعدادات [اسم التعداد] . قيم التعداد؛ لكل pFoundValue من مجموعة ValuesEnumerations Loop If pFoundValue. Synonym = pSynonymValues ​​​​ثم قم بإرجاع pFoundValue. اسم؛ this.EndIfEndCycle; العودة غير محددة؛ وظيفة النهاية // اسم قيمة التعداد حسب المرادف

الحصول على مرجع لقيمة التعداد باسم التعداد واسم قيمته
إذا كنت تعرف اسم التعداد نفسه واسم قيمته، فيمكنك الحصول على رابط يمثل القيمة، على سبيل المثال subconto، كما يلي:
EnumerationReference = Enumerations[nEnumerName][nValueName];
الكود المصدري للوظيفة GetReferenceToEnumerationValue(EnumerationName,ValueName)

// يُرجع مرجع التعداد حسب "اسم" التعداد و"اسم" القيمة // مثال على عمليات نقل pName = "فرد قانوني"، قيم pName = "شخص اعتباري"، // النتيجة: نقل الرابط إلى LegalPerson.LegalPerson // اسم التعداد - نوع السلسلة // pName - نوع السلسلةالدالة GetEnumerationValueReference( EnumName, Value_Name) محاولة التصدير إرجاع التعدادات[EnumerationName] [Value_Name]; تقرير الاستثناء( "خطأ في الحصول على مرجع لقيمة التعداد."+ Enumeration nName + ":" + Value nName) ; العودة غير محددة؛ this.EndAttempt; وظيفة النهاية // احصل على مرجع لقيمة التعداد

استخدام قيمة التعداد في الاستعلام
ظهرت القدرة على استخدام التعدادات في الاستعلامات في الإصدار 8.1.5. في الإصدار التعليمي 8.1.9.57، تم وصفه في المساعدة المضمنة للمكوِّن في القسم: 1C:Enterprise -> اللغة المضمنة -> العمل مع الاستعلامات -> لغة الاستعلام -> استخدام بيانات التكوين المحددة مسبقًا.
يمكن أن يحتوي نص الطلب على قيم تعداد النظام التي يمكن تخصيصها للحقول في جداول قاعدة البيانات: نوع حركة التراكم، نوع الحساب، ونوع حركة المحاسبة.
في الاستعلامات، يتم الوصول إلى بيانات التكوين المحددة مسبقًا وقيم تعداد النظام باستخدام نوع الوظيفة الحرفية:
معنى(<ПредставлениеЗначения>)
بالنسبة لتعدادات النظام، تمثيل القيمة هو:
<ИмяСистемногоПеречисления>.<Значение>
قد يبدو طلب المثال كما يلي:

طلب = طلب جديد؛ طلب. النص = "اختر | أنواع التسميات. رابط كرابط، | أنواع التسميات. ترتيب | من | التعداد. أنواع التسميات AS أنواع التسميات | أين | أنواع التسميات. الرابط = القيمة (التعداد. أنواع التسميات. الخدمة) "; TZ = جدول القيمة الجديد؛ المعارف التقليدية = طلب. ينفذ ( ) . تفريغ () ؛ عناصر النموذج. حقل الجدول1 . القيمة = المعارف التقليدية؛ عناصر النموذج. حقل الجدول1 . CreateColumns();

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