1 ج عرض جدول القيم في وثيقة جدول بيانات

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

يسرد جدول واحد العناصر التي سيتم شحنها من المستودع. في جدول آخر ، هناك التزامات لدفع ثمن هذه البضائع.

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

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

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

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

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

// احصل على الطاولة
التحديد = Query.Run (). حدد () ؛
// بالترتيب ، نتصفح جميع صفوف نتيجة الاستعلام
أثناء أخذ العينات
تقرير (نموذج الاسم) ؛
نهاية الدورة

// الخيار 2 - التفريغ في جدول القيم
Request = New Request ("SELECT Name FROM Directory.Nomenclature") ؛
// احصل على الطاولة
الجدول = Query.Run (). Unload ().
// ثم يمكننا أيضًا المرور عبر جميع الأسطر
لكل صف من حلقة الجدول
تقرير (String.Name) ؛
نهاية الدورة
// أو الوصول إلى السلاسل بشكل تعسفي
String = Table. Find ("Shovel"، "Name")؛

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

طاولة على شكل (زبون سمين)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

تصدير جدول إلى Excel

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

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

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

يوم جيد!

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

يذهب!

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

Request = New Request ("SELECT * FROM Directory.Banks") ؛ الجدول = Query.Run (). Unload () ،

عرض الجدول في نموذج مُدار

رقم مهمتنا الرئيسية ONCE هو عرض نتيجة الطلب إلى شكل متحكم فيه.

لهذا نحتاج:

  1. قم بإنشاء سمة من النوع "ValuesTable".
  2. قم بإنشاء سمات بنوع قيمة مطابق لنوع عمود الجدول ، لكل عمود ، تابع للجدول.
  3. قم بإنشاء عنصر نموذج من النوع "FormTable" للجدول.
  4. إنشاء عناصر النموذج لأعمدة "FormField".

وبالتالي ، سيكون لدينا الكود التالي:

// إضافة جدول: أولاً الجدول نفسه ، ثم العمود. المتطلبات = صفيف جديد ؛ Attributes.Add (New Form Attribute ("TableOnForm"، New Description of Types ("Values ​​Table")))؛ لكل ST FROM Table.Columns Cycle Details.Add (تفاصيل نموذج جديد (St.Name ، St.TypeValues ​​، "TableNaForm")) ؛ نهاية الدورة // إضافة متطلبات إلى نموذج ChangeAttributes (السمات) ؛ // إضافة عناصر النموذج Tab = Elements.Add ("TableOnForm" ، النوع ("FormTable")) ؛ Tab.PutKData = "TableOnForm" ؛ // حظر تغيير موضع الخطوط والخطوط نفسها ، قم بتعطيل لوحة الأوامر Tab.ChangeStringComposition = False؛ Tab.ChangeRowOrder = خطأ ، CommandPanelTable = CommandPanelFormElement Position.No ، لكل St FROM Table.Columns Cycle Rec = Elements.Add ("Column" + St.Name ، Type ("Form Field") ، Tab) ؛ عرض Rec.View = FormFieldKind.LabelField ، Rec.PathData = "TableOnForm" + "." + سانت الاسم ؛ Rec.Header = Art.Name ؛ نهاية الدورة // ملء الجدول ValueBFormAttribute (Table، "TableOnForm") ؛

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

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

أضف عمودًا إلى جدول المستندات

لنرى الآن كيف يمكنك توسيع جدول نموذج موجود.

لنفترض أننا نريد إضافة عمود إلى جدول السلف الصادرة في البيان المسبق في شيء مثل هذا:

للقيام بذلك ، ما عليك سوى كتابة التعليمات البرمجية التالية في إجراء OnCreateOnServer:

// إضافة سمة ArrayAttributes = New Array؛ ArrayAttributes.Add (سمة النموذج الجديدة ("Column1" ، NewDescription of Types ("Line") ، "Object.EditedAvans" ، "Column 1" ، False)) ؛ ModifyAttributes (ArrayAttributes) ، Elt = Items.Add ("Column1" ، النوع ("FormField") ، Items.EssentialAvans) ؛ Elt.View = FormFieldKind.InputField ، Elt.PutKDanny = "Object. ReleaseAvans.Column1"؛

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

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

وصف الطريقة

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

CellScope = TabDocument.Area (1، 1، LastRow، LastColumn) ؛


2. بناءً على منطقة الخلية في مستند جدول البيانات ، قم بإنشاء وصف لمصدر البيانات.

DataSource = NewDataSourceDescription (CellScope) ،

3. قم بإنشاء كائن ReportBuilder ، وحدد مصدر البيانات بدلاً من نص الاستعلام ، وقم ببناء التقرير.



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

4. لنفريغ النتيجة في جدول القيم (انظر الشكل 2) عن طريق استدعاء طريقة Unload () للكائن RequestResult.

ValuesTable = ReportBuilder.Result.Upload () ،

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

كود البرنامج النهائي

الدالة ConvertTableDocumentToTableValues ​​(TabDocument)
LastRow = ارتفاع TabDocument.Table ،
LastColumn = TabDocument.TableWidth ،
CellScope = TabDocument.Area (1، 1، LastRow، LastColumn) ؛
// قم بإنشاء وصف لمصدر البيانات بناءً على منطقة الخلية في مستند جدول البيانات.
DataSource = NewDataSourceDescription (CellScope) ،
// إنشاء كائن للبناء الذكي للتقارير ،
// تحديد مصدر البيانات وبناء التقرير.
Report Builder = مُنشئ تقرير جديد ؛
Report Builder.DataSource = DataSource ؛
Report Builder.Run () ؛
// تحميل النتيجة إلى جدول القيم.
ValuesTable = ReportBuilder.Result.Upload () ،
إرجاع TabValues
وظيفة النهاية

المعالجة مع التنفيذ هذه الطريقةيمكن تحميلها

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

وصف الطريقة

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

CellScope = TabDocument.Area (1، 1، LastRow، LastColumn) ؛


2. بناءً على منطقة الخلية في مستند جدول البيانات ، قم بإنشاء وصف لمصدر البيانات.

DataSource = NewDataSourceDescription (CellScope) ،

3. قم بإنشاء كائن ReportBuilder ، وحدد مصدر البيانات بدلاً من نص الاستعلام ، وقم ببناء التقرير.



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

4. لنفريغ النتيجة في جدول القيم (انظر الشكل 2) عن طريق استدعاء طريقة Unload () للكائن RequestResult.

ValuesTable = ReportBuilder.Result.Upload () ،

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

كود البرنامج النهائي

الدالة ConvertTableDocumentToTableValues ​​(TabDocument)
LastRow = ارتفاع TabDocument.Table ،
LastColumn = TabDocument.TableWidth ،
CellScope = TabDocument.Area (1، 1، LastRow، LastColumn) ؛
// قم بإنشاء وصف لمصدر البيانات بناءً على منطقة الخلية في مستند جدول البيانات.
DataSource = NewDataSourceDescription (CellScope) ،
// إنشاء كائن للبناء الذكي للتقارير ،
// تحديد مصدر البيانات وبناء التقرير.
Report Builder = مُنشئ تقرير جديد ؛
Report Builder.DataSource = DataSource ؛
Report Builder.Run () ؛
// تحميل النتيجة إلى جدول القيم.
ValuesTable = ReportBuilder.Result.Upload () ،
إرجاع TabValues
وظيفة النهاية

يمكن تحميل المعالجة مع تنفيذ هذه الطريقة