1सी 8 सारणीबद्ध भाग का बाहरी प्रसंस्करण। दस्तावेज़ कनेक्शन

1. समस्या का विवरण

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

2. बाह्य प्रसंस्करण बनाना

के लिए चलते हैं 1सी 8मोड में कौन्फ़िगरेटर. मेनू का उपयोग करना फ़ाइल -> नयाया चित्रलेख नया दस्तावेज़कोई नया बनाएं बाह्य प्रसंस्करण.

खेत मेँ नामहम इंगित करते हैं: "सारणीबद्ध भाग में सबसे सरल भरना" और मेनू का उपयोग करके बाहरी प्रसंस्करण को हार्ड डिस्क में सहेजें फ़ाइल -> सहेजेंया आइकन बचानाया कीबोर्ड शॉर्टकट Ctrl+s.

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

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

कंस्ट्रक्टर के दूसरे पेज पर, हमें प्रॉप्स का चयन करना होगा दस्तावेज़ रसीदें(इसे बनाए गए फॉर्म पर प्रदर्शित करने के लिए) और बटन दबाएं तैयार.

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

3. प्रोग्रामिंग

आइए सारणीबद्ध भाग को भरने की प्रक्रिया की प्रोग्रामिंग शुरू करें। के लिए चलते हैं ऑब्जेक्ट मॉड्यूलबाह्य प्रसंस्करण (निचले प्रसंस्करण पैनल पर, बटन क्रियाएँ -> ऑब्जेक्ट मॉड्यूल खोलें).

इसमें हमें एक निर्यात प्रक्रिया बनाने की आवश्यकता है प्रारंभ.

प्रक्रिया प्रारंभ निर्यातअंतिम प्रक्रिया

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

अब कोड लिखना शुरू करते हैं। सबसे पहले, आइए दस्तावेज़ के सारणीबद्ध भाग के लिए एक वेरिएबल बनाएं वस्तुओं और सेवाओं की बिक्रीजिसे हम भर देंगे.

टेबलपार्ट = ऑब्जेक्ट[टेबलपार्टनाम];

पैरामीटर में प्रक्रिया निष्पादित करते समय एक वस्तुइसमें वह दस्तावेज़ ऑब्जेक्ट शामिल होगा जिसे हम भरते हैं, और पैरामीटर में टेबलपार्टनामसारणीबद्ध भाग के नाम के साथ एक स्ट्रिंग जिसे हम भर रहे हैं। इस प्रकार, कोड की इस पंक्ति को उसके नाम से भरे हुए दस्तावेज़ का सारणीबद्ध भाग मिलता है।

हमें दस्तावेज़ का चयन करने के लिए उपयोगकर्ता की आवश्यकता है वस्तुओं और सेवाओं की प्राप्ति, तो चलिए दस्तावेज़ चयन फॉर्म खोलने के लिए कोड लिखते हैं। सबसे पहले, हम बाहरी प्रसंस्करण विधि का उपयोग करके इस फॉर्म को एक वेरिएबल में प्राप्त करते हैं गेटफॉर्म(<Форма>, <Владелец>, <КлючУникальности>) . हमारे लिए इस पद्धति का केवल पहला पैरामीटर भरना, वहां हमारे फॉर्म के नाम के साथ एक स्ट्रिंग पास करना पर्याप्त है।

इनकमिंग सेलेक्शनफॉर्म = गेटफॉर्म ("फॉर्म");

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

प्रवेश चयन प्रपत्र.OpenModally();

उपयोगकर्ता द्वारा फॉर्म बंद करने के बाद, हमें यह जांचना होगा कि विशेषता भरी गई है या नहीं दस्तावेज़ रसीदें(यदि कोई रसीद दस्तावेज़ नहीं चुना गया है)। यदि जांच के बाद दस्तावेज़ रसीदेंखाली है, तो आगे की प्रक्रिया का कोई मतलब नहीं है, और इसे बाधित किया जाना चाहिए।

यदि वैल्यूफिल्ड (रसीद दस्तावेज़) नहीं है तो रिपोर्ट करें(); वापस करना ; अगर अंत ;

विशेषता की पूर्णता की जांच करने के लिए, वैश्विक संदर्भ फ़ंक्शन का उपयोग यहां किया जाता है वैल्यूफिल्ड(<Значение>) , यह जाँचता है कि पैरामीटर में पारित मान उसी प्रकार के डिफ़ॉल्ट मान से भिन्न है या नहीं। प्रक्रिया रिपोर्ट करना 1C 8 संदेश बॉक्स में निर्दिष्ट पाठ प्रदर्शित करता है। कीवर्ड वापस करनाप्रक्रिया के निष्पादन को बाधित करता है।

आइए एक क्वेरी लिखना शुरू करें जो सारणीबद्ध भाग के डेटा का चयन करेगी चीज़ेंदस्तावेज़ वस्तुओं और सेवाओं की प्राप्ति. आइए एक नया अनुरोध बनाएं:

अनुरोध = नया अनुरोध;

अनुरोध.सेट पैरामीटर( "रसीद दस्तावेज़",रसीद दस्तावेज़);

आइए अनुरोध का पाठ लिखें, हम इसकी सहायता से करेंगे कंस्ट्रक्टर से अनुरोध करें. अनुरोध पाठ को मैन्युअल रूप से लिखने की अनुशंसा नहीं की जाती है, यह कुशल नहीं है और इसमें बहुत समय लगता है। आइये एक पंक्ति से शुरू करते हैं:

अनुरोध.पाठ = "" ;

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

अब हम अपने द्वारा चुनी गई तालिका को “+” ( आने वाली वस्तुएँ सेवाएँ वस्तुएँ) और टैब-भाग में हमारे भरने के लिए आवश्यक फ़ील्ड को कंस्ट्रक्टर स्क्रीन के तीसरे भाग में खींचें, जिसे कहा जाता है - खेत. हम सभी उपलब्ध फ़ील्ड का चयन नहीं करेंगे, हम स्वयं को निम्नलिखित सेट तक सीमित रखेंगे: नामकरण, मात्रा, मूल्य, राशि, वैट दर, वैट राशि.

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

कंस्ट्रक्टर में क्वेरी टेक्स्ट का निर्माण अब पूरा हो गया है, "ओके" बटन पर क्लिक करें। परिणामस्वरूप, हमारे पास निम्नलिखित अनुरोध पाठ है:

Query.Text = "SELECT |FROM |WHERE ;

बनाए गए अनुरोध को केवल निष्पादित करने और एक चर में अनलोड करने की आवश्यकता है:

परिणाम = अनुरोध.निष्पादन().अपलोड();

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

टेबलपार्ट.क्लियर();

एक चक्र के साथ प्रत्येक के लिएआइए क्वेरी के परिणामों के साथ मानों की तालिका पर नज़र डालें।

परिणाम लूप के प्रत्येक परिणाम तत्व के लिए लूप का अंत;

इस चक्र में, हम दस्तावेज़ के सारणीबद्ध भाग की पंक्तियाँ बनाएंगे और भरेंगे वस्तुओं और सेवाओं की बिक्री. हम एक वेरिएबल का उपयोग करके एक नई लाइन बना सकते हैं सारणीबद्ध भाग, जिसके माध्यम से आप इसके साथ कोई भी कार्य कर सकते हैं।

NewStringPT = TabularPart.Add();

निर्मित लाइन टैब भरें। प्रक्रिया का उपयोग करके क्वेरी परिणाम स्ट्रिंग से डेटा के भाग वैश्विक संदर्भfillPropertyValues(<Приемник>, <Источник>) .

fillPropertyValues(NewStringPT,ResultElement);

लेकिन हमने जो डेटा भरा है वह पर्याप्त नहीं है, दस्तावेज़ को पूरा करने के लिए और अधिक भरना आवश्यक है इन्वेंट्री लेखांकन खाते. ऐसा करने के लिए, हम निर्यात का उपयोग करते हैं

प्रक्रिया InvoicesAccountingInRowTabParts भरेंदस्तावेज़ ऑब्जेक्ट मॉड्यूल से वस्तुओं और सेवाओं की बिक्री. आइए इसे पैरामीटर के साथ कॉल करें एक वस्तु(यह ध्यान दिया जाना चाहिए

जिसे हम केवल कॉल कर सकते हैं निर्यातदस्तावेज़ ऑब्जेक्ट मॉड्यूल से प्रक्रियाएं)।

ऑब्जेक्ट.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

इससे सारणीबद्ध भाग को भरने की प्रोग्रामिंग पूरी हो जाती है 1सी 8पुरा होना। प्रसंस्करण का उपयोग किया जा सकता है। प्रक्रिया का पूरा पाठ प्रारंभ, ऐसा दिखता है:

प्रक्रिया प्रारंभ (ऑब्जेक्ट, टेबुलरपार्टनाम = अपरिभाषित, ऑब्जेक्ट टेबलफिल्ड = अपरिभाषित) निर्यातटेबलपार्ट = ऑब्जेक्ट[टेबलपार्टनाम]; इनकमिंग सेलेक्शनफॉर्म = गेटफॉर्म ("फॉर्म"); प्रवेश चयन प्रपत्र.OpenModally(); यदि वैल्यूफिल्ड नहीं है (आने वाला दस्तावेज़) तो रिपोर्ट करें ( "कोई रसीद दस्तावेज़ चयनित नहीं"); वापस करना ; अगर अंत ; अनुरोध = नया अनुरोध; अनुरोध.सेट पैरामीटर( "रसीद दस्तावेज़",रसीद दस्तावेज़); Query.Text = "चुनें | वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। नामकरण, | वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। मात्रा, | वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। वैट दर, | वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। राशि, | वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति, वैट की राशि, | वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। कीमत| से | दस्तावेज़। माल सेवाओं की प्राप्ति। माल माल सेवाओं माल की प्राप्ति के रूप में|कहां | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; परिणाम = अनुरोध.निष्पादन().अपलोड(); टेबलपार्ट.क्लियर(); परिणाम लूप से प्रत्येक परिणाम तत्व के लिए NewRowPT = TabularPart.Add(); fillPropertyValues(NewStringPT,ResultElement); ऑब्जेक्ट.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); अंतचक्र; अंतिम प्रक्रिया

लेख का अगला भाग आपको बताएगा कि सारणीबद्ध भाग को भरने की प्रक्रिया को कैसे डीबग किया जाए और इसे दस्तावेज़ से कैसे जोड़ा जाए।

4. डिबगिंग

अक्सर, आपको अपने द्वारा लिखे गए कोड को डीबग करने की आवश्यकता होती है। सारणीबद्ध भाग को भरने की प्रक्रिया को डीबग करने के लिए 1सी 8उसके प्रॉप्स बनाएं ReferenceToObjectप्रकार दस्तावेज़ संदर्भ.वस्तु सेवाओं की प्राप्ति

डिबगिंग के दौरान एक कार्यान्वयन दस्तावेज़ का चयन करने के लिए हमें इसकी आवश्यकता है, जिसे हम भरेंगे। इसके बाद, आपको डिबगिंग के लिए एक फॉर्म बनाना होगा और बनाए गए प्रॉप्स को वहां रखना होगा। ReferenceToObjectडिबगिंग फॉर्म बनाने की प्रक्रिया रसीद दस्तावेज़ चयन फॉर्म बनाने से भिन्न नहीं है, इसलिए हम इस पर विस्तार से ध्यान नहीं देंगे।

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

प्रक्रिया बटननिष्पादनक्लिक करें(बटन) Initialize(ReferenceToObject.GetObject(), "Goods" ); अंतिम प्रक्रिया

अब आपको बनाए गए फॉर्म को मुख्य प्रोसेसिंग फॉर्म बनाना होगा। ऐसा करने के लिए, इसे "प्रोसेसिंग फॉर्म" फ़ील्ड में चुनें।

अब आप प्रक्रिया में सही जगह पर ब्रेकप्वाइंट सेट कर सकते हैं प्रारंभया प्रक्रियाएं बटनएक्सेक्यूटपुशिंगडीबग फॉर्म, और डीबग मोड में सारणीबद्ध अनुभाग को भरने की प्रक्रिया शुरू करें 1सी:उद्यम.

5. किसी दस्तावेज़ से कनेक्ट करना

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

बटन का उपयोग करके प्रसंस्करण संबद्धता भरें चयनएक दस्तावेज़ चुनें वस्तुओं और सेवाओं की बिक्री

और हम इंगित करते हैं कि भरना सारणीबद्ध भाग के लिए अभिप्रेत है चीज़ें.

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

1C में कई वस्तुओं के लिए सारणीबद्ध भाग मौजूद हैं:

  • धार्मिक आस्था
  • प्रलेखन
  • रिपोर्ट और प्रसंस्करण
  • खातों के चार्ट
  • विशेषताओं के प्रकार की योजनाएँ
  • गणना प्रकार की योजनाएँ
  • व्यावसायिक प्रक्रियाएँ और कार्य

सारणीबद्ध भाग आपको एक वस्तु से संबंधित असीमित मात्रा में संरचित जानकारी संग्रहीत करने की अनुमति देते हैं।

आइए सारणीबद्ध भागों के साथ काम करने के कुछ तरीकों पर नजर डालें।

सारणीबद्ध भाग को कैसे बायपास करें

आप सारणीबद्ध भाग को पार करने के लिए एक लूप का उपयोग कर सकते हैं प्रत्येक के लिए

TabularPart Loop से प्रत्येक पंक्ति के लिए

रिपोर्ट(स्ट्रिंग.टेबलपार्टएट्रिब्यूट);

अंतचक्र;

प्रत्येक पुनरावृत्ति पर एक चर में रेखासारणीबद्ध भाग की अगली पंक्ति स्थानांतरित की जाती है। स्ट्रिंग विशेषता मान अभिव्यक्ति द्वारा प्राप्त किए जा सकते हैं स्ट्रिंग.विशेषतानाम.

सारणीबद्ध अनुभाग की चयनित पंक्तियों को कैसे प्राप्त करें और बायपास करें

प्रपत्र तत्व का उपयोग ऑब्जेक्ट के सारणीबद्ध भाग से जानकारी प्रदर्शित करने के लिए किया जाता है। टेबल फ़ील्ड. तालिका फ़ील्ड में एकाधिक पंक्तियों का चयन करने की क्षमता सक्षम करने के लिए, आपको मान सेट करने की आवश्यकता है विभिन्नइसकी संपत्ति पर चयन मोड.

चयनित पंक्तियों की सूची प्राप्त करने के लिए, निम्नलिखित कोड का उपयोग करें:

लूप का उपयोग चयनित पंक्तियों पर पुनरावृति करने के लिए किया जाता है प्रत्येक के लिए:

चयनित पंक्तियाँ = प्रपत्र तत्व। टेबलफ़ील्डनाम. चयनित पंक्तियाँ;

चयनित पंक्ति लूप से प्रत्येक पंक्ति के लिए

// लूप सामग्री

अंतचक्र;

सारणीबद्ध भाग (तालिका फ़ील्ड) की पंक्तियों को प्रोग्रामेटिक रूप से कैसे चुनें और चयन को कैसे हटाएं

तालिका फ़ील्ड में पंक्तियों को प्रोग्रामेटिक रूप से अचयनित करने के लिए:

तत्व प्रपत्र। टेबलफ़ील्डनाम. चयनितस्ट्रिंग्स। स्पष्ट() ;

तालिका फ़ील्ड में सभी पंक्तियों को प्रोग्रामेटिक रूप से चुनने के लिए:

टेबुलरपार्ट लूप से प्रत्येक करंटरो के लिए
तत्व प्रपत्र। टेबलफ़ील्डनाम. चयनित पंक्तियाँ. जोड़ें(वर्तमान पंक्ति);
अंतचक्र;

स्प्रेडशीट को कैसे साफ़ करें

सारणीबद्ध भाग. स्पष्ट() ;

सारणीबद्ध अनुभाग की वर्तमान पंक्ति कैसे प्राप्त करें

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

नियमित फॉर्म के लिए, कोड इस तरह दिखेगा:

तत्व प्रपत्र. टेबलफ़ील्डनाम. मौजूदा डेटा;

प्रबंधित प्रपत्रों के लिए:

तत्व. टेबलफ़ील्डनाम. मौजूदा डेटा;

स्प्रेडशीट में नई पंक्ति कैसे जोड़ें

सारणीबद्ध अनुभाग के अंत में एक नई पंक्ति जोड़ना:

न्यूरो = टेबलपार्ट। जोड़ना() ;

सारणीबद्ध अनुभाग में कहीं भी एक नई पंक्ति जोड़ना (बाद की पंक्तियों को स्थानांतरित कर दिया जाएगा):

न्यूरो = टेबलपार्ट। चिपकाएँ(सूचकांक)
//सूचकांक - जोड़ी गई पंक्ति की संख्या। लाइन नंबरिंग शून्य से शुरू होती है.

नई पंक्ति। विशेषता1 = "मान" ;

किसी तालिका पंक्ति का विवरण प्रोग्रामेटिक रूप से कैसे भरें

यदि आपको उपयोगकर्ता द्वारा जोड़े गए सारणीबद्ध अनुभाग की पंक्ति का विवरण प्रोग्रामेटिक रूप से भरने की आवश्यकता है, तो आपको सारणीबद्ध अनुभाग के ईवेंट हैंडलर का उपयोग करना होगा प्रारंभसंपादन पर.

हैंडलर द्वारा बनाई गई प्रक्रिया में तीन पैरामीटर हैं:

  • तत्व- एक नियंत्रण शामिल है टेबलफ़ील्ड.
  • नई पंक्ति- बूलियन। मूल्य समाहित है सत्य, यदि सारणीबद्ध अनुभाग की एक नई पंक्ति जोड़ी जाती है, और झूठ,यदि उपयोगकर्ता ने पहले से मौजूद पंक्ति को संपादित करना शुरू कर दिया है।
  • नकल- बूलियन. मूल्य समाहित है सत्ययदि उपयोगकर्ता स्ट्रिंग की प्रतिलिपि बना रहा है, और झूठअन्य मामलों में।

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

प्रक्रिया TabularPartAt EditingStart(Element, NewRow, Copy)

//यदि उपयोगकर्ता किसी मौजूदा पंक्ति को संपादित कर रहा है, तो कुछ न करें
यदि न्यूस्ट्रिंग नहीं है तो
वापस करना;
अगर अंत ;

//यदि स्ट्रिंग नई है, तो खाता सेट करें
टेक्स्टस्ट्रिंग = तत्व। मौजूदा डेटा; // सारणीबद्ध अनुभाग की वर्तमान पंक्ति प्राप्त हुई
टेकस्ट्रिंग। खाता खाता = खातों का चार्ट। स्वावलम्बी। वांछित खाता;
अंतिम प्रक्रिया

इस लेख के ढांचे के भीतर, हम एक विशिष्ट 1C: ERP 2.1 कॉन्फ़िगरेशन के लिए 1C 8.3 में सारणीबद्ध भाग को भरने की प्रक्रिया लिखेंगे। आइए मान लें कि कार्य का लक्ष्य इस दस्तावेज़ के सभी स्टॉक आइटमों के लिए 5% की मैन्युअल छूट निर्धारित करना है। लेख से एक उदाहरण डाउनलोड किया जा सकता है या अन्य समान प्रसंस्करण द्वारा।

यह निर्देश प्रबंधित प्रपत्रों (8.2 और 8.3) के लिए है। नियमित फॉर्म (8.1, 8.2) के लिए आप इसका उपयोग कर सकते हैं।

अपने कंप्यूटर पर एक नया उपचार बनाएं और सहेजें। सबसे पहले आपको कुछ पंजीकरण चरण निष्पादित करने होंगे.

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

इस लेख के ढांचे के भीतर, हम 1सी में बाहरी प्रसंस्करण और मुद्रण प्रपत्रों के पंजीकरण पर ध्यान नहीं देंगे। यह सारी जानकारी हमारे अन्य लेखों में है।

दस्तावेज़ के सारणीबद्ध भाग को भरना

आइए एक नया प्रोसेसिंग फॉर्म बनाएं।

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

हमारे उदाहरण के भाग के रूप में, पहले से मौजूद सारणीबद्ध भाग "उत्पाद" पर कार्रवाई की जाएगी। प्रत्येक पंक्ति के लिए 5% की मैन्युअल छूट निर्धारित की जाएगी। इसके अलावा, हम इस छूट की राशि की गणना स्वयं करेंगे, जो लाइन में मौजूद सामानों के योग के बराबर है, जिसे 0.05 से गुणा किया जाएगा।

&सर्वर प्रक्रिया पर गंतव्य ऑब्जेक्ट से प्रत्येक ग्राहक ऑर्डर के लिए कमांड निष्पादित करें (कमांड, गंतव्य ऑब्जेक्ट) लूप ग्राहक ऑर्डर ऑब्जेक्ट = ग्राहक ऑर्डर। गेटऑब्जेक्ट() ; CustomerOrderObject से प्रत्येक TK लाइन के लिए। माल साइकिल स्ट्रिंग TZ. प्रतिशत मैनुअल छूट = 5 ; स्ट्रिंग TZ. मैनुअल डिस्काउंट की राशि = स्ट्रिंग टीके। राशि * 0 . 05; अंतचक्र; ऑर्डरग्राहकऑब्जेक्ट। लिखना() ; अंतचक्र; अंतिम प्रक्रिया

बाह्य प्रसंस्करण का पंजीकरण

"एंटरप्राइज़" मोड में 1C चलाएँ और "अतिरिक्त रिपोर्ट और प्रोसेसिंग" निर्देशिका खोलें। इसे "सभी फ़ंक्शन" मेनू के माध्यम से ढूंढें।

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

अब दस्तावेजों की सूची "ग्राहक आदेश" के रूप में "भरना ..." बटन दिखाई देगा, जो आपको एक साथ कई दस्तावेजों के लिए माल की मैन्युअल छूट को बदलने की अनुमति देगा।

साथ ही यह बटन डॉक्यूमेंट के कार्ड में ही उपलब्ध होगा.

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

सबसे पहले, आइए फ़ाइल/नए मेनू का उपयोग करके कॉन्फ़िगरेशनकर्ता में एक बाहरी प्रोसेसिंग बनाएं। दिखाई देने वाली विंडो में, "बाहरी प्रसंस्करण" चुनें।

प्रक्रिया स्वयं इस प्रकार दिखनी चाहिए:

प्रक्रिया इनिशियलाइज़ (ऑब्जेक्ट, टेबलपार्टनाम, टेबलफ़ील्ड) निर्यात;

ऑब्जेक्ट[टेबलपार्टनाम] लूप से प्रत्येक RowTablePart के लिए

TabularPartString.Result = Env(TablePartString.Result);

अंतचक्र;

अंतिम प्रक्रिया

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

यह लिखने के बाद कि प्रोसेसिंग को क्या करना चाहिए, हम इसे सहेजते हैं और 1सी एंटरप्राइज मोड पर जाते हैं, जहां हम प्रोसेसिंग को बाहरी प्रोसेसिंग की निर्देशिका में पंजीकृत करते हैं।

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

सभी चरणों को पूरा करने के बाद, हम तत्व लिखते हैं और वांछित दस्तावेज़ पर जाते हैं। हम देखते हैं कि सारणीबद्ध भाग के ऊपर एक नया बटन दिखाई दिया है। हम उपयोग करते हैं और आनंद लेते हैं।)

मुझे आशा है कि इस लेख ने आपको सारणीबद्ध अनुभाग को भरने या संसाधित करने के लिए एक तंत्र बनाने में मदद की है। यदि नहीं, तो आप हमेशा ऐसा कर सकते हैं और मैं आपके लिए कोई भी प्रोसेसिंग लिखूंगा।)

उदाहरण के लिए आप इस लेख को लिखने के दौरान हुई प्रोसेसिंग को भी डाउनलोड कर सकते हैं, इसके लिए नीचे दिए गए लिंक पर क्लिक करें।