املأ الجدول في 1S. من المهم عدم الخلط بين خاصية الكائن وطريقة الكائن

14.12.2023

إليك حقيقة صغيرة بالنسبة للمبتدئين - أمثلة بسيطة للعمل مع جدول القيم:

1. قم بإنشاء جدول القيم

ValueTable = ValueTable جديد؛


2. إنشاء أعمدة لجدول القيم:

ValueTable.Columns.Add("Name");
Value Table.Columns.Add("اسم العائلة");


3. أضف صفوفًا جديدة باستخدام أسماء الأعمدة:


NewLine.Name = "فاسيلي";
NewLine.LastName = "Pupkin";


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

FoundRow = ValueTable.Find(SearchValue);


5. ابحث عن التواجد الأول في أعمدة معينة من جدول القيم

FoundRow = ValueTable.Find(SearchValue, "المورد, المشتري");


6. إذا كنت تريد العثور على جميع التكرارات في جدول القيم:
نحن نستخدم هيكل البحث.

SearchStructure = Structure("Employee", SearchValue);
صفيف FoundRows = ValueTable.FindRows(SearchStructure);


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

7. كيفية التكرار من خلال جدول القيم بترتيب عشوائي

لكل صف حالي من حلقة جدول القيم
تقرير (CurrentRow.Name)؛
EndCycle;

نفس الشيء باستخدام الفهارس:

SeniorIndex = ValueTable.Quantity() - 1;
للحساب = 0 لدورة SeniorIndex
تقرير (TableValues[Account].Name);
EndCycle;


8. حذف صف جدول القيمة الموجود

ValueTable.Delete(الصف المراد حذفه);

حسب الفهرس

ValueTable.Delete(0);


9. حذف عمود موجود في جدول القيم

ValueTable.Columns.Delete(ColumnDeleted);


حسب الفهرس

ValueTable.Columns.Delete(0);

ومن الضروري الأخذ في الاعتبار أن حذف صف (أو عمود) “من منتصف” جدول القيم سيؤدي إلى انخفاض بمقدار واحد في فهارس الصفوف الموجودة “بعد” المحذوفة

10. كيفية ملء جدول القيم إذا كانت أسماء الأعمدة موجودة في المتغيرات؟

NewRow = ValueTable.Add();
NewRow[ColumnName] = Value;


11. كيف يتم ملء العمود بأكمله في جدول القيمة بالقيمة المطلوبة؟
يجب ملء عمود علم المحاسبة المالية في جدول القيم بالقيمة False

جدول القيم. املأ القيم (خطأ، "علم المحاسبة المالية")؛


نستخدم طريقة fillValues() لجدول القيم. المعلمة الأولى هي القيمة المراد ملؤها. المعلمة الثانية هي اسم العمود المراد ملؤه.

12. كيف يمكنني ملء جدول القيم "Receiver Table" ببيانات من جدول القيم "SourceTable"؟

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

جدول المستلمين = جدول المصدر.Copy();


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

النقل الجزئي للبيانات للأعمدة ذات الأسماء المطابقة:

لكل صف من SourceTable من دورة SourceTable
fillPropertyValues(NewRow, SourceTableRow);
نهاية الدورة


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

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

النسخ الكامل للبيانات للأعمدة ذات الأسماء المطابقة

نفس الأعمدة = صفيف جديد ()؛

لكل عمود من دورة SourceTable.Columns
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

إذا كان عمود المطابقة<>غير محدد ثم

// الحصول على خصائص العمود
الاسم = اسم العمود؛
ValueType = Column.ValueType;
Header = Column.Header;
العرض = العمود. العرض؛

// استبدال الأعمدة في الجدول الوجهة.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReserverTable.Columns.Insert(Index, Name, ValueType, Header, Width);

// أضف الاسم التالي للأعمدة المطابقة إلى المصفوفة.
نفس الأعمدة. أضف (Column.Name)؛

إنهاء إذا؛

EndCycle;

// التنقل بين صفوف الجدول المصدر.
لكل صف من SourceTable من دورة SourceTable

// أضف صفًا جديدًا إلى الجدول الوجهة.
NewRow = TableReceiver.Add();

// املأ القيم في الخلايا المطابقة.
لكل أعمدة الاسم من الأعمدة التي تحمل نفس الاسم دورة
NewRow[ColumnName] = SourceTableRow[ColumnName];

EndCycle;

EndCycle;


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

13. كيفية إضافة أعمدة إلى جدول القيم "ValueTable" مع قيود النوع؟

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

إضافة عمود دون تحديد نوع البيانات

// أضف عمودًا بدون قيود على النوع.
ValueTable.Columns.Add("Object");


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

إضافة عمود يوضح نوع البيانات

// القيود المفروضة على أنواع بيانات العمود:
// عناصر دليل "الأطراف المقابلة" فقط.
جدول القيم.Columns.Add("الحساب"، وصف جديد للأنواع("DirectoryLink.Accounts"));


إذا كان من بين الأنواع المسموح بها لملء بيانات العمود سلسلة، فيمكنك تحديد عمق البت (الطول)، وتحديد استخدام متغير أو طول ثابت. يتم تحقيق كل هذا عن طريق إنشاء كائن باستخدام مُنشئ String Qualifiers. بعد ذلك، سيتم استخدام هذا الكائن كأحد معلمات مُنشئ TypeDescription.

استخدام المؤهلات لتحديد نوع البيانات لعمود جدول القيمة

// تحضير وتعيين قيود للبيانات من نوع السلسلة.
String Qualifiers = New String Qualifiers(20,AllowedLength.Variable);
ValidTypes = NewTypeDescription("String"، StringQualifiers);
ValueTable.Columns.Add("NoteStringShort"، ValidTypes)؛


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

استخدام إعلانات النوع الموجودة لتحديد نوع البيانات لعمود جدول القيمة

// امتداد لوصف النوع المستخدم مسبقًا.
QualifiersNumbers = New QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

ValueTable.Columns.Add("Note"، ExtendedAcceptableTypes);

تم النشر في 21 سبتمبر 2011

جدول القيم 1C – الجزء 3. البيانات الوصفية. التكرار خلال أعمدة جدول القيمة

سأخبرك في هذه المقالة بكيفية العمل مع جدول قيم البنية "غير المعروفة"، وكيفية التكرار عبر أعمدة جدول القيم، وكيفية استخراج البيانات من الأعمدة والصفوف دون استخدام أسماء الأعمدة. (هذه المقالة تنتمي إلى سلسلة المقالات 1C من الصفر؛ برمجة 1C من الصفر؛ جدول قيم 1C)

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

لذلك، دعونا ننشئ جدول اختبار لقيم 1C ونملأه:

MyTZ = جدول قيمة جديد؛ // إنشاء جدول جديد للقيم المخزنة في المتغير "MyTZ" MyTZ.Columns.Add("Last Name"); // أنشئ عمود "اسم العائلة" MyTZ.Columns.Add("Name"); // إنشاء العمود "الاسم" MyTZ.Columns.Add("Patronymic"); // أنشئ العمود "الاسم الأوسط" // أضف الصف الأول إلى جدول القيمة الخاص بنا NewLine = MyTZ.Add(); NewString.LastName = "Chapaev"; NewLine.Name = "فاسيلي"; NewString.Middle name = "إيفانوفيتش"؛ // أضف السطر الثاني NewLine = MyTZ.Add(); NewString.LastName = "Dzerzhinsky"; NewRow.Name = "فيليكس"; NewString.Middle name = "إدموندوفيتش"; // أضف السطر الثالث NewLine = MyTZ.Add(); NewLine.LastName = "Kotovsky"; NewLine.Name = "جريجوري"; NewString.Middle name = "إيفانوفيتش"؛

يتكون جدول الاختبار لدينا من ثلاثة أعمدة: الاسم الأول، اسم العائلة، اسم العائلة؛ ويحتوي على ثلاثة أسطر مليئة بأسماء أبطال الحرب الأهلية.

يقوم نموذج التعليمات البرمجية الأول بتعداد أعمدة جدول قيمة 1C كمجموعة.

// عرض أسماء جميع أعمدة TK لكل عمود من MyTK.Columns Cycle Report("اسم العمود:" + Column.Name); EndCycle;

ستعرض دورتنا جميع أسماء الأعمدة في نافذة رسالة 1C:

اسم العمود: اسم العائلة اسم العمود: الاسم الأول اسم العمود: الاسم الأوسط

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

على سبيل المثال، الوصول إلى الممتلكات "اسم" (اسم العمود) نحصل على اسم العمود الحالي.

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

// عرض أسماء جميع أعمدة TK لكل MyCurrentColumn From MyTK.Columns Cycle Report("اسم العمود: " + MyCurrentColumn.Name); EndCycle;

عندما يواجه النظام الفرعي للتنفيذ 1C دورة من هذا النوع، مع كل مرور للدورة، فإنه يعين لمتغير بالاسم المحدد عنصرًا واحدًا من مجموعتنا، في هذه الحالة - عنصر جمع واحدأعمدة جدول القيمة MyTK.Columnsوبعد ذلك نصل إلى المتغير الذي يحتوي على العمود الحالي ونستخدم الخاصية "اسم".

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

// عرض عدد وأسماء جميع أعمدة جدول القيم لكل عمود من دورة MyTZ.Columns ColumnNumber = MyTZ.Columns.Index(Column); // الحصول على رقم العمود ColumnName = Column.Name; // احصل على اسم العمود Report("رقم العمود:" + رقم العمود + "اسم العمود:" + اسم العمود)؛ EndCycle;

سيتم عرض النص التالي في نافذة رسالة 1C:

رقم العمود: 0 اسم العمود: اسم العائلة رقم العمود: 1 اسم العمود: الاسم الأول رقم العمود: 2 اسم العمود: الاسم الأوسط

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

عدد الأعمدة في جدول قيمة 1C

لمعرفة عدد الأعمدة في جدول القيم، نستخدم طريقة "Count()" في مجموعة الأعمدة.

عدد الأعمدة = MyTK.Columns.Quantity(); التقرير (عدد الأعمدة)؛

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

الحصول على كائن عمود برقمه (الفهرس) وتعداد الأعمدة باستخدام فهرس العمود

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

للحساب = 0 بواسطة MyTZ.Columns.Quantity() - دورة واحدة CurrentColumn = MyTZ.Columns[Act]; تقرير (CurrentColumn.Name)؛ EndCycle;

على الشاشة سوف نحصل على ما يلي

الاسم الكامل

أعتقد أن هذا المثال كان واضحا. لجأنا إلى الطريقة كمية()مجموعات الأعمدة" MyTZ.Columns.Quantity()"، حصلت على عدد الأعمدة، وبدأت حلقة باستخدام عداد من صفرقبل عدد الأعمدة ناقص واحد. داخل الحلقة نحصل على كل عمود من مجموعة الأعمدة ونخصص كائن العمود الحالي لمتغير CurrentColumnالتالي المتغير CurrentColumnنصل إلى العقار اسموعرض قيمة هذه الخاصية على الشاشة: تقرير (CurrentColumn.Name)؛

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

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

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

هذا ما سيكتبه المترجم إذا نسيت وضع الأقواس في استدعاء الأسلوب بطريقة غير صحيحة MyTK.Columns.Quantity(بدون قوسين بعد "الكمية ()"):

لم يتم العثور على حقل الكائن (الكمية)

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

الحصول على البيانات من جدول قيمة 1C باستخدام أرقام الأعمدة

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

FirstLine = MyTK; // احصل على الصف الأول (مرقّم من الصفر) FirstColumnValue = FirstRow; // احصل على قيمة العمود الأول (ترقيم العمود أيضًا من البداية) Report(Value of the FirstColumn); // عرض قيمة العمود الأول في الصف الأول من الجدول

ستعرض الشاشة:

تشاباييف

أولاً، حصلنا على كائن صف جدول القيمة عن طريق الوصول إلى جدول القيمة باستخدام عامل التشغيل [...]. (إذا نسيت كيفية القيام بذلك، يمكنك الاطلاع على المقالات السابقة) لقد مررنا الوسيطة "0" داخل عامل التشغيل. هذا هو فهرس الصف الأول من جدول القيمة. FirstLine = MyTK;

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

دعونا نعقد مثالنا قليلاً:

FirstLine = MyTK; // الحصول على السطر الأول (الترقيم من الصفر) Report(FirstLine); // عرض قيمة العمود الأول في الصف الأول من الجدول Report(FirstRow); // عرض قيمة العمود الثاني في الصف الأول من الجدول Report(FirstRow); // عرض قيمة العمود الثالث في الصف الأول من الجدول

لقد قمنا الآن بعرض القيم من جميع الأعمدة الثلاثة للصف الأول من جدول القيمة الخاص بنا:

تشاباييف فاسيلي إيفانوفيتش

والآن سأقوم أيضًا بتعديل هذا المثال حتى نتمكن من الاستغناء عن المتغير "السطر الأول"

تقرير(MyTZ); // عرض قيمة العمود الأول في الصف الأول من الجدول Report(MyTZ); // عرض قيمة العمود الثاني في الصف الأول من الجدول Report(MyTZ); // عرض قيمة العمود الثالث في الصف الأول من الجدول

سيكون هو نفسه على الشاشة

تشاباييف فاسيلي إيفانوفيتش

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

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

بالنسبة إلى RowCounter = 0 بواسطة MyTZ.Quantity() - حلقة واحدة // دورة عبر الصفوف بالنسبة إلى ColumnCounter = 0 بواسطة MyTZ.Columns.Quantity() - حلقة واحدة // حلقة متداخلة عبر الأعمدة // الحصول على قيمة الخلية (من الصف الحالي والأعمدة الحالية) CellValue = MyTK[RowCounter][ColumnCounter]; // عرض رقم الصف ورقم العمود وقيمة الخلية Report("Row No" + Row Count + "column No" + Column Count + " = " + CellValue); EndCycle; EndCycle;

سيتم عرض ما يلي على الشاشة:

السطر رقم 0 العمود رقم 0 = خط تشابيك رقم 0 العمود رقم 1 = فاسيلي السطر رقم 0 العمود رقم 2 = إيفانوفيتش السطر رقم 1 العمود رقم 0 = خط دزيرجينسكي رقم 1 العمود رقم 1 = فيليكس السطر رقم 1 العمود رقم 2 = إدموندوفيتش السطر رقم 2 العمود رقم 0 = كوتوفسكي السطر رقم 2 العمود رقم 1 = سطر غريغوري رقم 2 العمود رقم 2 = إيفانوفيتش

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

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

For LineCounter = 0 By MyTZ.Quantity() - 1 حلقة // حلقة خلال الصفوف Report(" ======= رقم السطر " + LineCounter + " ======="); للإبلاغ(""); // تغذية السطر (إدراج صف فارغ) لـ ColumnCounter = 0 بواسطة MyTZ.Columns.Quantity() - 1 حلقة // حلقة متداخلة عبر الأعمدة // الحصول على قيمة الخلية (من الصف الحالي والعمود الحالي) CellValue = MyTZ [RowCounter][ColumnCounter]; // احصل على اسم العمود ColumnName = MyTK.Columns[ColumnCounter].Name; // عرض اسم العمود وقيمة الخلية Report(ColumnName + ": " + CellValue); EndCycle; للإبلاغ(""); // تغذية السطر (إدراج سطر فارغ) EndCycle؛

الآن، على شاشتنا، بدأت المعلومات تبدو أكثر تمثيلاً:

السطر رقم 0 ======= الاسم الأخير: تشاباييف الاسم الأول: فاسيلي اسم العائلة: إيفانوفيتش ======= السطر رقم 1 ======= الاسم الأخير: دزيرجينسكي الاسم الأول: فيليكس اسم العائلة: إدموندوفيتش ===== == السطر رقم 2 ======= الاسم الأخير: كوتوفسكي الاسم الأول: غريغوري اسم العائلة: إيفانوفيتش

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

For LineCounter = 0 By MyTZ.Quantity() - 1 حلقة // حلقة خلال الصفوف Report(" ======= رقم السطر " + LineCounter + " ======="); للإبلاغ(""); // تغذية السطر (إدراج سطر فارغ) لـ ColumnCounter = 0 بواسطة MyTZ.Columns.Quantity() - 1 حلقة // حلقة متداخلة عبر الأعمدة ColumnName = MyTZ.Columns[ColumnCounter].Name; // الحصول على اسم العمودCell Value = MyTZ[RowCounter][ColumnName]; //

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

والآن آخر شيء في هذا المقال.

الحصول بشكل صحيح على جميع البيانات من جدول القيمة 1C باستخدام الحلقات من خلال مجموعة من الصفوف ومجموعة من الأعمدة

لكل CurrentLine من MyTZ Loop // حلقة عبر مجموعة من السلاسل Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " ========"); للإبلاغ("");

لكل CurrentColumn من MyTZ.Columns Loop // حلقة متداخلة تتكرر عبر مجموعة من الأعمدة ColumnName = CurrentColumn.Name؛ // احصل على اسم العمودCellValue = CurrentRow[ColumnName]; // الحصول على قيمة الخلية حسب العمود NAME Report(ColumnName + ": " + CellValue); // عرض اسم العمود وقيمة الخلية نهاية الدورة؛ للإبلاغ("");

EndCycle;

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

لكل CurrentLine من دورة MyTZ // التكرار عبر الصفوف Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " ======== Line No." لكل عمود حالي من MyTZ.Columns Loop // التكرار عبر الأعمدة Report(CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); EndCycle; للإبلاغ("");

EndCycle;

لم يتغير الناتج على الشاشة، بل بقي كما هو في المثال السابق:

دورة لمدة اسبوعين

"البرمجة في 1C للمبتدئين"

سيتم إرسال الدورة عبر البريد الإلكتروني. كن مبرمجًا من خلال إكمال المهام خطوة بخطوة.

للمشاركة، تحتاج فقط إلى جهاز كمبيوتر وإنترنت

الدخول المجاني إلى الدورة:

Sp-force-hide ( العرض: لا شيء؛).sp-form ( العرض: كتلة؛ الخلفية: # eff2f4؛ الحشو: 5 بكسل؛ العرض: 270 بكسل؛ الحد الأقصى للعرض: 100%؛ نصف قطر الحدود: 0 بكسل؛ -moz-border - نصف القطر: 0px؛ -webkit-border-radius: 0px؛ عائلة الخط: "Helvetica Neue"، sans-serif: حجم الخلفية غير مكرر: تلقائي؛) إدخال نموذج sp (عرض: كتلة مضمّنة؛ العتامة: 1؛ الرؤية: مرئية؛).sp-form .sp-form-fields-wrapper ( الهامش: 0 تلقائي؛ العرض: 260 بكسل؛).sp-form .sp -form-control ( الخلفية: #ffffff؛ border- اللون: #cccccc؛ نمط الحدود: عرض الحدود: 1 بكسل؛ حجم الخط: 15 بكسل؛ 4px; -webkit-border-radius: 4px; width: 100%;).sp-form .sp-field label (اللون: #444444; حجم الخط: 13px; نمط الخط: عادي; وزن الخط: غامق; .sp-form .sp-button ( نصف قطر الحدود: 4 بكسل؛ - نصف قطر الحدود: 4 بكسل؛ - نصف قطر حدود الويب: 4 بكسل؛ لون الخلفية: #f4394c؛ اللون: #ffffff؛ العرض: 100% ; نمط الخط: عادي؛ عائلة الخط: Arial، "Helvetica Neue"، sans-serif؛ ظل الصندوق: لا شيء؛ -moz-box-shadow: لا شيء؛ -webkit-box-shadow: لا شيء؛ الخلفية: تدرج خطي (إلى الأعلى، #e30d22، #f77380)؛).sp-form .sp-button-container ( محاذاة النص: المركز؛ العرض: تلقائي؛)

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

لذلك، في 1C، يحتل العمل مع الجداول مكانا بارزا.

تسمى الجداول في 1C أيضًا "الأجزاء الجدولية". الدلائل والوثائق وغيرها لديهم.

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

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

// الخيار 1 - الوصول التسلسلي إلى نتائج الاستعلام

// احصل على الجدول
حدد = Query.Run().Select();
// نراجع جميع أسطر نتيجة الاستعلام بالترتيب
أثناء حلقة Select.Next()
تقرير(Selection.Name);
EndCycle;

// الخيار 2 - التحميل إلى جدول القيم
طلب = طلب جديد("اختر الاسم من الدليل.التسميات");
// احصل على الجدول
الجدول = Query.Run().Unload().
// علاوة على ذلك يمكننا أيضًا التكرار عبر جميع الأسطر
لكل صف من دورة الجدول
تقرير (سلسلة. اسم)؛
EndCycle;
// أو الوصول إلى السلاسل بشكل تعسفي
Row = Table.Find("Shovel"، "Name")؛

الميزة المهمة هي أنه في الجدول الذي يتم الحصول عليه من نتيجة الاستعلام، سيتم كتابة جميع الأعمدة بدقة. وهذا يعني أنه من خلال طلب حقل الاسم من دليل Nomenclature، سوف تتلقى عمودًا من نوع String بطول مسموح به لا يزيد عن N حرفًا.

جدول في النموذج (العميل السميك)

يعمل المستخدم مع الجدول عند وضعه في النموذج.

ناقشنا المبادئ الأساسية للعمل مع النماذج في الدرس وفي الدرس

لذلك، دعونا نضع الجدول على النموذج. للقيام بذلك، يمكنك سحب الجدول من لوحة التحكم. وبالمثل، يمكنك تحديد نموذج/إدراج عنصر تحكم من القائمة.

يمكن تخزين البيانات في التكوين - فأنت بحاجة إلى تحديد الجزء الجدولي الموجود (المضاف مسبقًا) من كائن التكوين الذي تقوم بتحرير نموذجه.

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

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

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

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

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

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

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

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

جدول في النموذج (عميل رفيع/مُدار)

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

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

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

ثم اسحب الجدول أيضًا إلى اليسار.

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

رفع جدول إلى Excel

يمكن طباعة أي جدول 1C موجود في النموذج أو تحميله إلى Excel.

للقيام بذلك، انقر بزر الماوس الأيمن على مساحة فارغة في الجدول وحدد القائمة.

في العميل (الرفيع) المُدار، يمكن تنفيذ إجراءات مماثلة باستخدام عنصر القائمة كافة الإجراءات/قائمة العرض.