1C ابحث عن القيمة في المصفوفة. كيفية إنشاء مصفوفة ثابتة

بيت / أنظمة التشغيل

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

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

العمل مع صفائف 1C

لنقم بإنشاء مصفوفة 1C مكونة من قيمتين:
صفيف = صفيف جديد ()؛ // مصفوفة بدون عدد محدد من القيم

Array.Add(RNG.RandomNumber(0, 1000));
Array.Add(RNG.RandomNumber(0, 1000));

// قم بالتنقل بين كل قيمة في مصفوفة 1C، بغض النظر عن عددها

تقرير (القيمة)؛
EndCycle;

لنقم بإنشاء مصفوفة 1C مكونة من 10 قيم:
صفيف = صفيف جديد (10)؛ // مصفوفة ذات عدد ثابت من القيم
RNG = NewRandomNumberGenerator(); // سوف نملأ بأرقام عشوائية

// يبدأ فهرس المصفوفة من الصفر، وليس من واحد
// 10 قطع من 0 إلى 9
ل Sch = 0 إلى 9 دورة
// الوصول إلى arrayArrayName[Index]
Array[RNG] = RNG.RandomNumber(0, 1000); // رقم عشوائي من 0 إلى 1000
EndCycle;

// قم بالتمرير على كل قيمة من المصفوفات، بغض النظر عن عددها
لكل قيمة من دورة الصفيف
تقرير (القيمة)؛
EndCycle;

// ملاحظة - هناك 10 قيم للمصفوفات، وهذا يعني أن هناك 10 منها بشكل افتراضي وكل قيمة غير محددة حتى نقوم بتعيين قيمة أخرى
// هذا لا يعني أنه لا يمكننا إضافة قيمة أخرى، 11e، باستخدام ArrayName.Add();

مصفوفة متعددة الأبعاد

لنقم بإنشاء مصفوفة 1C 2x2 متعددة الأبعاد. المصفوفة متعددة الأبعاد هي 1C، مما يعني أن كل خلية في المصفوفة 1C لا تحتوي على قيمة، بل تحتوي أيضًا على مصفوفة 1C.

ليس من الضروري إصلاح مصفوفة 1C متعددة الأبعاد. لنقم بإنشاء مصفوفة 1C 2x2 متعددة الأبعاد دون تحديد عدد ثابت من القيم:

إنشاء مجموعة 1C من الصفر

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

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

الحصول على مجموعة 1C جاهزة مع البيانات

يمكن الحصول على مصفوفة 1C من قائمة القيم باستخدام طريقة spList.UnloadValues() ومن جدول القيم باستخدام طريقة tableTable.UnloadColumn().

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

  • RequestResult = Request.Execute() // ينفذ الطلب
  • tzResult = نتيجة الاستعلام تحميل () // تحميل النتيجة إلى جدول القيم
  • mArray of Links = tzResult.UnloadColumn("ColumnName") // يقوم بإلغاء تحميل عمود جدول في صفيف

الحصول على مصفوفة 1C من كائنات أخرى واستخدامها كتحديد في الطلب

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

أضف جدول قيم إلى نموذج العميل السميك وحدد DocumentList.DocumentName كنوع له. في خصائصه، حدد وضع التحديد – متعدد.

يمكننا برمجياً الحصول على قائمة السلاسل المحددة:

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

سيبدو الوصول إلى مجموعة 1C من السلاسل المحددة كما يلي:
Elements.FormAttributeName. صفوف مختارة

ما هو هذا المقال حول؟

تستمر هذه المقالة في سلسلة المقالات "الخطوات الأولى في تطوير 1C." ويغطي مبادئ العمل مع المجموعات العالمية. بعد قراءة المقال ستتعلم:

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

قابلية التطبيق

تتناول المقالة منصة 1C:Enterprise 8.3 للإصدار الحالي.

كيفية العمل مع المجموعات العالمية في 1C

مجموعة القيم عبارة عن حاوية يمكن أن تحتوي عادةً على أي عدد من العناصر. ومع ذلك، غالبًا لا توجد قيود صارمة على نوع البيانات.

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

من المهم أن نفهم أن المجموعات لا يتم تخزينها في قاعدة بيانات (نحن لا نتحدث عن نوع بيانات Value Store، الذي يمكنه تخزين أي نوع من البيانات تقريبًا).

هناك أنواع مختلفة من المجموعات العامة: Array، Structure، Match، Fixed Array، Value Table، جزء جدوليإلخ. لكن جميع المجموعات لها سلوك مماثل.

يمكن إنشاء مجموعة كنتيجة لتشغيل دالة (ترجع الدالة مجموعة عالمية كقيمة).

يمكن الحصول عليها مجموعة جديدةيدويًا عن طريق الوصول إلى المُنشئ وإنشاء مثيل للفئة.

على سبيل المثال: OurArray = New Array;

يتم تحديد منشئات العديد من المجموعات العامة.

لذلك، في المنشئ ل يمكنك تحديد عدد الأعضاء في الأبعاد المقابلة. أولئك. يمكنك أن تعلن على الفور متعدد الأبعاد .

الوصف المقابل للمنشئ موجود في مساعد بناء الجملة.

وبالتالي، باستخدام معلمات البناء، يمكنك على الفور ضبط السلوك المطلوب لكائن معين.

لكن المعلمات اختيارية؛ ولا يستطيع المطور تعيينها وتحديد سلوك المصفوفة بالشكل الذي يراه مناسبًا.

يمكن إنشاء أي مجموعة عالمية تقريبًا باستخدام مُنشئ (الاستثناء هو أجزاء الجدول، التي تعمل ككائنات تكوين).

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

للوصول إلى عنصر OurArray، يمكنك استخدام الوصول إلى الفهرس لهذا الغرض، ويشار إلى الفهرس بين قوسين مربعين.

على سبيل المثال، OurArray. يرجى ملاحظة أنه في هذه الحالة يقوم النظام بإرجاع عنصر المصفوفة مع الفهرس 3، وبالترتيب هذا هو العنصر الرابع في المصفوفة.

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

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

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

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

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

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

جدول القيم- هذه مجموعة محددة من الصفوف، يمكن أن تحتوي الصفوف على أعمدة مختلفة أنواع مختلفةقيم.

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

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

تحتوي أي مجموعة عالمية تقريبًا على طرق لإضافة قيم جديدة إلى مجموعة معينة. يوضح الشكل كيفية ملء مصفوفة بالقيم من 0 إلى 10 بطريقتين.

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

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

بناء الجملة: أدخل (،)

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

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

بناء الجملة: يمسح()
مثال الاستخدام: OurArray.Delete(5);

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

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

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

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

مثال الاستخدام: OurVariable = OurArray.Find(8);

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

طرق إضافية للمصفوفة

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

على وجه الخصوص، يمكن تعريف المتغيرquantityInArray بشكل مختلف:

quantityInArray = OurArray.InBorder();
ثم، عند وصف الدورة نفسها، لا ينبغي للمرء أن يطرح من هذا المتغير.

تتيح لك طريقة Set تعيين قيمة لعنصر Array حسب الفهرس.

بناء الجملة: ثَبَّتَ(،)

مثال: OurArray.Set(2,8);

بديل: OurArray = 8;

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

بناء الجملة: يحصل()

مثال: OurVariable = OurArray.Get(2);

بديل: OurVariable = OurArray;

هيكل المجموعة العالمية

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

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

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

البنية ملائمة جدًا للاستخدام إذا أردنا إنشاء قائمة معينة من المعلمات. إذا كان هذا بناءمُسَمًّى هيكلنا، فسنشير إلى قيمتيه على النحو التالي: OurStructure.Code و OurStructure.Name.

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

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

يتم استخدامه لوصف معلمات معينة، والتي غالبًا ما يوجد عدد كبير جدًا منها في جميع الخوارزميات.

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

ومن ثم يكون من الملائم أكثر كتابة كافة المعلمات في البنية وتمريرها. أولئك. معلمات الإجراءات والوظائف "معبأة".

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

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

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

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

الهيكل هو نوع من المجموعة المضطربة. هذا هو السبب في أنه لا يوجد سوى طريقة إدراج للهيكل.

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

يتم الوصول إلى عناصر البنية فقط عن طريق اسم المفتاح. ومع ذلك، فإن حلقة For Each تعمل أيضًا مع البنية، ولكن لا يجب الاعتماد على ترتيب عناصر البنية.

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

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

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

على سبيل المثال: هيكلنا = هيكل جديد ("الكود، الاسم"، 133، "فاسيا")؛

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

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

على سبيل المثال: OurStructure.Insert("FamilyMembers",3);

يتميز الهيكل بطريقة أخرى يتم استخدامها كثيرًا. هذه هي الطريقة ملكية.

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

إذا كان هذا العنصر موجودًا، فسيقوم النظام بإرجاع القيمة True، in خلاف ذلك- كذب.

على سبيل المثال، التعبير OurStructure.Property ("أفراد العائلة")سيكون مساوياً للقيمة True. يتم استخدام هذه الطريقة كثيرًا عند تحليل الهيكل.

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

على سبيل المثال: تقرير(هيكلنا["FamilyMembers"]);

ومع ذلك، لا ينبغي لنا أن ننسى أن البنية ليست مجموعة مرتبة من الكائنات، ولهذا السبب فإن الوصول عن طريق الفهرس 0، 1، 2 غير مقبول.

مجموعة عامة قائمة القيم

قيم القائمةهي قائمة خطية من العناصر من أي نوع بيانات.

يتكون كل عنصر من عدة قيم. من الناحية التخطيطية، يمكن تمثيل قائمة القيم كقائمة مكونة من أربعة أعمدة.

العمود الأول - علامة. يحتوي على نوع بيانات منطقي ويسمح للمستخدم إما بتحديد المربعات أو إلغاء تحديدها.

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

العمود الثالث هو القيمة المخزنة نفسها، أي. هذا هو أي نوع من البيانات، ويمكن أن يكون مختلفًا في خطوط مختلفة.

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

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

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

سوف نجد قيم القائمةفي مساعد sitax. منشئ قيم القائمةغير محددة (لا يمكنك تعيين أي قيم افتراضية).

هناك طرق مثل:

  • إدراج(،) ؛
  • يضيف(،)؛
  • كمية()؛
  • فِهرِس().

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

صفيف العناصر = قائمة PriceTypes.OutloadValues();

هناك أيضًا طريقة عكسية:
ListPriceTypes.LoadValues(ArrayItems);

هناك طرق البحث:
FindByValue(); FindByIdentifier().

هناك طريقة النسخ:
ListCopy = PriceTypeList.Copy();
هذه الطريقةيهدف إلى إجراء نوع من التعديل على النسخة.

هناك طرق:
SortByValue();
فرز حسب العرض ().

طُرق حدد العنصر (،)و ماركيتمس ()استدعاء مربع حوار مشروط يوقف تنفيذ الخوارزمية حتى يقوم المستخدم بإغلاق النافذة.

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

رمز المثال الذي تم استدعاؤه من وحدة التطبيقات المُدارة:

اعرض هذا الرمز في وضع المستخدم (مربع الحوار المشروط).

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

إنشاء فريق جديد املأ الهدايا، انقله إلى النموذج وحدد معالج الإجراء له.

في وضع المستخدم، عند النقر فوق الزر "ملء الهدايا" في نموذج المعالجة، ستظهر قائمة مكتملة.

إذا رغبت في ذلك، يمكن تحرير القائمة: يمكن إضافة بعض العناصر، ويمكن إزالة بعضها.

الامتثال لمجموعة متنوعة

هذه المجموعة مشابهة جدًا لـ بناء. تمامًا مثل البنية، تمثل المطابقة مجموعات من القيم التي تتكون من المفتاح والقيمة نفسها.

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

يمكن أن يكون المفتاح نوع بيانات آخر غير سلسلة. خصائص وأساليب العمل مع الامتثال هي تقريبًا نفس خصائص الهيكل.

منشئ الامتثال، على عكس الهيكل، لا يحتوي على القدرة على تحديد المعلمات.

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

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

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

على سبيل المثال: OurMatch = NewMatch;
المباراة = 999؛

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

وهذا على النقيض من الهيكل.

جدول المجموعة العالمية للقيم

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

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

الاختلافات جداول القيممن مصفوفة ثنائية الأبعاد:

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

جدول القيمتستخدم كنوع من المخزن المؤقت لتخزين المعلومات. جدول القيميتم إرجاعها وقبولها كمعلمة بواسطة العديد من طرق النظام. من الممكن إنشاء استعلام مقابل جدول القيم.

لذا، جدول القيميتكون من مجموعة من الصفوف ومجموعة من الأعمدة. كل من الصفوف والأعمدة عبارة عن مجموعات.

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

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

نقطة مهمة! الإجراء الذي يخلق جدول القيم، يجب تجميع &OnServer.

قبل أن تبدأ العمل مع جدول القيم، فأنت بحاجة إلى تحديد الأعمدة التي ستحتوي عليها (أي قم بإنشائها). بناء الجملة:

يضيف(،)
(خياري)
النوع: سلسلة.
(خياري)
النوع: أنواع الوصف
(خياري)
النوع: سلسلة.
(خياري)
النوع: رقم.

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

لاستدعاء هذا الإجراء سوف نستخدم الأمر.

في الوصف جداول القيمعناصر المجموعة على وجه التحديد RowsTableValues.

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

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

لتعيين قيمة لعمود، نستخدم نقطة للوصول إلى اسم العمود أو الفهرس (باستخدام الأقواس المربعة).

لملء جداول القيميمكن استخدام الطرق التالية:

واضح()- لإزالة كافة الصفوف من جداول القيم.

قيم التعبئة (،)- يسمح لك بملء جميع الأعمدة أو الأعمدة المحددة بقيمة واحدة.
عمود التحميل (،)- تحميل عمود من المصفوفة.
إلغاء تحميل العمود ()- تفريغ العمود في صفيف.

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

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

يمكنك نسخ الهيكل جداول القيم. هناك طريقة مناسبة لهذا نسخ الأعمدة (). سنحصل على واحدة فارغة جدول القيممع الهيكل المطلوب.

في جدول القيمةهناك طريقة المجموع(). يمكنك تحديد العمود الذي تريد جمع القيم الرقمية فيه. بالنسبة للكود الموضح سابقاً في التابلوه، يمكنك حساب القيمة: إجمالي TZ ("المبلغ").

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

بالنسبة للكود الموضح سابقاً في التابلوه، يمكنك حساب القيمة: TK.Collapse("يوم الأسبوع"، "المبلغ").

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

لعرض جدول القيمعلى الشاشة، قم بإنشاء سمة نموذج وقم بتعيين نوع بيانات لها جدول القيم.

بعد ذلك، يجب عرض الجدول الناتج في النموذج.

في وحدة النموذج الموجودة في نهاية الخوارزمية المترجمة مسبقًا (في إجراء إنشاء جدول القيمة)، يجب عليك إضافة:
ValueInFormData(TK, Table);

المجموعة العالمية شجرة القيم

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

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

نظرًا لأن الصفوف يمكن أن تكون تابعة لبعضها البعض، يمكن أن يكون لكل صف أصل، بالإضافة إلى صفوفه الثانوية.

لنقم بإنشاء أمر الشجرة المقابل وإجراءات المعالجة الخاصة به.

دعونا نخلق حيث يوجد صف أصل واحد وصفين تابعين.

لنقم بإنشاء سمات النموذج ديرزن(نوع البيانات – شجرة القيم).

لهذه السمة، سنقوم بإنشاء أعمدة السنة والشهر.

حرك العنصر المقابل ديرزنعلى النموذج.

في نهايةالمطاف الإجراءات TreeOnServer()دعنا نضيف:

ValueInFormData(TreeZn, DerZn);

دعونا نتحقق مما حدث في وضع المستخدم.

باستخدام الزر يضيفيمكنك إضافة خطوط جديدة. يمكنهم أيضًا تشكيل تسلسل هرمي.

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

بهذا نختتم معرفتنا الأولى بالمجموعات العالمية.

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

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

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

طرق المصفوفة

يحدث الإنشاء البرمجي لمثيل المصفوفة باستخدام عامل التشغيل New() (الشكل 1).

كما يتبين من المثال أعلاه، يمكن إنشاء المصفوفات إما بعدد ثابت من العناصر أو بدون هذا القيد.

قبل أن نبدأ بمناقشة طرق العمل مع المصفوفة، دعونا نحدد مفهومين:

  • فهرس العنصر – يمكن تمثيله كرقم تسلسلي لقيمة واحدة؛
  • عدد العناصر – عدد العناصر في المجموعة متاح باستخدام طريقة الكمية ().

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

الشكل 2

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

  • InBorder() - باستخدام الطريقة يمكنك الحصول على الحد الأقصى لفهرس العنصر؛ سيتم إرجاع القيمة (-1) لمصفوفة فارغة؛
  • Insert() - تحتوي هذه الطريقة على معلمتين: الفهرس والقيمة، ويشير الفهرس إلى مكان إدراج عنصر جديد في المصفوفة، ويمكن أن تكون القيمة المضافة فارغة؛
  • Add() – يمكن استخدام هذه الطريقة لإدراج قيمة عندما يكون موضع العنصر غير مهم؛ وبمساعدتها، ستتم كتابة البيانات الجديدة في نهاية المصفوفة الموجودة؛
  • Find () - في حالة النجاح، يتم إرجاع فهرس القيمة المحددة بين قوسين، وإلا يتم إرجاع "غير محدد"؛
  • Clear () - يمسح المجموعة؛
  • Get() - يقرأ البيانات الموجودة في المصفوفة في الفهرس المحدد، ويمكن استبدالها بأقواس مربعة؛
  • حذف () - يحذف العنصر ذو الفهرس المحدد؛
  • Set () - يستبدل البيانات الموجودة في خلية الصفيف المحددة.

المصفوفات أحادية البعد ومتعددة الأبعاد

في أبسط الحالات، يمكن أن تحتوي المصفوفة أحادية البعد على قيم من أنواع مختلفة (الشكل 3)

الشكل 3.

تظهر نتيجة تنفيذ الكود أعلاه في الشكل 4

الشكل 4

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

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

عند إنشاء مثل هذه المصفوفة، يمكنك تحديد عدد الصفوف والأعمدة التي سيتم استخدامها.

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

الشكل 5

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

الشكل 6

أو باستخدام حلقة مع المكرر "For ... by" (الشكل 7)

الشكل 7

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

باستخدام مصفوفة

تُستخدم المصفوفات في 1C غالبًا من أجل:

  1. إنشاء تحديدات متنوعة تستخدم عند العمل مع الاستعلامات ومجموعات القيم الأخرى؛
  2. تمرير القوائم كمعلمات بين الإجراءات والوظائف؛
  3. تبادل البيانات مع المكونات الخارجية المتصلة بها باستخدام كومالتقنيات.

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

المصفوفة في 1C هي مجموعة من بعض القيم. يمكن أن تكون القيم في صفيف واحد من أنواع مختلفة.

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

إنشاء مصفوفة

1. كيفية إنشاء مصفوفة بالحجم المطلوب

pArray = صفيف جديد(4) ؛ // تم إنشاء مصفوفة مكونة من 4 عناصر

PMarray[ 0 ] = "نحن" ;
pArray[ 1 ] = "تم إنشاؤه" ;
pArray[ 2 ] = "جديد" ;
pArray[ 3 ] = "مصفوفة" ;

2. كيفية إنشاء مصفوفة فارغة وإضافة عناصر إليها

pArray = new Array; // تم إنشاء مصفوفة فارغة

// أدخل قيم عناصر المصفوفة

ماسيف. أضف("نحن");


3. كيفية إنشاء مصفوفة متعددة الأبعاد.

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

pArray = new Array(4, 2); // تم إنشاء مصفوفة 4x2

// أدخل قيم عناصر المصفوفة، مع ترقيم كل كلمة

PMray[ 0 ] [ 0 ] = "1 ;
pArray[ 0 ] [ 1 ] = "نحن" ;
pArray[ 1 ] [ 0 ] = "2 ;
pArray[ 1 ] [ 1 ] = "تم إنشاؤه" ;
pArray[ 2 ] [ 0 ] = "3 ;"
pArray[ 2 ] [ 1 ] = "متعدد الأبعاد" ;
pArray[ 3 ] [ 0 ] = "4."
pArray[ 3 ] [ 1 ] = "مصفوفة" ;

4. كيفية إنشاء مصفوفة ثابتة

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

يمكن الحصول على مصفوفة ثابتة من مصفوفة عادية:

pArray = new Array;

ماسيف. أضف("نحن");
pArray. إضافة("تم إنشاؤه");
pArray. إضافة("جديد");
pArray. إضافة("مصفوفة");

FArray = new FixedArray(pArray) ; // تم إنشاء مصفوفة ثابتة

وظائف للعمل مع المصفوفات

سننظر في تشغيل الوظائف باستخدام مثال المصفوفة أحادية البعد pArrayتم إنشاؤه أعلاه ويتكون من 4 عناصر:

  1. "مخلوق"
  2. "جديد"
  3. "مصفوفة".
الدالة VBorder()

الحصول على أعلى فهرس لعنصر الصفيف. يكون دائمًا أقل بواحد من عدد عناصر المصفوفة.

الفهرس = pArray. BBorder() // 3;

وظيفة الإدراج ().

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

pArray. إدراج (3، "قيمة جديدة") // الآن يتكون المصفوفة من 5 عناصر

إضافة وظيفة ()

ينشئ عنصرًا جديدًا في نهاية المصفوفة ويدرج القيمة المعطاة هناك

pArray. يضيف("." ) // إضافة نقطة إلى العنصر الخامس من المصفوفة؛

كمية الوظيفة ()

إرجاع عدد عناصر المصفوفة.

pArray. كمية() ؛ // 4

وظيفة البحث ().

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

الفهرس = pArray. بحث("مصفوفة");
// 3 الفهرس = pArray. يجد("الخط الذي لم يكن موجودا"

) ;

// غير محدد

وظيفة مسح ().

يزيل كافة القيم من المصفوفة.

pArray. واضح() ؛

الحصول على وظيفة ().
الحصول على قيمة المصفوفة حسب الفهرس. يمكن حل نفس المشكلة باستخدام .

القيمة = pArray. الحصول على (3) // "مصفوفة"

Value= pArray[ 3 ];

// "مصفوفة"

وظيفة الحذف ().

إزالة عنصر صفيف حسب الفهرس

pArray. حذف(3) ؛
مجموعة الوظائف()

يضبط قيمة عنصر الصفيف حسب الفهرس. إنه يعمل بنفس الطريقة.

pArray. Set(3, "array!");

pArray[ 3 ] = "مصفوفة!" ;
كيفية اجتياز مصفوفة
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:

لكل عنصر من عناصر المصفوفة من pArray Loop

تقرير (ArrayElement) ؛
دورة النهاية؛
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:

يمكنك استخدام الفهرس عند الاجتياز:

بالنسبة للفهرس = 0 بواسطة pArray. حلقة BBorder()

تقرير(pArray[Index]);
كيفية اجتياز مجموعة متعددة الأبعاد
يتم اجتياز مصفوفة متعددة الأبعاد باستخدام نفس الحلقات (انظر أعلاه)، ولكن يجب أن تكون حلقة واحدة متداخلة داخل حلقة أخرى.
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:

لكل عنصر 1 من دورة mArray

لكل Element2 من دورة Element1

تقرير (العنصر1) ؛
أو باستخدام الفهارس.
mArray= new Array(3, 4);
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:

بالنسبة إلى Index1 = 0 بواسطة mArray. حلقة BBorder()

بالنسبة إلى Index2 بواسطة mArray[ Index1 ] . حلقة BBorder() تقرير(mArray[ Index1 ] [ Index2 ] ) ;

فرز مصفوفة لفرز المصفوفة، نحتاج إلى كائن مساعد من النوع
قيم القائمة. ValueList = قائمة القيمة الجديدة؛
// أنشئ قائمة بالقيم قيمة القائمة. LoadValues(pArray) ;
// تحميل القيم من المصفوفة إلى القائمة قيمة القائمة. SortByValue(SortDirection.Age) ;
// فرز بترتيب تصاعدي // قم بتفريغ القيم التي تم فرزها مرة أخرى في المصفوفة

مقارنة مصفوفتين

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

وظيفة مقارنة المصفوفات (Array1، Array2)

إذا كانت المصفوفة 1. كمية()<>صفيف2. الكمية () ثم
إرجاع خطأ؛ // المصفوفات غير متساوية، ولا فائدة من مقارنة العناصر.
إنديف؛

بالنسبة للفهرس = 0 بواسطة Array1. حلقة BBorder()
إذا Array1 [فهرس]<>Array2[فهرس] ثم
عودة خاطئة ; // هذه العناصر غير متساوية، مما يعني أن المصفوفات غير متساوية
إنديف؛
يمكنك التكرار على جميع عناصر المصفوفة دون تحديد فهرس:

العودة صحيح ; // إذا وصلت إلى هنا، فإن المصفوفات متساوية
وظيفة النهاية

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

يساعد استخدام المصفوفات في 1C على تنظيم العناصر المستخدمة في العمل.

هذه مجموعة برمجية من العناصر. إنه يخدم من أجل:

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

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

الخلق

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

  1. افتح "المكون" ("التكوين").
  2. انقر انقر بزر الماوس الأيمنانقر على عنصر "المعالجة".
  3. حدد "إضافة".
  4. تظهر القائمة الفرعية Processing1. حدده. سيتم عرض المعلومات المتعلقة به في منطقة العمل.
  5. في علامة التبويب الأساسية، أدخل الاسم. لنفترض "TestArray".
  6. افتح قسم "النماذج".
  7. انقر على أيقونة العدسة المكبرة.
  8. حدد خيار "معالجة النموذج".
  9. انقر على "تم".
  10. سيتم فتح نافذة بثلاثة إطارات. في الجزء العلوي الأيمن، انتقل إلى علامة التبويب "الفرق".
  11. أيقونة زائد لإضافة موقف.
  12. سيظهر العنصر "Team1". حدده.
  13. في حقل "الاسم"، أدخل اسمًا. على سبيل المثال، "قيم الاختبار". انسخه إلى "الرأس".
  14. في سطر "الإجراء"، انقر على العدسة المكبرة.
  15. العنصر "إنشاء على العميل" و"موافق".
  16. هنا هي الوحدة التي يمكنك إدخال الرمز فيها.

لعرض نتيجة وسيطة، قم بإنشاء "زر". لماذا هو مطلوب في المصفوفة - سوف تفهم بعد قليل.

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

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

  1. افتح علامة التبويب "الوحدة النمطية".
  2. يمكن حذف النص الذي يأتي بعد شرطتين مائلتين للأمام (شرطتان مائلتان - "//"). يبدو الأمر مثل هذا "//أدخل محتويات المعالج". هذه تفسيرات. يتم كتابتها بواسطة المبرمجين حتى لا يتم الخلط بينهم في الكود.
  3. اكتب النص بين عاملي "الإجراء" و"نهاية الإجراء".
  4. الآن قم بإنشاء مجموعة القيمة. توصل إلى متغير يشير إليه بشكل مشروط. لنفترض "FirstArray".
  5. يجب أن تكون مرتبطة بكائن ما. للقيام بذلك، أدخل الأمر "FirstArray = مصفوفة جديدة()". هذه مجموعة يمكن أن تحتوي على عدد غير محدود من العناصر. إذا كان لديك حجم ثابت، فحدده بعد الأمر الموجود بين قوسين "New Array (5)". وبناءً على ذلك، ستبدو المجموعة ثنائية الأبعاد على شكل "New Array (7, 5)". يمكنك إنشاء مجموعات متعددة الأبعاد.
  6. أثناء الكتابة، قد تظهر اقتراحات تقترح عوامل تشغيل مناسبة.
  7. الكلمات تختلف في اللون. المتغيرات لها لون واحد، والوظائف لها لون آخر.
  8. بعد كل أمر، ضع فاصلة منقوطة "؛". وللتيسير، ابدأ بفقرة جديدة.
  9. لا يمكنك فعل أي شيء بمجموعة فارغة. لا تنظم ولا تخرج ولا تتحلل السلسلة إلى مصفوفة في 1C. ولذلك، نحن بحاجة إلى إدراج العناصر فيه.
  10. أدخل "FirstArray.Add(Value1);". ثم "FirstArray.Add(Value2);" وهكذا.
  11. يتم ترقيم الكائنات من الصفر. أي أنه سيتم تعيين الفهرس "0" للمتغير "Value1". يمكنك ملء المجموعة بنفسك بـ "Value0" حتى لا تختلط عليك الأمور.

لماذا كل هذا؟ ولماذا هذا "الزر" الغامض؟ دعونا نحاول تشغيل وظيفة بسيطة.

  1. ضمن المجموعة، اكتب الأمر "Report (FirstArray);" يشار إلى فهرس العنصر بين قوسين معقوفين. وهذا هو عنوان "القيمة0" لدينا.
  2. تنسيق الوحدة. هذا هو التحقق من الأخطاء. في الكتل الكبيرة، يمكن ترك شيء ما غير مكتمل بسبب عدم الانتباه: عدم إضافة فاصلة منقوطة، أو عدم إغلاق قوسين، أو كتابة متغير بشكل غير صحيح. سوف يشير المترجم إلى ذلك.
  3. انقر على الزر الذي على شكل علامة "تشغيل" (مثلث في دائرة) لتشغيل البرنامج الذي كتبته.
  4. انقر على "الخدمة" وحدد الزر الخاص بك.
  5. انقر فوقه.
  6. تظهر الرسالة "القيمة0". هذه هي نتيجة تنفيذ الوظيفة.

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

وظائف

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

كيفية تحويل مجموعة 1C إلى سلسلة:

TestArray = New Array(4);
TestArray = هذا؛
TestArray = تم؛
TestArray = هكذا؛
RowTest = ValueInRowInt(TestArray);
تقرير (اختبار السلسلة)؛

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

من أجل تحليل سلسلة إلى مجموعة من السلاسل الفرعية في 1C، تحتاج إلى فاصل. علامة شرطية سيتم بعدها تقسيم النص. لنفترض أن هناك كلمة "بروتوكول". وسنضع الفاصل "O". أدخل الأمر "TestArray = ExpandStringInArray(Protocol, "O") ;" سوف تحصل على "Pr" و"T" و"K" و"L" بشكل منفصل. يتم مسح الفاصل. وتنقسم الكلمة إلى عدة سلاسل فرعية.

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

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

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

يجب أن يتم "الانتهاء" من كل وحدة بحيث تتوقف الأداة عن تنفيذ الإجراء. في حلقة مع "If" هذا البيان هو "EndIf". في دورة بدون شروط - "نهاية الدورة". يجب إكمال كل وظيفة على حدة.

بحث وفرز

يمكن أن تحتوي المجموعات على كمية هائلة من البيانات. يجب أن نتعلم كيفية البحث عنها وفرزها.

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

ArrayTest = New Array(3);
ArrayTest = "الهاتف";
ArrayTest = "كمبيوتر محمول";
ArrayTest = "الكمبيوتر";
Index = ArrayTest.Find("الهاتف");
إذا كان الفهرس ‹› غير محدد إذن
تقرير("اكتمل البحث" + ArrayTest[Index]);

ولا تنس أن تضع "بيان الإنهاء".

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

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

TestList = قائمة القيمة الجديدة؛
TestList.LoadValues(YourArray);
TestList.SortByValue(SortDirection.Age);
YourArray = TestList.UnloadValues();

بدلاً من "تصاعدي" يمكنك وضع "تنازلي". يمكن أيضًا تحميل النتيجة إلى جدول القيم:

TestTable = New ValueTable؛
TestTable.Columns.Add("عمود");
TestTable.LoadColumn(YourArray, “Column”);
TestTable.Sort("العمود التنازلي");
YourArray = TestTable.UnloadColumn("العمود")

هناك أيضًا طرق فرز معقدة: "فقاعة"، و"سريع"، و"شاكر"، و"العودة". لديهم خوارزميات متعددة المستويات وطويلة.

الجداول والقوائم

يمكن نقل المعلومات بين أنواع مختلفة من المجموعات. لنقل مصفوفة إلى جدول القيم في 1C:

ArrayTelephone = صفيف جديد؛
ArrayPhone.Add("الهاتف الذكي");
ArrayPhone.Add("الكمبيوتر اللوحي");
ArrayPhone.Add("الهاتف");
TableTest = New ValueTable;
TableTest.Columns.Add("الهواتف المحمولة");
TableTest.Add();
TableTest.Add();
TableTest.Add();
TableTest.LoadColumn(ArrayTelephone, "الهواتف المحمولة");
لكل صف من دورة TableTest
تقرير (String.Mobile)؛

لا تنس إضافة بيان إنهاء الحلقة في النهاية.

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

NewList = NewValueList();
NewList.LoadValues(YourArray);

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

© 2024 ermake.ru - حول إصلاح أجهزة الكمبيوتر - بوابة المعلومات