एक्सएमएल के साथ काम करने का 1 सी उदाहरण। एक्सएमएल फ़ाइल पीढ़ी

किसी भी अकाउंटिंग सिस्टम में डेटा ट्रांसफर एक बहुत ही महत्वपूर्ण प्रक्रिया है, 1C 8.3 और 8.2 प्लेटफॉर्म कोई अपवाद नहीं है। नीचे हम एक समान कॉन्फ़िगरेशन के साथ एक सिस्टम से दूसरे सिस्टम में डेटा को आसानी से स्थानांतरित करने के निर्देशों को देखेंगे (विभिन्न कॉन्फ़िगरेशन के लिए, आप प्रोग्रामर के लिए एक टूल का उपयोग कर सकते हैं - या)।

इससे पहले कि कोई कार्रवाई आवश्यक हो, परिवर्तन अपरिवर्तनीय हैं!

सबसे सरल और सुविधाजनक तरीका 1C 8.3 से 1C 8.3 अकाउंटिंग 3.0 में डेटा ट्रांसफर - प्रोसेसिंग का उपयोग करके XML फॉर्मेट में डेटा अपलोड और डाउनलोड करें (डाउनलोड - 8.2 के लिए या 1C 8.3 के लिए या ITS पर)। प्रसंस्करण सार्वभौमिक है और किसी भी विन्यास के लिए उपयुक्त है।

हम विवरण में नहीं जाएंगे, विचार करें चरण-दर-चरण निर्देशमाल के सबसे सरल हस्तांतरण के उदाहरण का उपयोग करके इस प्रसंस्करण का उपयोग करके डेटा माइग्रेशन पर।

XML को डेटा निर्यात करना

सबसे पहले, स्रोत डेटाबेस में प्रसंस्करण खोलें (जहां से हम सामान उतारेंगे) और इंटरफ़ेस देखें:

267 1सी वीडियो ट्यूटोरियल मुफ्त में प्राप्त करें:

आपको तुरंत "फ़ाइल नाम" फ़ील्ड भरना होगा - इस पथ का उपयोग बनाने के लिए किया जाएगा नई फ़ाइलडेटा जिसे हम रिसीवर डेटाबेस में लोड करेंगे। थोड़ा नीचे, सारणी अनुभाग "अनलोडिंग के लिए डेटा" में, आपको उस डेटा का चयन करना होगा जिसे हम डेटाबेस से अनलोड करना चाहते हैं।

बाएँ सारणी अनुभाग से किसी वस्तु का चयन करने के बाद, आप दाएँ सारणी अनुभाग में चयन लागू कर सकते हैं:

हमारे उदाहरण में, मैं "रेक" नाम के सभी उत्पादों को अनलोड करना चाहता हूं।

सभी सेटिंग्स भरने के बाद, डेटा डाउनलोड किया जा सकता है। ऐसा करने के लिए, "डेटा अपलोड करें" बटन पर क्लिक करें:

Xml से 1c 8.3 . में डेटा लोड हो रहा है

डेटा को स्रोत आधार से अनलोड कर दिया गया है, अब इसे गंतव्य आधार पर स्थानांतरित करने की आवश्यकता है।

ऐसा करने के लिए, आपको पहले से ही डेटाबेस में प्रसंस्करण शुरू करने की आवश्यकता है जिसमें आपको डेटा लोड करने की आवश्यकता है, और "डाउनलोड" टैब पर जाएं, डिस्क पर डाउनलोड की गई फ़ाइल का चयन करें और "डेटा लोड करें" बटन पर क्लिक करें:

यह उदाहरण केवल 1C प्लेटफॉर्म पर समान कॉन्फ़िगरेशन के बीच डेटा स्थानांतरित करने के लिए उपयुक्त है। प्रोग्रामर्स के लिए एक्सचेंज मैकेनिज्म को समझने के लिए हमने एक आर्टिकल लिखा-.

एक संगठन में, लेखांकन न केवल 1C: एंटरप्राइज प्लेटफॉर्म पर आधारित समाधानों में रखा जा सकता है, बल्कि अन्य सॉफ्टवेयर पैकेजों (गैलेक्सी, पारस, एसएपी, आदि) में भी रखा जा सकता है। इस मामले में, दो अनुप्रयोगों को एकीकृत करने के कार्य दिखाई देते हैं।

उदाहरण के लिए, कुछ एप्लिकेशन में (चलिए इसे "X" कहते हैं) आप कॉन्फ़िगरेशन दस्तावेज़ों की एक सूची पढ़ना चाहते हैं। हम ऐसी समस्या को हल करने के व्यावहारिक लाभों के बारे में बात नहीं करेंगे, मैं केवल इस बात पर ध्यान दूंगा कि ऐसी स्थिति में सबसे सुविधाजनक और सार्वभौमिक तरीका एक्सएमएल प्रारूप में दस्तावेजों की सूची को उतारना होगा।

इस प्रारूप का उपयोग करने वाला एक्सचेंज सार्वभौमिक है क्योंकि अधिकांश एप्लिकेशन इसके साथ काम कर सकते हैं। आइए विचार करें कि कॉन्फ़िगरेशन दस्तावेज़ों की सूची को 1C: एंटरप्राइज़ से XML फ़ाइल में कैसे उतारना संभव है।

एक्सएमएल में निर्यात करें

और इसलिए, चलिए मुख्य बात पर चलते हैं। हमें दस्तावेज़ मेटाडेटा सूची को पार करने और एक XML फ़ाइल में सूची बनाने की आवश्यकता है। निम्न स्क्रीनशॉट XML फ़ाइल बनाने के लिए एल्गोरिथम दिखाता है:

न्यूएक्सएमएल () निर्यात समारोह // अस्थायी फ़ाइल का नाम प्राप्त करेंपथ = GetTemporaryFileName (); // "XML राइटर" क्लास को इनिशियलाइज़ करेंरिकॉर्ड = नया एक्सएमएल रिकॉर्ड; // लिखने के लिए एक अस्थायी फ़ाइल खोलें- 8 " ) ; // XML फ़ाइल घोषणा लिखेंरिकॉर्डिंग। राइटएक्सएमएलडिक्लेरेशन (); // रिकॉर्ड। राइटइटमस्टार्ट (" दस्तावेज़कॉन्फ़िगरेशन" ) ; // पहला आइटम // फ़ाइल निर्माण की तारीख के साथ पहले तत्व की विशेषतारिकॉर्डिंग। WriteAttribute ("जेनरेट किया गया", प्रारूप (CurrentDate (), "DF = yyyy- MM- ddThh: मिमी: ss; डीएलएफ = डीटी" ) ) ; // प्रत्येक कॉन्फ़िगरेशन दस्तावेज़ के लिए एक आइटम लिखें। दस्तावेज़ का नाम टेक्स्ट में रखें।मेटाडेटा से प्रत्येक डॉक के लिए। दस्तावेज़ साइकिल रिकॉर्डिंग। WriteElementStart ("दस्तावेज़"); रिकॉर्डिंग। राइटटेक्स्ट (डॉक्टर का नाम); रिकॉर्डिंग। राइटएंड एलिमेंट (); चक्र का अंत; // पहला आइटम लिखना समाप्त करेंरिकॉर्डिंग। राइटएंड एलिमेंट (); रिकॉर्डिंग। बंद करे (); // फ़ाइल बंद करें // फ़ाइल का बाइनरी डेटा प्राप्त करें और इसे अस्थायी भंडारण में रखेंबाइनरीडेटा = नया बाइनरीडेटा (पथ); पता = प्लेसटेम्पोररीस्टोरेज (बाइनरीडाटा, न्यू यूनिक इंडेंटिफायर); भेजने वाले का पता; // रिपॉजिटरी में फाइल का पता लौटाएंएंडफंक्शन

बनाए गए प्रत्येक तत्व को सही ढंग से पूरा किया जाना चाहिए। "WriteElementBeginning ()" विधि को निष्पादित करने के बाद, "WriteElementEnd" विधि को निष्पादित किया जाना चाहिए, अन्यथा XML फ़ाइल की संरचना गलत होगी।

एक्सएमएल फाइल बनाने के लिए सामान्य पैटर्न निम्नलिखित अनुक्रम है:

// 1. "XML Writer" क्लास को इनिशियलाइज़ करेंरिकॉर्ड = नया एक्सएमएल रिकॉर्ड; // 2. रिकॉर्डिंग के लिए एक अस्थायी फ़ाइल खोलेंरिकॉर्डिंग। ओपनफाइल (पथ, "UTF - 8 " ) ; // 3. XML फ़ाइल की घोषणा लिखेंरिकॉर्डिंग। राइटएक्सएमएलडिक्लेरेशन (); // // 4. ++ XML फ़ाइल की सामग्री लिखनारिकॉर्डिंग। WriteElementStart ("एक्सएमएल एलिमेंट"); रिकॉर्डिंग। राइटएंड एलिमेंट (); // - XML ​​फ़ाइल की सामग्री लिखें // 5. फ़ाइल बंद करेंरिकॉर्डिंग। बंद करे ();

इन पांच चरणों के साथ, आप लगभग कोई भी XML फ़ाइल बना सकते हैं।

हमारे उदाहरण में, जेनरेट की गई फ़ाइल को बाइनरी डेटा में बदल दिया जाता है और उस स्थान पर वापस कर दिया जाता है जहां CreateXML फ़ंक्शन को कॉल किया गया था। इस फाइल को तब फाइल सिस्टम में लिखा जा सकता है।

आप ऊपर स्क्रीनशॉट में अपलोड की गई फ़ाइल का एक उदाहरण देख सकते हैं।

तृतीय पक्ष आवेदन

उदाहरण के लिए, मैंने यह दिखाने के लिए .NET Framework एप्लिकेशन बनाया है कि किसी तृतीय-पक्ष एप्लिकेशन में XML फ़ाइल को कैसे पढ़ा जाए।

प्रोग्राम बनाई गई फ़ाइल को पढ़ता है और दस्तावेज़ों को सूची के रूप में प्रदर्शित करता है:

आप इसे स्वयं आज़मा सकते हैं, आवेदन लेख के अंत में लिंक पर डाउनलोड के लिए उपलब्ध है।

बहुमुखी प्रतिभा

XML प्रारूप का उपयोग 1C: एंटरप्राइज प्लेटफॉर्म पर एप्लिकेशन समाधानों के बीच डेटा एक्सचेंज के लिए अधिकांश कॉन्फ़िगरेशन में किया जाता है। एक अन्य आमतौर पर इस्तेमाल की जाने वाली विनिमय विधि एक COM कनेक्शन है। एक्सएमएल आपको लगभग किसी भी एप्लिकेशन के साथ आदान-प्रदान करने की अनुमति देता है, यही वजह है कि इसे सार्वभौमिक कहा जाना चाहिए।

डाउनलोड:

एक्सएमएल फ़ाइल रीडर आवेदन।

एक्सएमएल फ़ाइल पीढ़ी प्रसंस्करण।

काम करने का तरीका

प्रसंस्करण UnloadingLoadingXML82 डेटा ऑपरेशन के 2 तरीके लागू करता है: अनलोडिंग (उपयोगकर्ता द्वारा निर्दिष्ट डेटा की एक अनलोडिंग फ़ाइल बनाना) और लोड हो रहा है (उसी नाम के मोड द्वारा बनाई गई अनलोडिंग फ़ाइल को पढ़ना और उसमें उपलब्ध डेटा लिखना)। मोड फ़ील्ड में चयन करके मोड सेट किया जाता है।

इस या उस मोड को शुरू करने से पहले (रन बटन दबाकर), आपको अपलोड फ़ाइल का नाम या तो "फ़ाइल नाम" फ़ील्ड में मैन्युअल रूप से दर्ज करके, या इस फ़ील्ड और मानक फ़ाइल चयन को चुनने के लिए बटन का उपयोग करके निर्दिष्ट करना होगा। संवाद।

डाउनलोड मोड में, रजिस्टर लिखते समय योग के उपयोग को संपादित करना संभव है, जो डाउनलोड गति को प्रभावित कर सकता है। बटन "अक्षम योग" और "योग शामिल करें" तब उपलब्ध होते हैं जब चेकबॉक्स "डेटा लोडिंग के दौरान योग के उपयोग को संपादित करने की क्षमता सक्षम करें" चेक किया जाता है और डेटा लोड करते समय योग का उपयोग करने के तरीके को मैन्युअल रूप से नियंत्रित करने के लिए उपयोग किया जाता है। **प्रसंस्करण की प्रयोज्यता की शर्तें **

प्रसंस्करण का उपयोग केवल उन मामलों में किया जा सकता है जहां सूचना आधार जिसमें डेटा डाउनलोड किया गया था और जिसमें डेटा लोड किया गया है, सजातीय हैं (कॉन्फ़िगरेशन समान हैं, डेटा भिन्न हो सकते हैं), या सभी अनलोड किए गए ऑब्जेक्ट संरचना में लगभग पूरी तरह समान हैं और विशेषताओं और सारणीबद्ध अनुभागों के प्रकार, "अग्रणी" मेटाडेटा ऑब्जेक्ट के गुण, और इसी तरह। यह ध्यान दिया जाना चाहिए कि, निर्दिष्ट सीमाओं के कारण, प्रसंस्करण मुख्य रूप से सजातीय सूचना सुरक्षा के बीच आदान-प्रदान के लिए है।

अपलोड फ़ाइल का प्रारूप हेडर भाग द्वारा एक्सचेंज योजना के अनुसार अपलोड करते समय बनाई गई फ़ाइल के प्रारूप से भिन्न होता है। डेटा को अनलोड करने के लिए (शब्दकोशों के तत्व, रजिस्टर रिकॉर्ड के सेट, आदि), प्रसंस्करण उसी XML क्रमांकन तंत्र का उपयोग करता है जो एक्सचेंज योजनाओं के अनुसार अनलोडिंग के रूप में होता है; इस भाग में, फ़ाइल प्रारूप समान हैं।

उतराई की संरचना का निर्धारण

प्रसंस्करण एक फ़ाइल में इन्फोबेस डेटा के पूर्ण और आंशिक अपलोडिंग की अनुमति देता है। अपलोड किए गए डेटा की संरचना को मेटाडेटा ऑब्जेक्ट प्रदर्शित करने वाले ट्री के कॉलम में बॉक्स चेक करके डायलॉग में कॉन्फ़िगर किया गया है, जिस पर डेटा अपलोड किया जा सकता है। झंडे का एक अतिरिक्त कॉलम, "यदि आवश्यक हो", वस्तुओं को उतारने की आवश्यकता निर्धारित करता है इस प्रकार के"संपर्क"। यही है, यदि चेकबॉक्स को केवल "यदि आवश्यक हो" कॉलम में चुना गया है, तो ऐसी वस्तु के लिए डेटा पूरी तरह से अनलोड नहीं किया जाएगा, लेकिन केवल उस सीमा तक जो अनलोडिंग फ़ाइल को लोड करने वाले इन्फोबेस में संदर्भात्मक अखंडता बनाए रखने के लिए आवश्यक है।

जब प्रपत्र खोला जाता है, तो प्रसंस्करण सभी वस्तुओं के संदर्भ में अनलोडिंग का संकेत सेट करता है, जो अनलोड किए गए इन्फोबेस खंड की संदर्भात्मक अखंडता की गारंटी देता है।

जब आप "लिंक द्वारा अपलोड की जाने वाली वस्तुओं को परिभाषित करें" बटन पर क्लिक करते हैं, तो प्रसंस्करण उन लिंक का विश्लेषण करता है, जिनमें डेटा को उन ऑब्जेक्ट्स में समाहित किया जा सकता है, जिनमें पूर्ण अपलोड फ़्लैग सेट होता है, और स्वचालित रूप से फ़्लैग के कॉलम में भरता है जो अपलोड करने की आवश्यकता का संकेत देता है। लिंक द्वारा। यदि ऑब्जेक्ट में पहले से ही पूर्ण अनलोड चेकबॉक्स चयनित है, तो लिंक द्वारा अनलोड करें चेकबॉक्स सेट नहीं है।

संभावित अनुप्रयोग

इस प्रसंस्करण का उपयोग संभव है, उदाहरण के लिए, पूर्ण या आंशिक बनाने के लिए बैकअपडेटा एक्सचेंज, इन्फोबेस के बीच डेटा एक्सचेंज, और समस्या इन्फोबेस की वसूली में सहायक उपकरण के रूप में भी।

XML दस्तावेज़ों के साथ कार्य करना सीधे 1C: एंटरप्राइज़ 8 सिस्टम की अंतर्निहित भाषा से उपलब्ध है।

संभावना है:

  • एक्सएमएल दस्तावेज़ों को क्रमिक रूप से पढ़ें और लिखें:
    • तत्व टेक्स्ट या एक्सएमएल विशेषता मान से प्राप्त स्ट्रिंग से निर्दिष्ट प्रकार के अनुसार मान में कनवर्ट करें;
    • किसी तत्व के पाठ या XML विशेषता के मान में रखे जाने वाले मान का एक स्ट्रिंग प्रतिनिधित्व प्राप्त करें;
    • पैरामीटर के रूप में पारित प्रकार के अनुरूप एक्सएमएल डेटा प्रकार प्राप्त करें;
    • जाँच करें कि क्या निर्दिष्ट प्रकार का मान XML से पढ़ा जा सकता है;
    • XML पढ़ते समय XML स्कीमा अनुपालन की जाँच करें
    • एक्सएमएल प्रारूप में मूल्य लिखें;
    • XML डेटा प्रकार के अनुरूप एक प्रकार लौटाएं।
  • xml दस्तावेज़ (DocumentDOM) के लिए ऑब्जेक्ट डेटा एक्सेस मॉडल का उपयोग करें जो निम्न मानकों का अनुपालन करता है:
    • डोम स्तर 2;
    • XPath (DOM स्तर 3);
    • डोम लोड और सेव (डीओएम लेवल 3)।
  • XML स्कीमा ऑब्जेक्ट मॉडल (XML स्कीमा) का उपयोग करें
  • कैननिकल एक्सएमएल 1.1 मानक का उपयोग करें।

एक्सएमएल के साथ काम करने के लिए बाहरी कनेक्शन और तंत्र का उपयोग करके, आप इन प्रणालियों में स्वीकृत प्रारूपों के अनुसार एप्लिकेशन सिस्टम के साथ एकीकरण को व्यवस्थित कर सकते हैं। इसके लिए, XSL रूपांतरण तंत्र का उपयोग किया जाता है। उदाहरण के लिए, ऐसे एकीकरण के लिए, आप Microsoft के BizTalk सर्वर का उपयोग कर सकते हैं:

फास्ट इन्फोसेट

यह प्लेटफॉर्म फास्ट इन्फोसेट बाइनरी फॉर्मेट में एक्सएमएल दस्तावेजों के साथ काम करने के लिए टूल मुहैया कराता है। तेज तकनीकइन्फोसेट एक्सएमएल डेटा प्रदर्शित करने के लिए एक वैकल्पिक सिंटैक्स का उपयोग करता है। इसके परिणामस्वरूप पारंपरिक एक्सएमएल प्रारूप में लिखे गए डेटा की प्रसंस्करण गति की तुलना में कम फाइलें और तेज प्रसंस्करण गति होती है। Fast Infoset फॉर्मेट में रिकॉर्ड की गई फाइल में .fi या .finf एक्सटेंशन होता है।



संबंधित आलेख: