COM कनेक्शन पर काम करना आपके विचार से कहीं अधिक आसान है। COM ऑब्जेक्ट के साथ काम करने के तीन स्तंभ

प्रिंट करें (Ctrl+P)

1C डेटाबेस के बीच डेटा के आदान-प्रदान के विकल्पों में से एक COM कनेक्शन के माध्यम से आदान-प्रदान है। COM कनेक्शन का उपयोग करके, आप एक 1C डेटाबेस से दूसरे से कनेक्ट कर सकते हैं और डेटा पढ़ या लिख ​​सकते हैं। इस पद्धति का उपयोग डेटाबेस के क्लाइंट-सर्वर संस्करणों और फ़ाइल डेटाबेस दोनों में किया जा सकता है। यह आलेख प्लेटफ़ॉर्म 8.3 पर इस प्रकार के कनेक्शन पर चर्चा करता है

कॉम कनेक्शन

आप 1C एप्लिकेशन के लिए दो प्रकार के COM ऑब्जेक्ट बना सकते हैं। यह ओले कनेक्शन है V83.आवेदन और कॉम कनेक्शन V83.COMकनेक्टर . के मामले में V83.आवेदन 1C एप्लिकेशन की लगभग पूर्ण प्रतिलिपि लॉन्च की गई है। उपयोग के मामले में V83.COMकनेक्टरएक छोटा सर्वर भाग लॉन्च किया गया है। इस मामले में ऑपरेशन की गति अधिक है, लेकिन कुछ फ़ंक्शन उपलब्ध नहीं हो सकते हैं। विशेष रूप से, फॉर्म और सामान्य मॉड्यूल के साथ काम करना जिसके लिए बाहरी कनेक्शन के साथ काम करने की संपत्ति निर्धारित नहीं है। अधिकतर आपको उपयोग करना चाहिए V83.COMकनेक्टरऔर केवल कार्यक्षमता की कमी के मामले में V83.आवेदन. ऑपरेटिंग गति में अंतर विशेष रूप से बड़ी मात्रा वाले डेटाबेस पर ध्यान देने योग्य हो सकता है। प्लेटफ़ॉर्म 8.2 के लिए उपयोग किया गया V82.एप्लिकेशन या V82.COMConnector

OLE कनेक्शन स्थापित करें

कनेक्शन = नया COMObject(“V83.एप्लिकेशन” );

COM कनेक्शन स्थापित करें

कनेक्शन = नया COMObject(“V83.COMConnector” );

कनेक्शन स्ट्रिंग

//क्लाइंट-सर्वर विकल्प के लिए
कनेक्शन स्ट्रिंग= "Srvr = ""सर्वरनाम" ";Ref = " "बेसनाम" ;
//फ़ाइल मोड विकल्प के लिए:
कनेक्शन स्ट्रिंग= "फ़ाइल = ""PathKBase" “; यूएसआर = उपयोगकर्ता नाम; Pwd = पासवर्ड”;
कोशिश करना
कनेक्शन = कनेक्शन . जोड़ना(कनेक्शन स्ट्रिंग) ;
अपवाद
संदेश = नया MessageToUser;
संदेश . मूलपाठ = "डेटाबेस के कनेक्ट नहीं कर सके" + विवरणत्रुटियाँ(); संदेश;
. प्रतिवेदन()

अंतप्रयास ;

वियोग
कनेक्शन = अपरिभाषित; V83.आवेदनवस्तु के लिए V83.COMकनेक्टरकनेक्शन समाप्त करना आवश्यक है, अन्यथा अधूरा सत्र लटका रहेगा, जिसे बाद में मैन्युअल रूप से हटाना होगा। के मामले में

जिस प्रक्रिया से कनेक्शन बनाया गया था वह प्रक्रिया पूरी हो जाने पर कनेक्शन स्वतः टूट जाता है। और एक छोटी सी बात है। जिस उपयोगकर्ता के तहत कनेक्शन बनाया जा रहा है, उसके लिए इसकी सेटिंग्स में "प्रोग्राम बंद करते समय पुष्टि का अनुरोध करें" चेकबॉक्स अक्षम होना चाहिए।

न्यूऑब्जेक्ट() विधि

एक नई वस्तु बनाने के लिए, आप NewObject() विधि का उपयोग कर सकते हैं, उदाहरण के लिए: V83.COMकनेक्टर

के लिए अनुरोधCOM = कनेक्शन. न्यूऑब्जेक्ट() ;
"अनुरोध " अनुरोधCOM "मूल्यों की तालिका") ;
ऐरेकॉम = कनेक्शन। न्यूऑब्जेक्ट ("ऐरे");

ViewCOM =Connection.NewObject

के लिए V83.आवेदन

अनुरोधOLE = कनेक्शन. न्यूऑब्जेक्ट(“ अनुरोध ") ;
टेबलओएलई = कनेक्शन। न्यूऑब्जेक्ट("मूल्यों की तालिका") ;
ऐरेओएलई = कनेक्शन.न्यूऑब्जेक्ट("सरणी");
ViewCOM =Connection.NewObject("यूनीकआइडेंटिफ़ायर", स्ट्रिंगयूआईडी);

अनुरोधCOM . पाठ ="चुनना
| संगठनों की स्थिति कोड,
| संगठनों की स्थिति.नाम
|से | निर्देशिका.संगठनों की स्थिति
संगठनों की स्थिति कैसी हो”;

परिणाम = अनुरोधCOM. दौड़ना();
नमूना = परिणाम. चुनना () ;
अलविदा चयन. अगला()चक्र
अंतचक्र;
आप कॉन्फ़िगरेशन ऑब्जेक्ट प्रबंधकों का भी उपयोग कर सकते हैं:
डायरेक्ट्रीकॉम = कनेक्शन। निर्देशिकाएँ। निर्देशिकानाम;
दस्तावेज़COM = कनेक्शन. दस्तावेज़. दस्तावेज़ का नाम;
रजिस्टरकॉम = कनेक्शन। सूचना रजिस्टर. रजिस्टरनाम;

COM कनेक्शन के माध्यम से गणना प्राप्त करना और तुलना करना

कॉन्फ़िगरेशन में परिभाषित गणना तत्वों के मूल्यों की तुलना करने के लिए, इन तत्वों को आदिम प्रकारों में से एक में परिवर्तित करना आवश्यक है, जिनकी तुलना करना आसान है। ऐसे प्रकार या तो संख्यात्मक प्रकार या स्ट्रिंग प्रकार हो सकते हैं। आप गणना तत्व के मान को इस प्रकार संख्यात्मक प्रकार में परिवर्तित कर सकते हैं:

एनम आइटम = कनेक्शन.निर्देशिकाएँ.निर्देशिका1.FindByCode(1).प्रॉप्स1;

PossibleValues ​​​​= Enum Element.Metadata().Enum मान;

EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));

यदि EnumerationItemNumber = 0 तो रिपोर्ट करें( "गणना मान1");

ElseIfEnumerationItemNumber = 1 तबरिपोर्ट("EnumerationValue2");

अंतयदि;

पहचानकर्ता द्वारा COM के माध्यम से किसी ऑब्जेक्ट को पुनः प्राप्त करना

कॉन्फ़िगरेशन ऑब्जेक्ट प्रबंधकों के माध्यम से हमें एक कॉम ऑब्जेक्ट मिलता है, उदाहरण के लिए:
दस्तावेज़COM = कनेक्शन. दस्तावेज़. दस्तावेज़ का नाम;

फिर हमें एक विशिष्ट पहचानकर्ता स्ट्रिंग मिलती है:

स्ट्रिंगयूआईडी =कनेक्शन.स्ट्रिंग ( DocumentCOM.UniqueIdentifier())

पहचानकर्ता = नया यू अद्वितीय पहचानकर्ता (स्ट्रिंगयूआईडी);
साथ linkByIdentifier = दस्तावेज़[DocumentName].GetLink(पहचानकर्ता);

यदि आपको पहचानकर्ता द्वारा दस्तावेज़ द्वारा एक कॉम ऑब्जेक्ट ढूंढना है, तो आपको इस तरह लिखना होगा:

विडकॉम = कनेक्शन.न्यूऑब्जेक्ट("यूनीकआइडेंटिफ़ायर", स्ट्रिंगयूआईडी);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(TypeCOM);

1C डेटाबेस के बीच डेटा के आदान-प्रदान के विकल्पों में से एक COM कनेक्शन के माध्यम से आदान-प्रदान है।

COM कनेक्शन का उपयोग करके, आप एक 1C डेटाबेस से दूसरे से कनेक्ट कर सकते हैं और डेटा पढ़ या लिख ​​सकते हैं। इस पद्धति का उपयोग डेटाबेस के क्लाइंट-सर्वर संस्करणों और फ़ाइल डेटाबेस दोनों में किया जा सकता है। इस लेख में हम इस प्रकार के कनेक्शन के उदाहरण देखेंगे। उदाहरण प्लेटफ़ॉर्म 8.2 का उपयोग करते हैं।

आप 1C एप्लिकेशन के लिए दो प्रकार के COM ऑब्जेक्ट बना सकते हैं। यह V82.आवेदनऔर V82.COMकनेक्टर. के मामले में V82.आवेदन 1C एप्लिकेशन की लगभग पूर्ण प्रतिलिपि लॉन्च की गई है। उपयोग के मामले में V82.COMकनेक्टरएक छोटा सर्वर भाग लॉन्च किया गया है।
इस मामले में ऑपरेशन की गति अधिक है, लेकिन कुछ फ़ंक्शन उपलब्ध नहीं हो सकते हैं। विशेष रूप से, फॉर्म और सामान्य मॉड्यूल के साथ काम करना जिसके लिए बाहरी कनेक्शन के साथ काम करने की संपत्ति निर्धारित नहीं है। अधिकतर आपको उपयोग करना चाहिए V82.COMकनेक्टरऔर केवल कार्यक्षमता की कमी के मामले में V82.आवेदन. ऑपरेटिंग गति में अंतर विशेष रूप से बड़ी मात्रा वाले डेटाबेस पर ध्यान देने योग्य हो सकता है।

तो चलो शुरू हो जाओ

  1. आइए एक COM ऑब्जेक्ट बनाएं
    • एक नई वस्तु बनाने के लिए, आप NewObject() विधि का उपयोग कर सकते हैं, उदाहरण के लिए: V82.आवेदनकनेक्शन = नया COMObject('V82.Application' );
    • एक नई वस्तु बनाने के लिए, आप NewObject() विधि का उपयोग कर सकते हैं, उदाहरण के लिए: V82.COMकनेक्टरकनेक्शन = नया COMObject('V82.COMConnector' );
  2. आइए एक कनेक्शन स्ट्रिंग बनाएं
    • डेटाबेस के सर्वर संस्करण के लिए ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • डेटाबेस के फ़ाइल संस्करण के लिए ConnectionString = "फ़ाइल = " "PathKBase" "; यूएसआर = उपयोगकर्ता नाम; पीडब्ल्यूडी = पासवर्ड";
  3. डेटाबेस से कनेक्ट हो रहा हैकनेक्शन का प्रयास = कनेक्शन। कनेक्ट(कनेक्शनस्ट्रिंग);
  4. अपवाद संदेश = नया MessageToUser;संदेश। पाठ = + त्रुटि विवरण ();

    संदेश। प्रतिवेदन() ; अंतप्रयास ; V82.आवेदनवस्तु के लिए V82.COMकनेक्टरडेटाबेस से डिस्कनेक्ट हो रहा है

    कनेक्शन = अपरिभाषित;

वस्तु के लिए

जिस प्रक्रिया से कनेक्शन बनाया गया था वह प्रक्रिया पूरी हो जाने पर कनेक्शन स्वतः टूट जाता है। और एक छोटी सी बात है। जिस उपयोगकर्ता के तहत कनेक्शन बनाया जा रहा है, उसके लिए इसकी सेटिंग्स में "प्रोग्राम बंद करते समय पुष्टि का अनुरोध करें" चेकबॉक्स अक्षम होना चाहिए।अब सभी कोड को एक साथ रखें कनेक्शन = नया COMObject('V82.Application' );//कनेक्शन = नया COMObject('V82.COMConnector'); कनेक्शनस्ट्रिंग = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ;//ConnectionString = "फ़ाइल = ""С:\MyBase""; Usr = पेट्या; Pwd = 123";

कनेक्शन का प्रयास = कनेक्शन। कनेक्ट(कनेक्शनस्ट्रिंग); V82.आवेदनअपवाद संदेश = नया MessageToUser; V82.COMकनेक्टरकनेक्शन के लिए विधि लागू की जाती है. फिर अनुरोध को मानक 1C टूल का उपयोग करके संसाधित किया जाता है। कोड में यह इस तरह दिखता है:

अनुरोध = कनेक्शन. न्यूऑब्जेक्ट ("अनुरोध"); // के लिए V82.COMकनेक्टर अनुरोध = कनेक्शन. न्यूऑब्जेक्ट ("अनुरोध"); // के लिए V82.आवेदन अनुरोध। पाठ = "चुनें | संगठनों की स्थिति कोड, | संगठनों की स्थिति.नाम|से | निर्देशिका। संगठनों की स्थिति संगठनों की स्थिति के रूप में";

परिणाम = अनुरोध. दौड़ना(); नमूना = परिणाम. चुनना() ; अलविदा चयन. अगला() लूप एंडलूप; संस्करण 1सी:एंटरप्राइज़ 8.3 के लिए सब कुछ अपरिवर्तित रहता है सिवाय इसके कि COM ऑब्जेक्ट बनाते समय आपको इसका उपयोग करना चाहिए"V83.COMकनेक्टर" या.


"V83.आवेदन"

कीवर्ड: COM, कनेक्शन, बाहरी, OLE, स्वचालन, कनेक्ट, ComConnector, Srvr

  1. डेटा तक पहुँचने के लिए 1C:Enterprise 8.0 COM कनेक्शन का उपयोग करते समय, ऑटोमेशन सर्वर का उपयोग करने की तुलना में निम्नलिखित फायदे हैं:

  2. तेज़ कनेक्शन स्थापना, क्योंकि एक अलग ऑपरेटिंग सिस्टम प्रक्रिया बनाने की आवश्यकता नहीं है, और सभी क्रियाएं कॉलिंग प्रक्रिया के भीतर की जाती हैं;
  3. 1C:एंटरप्राइज़ ऑब्जेक्ट के गुणों और विधियों तक तेज़ पहुंच, क्योंकि पहुंच को व्यवस्थित करने के लिए इंटरप्रोसेस संचार की आवश्यकता नहीं होती है;

ऑपरेटिंग सिस्टम संसाधनों की कम खपत.

  1. सामान्य तौर पर, COM कनेक्शन के माध्यम से 1C:Enterprise 8.0 के साथ काम करना सर्वर ऑटोमेशन मोड में 1C:Enterprise के साथ काम करने के समान है। मुख्य अंतर इस प्रकार हैं:

  2. ऑटोमेशन सर्वर के मामले में, एक पूर्ण विकसित 1C:एंटरप्राइज़ 8.0 एप्लिकेशन लॉन्च किया जाता है, और COM कनेक्शन के मामले में, एक अपेक्षाकृत छोटा इन-प्रोसेस COM सर्वर लॉन्च किया जाता है।
  3. COM कनेक्शन के माध्यम से काम करते समय, 1C:एंटरप्राइज़ 8.0 उपयोगकर्ता इंटरफ़ेस के संगठन से संबंधित किसी न किसी तरह की कार्यक्षमता उपलब्ध नहीं होती है;

COM कनेक्शन संचालित करते समय, 1C:Enterprise 8.0 कॉन्फ़िगरेशन एप्लिकेशन मॉड्यूल का उपयोग नहीं किया जाता है। COM कनेक्शन के साथ काम करते समय इसकी भूमिका बाहरी कनेक्शन मॉड्यूल द्वारा निभाई जाती है।

1.1 COM कनेक्शन स्थापित करने की प्रक्रिया

  1. COM कनेक्शन के माध्यम से 1C:एंटरप्राइज़ 8.0 डेटा तक पहुंच व्यवस्थित करने के लिए, क्रियाओं का निम्नलिखित क्रम निष्पादित किया जाता है:

  2. पहचानकर्ता V8.COMConnector के साथ एक COM ऑब्जेक्ट बनाया जाता है, जिसकी सहायता से कनेक्शन स्थापित किया जाता है;
  3. पहले बनाए गए V8.COMConnector ऑब्जेक्ट की कनेक्ट विधि को कहा जाता है। कनेक्ट विधि 1C:एंटरप्राइज़ 8.0 इन्फोबेस के साथ COM कनेक्शन ऑब्जेक्ट का एक लिंक लौटाती है;

महत्वपूर्ण! COM कनेक्शन में उपयोगकर्ता इंटरफ़ेस की कमी के कारण, COM कनेक्शन में सभी ऑब्जेक्ट, गुण और विधियों का उपयोग नहीं किया जा सकता है।

1सी: एंटरप्राइज ऑब्जेक्ट्स को COM कनेक्शन के माध्यम से बाहरी रूप से एक्सेस किया जा सकता है:

  1. बाहरी जुड़ाव मॉड्यूल के निर्यातित चर और प्रक्रियाएं/कार्य

  2. सामान्य मॉड्यूल के निर्यातित चर और प्रक्रियाएं/कार्य
  3. सामान्य मॉड्यूल के गुणों को सेट करके संपूर्ण मॉड्यूल को शामिल करना और बाहर करना

  4. प्रीप्रोसेसर का उपयोग करके सामान्य मॉड्यूल के टुकड़ों को शामिल करना और बाहर करना
  5. वैश्विक संदर्भ 1C:एंटरप्राइज़ 8.0, क्लाइंट एप्लिकेशन से मजबूती से जुड़े ऑब्जेक्ट के अपवाद के साथ (TextDocument, TabularDocument, ...)

1.2 बाहरी कनेक्शन मॉड्यूल

जैसा कि पहले ही उल्लेख किया गया है, COM कनेक्शन के माध्यम से काम करते समय एप्लिकेशन मॉड्यूल की जिम्मेदारियां बाहरी कनेक्शन मॉड्यूल द्वारा निभाई जाती हैं। इस मॉड्यूल में इवेंट हैंडलर प्रक्रियाएं हो सकती हैं जब SystemStarts() औरWhenSystemCompletes(), जिसमें क्रमशः कनेक्शन आरंभीकरण और समाप्ति के दौरान की गई क्रियाएं शामिल हो सकती हैं।

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

1.3 सामान्य मॉड्यूल

सामान्य मॉड्यूल के लिए गुण "क्लाइंट", "सर्वर" और "बाहरी कनेक्शन" पेश किए गए हैं। उनका उद्देश्य कॉन्फ़िगरेशन में क्लाइंट-सर्वर संस्करण और COM कनेक्शन मोड में मॉड्यूल के उपयोग को निर्धारित करना है।

1.4 ऑब्जेक्ट "V8.COMConnector"

V8.COMConnector COM ऑब्जेक्ट द्वारा हल किया गया एकमात्र कार्य 1C:Enterprise 8.0 सूचना आधार के साथ COM कनेक्शन स्थापित करना है। V8.COMConnector ऑब्जेक्ट के एक उदाहरण का उपयोग करके असीमित संख्या में कनेक्शन स्थापित किए जा सकते हैं। V8.COMConnector ऑब्जेक्ट में एक एकल कनेक्ट विधि है, जिसे 1C:Enterprise 8.0 इन्फोबेस के साथ COM कनेक्शन स्थापित करने के लिए डिज़ाइन किया गया है।

<СтрокаСоединенияИБ>

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

सामान्य पैरामीटर:

यूएसआर - उपयोगकर्ता नाम;
पीडब्ल्यूडी - पासवर्ड.

फ़ाइल संस्करण के लिए निम्नलिखित पैरामीटर परिभाषित किया गया है:

फ़ाइल - इन्फोबेस निर्देशिका।

क्लाइंट-सर्वर विकल्प के लिए निम्नलिखित पैरामीटर परिभाषित हैं:

Srvr - 1C:एंटरप्राइज़ सर्वर नाम;
रेफरी - सर्वर पर इन्फोबेस का नाम।

कनेक्ट विधि 1C:एंटरप्राइज़ 8.0 इन्फोबेस के लिए एक COM कनेक्शन स्थापित करती है और COM कनेक्शन ऑब्जेक्ट के लिए एक लिंक लौटाती है।

// एक कनेक्टर ऑब्जेक्ट बनाया गया है
V8 = नया COMObject('V8.COMConnector');
// एक COM कनेक्शन ऑब्जेक्ट बनाया गया है
कनेक्शन = V8.Connect('File=''c:\InfoBases\Trade''; Usr=''निदेशक'';'')

1.5 COM कनेक्शन ऑब्जेक्ट

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

इसके अलावा, COM कनेक्शन में एक अतिरिक्त न्यूऑब्जेक्ट विधि है जिसका उपयोग कुछ प्रकार के मान बनाने के लिए किया जा सकता है।

टीके = कनेक्शन. न्यूऑब्जेक्ट ("वैल्यूटेबल");

स्ट्रिंग विधि आपको 1C:एंटरप्राइज़ मानों का स्ट्रिंग प्रतिनिधित्व प्राप्त करने की अनुमति देती है।

देखें = Connection.String(Data.UniqueIdentifier());

1.6. COM कनेक्शन के साथ काम करने की विशेषताएं

ऑटोमेशन में और COM कनेक्शन में, TRUE और FALSE के निम्नलिखित मान हैं: -1 (शून्य से एक) और 0।

COM कनेक्शनों के एक पूल को व्यवस्थित करना संभव है। साथ ही, प्राप्तकर्ता सर्वर 1C:Enterprise पर कई COM कनेक्शन ऑब्जेक्ट अग्रिम में बनाए जाते हैं और कनेक्शन स्थापित करने में और भी कम समय लगता है, क्योंकि नई ऑब्जेक्ट बनाने की कोई आवश्यकता नहीं होती है।

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

1C:Enterprise सर्वर पर अंतर्निहित भाषा चलाते समय आप COM ऑब्जेक्ट का उपयोग कर सकते हैं।

COM त्रुटियाँ एम्बेडेड भाषा अपवादों में परिवर्तित हो जाती हैं।

यदि कॉन्फ़िगरेशन एक अमान्य ऑब्जेक्ट बनाने का प्रयास करता है, जैसे कि स्प्रेडशीट दस्तावेज़, बाहरी जॉइन मॉड्यूल में, साझा मॉड्यूल में, या ऑब्जेक्ट मॉड्यूल में, COM कनेक्शन स्थापित नहीं किया जा सकता है या अपवाद के रूप में समाप्त किया जा सकता है।

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

हम COM के माध्यम से 1C डेटाबेस से जुड़ते हैं

1C में COM कनेक्शन को लागू करने के लिए, COMConnector नामक एक विशेष तंत्र का उपयोग किया जाता है। यह ऑब्जेक्ट प्लेटफ़ॉर्म के साथ स्थापित किया गया है और इसका उपयोग इन्फोबेस को जोड़ने के लिए किया जाता है। यह ध्यान दिया जाना चाहिए कि संस्करण 8.2 और 8.3 के लिए अलग-अलग नामों वाली वस्तुओं का उपयोग किया जाता है - क्रमशः "V82.COMConnector" और "V83.COMConnector"।

याद रखें कि डेटाबेस से COM कनेक्शन की अवधि के लिए लाइसेंस की लागत होती है - कई कनेक्शनों के एक साथ निष्पादन के चक्कर में न पड़ें। यह उन संगठनों के लिए विशेष रूप से महत्वपूर्ण है जिनके पास सीमित संख्या में लाइसेंस हैं। इस समस्या को नियमित कार्यों की मदद से हल किया जा सकता है जो तब निष्पादित होते हैं जब सूचना आधार से कोई सक्रिय उपयोगकर्ता कनेक्शन नहीं होता है।

किसी अन्य डेटाबेस से जुड़ने और आवश्यक जानकारी का अनुरोध करने में सक्षम होने के लिए, आपको निम्नलिखित डेटा पता होना चाहिए:

  1. यह किस प्रकार का है - फ़ाइल या क्लाइंट-सर्वर;
  2. जहां यह स्थित है;
  3. लॉग इन करने के लिए आप किस नाम और पासवर्ड का उपयोग कर सकते हैं?
  4. किस तरह का डेटा आपने समाविष्ट किया था?

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

कनेक्शन पैरामीटर्स फ़ाइलआईबी = "फ़ाइल = ""Path_to_database""; Usr = ""उपयोगकर्ता_नाम"";Pwd = ""पासवर्ड"""; कनेक्शन पैरामीटर्सक्लाइंटसर्वरआईबी = "Srvr=''Server_Name''; Ref=''डेटाबेस_नाम''; Usr=''User_Name''; Pwd=''पासवर्ड'''';

कनेक्शन फ़ंक्शन सरल है और यदि सभी पैरामीटर सही ढंग से निर्दिष्ट हैं तो कोई प्रश्न नहीं उठना चाहिए। डिबगिंग और संभावित त्रुटियों के विश्लेषण में तेजी लाने के लिए, कनेक्शन को "कोशिश" निर्माण में संलग्न करना बेहतर है। फ़ंक्शन "COM ऑब्जेक्ट" प्रकार का मान लौटाएगा, जिसके साथ आप आवश्यक डेटा प्राप्त करने के लिए काम करेंगे।

&ऑनसर्वर फ़ंक्शन ConnectToBase() exportConnectionIB पैरामीटर्स = "फ़ाइल = ""E:\1c डेटाबेस\ERP""; Usr = ""प्रशासक"";Pwd = ""1"""; V83COMConnector= नया COMObject('V83.COMConnector'); वापसी का प्रयास V83COMCon.Connect(IB कनेक्शन पैरामीटर्स); अपवाद रिपोर्ट(ErrorDescription());

वापसी अपरिभाषित; अंतप्रयास; अंतकार्य

COM कनेक्शन के माध्यम से आप न केवल डेटा का चयन कर सकते हैं, बल्कि इसे उस डेटाबेस में भी जोड़ सकते हैं जिससे आप कनेक्ट कर रहे हैं। याद रखें कि हम COM ऑब्जेक्ट के माध्यम से 4 आदिम डेटा प्रकारों को स्थानांतरित कर सकते हैं। प्लेटफ़ॉर्म के अंतर्निहित खोज फ़ंक्शन का उपयोग करके अन्य प्रकारों को निर्दिष्ट करना होगा। कृपया ध्यान दें कि वैश्विक प्लेटफ़ॉर्म फ़ंक्शंस को COM कनेक्शन के माध्यम से भी कॉल किया जाता है।

हम 1C डेटाबेस से डेटा प्राप्त करते हैं

वांछित वस्तु प्राप्त होने के बाद, आपको दूसरे डेटाबेस से डेटा पढ़ने की आवश्यकता है। ऐसा करने के लिए, हम फ़ंक्शन से "COM ऑब्जेक्ट" प्रकार के प्राप्त मूल्य का उपयोग करके 1C 8.3 में COM कनेक्शन के माध्यम से एक अनुरोध का उपयोग करते हैं। पहले डेटाबेस से जुड़ना और फिर अनुरोध निष्पादित करना महत्वपूर्ण है। निष्पादन न्यूऑब्जेक्ट विधि के माध्यम से होता है, जो ऑब्जेक्ट प्रकार को स्ट्रिंग रूप में एक पैरामीटर - "अनुरोध" के रूप में निर्दिष्ट करता है।

&ऑनसर्वर प्रक्रिया TestCOMOnServer() कनेक्शन = ConnectToBase(); यदि टाइपवैल्यू(कनेक्शन) टाइप("अनिर्धारित") तो RequestBPZO = Connection.NewObject("Request");

  • RequestBPZO.Text = "पहले 15 का चयन करें | डायरेक्ट्रीयूजर.नाम नाम के रूप में |FROM | डायरेक्ट्री.यूजर्स डायरेक्टरीयूजर के रूप में";
  • चुनें = RequestBPZO.Execute().select();
  • जबकि चयन.अगला() लूप रिपोर्ट(चयन.संख्या);
RequestBPZO = Connection.NewObject('Request'); RequestBPZO.Text = "पहले 15 का चयन करें। BPZO.SetParameter('आवश्यक विभाग', कनेक्शन। निर्देशिकाएँ। एंटरप्राइज़ संरचना) का अनुरोध करें। कोड द्वारा खोजें('00-000023')); RequestBPZO.SetParameter('RequiredName','Ekaterina'); चुनें = RequestBPZO.Execute().select(); जबकि चयन.अगला() लूप रिपोर्ट(चयन.नाम); अंतचक्र;

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

RequestBPZO = Connection.NewObject.("अनुरोध"); RequestBPZO.Text = "पहले 15 का चयन करें। "; विभागों की श्रृंखला = Connection.NewObject('Array'); विभागों की श्रृंखला। जोड़ें (कनेक्शन। निर्देशिकाएँ। उद्यम संरचना। कोड द्वारा खोजें ("00-00023")); विभागों की श्रृंखला। जोड़ें (कनेक्शन। निर्देशिकाएं। उद्यम संरचना। कोड द्वारा खोजें ("00-000038")); विभागों की श्रृंखला। जोड़ें (कनेक्शन। निर्देशिकाएं। उद्यम संरचना। कोड द्वारा खोजें ("00-000046")); RequestBPZO.SetParameter ("आवश्यक विभाग", विभागों की सारणी); RequestBPZO.SetParameter('RequiredName','Ekaterina'); चुनें = RequestBPZO.Execute().select(); जबकि चयन.अगला() लूप रिपोर्ट(चयन.नाम); अंतचक्र;

दस्तावेज़ों या निर्देशिका तत्वों को स्थानांतरित करते समय, किसी विशिष्ट वस्तु के स्थानांतरण को नियंत्रित करने का प्रश्न हमेशा उठता है। COM कनेक्शन की मदद से ऐसी समस्याओं को एक विशिष्ट पहचानकर्ता के माध्यम से हल किया जा सकता है। आपको स्ट्रिंग के रूप में पहचानकर्ता का उपयोग करके "गेटलिंक" फ़ंक्शन का उपयोग करके वर्तमान सूचना सुरक्षा से पहचानकर्ता द्वारा प्लग-इन डेटाबेस में एक ऑब्जेक्ट ढूंढना होगा। यदि कोई नहीं मिलता है, तो आप COM कनेक्शन का उपयोग करके इसे बना सकते हैं।

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); यदि वैल्यूफिल्ड नहीं है(कनेक्शन.डायरेक्टरीज.यूजर्स.गेटलिंक(कनेक्शन.न्यूऑब्जेक्ट("यूनिकआइडेंटिफायर", स्ट्रिडेंट))) तो न्यूयूजर = कनेक्शन.डायरेक्टरीज.यूजर्स.क्रिएटआइटम();

NewUser.Name = निर्देशिकाएँ.Users.FindByCode('00-0000313').नाम;

NewUser.Individual = निर्देशिकाएँ.Users.FindByCode("00-0000313").व्यक्तिगत;

NewUser.Write(); अंतयदि;



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