توليد ملف XML. تحميل سهل لتطبيق الطرف الثالث

أوضاع التشغيل

معالجة UnloadingLoadingXML82Data تنفذ وضعين للعملية: التفريغ (إنشاء ملف تفريغ للبيانات المحددة من قبل المستخدم) والتحميل (قراءة ملف التفريغ الذي تم إنشاؤه بواسطة الوضع الذي يحمل نفس الاسم وكتابة البيانات الموجودة فيه). يتم تعيين الوضع عن طريق التحديد في حقل الوضع.

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

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

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

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

تحديد تكوين التفريغ

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

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

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

التطبيقات الممكنة

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

- صفحات الويب المعروفة ، والتي تعد أيضًا نظيرًا لـ XML مع عمليات تدقيق غير صارمة.

تعمل كائنات XML و FastInfoset و HTML للقراءة / الكتابة على توسيع إمكانيات قراءة ملف نصي مع معالجة مضمنة لعلامات التمييز.

يتم استخدامها أيضًا لكائنات DOM Builder / DOM Writer (انظر أدناه) كمصادر بيانات.

تحتوي ملفات XML 1C على معلومات نصية ، أي أنها ملفات نصية. تعد كائنات XML Reader 1C و XML Writer 1C "وظيفة إضافية" تسهل العمل مع علامات ملف 1C XML.

تتشابه كائنات ReadFastInfoset 1C و WriteFastInfoset 1C و ReadHTML 1C و WriteHTML 1C تمامًا مع ReadXML 1C و WriteXML 1C وتعمل بنفس الطريقة مع التنسيقات الأخرى.

ملف XML 1C المستخدم في الأمثلة

دليل>

دليل>

قيمة النص
دليل>
التكوين>

مثال 1. قراءة ملف XML 1C في شجرة قيم باستخدام ReadingXML 1C

// افتح ملف XML 1C للقراءة باستخدام ReadingXML 1C
ملف = XMLReader جديد () ،
File.OpenFile ("D: \ ConfigurationStructure.xml") ؛

// تحضير شجرة القيمة
// يمكن أن يكون لكل فرع XML اسم وسمات وقيمة
dzXML = New ValueTree () ،
dzXML.Columns.Add ("الاسم") ،
dzXML.Columns.Add ("القيمة") ،
dzXML.Columns.Add ("السمات") ،

// نظرًا لأن سلسلة XML يمكن أن تحتوي على العديد من السمات ، فسنكتبها في جدول القيمة
// كل سمة لها اسم وقيمة
tAttributes = NewValueTable () ،
attribute.Columns.Add ("الاسم") ،
attribute.Columns.Add ("القيمة") ،

// سيساعدنا مستوى التداخل في فهم متى نحتاج إلى إضافة فرع متداخل ومتى نحتاج إلى العودة إلى المستوى الأعلى
NestingLevel = 0 ؛
// السطر الحالي - خط الشجرة ، سيتغير كلما زاد التداخل
CurrentRow = غير محدد ؛
// قراءة ملف XML 1C لا تتم سطراً بسطر ، ولكن وفقًا للهيكل ، في نهاية الملف ، ستعود القراءة FALSE
بينما File.Read () حلقة

// نحن مهتمون بثلاثة أنواع من العقد - بداية العنصر ، والنص (قيمة العنصر) ونهاية العنصر (لإرجاع مستوى واحد للأعلى)
إذا كان File.NodeType = XMLNodeType.Element ابدأ بعد ذلك

NestingLevel = NestingLevel + 1 ؛

// إذا كان هذا هو السطر الأول ، فقم بإضافته إلى أعلى الشجرة واحفظ الاسم فقط
إذا CurrentRow = Undefined ثم
CurrentRow = dzXML.Rows.Add () ،
CurrentLine.Name = File.Name ؛
يكمل؛
خلاف ذلك
// خطوط متداخلة
CurrentRow = CurrentRow.Rows.Add () ،
CurrentLine.Name = File.Name ؛ // حفظ الاسم

// هل يحتوي عنصر XML هذا على سمات؟
إذا كان File.NumberAttributes ()> 0 ثم
// إذا كانت الإجابة بنعم - قم بنسخ جدول فارغ جاهز لحفظ السمات
tAttributesNode = tAttributes.Copy () ،
// حلقة من خلال عدد سمات هذا العنصر
للعدد = 0 بواسطة File.NumberAttributes () - 1 Loop
// لكل سمة تذكر الاسم والقيمة
String = tNodeAttributes.Add () ،
String.Name = File.AttributeName (N) ،
String.Value = File.AttributeValue (Ac) ،
نهاية الدورة
// احفظ جدول سمات العنصر في الصف الحالي
CurrentRow.Attributes = tAttributesNode ؛
إنهاء إذا؛
إنهاء إذا؛

ElseIf File.NodeType = XMLNodeType.EndElement ثم
// زيادة مستوى التداخل في بداية العنصر ، وتقليل مستوى التداخل في نهاية العنصر
NestingLevel = NestingLevel - 1 ؛
// إرجاع السطر الحالي بمستوى واحد لأعلى
CurrentRow = CurrentRow.Parent ؛

ElseIf File.NodeType = XMLNodeType.Text ثم
// إذا كان للعنصر قيمة ، فقط احفظه
CurrentLine.Value = File.Value ؛

إنهاء إذا؛

نهاية الدورة

File.Close () ؛

مثال 2. كتابة ملف 1C XML باستخدام كائن WriteXML 1C

// إنشاء ملف WriteXML 1C
ملف = XMLWriter جديد () ،
File.OpenFile ("D: \ ConfigurationStructure.xml"، "UTF-8") ؛
File.WriteItemStart ("التكوين") ؛

// عن طريق البيانات الوصفية نتجاوز جميع الأدلة (لمزيد من التفاصيل ، راجع "العمل مع البيانات الوصفية")
لكل دليل من Metadata.Catalogs Loop

// WriteItemStart - يفتح فرع [تابع] جديد
File.WriteItemStart ("الدليل") ؛
// WriteAttribute - يكتب السمة إلى الفرع المفتوح مسبقًا
File.WriteAttribute ("الاسم" ، اسم الدليل) ؛
File.WriteAttribute ("مرادف" ، Directory.Synonym) ؛

// عن طريق البيانات الوصفية نتجاوز كل تفاصيل الدليل
لكل دعائم من الكتيب




نهاية الدورة

// عن طريق البيانات الوصفية ، نتجاوز جميع الأجزاء المجدولة من الدليل
لكل مساء من Directory.TabularParts Loop
File.WriteItemBeginning ("TablePart") ،
File.WriteAttribute ("الاسم" ، PT.Name) ؛
File.WriteAttribute ("مرادف" ، PM.Synonym) ؛

لكل دعائم من PM.Props Cycle
File.WriteItemBeginning ("Props") ؛
File.WriteAttribute ("الاسم" ، Props.Name) ؛
File.WriteAttribute ("مرادف" ، Props.Synonym) ؛
File.WriteEndElement () ،
نهاية الدورة

File.WriteEndElement () ،
نهاية الدورة

// SaveItemEnd - "يغلق" الفرع المفتوح مسبقًا باستخدام WriteItemStart
File.WriteEndElement () ،
نهاية الدورة

File.WriteEndElement () ،
File.Close () ؛

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

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

وبالتالي ، فإن التفريغ في ملف XML (استيراد السجلات) من قاعدة معلومات والتحميل اللاحق من XML إلى أخرى يمثل تبادل البيانات بتنسيق XML بين قواعد البيانات.

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

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

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

ولكن بالنسبة للمستخدمين الرسميين لأحدهم ، أنشأ المطورون معالجًا عالميًا "تفريغ / تحميل بيانات XML".

مهم. يُسمح بالتصدير إلى XML في 1C والتحميل الإضافي إلى XML من 1C للتكوينات المماثلة - وإلا فإنه سيتلف.

معالج عام

النقاط الأساسية لاستخدام مطور عالمي:

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

له وضعان للتشغيل: إنشاء ملف مع حفظ المعلومات وقراءته / كتابته عند الاستيراد.

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

استرجاع السجلات

يمكنك تحميل البيانات لقاعدة البيانات بأكملها وبشكل انتقائي - كائن بعد كائن.

بعد تنزيل المعالج وتثبيته وفتحه ، يتم القيام بما يلي:


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

  1. يتم تكوين المرشحات الضرورية (على سبيل المثال ، حسب التاريخ) ؛
  2. يتم تحديد مكان على مساحة القرص ؛
  3. تبدأ العملية نفسها.

تحميل السجلات إلى المتلقي

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

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

أنت الآن تعرف كيفية تحميل أو تنزيل البيانات من 1C بتنسيق XML لحفظ البيانات وتبادلها بين قواعد البيانات.

يتوفر العمل مع مستندات XML مباشرة من اللغة المضمنة في نظام 1C: Enterprise 8.

ثمة احتمال وارد:

  • قراءة وكتابة مستندات xml بالتسلسل:
    • التحويل من سلسلة مشتقة من نص العنصر أو قيمة سمة XML إلى قيمة وفقًا للنوع المحدد ؛
    • الحصول على تمثيل سلسلة لقيمة لوضعها في نص العنصر أو قيمة سمة XML ؛
    • الحصول على نوع بيانات XML المطابق للنوع الذي تم تمريره كمعامل ؛
    • تحقق من إمكانية القراءة من XML لقيمة النوع المحدد ؛
    • إجراء التحقق من صحة مخطط XML عند قراءة XML
    • اكتب القيمة بتنسيق XML ؛
    • إرجاع نوع مطابق لنوع بيانات XML.
  • استخدم نموذج الوصول إلى بيانات الكائن لمستندات xml (DocumentDOM) الذي يتوافق مع المعايير التالية:
    • DOM المستوى 2 ؛
    • XPath (DOM المستوى 3) ؛
    • تحميل DOM وحفظه (المستوى 3 من DOM).
  • استخدام نموذج كائن مخطط XML (مخطط XML) ؛
  • استخدام معيار XML القياسي 1.1 (Canonical XML 1.1).

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

معلومات سريعة

يوفر النظام الأساسي أدوات للعمل مع مستندات XML بتنسيق Fast Infoset الثنائي. تستخدم تقنية Fast Infoset صيغة بديلة لعرض بيانات XML. ينتج عن هذا ملفات أصغر ومعالجة أسرع من البيانات المكتوبة بتنسيق XML العادي. الملف المكتوب بتنسيق Fast Infoset له الامتداد .fi أو .finf.

في أي مؤسسة ، يمكن الاحتفاظ بالمحاسبة ليس فقط في الحلول القائمة على 1C: منصة المؤسسة ، ولكن أيضًا في أنظمة البرامج الأخرى (Galaktika ، Parus ، SAP ، إلخ). في هذه الحالة ، تظهر مهام دمج تطبيقين.

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

التبادل باستخدام هذا التنسيق عالمي ، حيث يمكن لمعظم التطبيقات العمل معه. دعنا نفكر في كيفية تحميل قائمة مستندات التكوين من 1C: Enterprise إلى ملف XML.

تصدير إلى XML

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

تصدير وظيفة CreateXML () // احصل على اسم الملف المؤقتالمسار = GetTporaryFileName () ، // تهيئة الفئة "WriterXML"الإدخال = EntryXML جديد ؛ // فتح ملف مؤقت للكتابة- 8 " ) ; // اكتب تصريح ملف XMLسِجِلّ. WriteDeclusionXML () ، // يكتب. WriteElementStart (" التكوينات" ) ; // العنصر الأول // سمة العنصر الأول بتاريخ إنشاء الملفسِجِلّ. WriteAttribute ("تم إنشاؤه" ، تنسيق (CurrentDate () ، "DF = yyyy-MM- ddThh: mm: ss؛ DLF = DT" ) ) ; // اكتب عنصرًا لكل مستند تكوين. نضع اسم الوثيقة في النص.لكل مستند من البيانات الوصفية. سجل دورة المستندات. WriteItemStart ("المستند") ؛ سِجِلّ. WriteText (اسم الوثيقة) ؛ سِجِلّ. WriteEndElement () ، نهاية الدورة // الانتهاء من كتابة العنصر الأولسِجِلّ. WriteEndElement () ، سِجِلّ. يغلق() ؛ // أغلق الملف // احصل على البيانات الثنائية للملف وضعها في تخزين مؤقت BinaryData = New BinaryData (Path) ؛ العنوان = PlaceInTempStorage (BinaryData، New UniqueIdentifier) ​​؛ اعد العنوان؛ // إرجاع عنوان الملف المخزنوظائف النهاية

يجب إكمال كل عنصر تم إنشاؤه بشكل صحيح. بعد تنفيذ أسلوب "WriteStartElement ()" ، يجب تنفيذ أسلوب "WriteEndElement" ، وإلا ستكون بنية ملف XML غير صحيحة.

القالب العام لإنشاء ملفات XML هو التسلسل التالي:

// 1. تهيئة فئة "كتابة XML"الإدخال = EntryXML جديد ؛ // 2. فتح ملف مؤقت للكتابةسِجِلّ. OpenFile (المسار ، "UTF - 8 " ) ; // 3. اكتب التصريح عن ملف XMLسِجِلّ. WriteDeclusionXML () ، // // 4. ++ اكتب محتويات ملف XMLسِجِلّ. WriteElementStart ("ElementXML") ؛ سِجِلّ. WriteEndElement () ، // - اكتب محتويات ملف XML // 5. أغلق الملفسِجِلّ. يغلق() ؛

هذه الخطوات الخمس تنشئ أي ملف XML تقريبًا.

في مثالنا ، يتم تحويل الملف الذي تم إنشاؤه إلى بيانات ثنائية وإعادته إلى المكان الذي تم استدعاء وظيفة "CreateXML" فيه. يمكن بعد ذلك كتابة هذا الملف إلى نظام الملفات.

يمكنك رؤية مثال للملف الذي تم تحميله في لقطة الشاشة أعلاه.

تطبيق طرف ثالث

على سبيل المثال ، قمت بإنشاء تطبيق على .NET Framework لتوضيح قراءة ملف XML في تطبيق تابع لجهة خارجية.

يقرأ البرنامج الملف الذي تم إنشاؤه ويعرض المستندات في شكل قائمة:

يمكنك تجربته بنفسك ، التطبيق متاح للتحميل من الرابط في نهاية المقال.

براعه

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

التحميلات:

تطبيق قارئ ملفات XML.

معالجة تشكيل ملف XML.

2023 asm59.ru
الحمل والولادة. البيت و العائلة. أوقات الفراغ والاستجمام