استقبال البيانات من ملف xls 1c. أيهما أفضل - "1C" أم "Excel"؟ بضع كلمات عن الأخطاء المحتملة

في 1C ، هناك طريقتان للعمل مع ملفات MS Excel ، من خلال كائن COM وأدوات مدمجة 1C باستخدام كائن مستند جدول بيانات. دعنا نلقي نظرة فاحصة على كلتا الطريقتين.

1. العمل من خلال كائن COM.

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

مثال (في نهاية المقال يمكن مشاهدته في شكل نصي):

وتجدر الإشارة إلى أن جميع الكائنات والأساليب والخصائص التي يوفرها كائن COM "Excel.Application" هي كائنات وأساليب وخصائص لـ VBA ، لغة برمجة MS Office.

ملحوظة:

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

2. العمل من خلال الوثيقة الجدولية 1C.

يدعم مستند جدول البيانات 1C تنسيق MS Excel للكتابة بدءًا من النظام الأساسي 8 ، ولكن للفتح فقط بدءًا من النظام الأساسي 8.3.6. علاوة على ذلك ، عند الفتح ، يتم تحميل جميع الأوراق في مستند جدول بيانات واحد. منذ الإصدار 8.3.10 ، عند التحميل ، يتم تحميل الأوراق المختلفة كمناطق مختلفة.

مثال التسجيل بسيط للغاية ولا يتطلب الكثير من الاهتمام:

ومع ذلك ، هنا لدينا مشكلة. عند التسجيل من 1C في مصنف Excel ، يتم تعطيل عرض أسماء الأوراق افتراضيًا.

يمكن حل هذه المشكلة بطريقتين ، 1 - في الكتاب نفسه ، في الإعدادات ، قم بتمكين عرض الأوراق (لن يوافق جميع المستخدمين على القيام بذلك) ، 2 - للقيام بذلك من خلال كائن COM (نحتاج مرة أخرى إلى MS تم تثبيت Excel).

بعد هذه الإضافة الصغيرة ، ستكون اختصارات الورقة مرئية في ملف MS Excel.

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

& على العميل

إجراء إنشاء مستند ()

استثناء

نهاية المحاولات

الكتاب = Excel.WorkBooks.Add () ، // إنشاء مصنف MS Excel جديد

الورقة = Book.WorkSheets.Add () ، // أضف ورقة

Sheet.Name = "مثال من 1C" ؛ // تعيين اسم الورقة

Sheet.Cells (1،1) .Value = "(! LANG: لنقم بإنشاء صيغة";!}

خلايا الورق (2،1) ، القيمة = 1 ،

خلايا الورق (2،2) ، القيمة = 2 ،

Sheet.Cells (2،3) .Formula = "= A2 + B2" ؛

Sheet.Cells (3،1) .Value = CurrentDate () ؛

Book.SaveAs ("C: \ 1 \ Test.xlsx") ؛

Book.Close () ؛

نهاية الإجراء

& على الخادم

الوظيفة GetLayoutServer ()

إرجاع FormInValue ("كائن"). الحصول على تخطيط ("TemplateOnDownload") ؛ // هكذا نحصل على التصميم المعالجة الخارجية;

وظيفة النهاية

& على العميل

عمل الإجراء ()

Excel = COMObject جديد ("Excel.Application") ؛

استثناء

تقرير ("محاولة فاشلة للاتصال بمكون Excel. من المحتمل برنامج اكسلغير مثبت على هذا الحاسوب!");

نهاية المحاولات

التخطيط = Get LayoutServer () ،

Layout.Write (TemporaryFileName) ؛

هل لديك سؤال بحاجة الى مستشار؟

Book = Excel.WorkBooks.Open (TemporaryFileName) ؛

TemplateSheet = Book.WorkSheets (1) ،

نموذج Sheet.Cells (6،1) .Value = "(! LANG: التاريخ:";!}

قالب Sheet.Cells (6،2) .Value = CurrentDate () ؛

ورقة النموذج .NumberFormat = "يوم / شهر / سنة؛ @"؛ // لنقدم تنسيق التاريخ ، تم الحصول على هذا التنسيق عن طريق تسجيل ماكرو في MS Excel

TemplateLeaf.Columns ("B: B"). EntireColumn.AutoFit؛ // قم بتمديد العمود بحيث يناسب التاريخ تمامًا

Book.SaveAs (FileName) ؛

Book.Close () ؛

نهاية الإجراء

& على العميل

نهاية الإجراء

& على العميل

الإجراء WriteTableDocument ()

TabularDocument = New TabularDocument () ،

TabularDocument.Object ("R1C1"). Text = "مثال على الكتابة إلى MS Excel من 1C"؛

TabularDocument.Write ("C: \ 1 \ Test2.xls" ، TabularDocumentFileType.XLSX) ؛

Excel = COMObject جديد ("Excel.Application") ؛

Excel.WorkBooks.Open ("C: \ 1 \ Test2.xls") ؛

Excel.Visible = 0 ؛

Excel.ActiveWindow.DisplayWorkbookTabs = 1 ،

Excel.ActiveWindow.TabRatio = 0.6 ،

Excel.ActiveWorkbook.Save () ،

Excel.Application.Quit ()

نهاية الإجراء

BinaryData = New BinaryData ("C: \ 1 \ test2.xlsx") ؛

العنوان = PlaceTustainStorage (BinaryData، EtaForm.UniqueIdentifier) ​​؛

TabularDocument = LoadOnServer (العنوان) ،

TabularDocument.Show () ،

نهاية الإجراء

& على الخادم

وظيفة LoadOnServer (العنوان)

TempFileName = GetTempFileName ("xlsx") ،

FileData = GetFrom TemporaryStorage (العنوان) ،

FileData.Write (TemporaryFileName) ،

TabularDocument = New TabularDocument () ،

إرجاع TabularDocument ؛

هذه الطريقة بسيطة. يكمن جوهرها في حقيقة أن الكائن جدولي مستندله طرق:

  • أكتب (< ИмяФайла>, < ТипФайлаТаблицы >) لتحميل البيانات إلى ملف ؛
  • يقرأ (< ИмяФайла>, < СпособЧтенияЗначений >) لتحميل البيانات من ملف.

انتباه!

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

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

TabDoc ... اكتب (FilePath، TabularDocumentFileType. XLSX);

هنا TabDoc- مستند جدول بيانات تم إنشاؤه ، مسار الملف- اسم الملف المراد تحميله ، نوع ملف مستند مجدول. XLSX- صيغة ملف تم إنشاؤه... أيد التنسيقات التاليةإكسل:

  • XLS95 - تنسيق Excel 95 ؛
  • XLS97 - تنسيق Excel 97 ؛
  • XLSX - تنسيق Excel 2007.

TabDoc = New TabularDocument ؛
TabDoc ... قراءة (المسار إلى الملف ، كيفية قراءة قيم المستند الجدولية.);

هنا مسار الملف- المسار إلى ملف Excel الذي تم تنزيله. طريقة قراءة قيم الوثيقة الجدولية.يحدد كيفية تفسير البيانات المقروءة من المستند المصدر. الخيارات هي:

  • المعنى؛
  • نص.

الصرف على OLE

ربما يكون التبادل عبر تقنية أتمتة OLE هو الخيار الأكثر شيوعًا العمل البرنامجيمع ملفات Excel. يسمح لك باستخدام جميع الوظائف التي يوفرها Excel ، ولكنه أبطأ من الطرق الأخرى. للتبادل عبر OLE ، تحتاج إلى تثبيت MS Excel:

  • على كمبيوتر المستخدم النهائي ، إذا حدث التبادل من جانب العميل ؛
  • على 1C: كمبيوتر خادم المؤسسة ، إذا حدث التبادل على جانب الخادم.

مثال التفريغ:

// إنشاء كائن COM
Excel = COMObject جديد ("Excel.Application") ؛
// تعطيل عرض التحذيرات والأسئلة
اكسل ... DisplayAlerts = خطأ ،
// إنشاء كتاب جديد
الكتاب = إكسل. كتب العمل. يضيف ()؛
// الوضع على الورقة الأولى
ورقة = كتاب. أوراق عمل (1)؛

// اكتب قيمة إلى الخلية
ورقة ... الخلايا (رقم الخط ، رقم العمود). القيمة = قيمة الخلية ؛

// حفظ الملف
الكتاب ... SaveAs (اسم الملف) ؛


اكسل ... استقال ()؛
Excel = 0 ؛

أمثلة على قراءة:

// -- الخيار 1 --

// إنشاء كائن COM
Excel = COMObject جديد ("Excel.Application") ؛
// افتح الكتاب
الكتاب = إكسل. المصنفات. افتح ( مسار الملف) ؛

ورقة = كتاب. أوراق عمل (1)؛

// اغلق الكتاب
الكتاب ... إغلاق (0) ؛

// أغلق Excel وحرر الذاكرة
اكسل ... استقال ()؛
Excel = 0 ؛

// -- الخيار 2 --

// افتح الكتاب
الكتاب = GetCOMObject ( مسار الملف) ؛
// الوضع على الورقة المطلوبة
ورقة = كتاب. أوراق عمل (1)؛

// اقرأ قيمة الخلية ، وعادةً ما تكون هذه هي الحلقة التي تعبر الخلايا
قيمة الخلية = ورقة. الخلايا (رقم الخط ، رقم العمود). قيمة؛

// اغلق الكتاب
الكتاب ... تطبيق. Quiر () ؛

ل تجاوزلجميع الصفوف المملوءة في ورقة Excel ، يمكنك استخدام الأساليب التالية:

// -- الخيار 1 --
عدد الأسطر = الورقة. الخلايا (1 ، 1). الخلايا الخاصة (11). صف؛
لرقم السطر = 1 حسب عدد الخطوط التكرارية
قيمة الخلية = ورقة. الخلايا (رقم الخط ، رقم العمود). قيمة;
نهاية الدورة

// -- الخيار 2 --
رقم الخط = 0 ؛
أثناء دورة الحقيقة
LineNumber = رقم الخط + 1 ،
قيمة الخلية = ورقة. الخلايا (رقم الخط ، رقم العمود). قيمة؛
إذا لم يتم توفير القيمة (CellValue) ثم
يحبط
إنهاء إذا؛
نهاية الدورة

بدلاً من اجتياز جميع صفوف الورقة بالتتابع ، يمكنك ذلك تفريغ جميع البيانات في مصفوفةوالعمل معه. سيكون هذا الأسلوب أسرع عند قراءة كميات كبيرة من البيانات:

أعمدة الإجمالي = ورقة. الخلايا (1 ، 1). الخلايا الخاصة (11). عمودي؛
إجمالي الصفوف = ورقة. الخلايا (1 ، 1). الخلايا الخاصة (11). صف؛

منطقة = ورقة. النطاق (خلايا. خلايا (1 ، 1) ، خلايا. خلايا (خطوط توتال ، إجمالي أعمدة)) ؛
البيانات = المنطقة. قيمة. تفريغ();

يوضح الجدول أدناه الخصائص والأساليب الأكثر شيوعًا للعمل مع Excel من خلال OLE:

عمل الشفرة تعليق
العمل مع التطبيق
ضبط رؤية نافذة التطبيق اكسل ... مرئي= خطأ ؛
ضبط وضع عرض التحذيرات (عرض / عدم عرض) اكسل ... عرض التنبيهات= خطأ ؛
إغلاق التطبيق اكسل ... استقال ()؛
العمل مع كتاب
إنشاء كتاب جديد الكتاب = إكسل. كتب العمل. يضيف();
فتح كتاب موجود الكتاب = إكسل. كتب العمل. افتح (FileName);
حفظ كتاب الكتاب ... SaveAs (اسم الملف);
ختام الكتاب الكتاب ... إغلاق (0) ؛
العمل مع ورقة
ضبط الورقة الحالية ورقة = كتاب. أوراق العمل (رقم الورقة);
تحديد الاسم ورقة ... الاسم = الاسم;
وضع الحماية ورقة ... يحمي();
إزالة الحماية ورقة ... أزل الحماية();
تحديد اتجاه الصفحة ورقة ... اعداد الصفحة. الاتجاه = 2; 1 - عمودي ، 2 - أفقي
ضبط الحد الأيسر ورقة ... اعداد الصفحة. LeftMargin = Excel. السنتيمتر إلى النقاط (السنتيمتر);
تحديد الحد الأعلى ورقة ... اعداد الصفحة. TopMargin = إكسل. السنتيمتر إلى النقاط (السنتيمتر);
تحديد الحد الصحيح ورقة ... اعداد الصفحة. RightMargin = Excel. السنتيمتر إلى النقاط (السنتيمتر);
تحديد الحد السفلي ورقة ... اعداد الصفحة. BottomMargin = Excel. السنتيمتر إلى النقاط (السنتيمتر);
العمل مع الصفوف والأعمدة والخلايا
ضبط عرض العمود ورقة ... الأعمدة. عرض العمود = العرض;
حذف خط ورقة ... صفوف. حذف();
حذف العمود ورقة ... الأعمدة. حذف ()؛
حذف خلية ورقة ... الخلايا (رقم الخط ، رقم العمود). حذف();
تحديد القيمة ورقة ... الخلايا (رقم الخط ، رقم العمود). القيمة = القيمة;
دمج الخلايا ورقة ... النطاق (خلايا الورقة (رقم الصف ، رقم العمود) ، خلايا الورقة (رقم الصف 1 ، رقم العمود 1)). دمج();
تثبيت الخط ورقة ... الخلايا (رقم الخط ، رقم العمود). الخط. الاسم = اسم الخط;
تحديد حجم الخط ورقة ... الخلايا (رقم الخط ، رقم العمود). الخط. الحجم = حجم الخط;
ضبط الخط الغامق ورقة ... الخلايا (رقم الخط ، رقم العمود). الخط. عريض = 1 ; 1 - جريء ، 0 - عادي
وضع مائل ورقة ... الخلايا (رقم الخط ، رقم العمود). الخط. مائل = 1 ; 1 - مائل ، 0 - عادي
ضبط الخط الذي تحته خط ورقة ... الخلايا (رقم الخط ، رقم العمود). الخط. تسطير = 2 ; 2 - مسطر 1 - لا

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

باستخدام COMSafeArray

عند تفريغ كميات كبيرة من البيانات من 1C إلى Excel ، يمكنك استخدام الكائن للإسراع COMSafeArray... وفقًا للتعريف من مساعد بناء الجملة ، فإن COMSafeArray عبارة عن غلاف كائن فوق مصفوفة متعددة الأبعاد SafeArrayمن COM. يسمح لك بإنشاء SafeArray واستخدامه لتبادل البيانات بين كائنات COM. بعبارات بسيطة ، إنها مجموعة من القيم التي يمكن استخدامها للتبادل بين التطبيقات باستخدام تقنية OLE.

// إنشاء COMSafeArray
ArrayCom = COMSafeArray جديد ("VT_Variant" ، TotalColumns ، TotalStrings);
// ملء COMSafeArray
ل الأسطر = 0 حسب مجموع السطور - دورة واحدة
ل العدد = 0 إجمالي الأعمدة - دورة واحدة
ArrayCom ... SetValue (العدد ، الصفحة ، القيمة);
نهاية الدورة
نهاية الدورة
// تعيين القيم من COMSafeArray إلى منطقة ورقة عمل Excel
ورقة ... النطاق (ورقة. خلايا (1 ، 1) ، خلايا. ورقة (إجمالي الصفوف ، إجمالي الأعمدة)). القيمة = ArrayCom;

الصرف عبر ADO

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

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

مثال التفريغ:


الاتصال = COMObject جديد ("ADODB.Connection") ؛


مجمع ... ConnectionString = "

| مصدر البيانات = " + FileName + "؛
;
مجمع ... افتح ()؛ // فتح الاتصال

// قم بإنشاء كائن COM للأمر
الأمر = COMObject جديد ("ADODB.Command") ؛
أمر

// تعيين نص الأمر لإنشاء الجدول
أمر ... CommandText = "CREATE TABLE [Sheet1] (Column1 char (255)، Column2 date، Column3 int، Column4 float)";
أمر ... ينفذ ()؛ // نفذ الأمر

// تعيين نص الأمر لإضافة صف جدول
أمر ... CommandText = "INSERT INTO [Sheet1] (Column1، Column2، Column3، Column4) القيم (" "" "،" 8/11/2017 "" ، "12345" ، "12345.6789") ";
Command.Execute () ؛ // نفذ الأمر

// احذف الأمر وأغلق الاتصال
الأمر = غير محدد ؛
مجمع ... قريب();
اتصال = غير محدد;

لإنشاء ورقة جديدة وتشكيل هيكلها ، يمكنك استخدام الكائنات كتالوج ADOXو ADOX.Table... في هذه الحالة ، سيأخذ الرمز الشكل:

// إنشاء كائن COM للعمل مع الكتاب
الكتاب = COMObject جديد ("ADOX.Catalog") ؛
الكتاب ... ActiveConnection = اتصال ؛

// قم بإنشاء كائن COM للعمل مع بنية البيانات على الورقة
Table = New COMObject ("ADOX.Table") ؛
طاولة ... الاسم = "ورقة 1" ؛
طاولة ... الأعمدة. إلحاق ("Column1"، 202) ؛
طاولة ... الأعمدة. إلحاق ("Column2"، 7) ؛
طاولة ... الأعمدة. إلحاق ("Column3"، 5) ؛
طاولة ... الأعمدة. إلحاق ("العمود 4" ، 5) ؛

// قم بإنشاء ورقة بالهيكل الموصوف في الكتاب
الكتاب ... الجداول. إلحاق (جدول) ؛
الجدول = غير محدد ؛
كتاب = غير محدد ؛

في المثال أعلاه ، في الطريقة

طاولة ... الأعمدة. ألحق("العمود 1" ، 202) ؛

تحدد المعلمة الثانية نوع العمود. المعلمة اختيارية ، فيما يلي بعض قيم نوع العمود:

  • 5 - مزدوج ؛
  • 6 - العملة الإعلانية ؛
  • 7 - تاريخ ؛
  • 11 - منطقية ؛
  • 202 - adVarWChar ؛
  • 203- نورة.

مثال قراءة:

// إنشاء كائن COM للاتصال
الاتصال = COMObject جديد ("ADODB.Connection") ؛

// تعيين سلسلة الاتصال
مجمع ... ConnectionString = "
| الموفر = Microsoft.ACE.OLEDB.12.0 ،
| مصدر البيانات = " + FileName + "؛
| الخصائص الممتدة = "" Excel 12.0 XML ؛ HDR = نعم "" ؛ ";
مجمع ... افتح ()؛ // فتح الاتصال

// قم بإنشاء كائن COM للحصول على التحديد
التحديد = COMObject جديد ("ADODB.Recordset") ؛
طلب نص = "تحديد * من [Sheet1 $]";

// تنفيذ الطلب
عينة ... فتح (نص الاستعلام ، اتصال) ؛

// تجاوز نتيجة التحديد
لم يتم أخذ العينات بعد. EOF () حلقة
قيمة Column1 = نموذج. مجالات. العنصر ("Column1"). قيمة ; // الرجوع باسم العمود
Column2- القيمة = نموذج. مجالات. المادة (0). قيمة؛ // بالإشارة إلى فهرس العمود
عينة ... MoveNext () ،
نهاية الدورة

عينة ... قريب ()؛
عينة = غير محدد ؛
مجمع ... قريب ()؛
اتصال = غير محدد ؛

في سلسلة الاتصال ، المعلمة HDRيحدد كيف سيتم إدراك السطر الأول على الورقة. الخيارات هي:

  • نعم - يتم تفسير السطر الأول على أنه أسماء الأعمدة. يمكن الوصول إلى القيم بالاسم وفهرس العمود.
  • لا - يتم التعامل مع السطر الأول كبيانات. لا يمكن الوصول إلى القيم إلا عن طريق فهرس العمود.

في الأمثلة المتوفرة ، تمت مناقشة عدد قليل فقط من كائنات ADO. يتكون نموذج كائن ADO من الكائنات التالية:

  • اتصال؛
  • أمر؛
  • مجموعة السجلات
  • يسجل؛
  • مجالات؛
  • مجرى؛
  • أخطاء
  • العوامل؛
  • الخصائص.

تحميل بدون برمجة

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

لحفظ مستند جدول بيانات (على سبيل المثال ، نتيجة تقرير) ، يمكنك استدعاء الأمر يحفظأو حفظ باسم ...القائمة الرئيسية.

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

لحفظ البيانات من القوائم الديناميكية (على سبيل المثال ، قائمة العناصر) ، يجب عليك:

  1. إخراج البيانات إلى مستند جدول بيانات باستخدام الأمر المزيد ⇒ عرض القائمة ...;
  2. احفظ مستند جدول البيانات بالتنسيق المطلوب.

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

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

آلية عالمية

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

عندما يبدأ ، يفتح نموذج (الشكل 1):

كما ترى من النموذج ، يسمح لك بنقل المعلومات إلى كائنات التكوين التالية:

  1. الدليل؛
  2. جزء جدوليوثيقة أو كتاب مرجعي ؛
  3. سجل المعلومات.

يتغير حقل تحديد الكائن بناءً على موضع المفتاح.

يتم ملء نموذج المعالجة الجدولية عند فتح الملف الذي تم تنزيله.

تدعم المعالجة النموذجية التفريغ من:

  • تم تطويره بواسطة متخصصين 1C ، تنسيق الملفmxl.
  • ليزتxls بالتنسيقإكسل 97-2003 ؛
  • ملف نصيرسالة قصيرة؛
  • الجداولدبف.

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

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

لننتقل الآن إلى علامة التبويب "الإعدادات" (الشكل 2):

الصورة 2

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

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

الأعمدة "الإعدادات"

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

تمثيل السمة - المرادف (الاسم) لسمة البيانات الوصفية مكتوب هنا ، كما هو محدد في المُكوِّن.

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

وصف الأنواع - يعرض نوع البيانات الذي تمتلكه سمة بيانات تعريف معينة.

وضع التنزيل - يقدم ثلاثة خيارات للاختيار من بينها (الشكل 3):

تين. 3

  • بحث - سيتم إجراء البحث عن العنصر المقابل ؛ إذا كان غائبًا ، يمكن إنشاء عنصر جديد ؛
  • مجموعة - يتم تعيين قيمة معينة بطريقة ثانوية ؛
  • حساب - في هذه الحالة ، سيتم تعيين نتيجة حساب التعبير المحدد في العمود "شرط الارتباط / التعبير عن القيمة" في حقل العنصر الذي يتم إنشاؤه.

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

الشكل 4

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

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

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

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

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

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

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

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

الشكل 5

يحتوي نموذج المعالجة على:

  1. حقل اختيار التاريخ ، والذي سيشير إلى متى يكون هذا السعر مناسبًا ؛
  2. حقل التحديد للمقاول الذي أرسل قائمة الأسعار الخاصة به ؛
  3. زر يسمح لك بتحديد نوع الأسعار التي سيتم تعيينها ؛
  4. قسم جدولي يمكن ملؤه بالبيانات المحملة.

يمكن رؤية هذا الشكل في الشكل 6

الشكل 6

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

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

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

الشكل 7

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

الشكل 8

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

  • سجل كل شيء
  • سجل فقط أولئك الذين تغيروا بالمقارنة مع تلك المتوفرة بالفعل في قاعدة البيانات.

في حقل النص ، يمكنك إضافة تعليق تتم كتابته في المستند (الشكل 9):

الشكل 9

بعد المعالجة:

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

تعمل معالجة "تحميل البضائع من الملفات الخارجية" بالطريقة نفسها.

خيارات التعامل مع نقل DIY

تكمن المشكلة الرئيسية في سحب البيانات من ملف Excel في أن 1C لا يحتوي على آلية مضمنة لا لبس فيها لفتحه. هناك عدة خيارات لتوصيل Excel بـ 1C:

  • عبر Microsoft ADODB - يكفي طريقة سريعة، والتي ، كقاعدة عامة ، قابلة للتطبيق على كل من إصدارات الملفات وخادم العميل من تخزين قاعدة البيانات ؛
  • من خلال الاستخدام مايكروسوفت أوفيس- طريقة تفشل أحيانًا عند العمل مع قواعد بيانات SQL ، كقاعدة عامة ، تعمل بشكل أبطأ إلى حد ما من الطريقة الأولى ، علاوة على ذلك ، فهي تتطلب مكتب مثبت;
  • من خلال Libre Office - على عكس الطريقة السابقة ، فهو مجاني ، بالإضافة إلى تنسيقات xls و xlsx ، كما أنه يدعم جداوله الخاصة ، ولكنه يتطلب حزمة LibreOffice المثبتة وبعض التحضير للملف الذي تم تنزيله (يجب أن يحتوي الصف الأول من الجدول على أسماء الأعمدة).

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

من خلال ADODB.Connection

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

ل ملفات Excelثلاثة خيارات ممكنة هنا:

معلمات سلسلة الاتصال:

  • المزود - يتم تعريف السائق المستخدم هنا ؛
  • مصدر البيانات - يحدد اسم الملف الذي سنفتحه ؛
  • الخصائص الممتدة - هنا يمكنك تحديد: ما إذا كنت بحاجة إلى صف رأس للجدول (HDR = YES يشير إلى أنه سيتم قراءة البيانات من السطر الأول ، HDR = NO - ذلك من السطر الثاني) ، ما إذا كان الملف مفتوحًا للقراءة فقط (للقراءة فقط) وبعض المعلمات الاختيارية الأخرى.

بعد إنشاء سلسلة الاتصال ، يمكننا الاتصال بالملف الذي تم تنزيله (الشكل 13)

الشكل 13

الآن يمكننا استخدام ملفات طلب بسيط(الشكل 14) ابدأ في جلب المعلومات من الملف الذي تم تنزيله.

في هذه الحالة ، تحدد معلمة "الورقة" أي ورقة من كتاب Excel يتعين علينا العمل معها.

يمكن قراءة مجموعة السجلات المخزنة في ورقة باستخدام كائن Recordset. في هذه الحالة ، يمكن الحصول على السجل الأول للورقة باستخدام معلمة BOF (بداية الملف) وآخر عنصر EOF (نهاية الملف).

عبر تطبيق Excel

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

هذه كائن COMهناك العديد من المعلمات الفرعية ، لكن المعلمة الرئيسية بالنسبة لنا ، في ظل الظروف الحالية للمهمة ، هي معلمة Workbooks (الشكل 17).

بعد تهيئة الكتاب ، من الضروري تحديد الورقة التي سيتم قراءة البيانات منها (الشكل 18).

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

بضع كلمات عن الأخطاء المحتملة

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

في حالة العمل من خلال ADO (الشكل 19) ؛

الشكل 19

  • في حالة العمل مع التطبيق (الشكل 20).

أرز. عشرين.

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

مقدمة.

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

الجداول 1C و Excel.

للراحة ، يقوم العديد من المستخدمين بحفظ جداول 1C ( استمارات مطبوعة) بتنسيق Excel (* .xls). بعد ذلك ، يتم إجراء مجموعات وأنواع وحسابات مختلفة وما إلى ذلك في الملف الناتج. هذا يرجع إلى حقيقة أن جداول 1C لا تحتوي على وظائف ضخمة كما هو الحال في جداول Excel. ولكن في الإصدار 1C 8.0 ، توجد ابتكارات تجعل العمل مع الجداول أكثر راحة.

يوجد على موقع 1C (http://www.1c.ru/) برنامج مفيد يجعل من الممكن فتح جداول 1C في Excel وحفظ ورقة Excel كجدول 1C. يكون هذا مفيدًا إذا لم يتم حفظ الجدول 1C بتنسيق Excel ، ولم يتم تثبيت 1C على الكمبيوتر حيث تحتاج إلى فتح هذا الجدول. ولن تكون هناك حاجة للتذكر باستمرار أنك بحاجة إلى حفظ جدول 1C بتنسيق Excel.

يمكن العثور على معلومات كاملة عن البرنامج هنا.
يمكنك تحميل البرنامج من هنا ( أرشيف مضغوط 682739 بايت).

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

الحصول على البيانات من Excel.

يتم الوصول من 1C إلى Excel من خلال OLE. على سبيل المثال الكود
محاولة
استثناء
تقرير (DescriptionErors () +
);
يعود؛
نهاية المحاولات
سيسمح لنا بالوصول من خلال متغير "Excel" إلى التشغيل تطبيق Excel... وبعد ذلك يمكنك بالفعل الوصول إلى الكتاب (ملف) والورقة والخلية بالبيانات. فيما يلي بعض أمثلة التعليمات البرمجية.

فتح كتاب (ملف):
كتاب = إكسل. كتب العمل. فتح (مسار الملف) ؛
FilePath هو المسار الكامل للملف في مصنف Excel.

اختيار ورقة من الكتاب للعمل معها:
أو
ورقة = كتاب. أوراق العمل (اسم الورقة) ؛
SheetNumber هو رقم الورقة في الكتاب ، SheetName هو اسم الورقة في الكتاب.

الحصول على قيمة خلية ورقة:
القيمة = الورقة. الخلايا (رقم الخط ، رقم العمود). قيمة؛

الأهمية:لا تنسى اضافة كود الاكسل في مجال تنفيذ الاجراءات اللازمة. استقال ()؛ ، وإلا ستظل عملية التشغيل غير مكتملة وستستهلك ذاكرة ومعالج الكمبيوتر.

إخراج البيانات إلى Excel.

لإخراج (تحميل) البيانات إلى Excel ، يجب عليك إما فتح مصنف موجود أو إنشاء مصنف جديد وتحديد ورقة عمل لإخراج البيانات. تم وصف فتح كتاب موجود أعلاه ، ولكن لإنشاء كتاب جديد ، تحتاج إلى استخدام الكود التالي:
محاولة
Excel = CreateObject ("Excel.Application") ؛
استثناء
تقرير (DescriptionErors () +
"Excel غير مثبت على هذا الكمبيوتر!");
يعود؛
نهاية المحاولات
كتاب = إكسل. كتب العمل. يضيف ()؛

منذ إنشاء مصنف في Excel ، يتم إنشاء الأوراق تلقائيًا (أدوات-> خيارات-> عام-> أوراق في مصنف جديد) ، ما عليك سوى تحديد ورقة للعمل معها:
ورقة = كتاب. أوراق العمل (رقم الورقة) ؛
أو أضف ورقة جديدة إلى الكتاب ، إذا لزم الأمر:
ورقة = كتاب. أوراق. يضيف ()؛
الخطوة التاليةسيتم تعيين قيمة الخلية:
ورقة. الخلايا (رقم الخط ، رقم العمود). القيمة = القيمة ؛
RowNumber و ColumnNumber - رقم الصف ورقم العمود عند التقاطع الذي توجد به الخلية.
وفي النهاية ، تحتاج إلى تسجيل الكتاب الذي تم إنشاؤه:
محاولة
الكتاب . SaveAs (مسار الملف) ؛
استثناء
تقرير (الوصف الأخطاء ()
+ "لم يتم حفظ الملف!");
يعود؛
نهاية المحاولات
FilePath هو المسار الكامل لملف مصنف Excel (بما في ذلك الاسم).
الأهمية:لا تنس أن أسماء الملفات يجب ألا تحتوي على \ /: *؟ ">< |.

الطرق المستخدمة بشكل متكرر لقراءة / تعيين القيم في Excel.

Excel = CreateObject ("Excel.Application") ؛ الوصول إلى تطبيق Excel.
اكسل. مرئي = رؤية ؛ 0 - Excel غير مرئي ، 1 - مرئي.
كتاب = إكسل. كتب العمل. يضيف ()؛ قم بإنشاء مصنف Excel جديد (ملف).
الكتاب . SaveAs (اسم الملف) ؛ حفظ مصنف Excel.
ورقة = كتاب. أوراق عمل. يضيف ()؛ إضافة ورقة جديدة للكتاب.
كتاب = إكسل. كتب العمل. فتح (اسم الملف) ؛ فتح مصنف Excel موجود (ملف).
ورقة = كتاب. أوراق العمل (رقم الورقة) ؛ إعداد ورقة كعامل برقم ورقة العدد.
ورقة. الاسم = اسم الورقة ؛ قم بتسمية ورقة العمل باسم SheetName
ورقة. اعداد الصفحة. تكبير = مقياس ؛ يعيّن معلمة الصفحة "مقياس" (من 10 إلى 400).
ورقة. اعداد الصفحة. الاتجاه = الاتجاه ؛ الاتجاه: 1 - عمودي ، 2 - أفقي.
ورقة. اعداد الصفحة. LeftMargin = Excel. السنتيمتر إلى النقاط (السنتيمتر) ؛ ضبط الحد الأيسر (بالسنتيمتر).
ورقة. اعداد الصفحة. TopMargin = إكسل. السنتيمتر إلى النقاط (السنتيمتر) ؛ تحديد الحد الأعلى بالسنتيمتر.
ورقة. اعداد الصفحة. RightMargin = Excel. السنتيمتر إلى النقاط (السنتيمتر) ؛ ضبط الحد الصحيح (بالسنتيمتر).
ورقة. اعداد الصفحة. BottomMargin = Excel. السنتيمتر إلى النقاط (السنتيمتر) ؛ ضبط الحد الأدنى (بالسنتيمتر).
ورقة. الأعمدة. عرض العمود = العرض ؛ يضبط عرض العمود.
ورقة. الخلايا (رقم الخط ، رقم العمود). القيمة = القيمة ؛ إدخال البيانات في خلية.
ورقة. الخلايا (رقم الخط ، رقم العمود). الخط. الاسم = اسم الخط ؛ ضبط الخط في الخلية.
ورقة. الخلايا (رقم الخط ، رقم العمود). الخط. الحجم = حجم الخط ؛ يعيّن حجم الخط في الخلية.
ورقة. الخلايا (رقم الخط ، رقم العمود). الخط. جريئة = جريئة ؛ 1 غامق ، 0 طبيعي.
ورقة. الخلايا (رقم الخط ، رقم العمود). الخط. مائل = مائل ؛ 1 خط مائل ، 0 عادي.
ورقة. الخلايا (رقم الخط ، رقم العمود). الخط. تسطير = تسطير ؛ 2 مسطر ، 1 ليس كذلك.
ورقة. الخلايا (رقم الخط ، رقم العمود). NumberFormat = تنسيق ؛ يعيّن تنسيق بيانات الخلية.
ورقة. الخلايا (رقم الخط ، رقم العمود). الحدود. Linestyle = نوع الخط ؛ تعيين حدود الخلية. 1 - صلب رقيق.