नवीनतम लेख
घर / इंटरनेट / 1s 8 एक गतिशील सूची से निर्माण। गतिशील सूची सेटिंग्स

1s 8 एक गतिशील सूची से निर्माण। गतिशील सूची सेटिंग्स

अंत में, किसी भी "सात-खिलाड़ी" का सपना सच हो गया है। प्रोग्राम 7.7 के उपयोक्ताओं ने कितनी बार वस्तुओं का सामान्य चयन करने के लिए कहा। ताकि आप शेष राशि, मूल्य और सेट फ़िल्टर देख सकें। मुझे बाहरी घटकों को लिखने तक, विभिन्न तरकीबों के साथ आना पड़ा। 1C 8.2 में, गतिशील सूचियाँ दिखाई दीं। मैं इस पर विचार करने का प्रस्ताव करता हूं कि यह क्या है और वे हमें 1सी 8.3 में क्या दे सकते हैं।

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

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

आइए इसके गुणों पर जाएं और देखें कि वहां क्या है।

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

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

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

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

गतिशील सूची में कस्टम क्वेरी

सबसे पहले, बैलेंस और कीमतों के साथ हमें जो क्वेरी चाहिए वह बनाएं। कमोबेश इस तरह:

सेटिंग टैब

और अब सबसे स्वादिष्ट! "सेटिंग" टैब पर जाएं। और हम तुरंत देखते हैं कि पहले टैब पर हम अनुरोध में किसी भी क्षेत्र के लिए कोई भी चयन कर सकते हैं:

डायनेमिक सूची में प्रोग्रामेटिक रूप से क्वेरी पैरामीटर सेट करना 1C 8.3

यह मत भूलो कि अनुरोध में हमारे पास दो पैरामीटर हैं: "अवधि" और "मूल्य प्रकार"। हमें उन्हें अनुरोध पर पास करना होगा, अन्यथा कोई त्रुटि होगी।

आइए इन मापदंडों को प्रपत्र मापदंडों में लिखें, और प्रपत्र मॉड्यूल में निम्नलिखित पंक्तियाँ जोड़ें:

&OnServerProcedure OnCreateOnServer(विफलता, मानक प्रसंस्करण) सूची। विकल्प। SetParameterValue ("अवधि", पैरामीटर्स। दिनांक); सूची। विकल्प। SetParameterValue("PriceType", Parameters.PriceType); अंतिम प्रक्रिया

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

1C . में गतिशील सूचियों की विशेषताएं

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

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

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

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

  • एक गतिशील सूची का चयन;
  • समूह;
  • छँटाई;
  • सजावट।

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

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

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



एक नामकरण चुनें। नाम। नाम के रूप में नाम, माल और बिक्री लागत। एक गोदाम के रूप में Sklad, माल और बिक्री लागत। एक निर्देशिका से कई प्रतिष्ठानों के रूप में कपड़े। रजिस्टर के बाएं कनेक्शन के नामकरण के रूप में नामकरण। निरंतरता। आउटपुट (& और ग्रामीण

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

निर्माण पर सर्वर प्रक्रिया पर (विफलता, मानक प्रसंस्करण) नामकरण रहता है। पैरामीटर्स। सेट पैरामीटर वैल्यू ("वर्तमान दिनांक", वर्तमान सत्र दिनांक ()) समाप्ति प्रक्रिया


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

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



&OnServerProcedureOnCreateOnServer(Failure, StandardProcessing)RemainsDate = CurrentSessionDate (); आइटम रहता है। पैरामीटर। सेट पैरामीटर वैल्यू ("वर्तमान दिनांक", अवशेष दिनांक); प्रक्रिया का अंत और ग्राहक प्रक्रिया पर रहता हैDateOnChange(Element) आइटम रहता है। पैरामीटर। सेट पैरामीटर वैल्यू ("वर्तमान दिनांक", अवशेष दिनांक); अंतिम प्रक्रिया

नतीजतन, हमारा डायनामिक लिस्ट फॉर्म किसी भी तारीख के लिए बैलेंस प्रदर्शित कर सकता है।

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

  1. चयन;
  2. सूचियाँ।

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

घर लुकिंग ग्लास से नोट्स

04/21/2014 गतिशील सूची डेटा प्राप्त करना

संस्करण 8.3.6.1977 में लागू किया गया।

हमने गतिशील सूची का उपयोग करके प्रदर्शित डेटा को आसानी से और आसानी से प्राप्त करने की क्षमता को लागू किया है।

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

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

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

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

आप इसे पहले कर सकते थे। लेकिन यह हमेशा आसान नहीं होता। आखिरकार, मूल क्वेरी के पाठ के अलावा, जिसके अनुसार गतिशील सूची काम करती है, आपको उन सभी चयनों, छँटाई और अन्य मापदंडों को जानने की आवश्यकता होती है जो उपयोगकर्ता डेटा प्रदर्शित करने वाली तालिका में अंतःक्रियात्मक रूप से सेट करते हैं।

अब यह कार्य आसानी से हल हो गया है। गतिशील सूची तालिका में दो नई विधियाँ हैं:

  • GetExecutableDataCompositionSchema ();
  • GetExecutableDataComposition सेटिंग्स ().

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

नतीजतन, आपको एक संरचना (या रिपोर्ट) मिलेगी जिसमें कॉलम और पंक्तियाँ होंगी जो एक गतिशील सूची तालिका में प्रदर्शित होती हैं।

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

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

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

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

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


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

यदि हम इस रूप में अपनी प्रोसेसिंग चलाने का प्रयास करते हैं, तो हमें एक त्रुटि मिलेगी:


इसे खत्म करने के लिए, आपको "अवधि" पैरामीटर का मान सेट करना होगा। ऐसा करने के लिए, आप गतिशील सूची के "पैरामीटर" संग्रह की "सेटपैरामीटर वैल्यू" विधि का उपयोग कर सकते हैं। विधि दो पैरामीटर लेती है:
. "पैरामीटर" - प्रकार: स्ट्रिंग; डेटा संरचना पैरामीटर। पैरामीटर या डेटा संरचना पैरामीटर का नाम जिसका मान सेट किया जाना है;
. "मान" - प्रकार: मनमाना। सेट किया जाने वाला मान।
प्रपत्र के "ऑनक्रेटऑनसेवर" हैंडलर में कॉल किया जा सकता है:

क्या आपके पास कोई प्रश्न है, क्या आपको सलाहकार की सहायता की आवश्यकता है?


आइए उपयोगकर्ता को शेष राशि प्राप्त करने की अवधि को बदलने की क्षमता दें। ऐसा करने के लिए, आइए विशेषता और इसके साथ जुड़े "दिनांक" फॉर्म तत्व को जोड़ें:


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


अब, जब तारीख बदलती है, तो शेष राशि अपने आप अपडेट हो जाएगी:




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


स्विच का मान बदलते समय, हम अनुरोध के पाठ को बदल देंगे। ऐसा करने के लिए, हम प्रपत्र तत्व "DisplayQuantityToReceipt" के ईवेंट हैंडलर "ऑनचेंज" का उपयोग करेंगे। हमें विशेषता के मूल्य के आधार पर गतिशील सूची की "QueryText" संपत्ति को बदलने की जरूरत है। चूंकि यह गुण क्लाइंट पर उपलब्ध नहीं है, सर्वर प्रक्रिया के लिए एक कॉल की आवश्यकता है:


किए गए परिवर्तनों का परिणाम: