1सी एंटरप्राइज़ सत्र पैरामीटर निर्धारित नहीं हैं। सत्र विकल्प

1सी 8.3 सत्र पैरामीटर- एक वैरिएबल जो उपयोगकर्ता सत्र की अवधि के लिए वांछित पैरामीटर का मान संग्रहीत करता है। अनिवार्य रूप से, यह वर्तमान उपयोगकर्ता के सत्र से जुड़ा एक प्रकार का वैश्विक चर है।

1सी में सत्र मापदंडों का उपयोग करना

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

1सी सत्र पैरामीटर सेट करने का उदाहरण

आइए सत्र पैरामीटर का उपयोग करने का एक विशिष्ट उदाहरण देखें - वर्तमान उपयोगकर्ता को सेट करना। मैं तैयारी से एक उदाहरण लूंगा।

मेटाडेटा ट्री में, हम एक नया सत्र पैरामीटर बनाएंगे - करंटयूजर, इसे एक प्रकार निर्दिष्ट करें - डायरेक्ट्रीलिंक.इंडिविजुअल्स:

1सी पर 267 वीडियो पाठ निःशुल्क प्राप्त करें:

सत्र मॉड्यूल में, हम एक प्रक्रिया बनाएंगे जिसमें वर्तमान सत्र पैरामीटर निर्धारित किया जाएगा:

प्रक्रिया कोड:

प्रक्रिया सेटिंग सत्र पैरामीटर (आवश्यक पैरामीटर) // भौतिक की तलाश में उपयोगकर्ता नाम से व्यक्तिटेकयूजर = निर्देशिकाएँ। व्यक्ति. FindByName(उपयोगकर्ता नाम()); //यदि नहीं मिला तो नया बनाएंयदि टेकयूजर. खाली() फिर न्यूयूजर = निर्देशिकाएँ। व्यक्ति. CreateItem() ; नए उपयोगकर्ता। नाम = उपयोगकर्ता नाम() ; नए उपयोगकर्ता। लिखना() ; वर्तमान उपयोक्ता = नया उपयोक्ता. जोड़ना; अगर अंत ; // सत्र पैरामीटर करंटयूजर को व्यक्तियों की निर्देशिका के लिए एक लिंक असाइन करेंसत्र पैरामीटर. करंटयूजर = करंटयूजर; प्रक्रिया का अंत

1सी:एंटरप्राइज़ में विचाराधीन पैरामीटर मेटाडेटा ऑब्जेक्ट के रूप में प्रस्तुत किए जाते हैं। मूलतः, यह एक वैश्विक चर से अधिक कुछ नहीं है जो वर्तमान सत्र से जुड़ा हुआ है।

एक वैश्विक वैरिएबल किसी भी अन्य वैरिएबल के समान ही होता है, लेकिन इसकी ख़ासियत यह है कि इसे प्रोग्राम में कहीं से भी एक्सेस किया जा सकता है, और सत्र पैरामीटर के मामले में, यह केवल वर्तमान सत्र के भीतर ही काम करता है।

क्योंकि सत्र पैरामीटरएक मेटाडेटा ऑब्जेक्ट है, इसमें कुछ विशेषताएं हैं:

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

यदि सत्र पैरामीटर प्रकार है:

  • फिक्स्डअरे
  • निश्चित संग्रह
  • स्थिर संरचना

तब संग्रह तत्व का मान हो सकता है अपरिभाषित.

पैरामीटर्स का मुख्य क्षेत्र आरएलएस (रिकॉर्ड लेवल एक्सेस रेस्ट्रिक्शन) प्रश्नों में उनके मूल्यों का उपयोग है।

उदाहरण के लिए, हमें आरएलएस अनुरोध में वर्तमान उपयोगकर्ता के लिए एक शर्त निर्धारित करने की आवश्यकता है। ऐसा करने के लिए, हम "CurrentUser" सत्र पैरामीटर सेट करते हैं और अंतर्निहित भाषा कोड से मान सेट करते हैं:

सेशन पैरामीटर्स.CurrentUser =<значение>

तालिका.उपयोगकर्ता = &वर्तमान उपयोगकर्ता

इस तरह से सत्र पैरामीटर का उपयोग करते समय, पैरामीटर के लिए पढ़ने की अनुमतियों को ध्यान में नहीं रखा जाता है, लेकिन आप अंतर्निहित भाषा से उनका मान प्राप्त करने का प्रयास कर सकते हैं:

करंटयूजर = सेशन पैरामीटर्स.करंटयूजर;


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

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

प्रक्रिया SettingSessionParameters(SessionParametersNames) यदि SessionParametersNames अपरिभाषित है तो यदि ParameterName = "CurrentUser" तो SessionParameters.CurrentUser = ; अन्यथा यदि पैरामीटर नाम = "वर्तमान संगठन" तब सत्र पैरामीटर. वर्तमान संगठन = ; // वगैरह। अगर अंत; अगर अंत; एंडप्रोसीजरवैल्यू>वैल्यू>>

क्योंकि सत्र पैरामीटर सत्र से जुड़ा हुआ है, आप पृष्ठभूमि में चल रही विधि से सत्र पैरामीटर तक नहीं पहुंच पाएंगे क्योंकि यह एक अलग सत्र होगा। यह बारीकियाँ आश्चर्यचकित कर सकती हैं, इसलिए विधि पैरामीटर के रूप में वांछित मान को पारित करके और प्रक्रिया की शुरुआत में सत्र पैरामीटर से इसे आरंभ करके इसके लिए पहले से तैयारी करना बेहतर है।

सत्र पैरामीटर क्या हैं?

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

पहुँच अधिकार प्रणालीआपको उपयोगकर्ता की स्थिति या गतिविधियों के प्रकार के अनुरूप अधिकारों के सेट का वर्णन करने की अनुमति देता है। अधिकारों की संरचना एक विशिष्ट अनुप्रयोग समाधान द्वारा निर्धारित की जाती है।

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

एप्लिकेशन समाधानों में पहुंच अधिकारों के प्रतिबंध को लागू करने के लिए, विशेष कॉन्फ़िगरेशन ऑब्जेक्ट - भूमिकाएँ - का इरादा है।

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

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

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

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

सही चिह्नित का इंटरैक्टिव निष्कासन निष्कासन. इंटरैक्टिव कानून संपादनमौलिक अधिकार की आवश्यकता है परिवर्तन. इंटरैक्टिव कानून देखनामौलिक अधिकार की आवश्यकता है पढ़ना.

इसके अलावा, बुनियादी अधिकार परिवर्तनऔर निष्कासनमौलिक अधिकार की आवश्यकता है पढ़ना।

डेटाबेस में संग्रहीत वस्तुओं (निर्देशिका, दस्तावेज़, आदि) पर होने वाली क्रियाओं के बीच, डेटाबेस में संग्रहीत जानकारी को पढ़ने या बदलने के लिए जिम्मेदार क्रियाएँ होती हैं। इन कार्रवाइयों में शामिल हैं:

  • पढ़ना - डेटाबेस तालिका से रिकॉर्ड या उनके टुकड़े प्राप्त करना;
  • जोड़ना - मौजूदा रिकॉर्ड्स को बदले बिना नए रिकॉर्ड जोड़ना;
  • परिवर्तन - मौजूदा रिकॉर्ड बदलना;
  • विलोपन - शेष अभिलेखों में परिवर्तन किए बिना कुछ अभिलेखों को हटाना।

इन कार्रवाइयों के लिए, भूमिकाएँ स्थापित करने की प्रक्रिया के दौरान, डेटा पर अतिरिक्त शर्तें निर्धारित की जा सकती हैं (डेटा तक पहुंच को प्रतिबंधित करना)। इस मामले में, अनुरोधित कार्रवाई डेटाबेस में संग्रहीत किसी विशिष्ट ऑब्जेक्ट पर तभी की जा सकती है जब उस ऑब्जेक्ट के डेटा के लिए डेटा एक्सेस प्रतिबंध सत्य हो। ऐसी ही स्थितियाँ उन डेटाबेस तालिकाओं के लिए निर्धारित की जा सकती हैं जिनमें ऑब्जेक्ट प्रकृति (रजिस्टर) नहीं है।

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

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

&क्षेत्र

उसी समय, सत्र पैरामीटर का मान स्वयं अनुरोधों में सेट नहीं किया गया है। सिस्टम निश्चित रूप से जानता है कि यह एक सत्र पैरामीटर है।

आइए उन डेटा प्रकारों को देखें जिन्हें सत्र पैरामीटर स्वीकार कर सकते हैं:


उपलब्ध प्रकारों में हम न केवल मानक प्रकार (संदर्भ प्रकार, आदिम डेटा प्रकार) देख सकते हैं, बल्कि "फिक्स्ड एरे", "फिक्स्ड स्ट्रक्चर", "फिक्स्ड मैच" जैसे प्रकार भी देख सकते हैं।

सत्र मापदंडों के साथ काम करने की तकनीक कैसी दिखती है? सबसे पहले, उन्हें आरंभीकृत करने की आवश्यकता है। यह उस मॉड्यूल में किया जाता है जिसे सिस्टम शुरू होने पर सबसे पहले निष्पादित किया जाता है - यह "सत्र मॉड्यूल" है। यहां एक मानक ईवेंट हैंडलर है - "SettingSessionParameters()"।

प्रक्रिया सेटिंगसेशन पैरामीटर्स (आवश्यक पैरामीटर्स) क्षेत्र = नया ऐरे; क्षेत्र.जोड़ें('62'); क्षेत्र.जोड़ें('51'); सेशन पैरामीटर्स.क्षेत्र = नया फिक्स्डअरे(क्षेत्र); प्रक्रिया का अंत

यह ध्यान रखना महत्वपूर्ण है कि "सत्र मॉड्यूल" हमेशा विशेषाधिकार प्राप्त मोड में निष्पादित किया जाता है, अर्थात। इस मॉड्यूल में कोई अधिकार नियंत्रण नहीं है.

सामान्य तौर पर, विशेषाधिकार प्राप्त मॉड्यूल के संबंध में:

विशेषाधिकार प्राप्त मॉड्यूल असाइन करना संभव है। ऐसे ऑपरेशन जो डेटा का उपयोग करते हैं जिसके लिए वर्तमान उपयोगकर्ता के पास अधिकार नहीं हैं, उन्हें ऐसे मॉड्यूल में स्थानांतरित किया जा सकता है।

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

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

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

विशेषाधिकार प्राप्त मोड की अनुशंसा तब की जाती है जब आपको तार्किक रूप से अनुमतियों की जाँच को अक्षम करने की आवश्यकता होती है, या जब आप चीजों को गति देने के लिए अनुमतियों की जाँच को अक्षम कर सकते हैं। जब किसी निश्चित उपयोगकर्ता की ओर से डेटा के साथ काम करना इस उपयोगकर्ता के लिए स्थापित एक्सेस अधिकारों का उल्लंघन नहीं करता है तो विशेषाधिकार प्राप्त मोड का उपयोग करना स्वीकार्य है।

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

चूंकि सत्र पैरामीटर कॉन्फ़िगरेशन ऑब्जेक्ट हैं, हम उनके लिए एक्सेस अधिकार सेट कर सकते हैं:


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

इसके अलावा, यहां यह समझना महत्वपूर्ण है कि जब हम सत्र मॉड्यूल में एप्लिकेशन शुरू करते हैं, तो हमारे सत्र पैरामीटर चुपचाप प्रारंभ हो जाते हैं, भले ही हमारे पास इसे बदलने का अधिकार नहीं है। यह विशेषाधिकार प्राप्त मोड की एक विशेषता है, अर्थात। इसमें कोई एक्सेस कंट्रोल नहीं है.

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

उदाहरण के लिए, कोई दस्तावेज़ बनाते समय उसके लेखक को जानना अच्छा रहेगा। एक नया पैरामीटर बनाएं और इसे "CurrentUser" नाम दें:

पैरामीटर गुण भरें:

अब हमें वर्तमान उपयोगकर्ता के नाम पर पैरामीटर सेट करने की आवश्यकता है। सत्र मॉड्यूल खोलें:

प्रक्रिया सेटिंगSessionParameters(SessionParametersNames)VariableUserID,ReferenceUsersForSearch,ReferenceToFoundUser; ifSessionParametersNames= अपरिभाषित फिर ElseReferenceUsersForSearch=Directories.Users; उपयोगकर्ता आईडी = सूचना आधार उपयोगकर्ता.वर्तमान उपयोगकर्ता().अद्वितीय पहचानकर्ता; सत्र पैरामीटर्स.CurrentUser=RefUsersForSearch.FindByAttributes('UserID',UserID); अगर अंत; प्रक्रिया का अंत

अब, क्लाइंट पर "CurrentUser" पैरामीटर का उपयोग करने के लिए, हम एक रैपर प्रक्रिया बनाएंगे जिसे कहीं से भी कॉल किया जा सकता है। मैंने इस प्रक्रिया को सामान्य मॉड्यूल "OMUSers" में रखा है:

// वर्तमान डेटाबेस उपयोगकर्ता के लिए एक लिंक लौटाता है FunctionCurrentUser() निर्यात ReturnSessionParameters.CurrentUser; फ़ंक्शन का अंत केवल कुछ दस्तावेज़ बनाना है, वहां "लेखक" विशेषता जोड़ें और गुण भरें:

इसे फ़ॉर्म पर रखें और एक ईवेंट जोड़ें"जब सर्वर पर बनाया गया":

&OnServerProcedureWhenCreatingOnServer(विफलता, मानक प्रसंस्करण) // हैंडलर की सामग्री डालें। यदि NOTValueFilled(Object.Ref)तो object.Author=OMUsers.CurrentUser(); अगर अंत; प्रक्रिया का अंत

परिणाम:

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

मैं आपका ध्यान सत्र मापदंडों से संबंधित एक और सुविधा की ओर आकर्षित करना चाहूंगा। हम "सत्र मॉड्यूल" और विशेष रूप से घटना - "सेटिंगसेशन पैरामीटर्स" के बारे में बात करेंगे। हम जानते हैं कि एप्लिकेशन प्रारंभ होने पर यह ईवेंट कॉल किया जाता है। इसके अलावा, "सत्र मॉड्यूल" का संदर्भ "सर्वर" है और, तदनुसार, आप एप्लिकेशन शुरू होने पर सर्वर पर कुछ क्रियाएं करना चाह सकते हैं। लेकिन ऐसा करना बिल्कुल असंभव है, क्योंकि "SettingSessionParameters" ईवेंट हैंडलर को न केवल एप्लिकेशन शुरू होने पर कॉल किया जाता है, बल्कि सत्र पैरामीटर को पढ़ने के समय भी कॉल किया जाता है जिसे प्रारंभ नहीं किया गया है।

तो 1सी में संदर्भ पुस्तकें हैं। उदाहरण के लिए, माल की एक निर्देशिका (नामकरण)। वहां हम उन सामानों की एक सूची दर्शाएंगे जो हमारा संगठन बेचता है।

ऐसी निर्देशिका की सहायता से, हम ग्राहकों के लिए मूल्य सूची के साथ-साथ प्रबंधन के लिए बिक्री रिपोर्ट भी व्यवस्थित कर सकते हैं।

उत्पाद अलग हैं. उदाहरण के लिए, उत्पाद और रसायन विज्ञान। यदि प्रबंधक हमसे रिपोर्ट बनाने के लिए कहे तो हमें क्या करना चाहिए - हमने उत्पादों से कितना पैसा कमाया, और रसायन विज्ञान से कितना?

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

हालाँकि, लड़कियाँ इस नवाचार से खुश नहीं हैं - आखिरकार, अब उन्हें एक पूरा अतिरिक्त क्षेत्र भरने की ज़रूरत है, और उनके पास पहले से ही बहुत काम है और कुछ भी करने का समय नहीं है। और सामान्य तौर पर! - वे कहते हैं - हमारे पास 900 प्रकार के उत्पाद हैं, और केवल 50 प्रकार के रसायन! यहां तक ​​कि एक मूर्ख भी यह देख सकता है कि डिफ़ॉल्ट उत्पाद प्रकार उत्पाद होना चाहिए।

महान! - हम नोट करेंगे. और क्या कर?

स्थिरांक 1C

स्थिरांकों को संपादित करने के लिए, डिफ़ॉल्ट स्थिरांक प्रपत्र खुलता है। इस प्रपत्र पर प्रत्येक फ़ील्ड एक स्थिरांक है।

स्थिर प्रपत्र जोड़ने के दो तरीके हैं:

  • 1सी कॉन्स्टेंट शाखा पर राइट-क्लिक करें और मेनू आइटम क्रिएट कॉन्स्टेंट फॉर्म का चयन करें
  • सामान्य/सामान्य फॉर्म शाखा में एक फॉर्म जोड़ें और विज़ार्ड में फॉर्म प्रकार - कॉन्स्टेंट फॉर्म का चयन करें।

आप निम्न प्रकार से स्थिरांकों का रूप देख (और चुन सकते हैं) सकते हैं:

  • कॉन्फ़िगरेशन गुण दर्ज करें (कॉन्फ़िगरेशन की शीर्ष रूट शाखा पर राइट-क्लिक करें, जिसे प्रोग्रामर आमतौर पर "हेड" कहते हैं) और स्थिरांक संपत्ति के मूल रूप का उपयोग करें।

स्थिरांक प्रपत्र इस मायने में भिन्न है कि प्रपत्र की मुख्य विशेषता "कॉन्स्टेंटसेट" प्रकार की है। यह आपको 1C स्थिरांक को व्यक्तिगत रूप से नहीं, बल्कि तुरंत एक सेट के रूप में लिखने की अनुमति देता है।

वैसे, एक फॉर्म विशेषता "प्राथमिक" बन जाती है यदि इसे फॉर्म गुणों में डेटा प्रॉपर्टी में निर्दिष्ट किया जाता है।

1C भाषा के किसी प्रोग्राम में, आप किसी भी स्थिरांक तक आसानी से और सरलता से पहुंच सकते हैं:

मान = स्थिरांक.आवश्यक स्थिरांक.प्राप्त करें(); //पढ़ना
स्थिरांक.आवश्यक स्थिरांक.सेट(मान); //लिखो

1सी सत्र पैरामीटर

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

एक नया उत्पाद बनाते समय, OnOpenForm() में 1C भाषा प्रोग्राम उत्पाद प्रकार फ़ील्ड का मान स्थिरांक में निर्दिष्ट मान पर सेट करेगा। वोइला!

अब कार्यक्रम काम करता है, लेकिन हम यहीं नहीं रुकेंगे! बेशक - हम अच्छे प्रोग्रामर हैं, हम चाहते हैं कि प्रोग्राम न केवल काम करे, बल्कि तेज़ी से भी काम करे!

1C स्थिरांक कहाँ संग्रहीत हैं? डेटाबेस में, एक विशेष तालिका में. हर बार जब ऑपरेटर कोई नया उत्पाद बनाता है, तो वह सर्वर में प्रवेश करेगा और 1C स्थिरांक का मान पढ़ेगा। यदि 200 ऑपरेटर हों तो क्या होगा? क्या यह इष्टतम है?

फिर क्या करें?

और यहां हमें 1C सत्र मापदंडों के बारे में याद है। ये स्थिरांक जैसे मान हैं जो एंटरप्राइज़ मोड में 1C प्रारंभ होने पर भरे जाते हैं और तुरंत क्लाइंट पर उपलब्ध होते हैं। दूसरे शब्दों में, यह क्लाइंट साइड पर एक प्रकार का कैश है।

इसके अलावा, यदि स्थिरांक में हम किसी सूची को केवल वैल्यू स्टोर में संग्रहीत कर सकते हैं, तो हम इसे पहले से ही 1C सत्र पैरामीटर में अनपैक कर सकते हैं, हालांकि यह गतिशील नहीं होगा - यह फिक्स्डएरे प्रकार का होगा।

1सी सत्र पैरामीटर सामान्य/1सी सत्र पैरामीटर शाखा में स्थित कॉन्फ़िगरेशन विंडो में भी हैं।

1C सत्र पैरामीटर जोड़ना पर्याप्त नहीं है, क्योंकि यदि इसे नहीं भरा गया है, तो प्रोग्राम एक त्रुटि दिखाएगा।

एंटरप्राइज़ मोड में 1C प्रारंभ करते समय 1C सत्र पैरामीटर भरना (सेटिंग) किया जाना चाहिए। कॉन्फ़िगरेशन की शीर्ष शाखा पर राइट-क्लिक करें (प्रोग्रामर इसे "हेड" कहते हैं) और मेनू आइटम ओपन सेशन मॉड्यूल का चयन करें।

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

SessionParameters.RequiredParameter = मान; //रिकॉर्ड, शुरुआत में एक बार
मान = सेशन पैरामीटर्स.आवश्यक पैरामीटर; // पढ़ना, लिखने के बाद सख्ती से।

लेख "1C पर विकास में पहला कदम" श्रृंखला जारी रखता है, इसमें निम्नलिखित मुद्दों पर विस्तार से चर्चा की गई है:

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

प्रयोज्यता

लेख में 1C:एंटरप्राइज़ प्लेटफ़ॉर्म 8.3.4.496 पर चर्चा की गई है। सामग्री वर्तमान प्लेटफ़ॉर्म रिलीज़ के लिए भी प्रासंगिक है।

"1C:एंटरप्राइज़ 8.3" में मॉड्यूल

मॉड्यूल वे ऑब्जेक्ट होते हैं जिनमें प्रोग्राम कोड होता है।

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

कोड की कोई भी पंक्ति किसी मॉड्यूल में होनी चाहिए। सामान्य प्रयोजन मॉड्यूल और ऑब्जेक्ट मॉड्यूल हैं। कुछ मॉड्यूल क्लाइंट और सर्वर दोनों पर संकलित किए जा सकते हैं, और कुछ केवल सर्वर पर।

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

प्रत्येक प्रक्रिया के भीतर, आप एक मॉड्यूल चर तक पहुंच सकते हैं। इसके अलावा, प्रक्रिया के भीतर ही उसी नाम से एक और परिवर्तनीय घोषणा हो सकती है। यह इस प्रक्रिया का एक स्थानीय चर होगा.

एक ही नाम के बावजूद, ये दो अलग-अलग चर हैं: एक का उपयोग किसी विशिष्ट प्रक्रिया के अंदर किया जाता है, और दूसरे का उपयोग इसके बाहर किया जाता है।

कुछ मॉड्यूल में, वेरिएबल का सर्वर या क्लाइंट पर एक संकलन स्थान (उपलब्धता) हो सकता है। उदाहरण के लिए:

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

सिद्धांत रूप में, संकलन निर्देश को छोड़ा जा सकता है। इस मामले में, डिफ़ॉल्ट संकलन निर्देश सर्वर है। हालाँकि, प्रोग्राम कोड के विश्लेषण की सुविधा के लिए, यह स्पष्ट रूप से इंगित करने की अनुशंसा की जाती है कि दी गई प्रक्रिया कहाँ संकलित की जाएगी। प्रक्रियाओं का वर्णन किस क्रम में किया गया है, इससे कोई फर्क नहीं पड़ता।

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

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

यह ध्यान दिया जाना चाहिए कि परिवर्तनीय घोषणा अनुभाग और मुख्य कार्यक्रम अनुभाग सभी मॉड्यूल के लिए मौजूद नहीं हैं (यानी, ये अनुभाग कुछ मॉड्यूल में मान्य नहीं हैं)। प्रक्रियाओं और कार्यों का वर्णन करने के लिए एक अनुभाग बिल्कुल किसी भी मॉड्यूल में मौजूद हो सकता है।

अनुप्रयोग मॉड्यूल

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

इसके अलावा एप्लिकेशन मॉड्यूल में विशेष हैंडलर हैं जो आपको उपकरण से बाहरी घटनाओं को रोकने की अनुमति देते हैं।

ये मैग्नेटिक कार्ड रीडर या वित्तीय रजिस्ट्रार की घटनाएँ हो सकती हैं। और इन घटनाओं को किसी तरह से प्रोसेस भी किया जा सकता है.

कृपया ध्यान दें कि यह सिस्टम का इंटरैक्टिव स्टार्टअप है जिसे एप्लिकेशन मॉड्यूल में मॉनिटर किया जाता है।

यदि 1सी प्रोग्राम लॉन्च किया गया है, उदाहरण के लिए, कॉम कनेक्शन मोड में, तो एप्लिकेशन मॉड्यूल काम नहीं करेगा। इस स्थिति में, प्रोग्राम विंडो नहीं बनाई गई है.

यह ध्यान दिया जाना चाहिए कि प्लेटफ़ॉर्म 8.3 में दो अलग-अलग एप्लिकेशन मॉड्यूल हैं: प्रबंधित एप्लिकेशन मॉड्यूल और नियमित एप्लिकेशन मॉड्यूल। प्रबंधित एप्लिकेशन मॉड्यूल इवेंट तब संसाधित होते हैं जब प्रबंधित एप्लिकेशन पतला और मोटा क्लाइंट और वेब क्लाइंट लॉन्च किया जाता है।

मापांक नियमित आवेदनथिक क्लाइंट को मोड में चलाने पर काम करता है नियमित आवेदन, जिसमें प्रपत्र में सामान्य कमांड इंटरफ़ेस शामिल है मुख्य मेन्यू.

यदि एप्लिकेशन चल रहा है प्रबंधित, और मोड में नियमित आवेदन, तो मॉड्यूल के लिए हैंडलर प्रक्रियाओं का वर्णन करना आवश्यक है प्रबंधित अनुप्रयोग, और मॉड्यूल के लिए नियमित आवेदन.

मापांक प्रबंधित अनुप्रयोगरूट कॉन्फ़िगरेशन नोड के संदर्भ मेनू से चुना जा सकता है।

इस मॉड्यूल को रूट कॉन्फ़िगरेशन तत्व के गुण पैलेट से भी खोला जा सकता है।

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

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

इस मामले में मॉड्यूल नियमित आवेदनइसे रूट नोड के गुणों से भी खोलना संभव होगा।

उन घटनाओं की सूची जिनके लिए कार्रवाई की जा सकती है प्रबंधितऔर नियमित आवेदनएक ही है।

इस मॉड्यूल में एक परिवर्तनीय घोषणा अनुभाग, मनमानी प्रक्रियाओं और कार्यों का एक विवरण अनुभाग और एक मुख्य कार्यक्रम अनुभाग हो सकता है। लेकिन मनमानी प्रक्रियाओं और कार्यों के अलावा, विशेष ईवेंट हैंडलर मॉड्यूल में स्थित हो सकते हैं।

मॉड्यूल खुला होने पर मौजूदा मॉड्यूल की प्रक्रियाओं और कार्यों की सूची को कॉल करके उपलब्ध हैंडलर की सूची देखी जा सकती है।

खुलने वाली प्रक्रियाएँ और कार्य विंडो इस मॉड्यूल की सभी प्रक्रियाओं और कार्यों के साथ-साथ उन घटनाओं को भी प्रदर्शित करती है जिनके लिए हैंडलर अभी तक नहीं बनाए गए हैं।

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

जब "पहले" ईवेंट हैंडलर निष्पादित किया जाता है, तो माना जाता है कि कार्रवाई अभी तक नहीं हुई है। जब "एट" इवेंट हैंडलर निष्पादित होता है, तो कार्रवाई पहले ही पूरी हो चुकी होती है।

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

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

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

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

यदि मॉड्यूल से प्रबंधित अनुप्रयोगसर्वर कॉल करने की आवश्यकता है, तो इसके लिए आपको विशेष बनाने की आवश्यकता होगी एक झंडे के साथ .

मॉड्यूल में नियमित आवेदनऐसे कोई प्रतिबंध नहीं हैं, क्योंकि थिक क्लाइंट लोड करते समय यह मॉड्यूल संकलित किया जाएगा। थिक क्लाइंट में लगभग सभी प्रकार का डेटा उपलब्ध होता है।

किसी एप्लिकेशन मॉड्यूल की प्रक्रियाओं, कार्यों और चर को निर्यात के रूप में वर्णित किया जा सकता है।

चूंकि मॉड्यूल पूरी तरह से क्लाइंट पर संकलित है, इसका मतलब है कि क्लाइंट प्रक्रियाओं में हम इस विधि और इस संपत्ति तक पहुंच सकते हैं।

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

एप्लिकेशन मॉड्यूल के अनुरूप, इस मॉड्यूल को प्रोग्राम ओपनिंग इवेंट और शटडाउन इवेंट को संसाधित करने के लिए डिज़ाइन किया गया है।

एप्लिकेशन मॉड्यूल के विपरीत, जिसे एप्लिकेशन के इंटरैक्टिव लॉन्च के समय शुरू किया जाता है, बाहरी कनेक्शन मॉड्यूल COM कनेक्शन मोड में काम करता है, यानी। जब 1C:Enterprise 8 ऑब्जेक्ट बनाया जाता है और एक विशिष्ट डेटाबेस से जोड़ा जाता है।

इस मॉड्यूल में इवेंट हैं: सिस्टम प्रारंभ करते समयऔर सिस्टम बंद होने पर.

बाहरी कनेक्शन मॉड्यूल को रूट कॉन्फ़िगरेशन ऑब्जेक्ट स्तर पर संदर्भ मेनू या रूट नोड के लिए गुण पैलेट का उपयोग करके खोला जा सकता है।

बाहरी कनेक्शन की प्रक्रिया स्वयं सूचना आधार के साथ प्रोग्रामेटिक कार्य की प्रक्रिया है, न कि इंटरैक्टिव। तदनुसार, इस समय आप संवाद प्रपत्रों का उपयोग नहीं कर सकते या चेतावनी संदेश प्रदर्शित नहीं कर सकते, क्योंकि कोई उपयोगकर्ता इंटरफ़ेस नहीं है।

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

चूँकि बाहरी जुड़ाव में कोई उपयोगकर्ता इंटरफ़ेस नहीं होता है, बाहरी जुड़ाव मॉड्यूल पूरी तरह से सर्वर पर संकलित होता है।

सत्र मॉड्यूल

सत्र पैरामीटर प्रारंभ करने के लिए इस मॉड्यूल की आवश्यकता है। सत्र पैरामीटर त्वरित वैश्विक चर हैं जिनके मान कॉन्फ़िगरेशन में कहीं भी उपलब्ध हैं।

आप सत्र मॉड्यूल को या तो संदर्भ मेनू के माध्यम से या रूट नोड के गुण पैलेट के माध्यम से खोल सकते हैं।

सत्र मॉड्यूल एक घटना प्रदान करता है सेटिंगसेशन पैरामीटर्स.

जब एप्लिकेशन प्रारंभ होता है, तो सबसे पहले इस प्रक्रिया को कॉल किया जाता है. किसी भी एप्लिकेशन ऑपरेशन के लिए सत्र पैरामीटर की आवश्यकता होती है: जब इंटरैक्टिव रूप से लॉन्च किया जाता है और जब बाहरी कनेक्शन मोड में लॉन्च किया जाता है।

सत्र मॉड्यूल विभिन्न स्थितियों के आधार पर सत्र मापदंडों को आरंभ करने के लिए विभिन्न क्रियाओं का वर्णन करता है।

यह मॉड्यूल, एक नियम के रूप में, कई प्रक्रियाओं का वर्णन करता है जिन्हें प्रक्रिया से बुलाया जाता है सेटिंगसेशन पैरामीटर्स. इसलिए, इन सभी प्रक्रियाओं को एक अलग मॉड्यूल में विभाजित किया गया है।

सत्र मॉड्यूल हमेशा विशेषाधिकार प्राप्त मोड में चलता है। इसका मतलब यह है कि डेटाबेस तक पहुंचने पर कोई अनुमति जांच नहीं की जाएगी। सत्र मॉड्यूल सर्वर पर संकलित किया गया है, अर्थात। किसी भी सर्वर विधि (डेटाबेस से मान पढ़ने सहित) तक पहुंच संभव है।

सत्र मॉड्यूल में केवल प्रक्रियाओं और कार्यों को परिभाषित करना संभव है, अर्थात। इसमें कोई परिवर्तनीय विवरण अनुभाग और कोई मुख्य कार्यक्रम अनुभाग नहीं है। आप सत्र मॉड्यूल में निर्यात विधियों को परिभाषित नहीं कर सकते।

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

  • प्रक्रिया सेटिंगसेशन पैरामीटर्सन केवल सिस्टम स्टार्टअप पर, बल्कि अप्रारंभीकृत सत्र मापदंडों तक पहुँचने पर भी निष्पादित किया जाता है। वे। एप्लिकेशन ऑपरेशन के दौरान SetSessionParameters हैंडलर को बार-बार कॉल किया जा सकता है;
  • यदि सत्र पैरामीटर सरणी में तत्वों की संख्या शून्य है (आवश्यक पैरामीटर की सरणी में डेटा प्रकार अपरिभाषित है), तो यही वह क्षण है जब एप्लिकेशन लॉन्च किया जाता है;
  • चूंकि सत्र मॉड्यूल विशेषाधिकार प्राप्त मोड में काम करता है और एक्सेस अधिकारों की कोई जांच नहीं होगी, आपको डेटाबेस ऑब्जेक्ट्स के साथ बहुत सावधानी से काम करना चाहिए, क्योंकि उपयोगकर्ता उस डेटा तक पहुंच प्राप्त कर सकता है जो उसे प्रदान नहीं किया जाना चाहिए;
  • सिस्टम प्रारंभ होने पर यह अभी तक निश्चित रूप से ज्ञात नहीं है कि एप्लिकेशन लॉन्च किया जाएगा या नहीं. इस स्थिति में, SetSessionParameters ईवेंट हैंडलर में अनावश्यक क्रियाएं की जा सकती हैं।

ये मॉड्यूल कुछ सामान्य एल्गोरिदम का विवरण प्रस्तुत करते हैं, अर्थात। ऐसी प्रक्रियाएँ और कार्य जिन्हें विभिन्न स्थानों से बुलाया जा सकता है।

तार्किक रूप से संबंधित विधियों को विभिन्न सामान्य मॉड्यूल में समूहीकृत किया जा सकता है। ये मॉड्यूल सामान्य शाखा के अंदर बनाए गए हैं।

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

सामान्य मॉड्यूल में, केवल प्रक्रियाओं और कार्यों का वर्णन करने वाला अनुभाग उपलब्ध है। वे। सामान्य मॉड्यूल में आप वेरिएबल्स का वर्णन नहीं कर सकते हैं और आप मुख्य प्रोग्राम के किसी अनुभाग का वर्णन नहीं कर सकते हैं।

यदि वैश्विक चर की आवश्यकता है, तो आप सत्र पैरामीटर या एप्लिकेशन मॉड्यूल निर्यात चर का उपयोग कर सकते हैं।

सामान्य मॉड्यूल के लिए, आप कुछ पैरामीटर सेट कर सकते हैं जो इस मॉड्यूल के व्यवहार को प्रभावित करेंगे। यदि वैश्विक संपत्ति एक सामान्य मॉड्यूल के लिए सेट की गई है, तो इस मॉड्यूल में घोषित निर्यात विधियां बिना किसी अतिरिक्त निर्देश के सीधे बाहर से पहुंच योग्य होंगी।

वे। सामान्य मॉड्यूलवैश्विक विन्यास संदर्भ के निर्माण में भाग लेंगे।

संपत्ति वैश्विकसामान्य मॉड्यूल के लिए यह उपयोगी हो सकता है। हालाँकि, आपको इसे सभी सामान्य मॉड्यूल के लिए हर जगह उपयोग नहीं करना चाहिए।

वे , जिन्हें चिन्ह से अंकित किया जाता है वैश्विक, सिस्टम स्टार्टअप पर संकलित किया जाएगा। जितने अधिक ऐसे मॉड्यूल होंगे, प्रोग्राम उतना ही धीमा शुरू होगा।

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

इसके अलावा, वैश्विक सामान्य मॉड्यूल का उपयोग कोड की समझ को प्रभावित करता है। गैर-वैश्विक सामान्य मॉड्यूल के तरीकों को नाम से पुकारा जाता है सामान्य मॉड्यूलऔर विधि का नाम, उदाहरण के लिए:
लागत गणना मॉड्यूल.DistributeIndirectCosts();

इस मामले में, सामान्य मॉड्यूल के नाम उनमें वर्णित प्रक्रियाओं की सामग्री को प्रतिबिंबित करना चाहिए। किसी प्रक्रिया को कॉल करते समय सामान्य मॉड्यूल का नाम निर्दिष्ट करने से कोड को बेहतर ढंग से समझने में मदद मिलती है।

के लिए सामान्य मॉड्यूलवी गुण पैलेटआप संपत्ति सेट कर सकते हैं विशेषाधिकार प्राप्त.

विशेषाधिकार प्राप्त मॉड्यूल पहुंच अधिकारों को नियंत्रित नहीं करता है। ये जरूरी है अगर सामान्य मॉड्यूलडेटाबेस से डेटा प्राप्त करके बड़े पैमाने पर डेटा प्रोसेसिंग करना आवश्यक है।

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

उदाहरण के लिए, पेरोल एक संसाधन-गहन ऑपरेशन है। इसे यथाशीघ्र करने की आवश्यकता है। ऐसा करने के लिए, मजदूरी की गणना करने वाले एल्गोरिदम को विशेषाधिकार प्राप्त में रखा गया है .

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

इस प्रकार, महत्वपूर्ण प्रदर्शन सुधार प्राप्त किया जा सकता है। तालिका रिकॉर्ड तक पंक्ति-दर-पंक्ति पहुंच नियंत्रण के लिए एक तंत्र का उपयोग करते समय यह विशेष रूप से सच है।

यदि एक सामान्य मॉड्यूल को विशेषाधिकार प्राप्त है, तो इस मॉड्यूल की प्रक्रियाओं को केवल सर्वर पर संकलित किया जा सकता है।

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

वे। उपयोगकर्ता अधिकारों को अस्थायी रूप से विस्तारित करने और फिर उन्हें उनकी मूल स्थिति में लौटाने की आवश्यकता है। यह प्रभाव विशेषाधिकार प्राप्त का उपयोग करके प्राप्त किया जा सकता है सामान्य मॉड्यूल.

ऐसा करना विशेषाधिकार प्राप्त है सामान्य मॉड्यूलआपको एक ऐसी प्रक्रिया बनानी चाहिए जो आवश्यक डेटा तक पहुंच सके।

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

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

इसके अलावा, यदि आप कॉन्फ़िगरेशन संपादन मोड को प्रबंधित एप्लिकेशन और नियमित एप्लिकेशन पर स्विच करते हैं, तो एक और संकलन संदर्भ संभव होगा - क्लाइंट (नियमित एप्लिकेशन)।

इस प्रकार, कार्यक्रम के संचालन के लिए चार विकल्प हैं। चल रहे एप्लिकेशन के आधार पर, क्लाइंट या सर्वर पर काम के आधार पर, कुछ सामान्य मॉड्यूल उपलब्ध या अनुपलब्ध होंगे।

संकलन झंडे निर्दिष्ट करने की क्षमता के अलावा, सामान्य मॉड्यूल में स्थित प्रक्रियाओं और कार्यों के लिए संकलन निर्देश निर्दिष्ट करना संभव है।

यदि किसी विधि के लिए एक संकलन निर्देश निर्दिष्ट किया गया है, तो यद्यपि सामान्य मॉड्यूल सभी निर्दिष्ट संदर्भों में उपलब्ध है, विशिष्ट विधि की उपलब्धता संकलन निर्देश द्वारा सीमित होगी।

इस मामले में, प्रक्रिया को ऐसे संदर्भ में एक्सेस नहीं किया जा सकता है जो पूरे मॉड्यूल तक पहुंच योग्य नहीं है।

यदि आप किसी प्रक्रिया (फ़ंक्शन) के लिए संकलन निर्देश निर्दिष्ट नहीं करते हैं, तो इसे मॉड्यूल के लिए परिभाषित सभी संदर्भों में संकलित किया जाएगा।

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

जेनेरिक मॉड्यूल जो एक साथ कई अलग-अलग संदर्भों में पहुंच योग्य हैं, मुख्य रूप से ऐसी प्रक्रियाएं बनाने के लिए डिज़ाइन किए गए हैं जो कई संदर्भों में पहुंच योग्य हैं।

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

इस दृष्टिकोण के साथ, क्लाइंट प्रक्रियाएँ अलग सामान्य मॉड्यूल में स्थित होंगी, और सर्वर प्रक्रियाएँ अलग सामान्य मॉड्यूल में स्थित होंगी।

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

महत्वपूर्ण! क्लाइंट के लिए कॉमन मॉड्यूल के निर्यात सर्वर तरीकों तक पहुंचना संभव है, लेकिन केवल तभी जब यह कॉमन मॉड्यूल केवल सर्वर पर संकलित हो। इस मामले में, क्लाइंट से पहुंच प्रदान करने के लिए एक विशेष ध्वज प्रदान किया जाता है .

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

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

डिफ़ॉल्ट रूप से, यह प्रॉपर्टी उपयोग न करें पर सेट है। अन्य संभावित मान: कैश कॉल के दौरान, या सत्र की अवधि के लिए.

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

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

हालाँकि, कुछ निश्चित समय प्रतिबंध हैं। मान कैश में प्रवेश करने के 20 मिनट बाद कैश स्वचालित रूप से साफ़ हो जाता है।

फॉर्म मॉड्यूल

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

प्रपत्र नियंत्रण (बटन, इनपुट फ़ील्ड) से जुड़ी घटनाओं के अलावा, सीधे प्रपत्र से जुड़ी घटनाएं भी होती हैं।

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

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

एक प्रबंधित फॉर्म मॉड्यूल में, आप प्रक्रियाओं और कार्यों की घोषणा कर सकते हैं, आप चर घोषित कर सकते हैं, और आप मुख्य कार्यक्रम के एक अनुभाग का वर्णन कर सकते हैं।

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

प्रबंधित प्रपत्र की घटनाओं की सूची सीधे प्रपत्र की संपत्तियों की सूची में भी दिखाई देती है। इस सूची को प्रबंधित प्रपत्र संपादक में कहा जाता है.

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

एक नियमित रूप के मॉड्यूल के लिए, मानक घटनाओं की सूची कुछ छोटी है, क्योंकि प्रबंधित रूप में, कई घटनाओं को जोड़ा जाता है (एक क्लाइंट पर और दूसरा सर्वर पर निष्पादित होता है)। अपने सामान्य रूप में, सभी कोड क्लाइंट पर निष्पादित होते हैं।

ऑब्जेक्ट मॉड्यूल

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

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

ऑब्जेक्ट मॉड्यूल में राइट इवेंट को दिए गए ऑब्जेक्ट के किसी भी रूप से किसी भी राइट पर निष्पादित किया जाएगा। इसके अतिरिक्त, यदि ऑब्जेक्ट प्रोग्रामेटिक रूप से लिखा गया है, तो ऑब्जेक्ट का मॉड्यूल इवेंट सक्रिय हो जाएगा।

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

इस ऑब्जेक्ट के मॉड्यूल को संदर्भ मेनू के माध्यम से, ऑब्जेक्ट प्रॉपर्टीज पैलेट से और ऑब्जेक्ट एडिटिंग विंडो से कॉल किया जा सकता है।

नीचे दिया गया चित्र उपलब्ध निर्देशिका मॉड्यूल ईवेंट की एक सूची दिखाता है।

ऑब्जेक्ट मॉड्यूल में आप वेरिएबल्स का वर्णन करने के लिए एक अनुभाग रख सकते हैं, मनमाने कार्यों का वर्णन कर सकते हैं जो किसी घटना से जुड़े नहीं हो सकते हैं, साथ ही मुख्य कार्यक्रम का एक अनुभाग भी रख सकते हैं।

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

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

यह स्वयं वस्तुओं की विशेषताओं के कारण है। ऐसी वस्तुओं में शामिल हैं स्थिरांकऔर रजिस्टर. के लिए स्थिरकोई ऑब्जेक्ट मॉड्यूल नहीं है, लेकिन एक बहुत ही समान मॉड्यूल कहा जाता है मूल्य प्रबंधक मॉड्यूल.

में मूल्य प्रबंधक मॉड्यूलआप लिखने की घटनाओं को संभाल सकते हैं स्थिरांकऔर सत्यापन प्रसंस्करण भरना।

संपूर्ण मॉड्यूल संदर्भ सर्वर पर निष्पादित होता है।

रजिस्टरों के लिए एक रिकॉर्डसेट मॉड्यूल है।

इस मॉड्यूल में लेखन घटनाओं को संभालने और अधिभोग जांच करने की क्षमता भी है।

ऑब्जेक्ट मॉड्यूल, वैल्यू मैनेजर मॉड्यूल (स्थिरांक के लिए) और रिकॉर्डसेट मॉड्यूल (रजिस्टर के लिए) में आप उन तरीकों का वर्णन कर सकते हैं जिन्हें निर्यात योग्य बनाया जा सकता है, और ये विधियां बाहर से पहुंच योग्य होंगी।

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

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

इसी तरह, आप कीवर्ड के साथ एक वेरिएबल घोषित करके एक नई प्रॉपर्टी बना सकते हैं निर्यात. इस संपत्ति तक बाहर से भी पहुंचा जा सकता है।

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

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

प्रबंधक मॉड्यूल

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

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

इसके अलावा, आप प्रबंधक मॉड्यूल में अतिरिक्त विधियाँ बना सकते हैं और संकेत कर सकते हैं कि वे निर्यात विधियाँ हैं। इस मामले में, इन विधियों तक बाहर से पहुंच संभव है।

इस कॉल को करने के लिए, डेटा प्रकार प्राप्त करना आवश्यक है निर्देशिका प्रबंधक.

प्रबंधक मॉड्यूल और ऑब्जेक्ट मॉड्यूल के निर्यात तरीकों के बीच अंतर यह है कि ऑब्जेक्ट मॉड्यूल की विधि तक पहुंचने के लिए, आपको पहले ऑब्जेक्ट को स्वयं प्राप्त करना होगा (अर्थात, किसी तरह एक लिंक प्राप्त करें और फिर इस लिंक को एक ऑब्जेक्ट में परिवर्तित करें) .

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

ये दो अलग-अलग अपीलें हैं. संदर्भ से ऑब्जेक्ट में कनवर्ट करें (विधि)। GetObject) सिस्टम के लिए एक काफी गंभीर कार्रवाई है, क्योंकि किसी ऑब्जेक्ट को प्राप्त करते समय, इस ऑब्जेक्ट का पूरा डेटा पढ़ा जाता है, जो काफी लंबा हो सकता है।

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

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

लेकिन प्रबंधक मॉड्यूल में एक अधिक सार्वभौमिक तंत्र बनाना संभव है जो अन्य चीजों के अलावा, तत्वों के एक समूह को प्रिंट करेगा।

इसके अलावा, ऑब्जेक्ट मॉड्यूल तक पहुंचना अभी भी एक लंबी कार्रवाई है। इसलिए, प्रबंधक मॉड्यूल में इस समस्या को हल करना अधिक बेहतर है।

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

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

यह भी ध्यान दें कि हमने जानबूझकर एक प्रकार के मॉड्यूल, अर्थात् कमांड मॉड्यूल को छोड़ दिया है। इसमें कुछ भी उल्लेखनीय नहीं है, और हम आपको इसकी कार्यक्षमता से परिचित होने के लिए आमंत्रित करते हैं।

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