गतिशील सूची द्वारा डेटा प्रदर्शित करना

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

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

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

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

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

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

  • गतिशील सूची चयन;
  • समूह;
  • छंटाई;
  • सजावट.

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

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

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



नाम के रूप में नामकरण सूची का चयन करें। नाम के रूप में माल, गोदाम के अवशेष। गोदाम के रूप में गोदाम, माल के गोदाम के अवशेष। मात्रा के रूप में शेष मात्रा, निर्देशिका से शेष मात्रा के रूप में नामकरण। नामकरण के रूप में नामकरण सूची बाएं कनेक्शन रजिस्टर संचय। माल के गोदाम में अवशेष (और वर्तमान दिनांक,) माल के रूप में यूएस खजाने के शेष सॉफ्टवेयर संख्या MenclatureList.Link = ProductInWarehousesRemainings.Nomenclature WHERE

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

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


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

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



&OnServerProcedureWhenCreatingOnServer(विफलता, मानक प्रसंस्करण) शेष दिनांक = वर्तमान सत्र दिनांक(); आइटम अवशेष.पैरामीटर.सेटपैरामीटरवैल्यू('वर्तमान दिनांक', शेष दिनांक); प्रक्रिया का अंत और ग्राहक प्रक्रिया पर शेष तिथि जब बदला गया (तत्व) नामकरण शेष। पैरामीटर्स। सेट पैरामीटर वैल्यू ("वर्तमान तिथि", शेष तिथि); प्रक्रिया का अंत

परिणामस्वरूप, हमारा डायनामिक सूची फॉर्म किसी भी तारीख के शेष को प्रतिबिंबित कर सकता है।

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

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

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

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

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

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

कार्यान्वयन

और इसलिए, आइए समस्या को हल करने के लिए आगे बढ़ें। आइए फॉर्म बदलने से शुरुआत करें, फिर हम अंतिम मान प्राप्त करने के लिए एल्गोरिदम का वर्णन करेंगे।

प्रपत्र और इंटरफ़ेस

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

इन विवरणों में दस्तावेज़ों का कुल मूल्य दर्ज किया जाएगा।

गतिशील सूची के पाद लेख में विवरण के मान प्रदर्शित करने के लिए, आपको सूची प्रपत्र के संबंधित तत्व के लिए संबंधित विकल्प को सक्षम करना होगा (निम्न स्क्रीनशॉट देखें)।

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

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

कलन विधि

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

ध्यान दें: गतिशील सूचियों के लिए सेटिंग्स (ऊपर स्क्रीनशॉट देखें) डेटा संरचना प्रणाली (डीसीएस) के तंत्र पर आधारित हैं। तदनुसार, आप उनके साथ समान तरीके से काम कर सकते हैं (प्रोग्रामेटिक रूप से जोड़ना, बदलना, पढ़ना, आदि)।

परिणाम प्राप्त करने के लिए अनुरोध बनाने के चरण इस प्रकार हैं:

1. हमें गतिशील सूची के लिए प्रारंभिक अनुरोध प्राप्त होता है।

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

2. हम अनुरोध शर्तों (अनुभाग "कहां") का पाठ बनाते हैं और इसे मूल अनुरोध में प्रतिस्थापित करते हैं।

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

प्रक्रिया, पारित चयन तत्व (समूह या चयन तत्व) के प्रकार के आधार पर, संबंधित स्थिति पाठ उत्पन्न करती है। एक समूह में सभी स्थितियाँ कोष्ठक से घिरी होती हैं, और समूह में शामिल सभी स्थितियाँ भी कोष्ठक से घिरी होती हैं। अभिव्यक्तियों के बीच की स्थितियाँ मूल समूह पर निर्भर करती हैं (पदानुक्रम में शीर्ष तत्वों के बीच एक "AND" स्थिति रखी जाती है)।

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

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

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

उत्पन्न स्थिति पाठ को मूल गतिशील सूची अनुरोध में जोड़ा जाता है। क्वेरी का परिणाम एक अस्थायी तालिका में रखा गया है।

3. हम पहली क्वेरी को एक अस्थायी तालिका में रखते हैं और आवश्यक समग्र कार्यों के साथ सारांश फ़ील्ड द्वारा समूहीकरण करते हैं।

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

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

समाधान की इष्टतमता

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

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

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

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

ध्यान दें: आउट-ऑफ़-संदर्भ प्रक्रियाओं का उपयोग आपको प्रेषित ट्रैफ़िक के आकार को कई गुना कम करने की अनुमति देता है, क्योंकि संदर्भ-संवेदनशील सर्वर प्रक्रियाओं ("&ऑनसर्वर" निर्देश) के विपरीत, फॉर्म डेटा सर्वर पर प्रसारित नहीं होता है।

निष्कर्ष

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

साथ ही, संचय रजिस्टरों का उपयोग आपको चयन को ध्यान में रखे बिना कुल की गणना करने की अनुमति देगा, क्योंकि सिस्टम पिछले महीनों के लिए पहले से ही गणना की गई कुल के साथ बेहतर ढंग से काम करता है।

फिर भी, समस्याओं को हल करते समय लेख में वर्णित विधि अपनाई जाती है।

डाउनलोड के लिए फ़ाइलें:

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

गतिशील सूची

1. सामान्य जानकारी

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

चावल। 1. गतिशील सूची बनाने के विकल्प

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

चुनना
पसंद
जब डिलिवरी.गुणांक = 1 तब और प्रस्तुति
अन्यथा डिलीवरी। गुणक
अनुपात के रूप में समाप्त करें
से

इसके अलावा, यदि पैरामीटर मान का प्रकार ऑब्जेक्ट विशेषता के प्रकार से भिन्न है (उदाहरण के लिए, सहारा1प्रकार है संख्या, और पैरामीटर मान प्रकार है रेखा), फिर फ़ील्ड को सही ढंग से प्रदर्शित करने के लिए, आपको पैरामीटर मान को स्पष्ट रूप से वांछित प्रकार में डालना होगा:

चुनना
पसंद
जब डिलीवरी.गुणांक = 1 तब एक्सप्रेस (और स्ट्रिंग के रूप में प्रतिनिधित्व (100)) अन्यथा डिलीवरी। गुणक
अनुपात के रूप में समाप्त करें
से
दस्तावेज़.उत्पादों की डिलीवरी कैसे करें

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

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

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

2. सीमाएँ एवं विशेषताएँ

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

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

  • सारणीबद्ध भागों के विवरण के अनुसार.
  • फ़ील्ड देखें.
  • डेटावर्जन फ़ील्ड.
  • पूर्वपरिभाषितडेटानाम फ़ील्ड.
  • लेखा तालिका प्रकार फ़ील्ड का चार्ट।
  • संचय रजिस्टर तालिका के संचलन का फ़ील्ड प्रकार।
  • विशेषता प्रकार योजना तालिका के फ़ील्ड प्रकारमान।
  • फ़ील्ड प्रकार टाइप करें;
  • स्ट्रिंग प्रकार का फ़ील्ड (असीमित लंबाई)।
  • बाइनरीडेटा प्रकार का फ़ील्ड.

● सबकॉन्टो फ़ील्ड के आधार पर सॉर्टिंग और समूहीकरण समर्थित नहीं है<НомерСубконто>और ViewSubconto<НомерСубконто>लेखांकन रजिस्टर के टेबल्स मूवमेंटसबकॉन्टो।
● समग्र कार्यों वाले क्वेरी भाषा अभिव्यक्ति वाले फ़ील्ड द्वारा समूहीकरण समर्थित नहीं है।
● जब मुख्य तालिका का चयन किया जाता है, तो गतिशील सूची क्वेरी में निम्नलिखित प्रतिबंध होते हैं:

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

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

डायनामिक सूची की मुख्य तालिका के रूप में निम्नलिखित तालिकाओं का उपयोग समर्थित नहीं है:

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

● लेखांकन रजिस्टर की उपमहाद्वीप तालिका;
● मूवमेंटसबकॉन्टो तालिका को छोड़कर, लेखांकन रजिस्टर की सभी वर्चुअल तालिकाएँ;
● स्थिर मानों की तालिकाएँ (स्थिर तालिका सहित);
● मुख्य फ़ील्ड के बिना बाहरी डेटा स्रोतों की तालिकाएँ;
● बाहरी डेटा स्रोतों की घन तालिकाएँ;
● संचय रजिस्टर तालिकाएँ:

  • क्रांति तालिका;
  • संतुलन तालिका;
  • टर्नओवर और शेष की तालिका।

● गणना रजिस्टर तालिकाएँ:

  • वास्तविक वैधता अवधि की तालिका;
  • शेड्यूल डेटा;
  • मूल डेटा।

● वस्तुओं के सारणीबद्ध भागों की तालिकाएँ;
● पंजीकरण तालिकाएँ बदलें (डेटा विनिमय तंत्र में प्रयुक्त);
● अनुक्रम तालिकाएँ;
● रूपांतरण तालिकाएँ (आवधिक निपटान तंत्र में प्रयुक्त)।
● एक तालिका जिसका उपयोग किसी क्वेरी में केवल बाहरी जुड़ाव में किया जाता है।

दूसरे शब्दों में, निर्दिष्ट मुख्य तालिका के साथ एक गतिशील सूची सही ढंग से काम करेगी यदि, क्वेरी निष्पादित करने के परिणामस्वरूप,
डेटा स्रोत के रूप में निर्दिष्ट, मुख्य तालिका से प्राप्त पंक्तियों की संख्या में वृद्धि नहीं होती है (लगाए गए चयन को ध्यान में रखते हुए)। यदि, किसी क्वेरी को निष्पादित करने के परिणामस्वरूप, मुख्य तालिका से क्वेरी द्वारा प्राप्त पंक्तियों की संख्या बढ़ जाती है, तो इससे सूची द्वारा प्रदर्शित तालिका के रिकॉर्ड की कुंजी की विशिष्टता का उल्लंघन हो जाएगा। इस स्थिति में, आपको मुख्य गतिशील सूची तालिका का उपयोग अक्षम करना होगा।
गतिशील सूची के साथ काम करते समय, आपको सूची द्वारा प्रदर्शित विवरण तक पहुंच अधिकारों को ध्यान में रखना चाहिए:
● डायनामिक सूची कॉलम से डेटा जो हमेशा उपयोग संपत्ति के साथ चिह्नित है, लेकिन जिसके लिए वर्तमान उपयोगकर्ता के पास दृश्य अधिकार नहीं है, क्लाइंट पक्ष को प्रेषित नहीं किया जाता है। ऐसे कॉलमों के डेटा तक पहुंच (करंटडेटा प्रॉपर्टी और रोवडेटा() विधि का उपयोग करके)
ग्राहक पक्ष पर संभव नहीं है.
● यदि वर्तमान उपयोगकर्ता के पास डायनामिक सूची के मुख्य फ़ील्ड पर दृश्य का अधिकार नहीं है, तो उस डायनामिक सूची से डेटा पुनर्प्राप्त करने से एक्सेस उल्लंघन त्रुटि होती है।
एक गतिशील सूची के लिए जो गणना सूची प्रदर्शित करती है, सूची को इंटरैक्टिव रूप से अनुकूलित करने का कोई विकल्प नहीं है।
डायनामिक सूची के कॉलम और सेटिंग्स की संरचना चयन फ़ील्ड के उपनामों का उपयोग करके क्वेरी फ़ील्ड से जुड़ी होती है। यदि किसी चयन फ़ील्ड के लिए क्वेरी में कोई उपनाम स्पष्ट रूप से निर्दिष्ट नहीं है और फ़ील्ड एक सिस्टम है, तो अंतर्निहित भाषा के अंग्रेजी संस्करण के लिए फ़ील्ड नाम का उपयोग उपनाम के रूप में किया जाता है।
निर्दिष्ट संबंध का अर्थ है कि बदलते समय (या किसी फ़ील्ड के लिए स्पष्ट रूप से उपनाम निर्दिष्ट करना जिसके लिए स्वचालित उपनाम का उपयोग किया गया था)
डायनेमिक सूची डेटा उत्पन्न करने वाले क्वेरी फ़ील्ड का उपनाम, डायनेमिक सूची विशेषता सेटिंग्स खो जाएगी, फॉर्म तत्व प्रदर्शित विवरण "खो" देंगे, डायनेमिक सूची सेटिंग्स गलत हो जाएंगी, आदि।
यदि गतिशील सूची का डेटा स्रोत एक तालिका (नियमित या आभासी) है, जो आपको अवधि के अनुसार चयन निर्धारित करने की अनुमति देता है, तो यदि उपयोगकर्ता ऐसी गतिशील सूची में प्रदर्शन अवधि निर्धारित करता है (कमांड दिनांक अंतराल सेट करें...),
निर्दिष्ट अवधि सीमाएँ चयन मान या वर्चुअल टेबल पैरामीटर के रूप में सेट की जाएंगी। यदि भाषा विस्तार के माध्यम से
डेटा संरचना प्रणाली के लिए क्वेरीज़, वर्चुअल टेबल पैरामीटर के नाम स्पष्ट रूप से निर्दिष्ट किए गए थे - निर्दिष्ट के साथ पैरामीटर
names. तालिकाएँ जिनके लिए डेटा प्रदर्शित करने या संसाधित करने की अवधि को नियंत्रित करना संभव है:
● रजिस्टर टेबल (मुख्य या आभासी), जिसके लिए अवधि के अनुसार चयन करना संभव है (गणना रजिस्टर के लिए - पंजीकरण अवधि के अनुसार);
● दस्तावेज़ों, व्यावसायिक प्रक्रियाओं और कार्यों की मुख्य तालिकाएँ;
● दस्तावेज़ पत्रिकाओं की मुख्य तालिकाएँ;
● मुख्य अनुक्रम तालिकाएँ, अनुक्रम सीमा तालिकाएँ।
गतिशील सूची क्वेरी पैरामीटर एक सरणी या मानों की सूची हो सकती है। हालाँकि, यदि पैरामीटर मानों की एक सूची है, तो सूची में केवल पहला मान चयन मान के रूप में उपयोग किया जाएगा। यदि एक गतिशील सूची पैरामीटर के साथ एक क्वेरी का उपयोग करती है, तो पैरामीटर मानों की प्रारंभिक सेटिंग OnCreateOnServer हैंडलर में की जानी चाहिए।
गतिशील सूची डेटा प्रदर्शित करते समय, निम्नलिखित बातों को ध्यान में रखें:
● जब आप किसी गतिशील सूची के गुणों को प्रोग्रामेटिक रूप से बदलते हैं, तो सूची से जुड़े कमांड पैनल स्वचालित रूप से दोबारा पॉप्युलेट नहीं होते हैं।
इस गतिशील सूची के साथ.
● यदि किसी सेल में ग्रुपिंग मोड के साथ एकाधिक फ़ील्ड को एक समूह में समूहीकृत किया गया है और समूहीकृत फ़ील्ड में एक फ़ील्ड है जो चेकबॉक्स के रूप में प्रदर्शित होती है, तो यह चेकबॉक्स हमेशा परिणामी सेल में पहले प्रदर्शित किया जाएगा (के बाईं ओर) मूलपाठ)।
एक गतिशील सूची में, उन फ़ील्ड के लिए डेटा प्रकार का निर्धारण करते समय जिनकी अभिव्यक्तियों में पैरामीटर, फ़ील्ड या अक्षर शामिल होते हैं, परिणामी प्रकार फ़ील्ड के प्रकार और अक्षर द्वारा निर्धारित किया जाता है। यदि पैरामीटर मान प्रकार परिणामी डेटा प्रकार में शामिल नहीं है, तो इसका मान छोटा कर दिया जाएगा।
उदाहरण के लिए, निम्नलिखित उदाहरण में फ़ील्ड संख्या प्रकार की होगी।

पसंद
जब यह झूठ हो
फिर 5
अन्यथा
&पैरामीटर
अंत

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

पसंद
जब यह झूठ हो
फिर 5
अन्यथा
एक्सप्रेस(&पैरामीटर एएस स्ट्रिंग(100))
अंत

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

3. गतिशील सूची के साथ डेटा पुनर्प्राप्त और कैशिंग करने की विधियाँ

प्रदर्शित करने के लिए डेटा प्राप्त करते समय, एक गतिशील सूची तीन तरीकों में से एक का उपयोग करती है:
1. डेटाबेस से पढ़ना सूची द्वारा एक साथ प्रदर्शित पंक्तियों की संख्या से थोड़ा अधिक (लेकिन 20 से कम नहीं) डेटा तत्वों की संख्या के साथ टुकड़ों में किया जाता है। डेटा सर्वर पर कैश नहीं किया गया है.
2. डेटाबेस से रीडिंग 1,000 डेटा आइटम के पेजों में की जाती है। डेटा सर्वर पर कैश किया जा रहा है. पदानुक्रमित डेटा कैश किया जाता है: प्रत्येक पैरेंट के लिए तत्वों के 2 से अधिक पृष्ठ कैश नहीं किए जाते हैं। प्रत्येक गतिशील सूची में 20 से अधिक पृष्ठों के आइटम कैश नहीं किए जाते हैं। निम्नलिखित तालिकाओं के लिए एक गतिशील सूची द्वारा कैशिंग सक्षम की जाएगी:
● चयन मानदंड;
● मुख्य तालिका और मूवमेंटसबकॉन्टो तालिका को छोड़कर, लेखांकन रजिस्टर की सभी तालिकाएँ;
● मुख्य तालिका को छोड़कर सभी संचय रजिस्टर तालिकाएँ;
● मुख्य तालिका को छोड़कर सूचना रजिस्टर की सभी तालिकाएँ;
● मुख्य तालिका को छोड़कर, गणना रजिस्टर की सभी तालिकाएँ;
● कलाकार द्वारा कार्यों की आभासी तालिका;
● बिना कुंजियों के बाहरी स्रोतों की तालिकाएँ;
● बाहरी स्रोतों से प्राप्त घन।

3. डेटाबेस से रीडिंग 1,000 तत्वों के पृष्ठों में की जाती है। पहला भाग 1 पेज के बराबर है. प्रत्येक अगला भाग 1 पृष्ठ बढ़ जाता है (जब पिछले नमूने का अंत पहुँच जाता है)। "दृश्य बिंदु" प्रदर्शित डेटा के अंत के जितना करीब जाता है, उतना बड़ा नमूना डेटाबेस से पढ़ा जाता है, अंततः सभी प्रदर्शित डेटा के बराबर हो जाता है। डेटा सर्वर पर कैश किया जा रहा है. कैश और डायनेमिक सूची में प्रविष्टियों की अधिकतम संख्या 1,000,000 है।
डायनामिक सूची की मुख्य तालिका द्वारा क्या चुना गया है और डायनामिक रीडिंग प्रॉपर्टी क्या मूल्य लेती है, इसके आधार पर, डेटा पढ़ने की एक या दूसरी विधि का उपयोग किया जाता है:

● निम्नलिखित तालिकाओं में से एक को मुख्य तालिका संपत्ति के मूल्य के रूप में निर्दिष्ट किया गया है: विनिमय योजना, निर्देशिका, दस्तावेजों की सूची, दस्तावेज़ जर्नल, विशेषताओं के प्रकारों की योजना, खातों का चार्ट, गणना प्रकारों की योजना, व्यवसाय प्रक्रिया, कार्य, की तालिका व्यवसाय प्रक्रिया बिंदु:



● निम्नलिखित तालिकाओं में से एक को मुख्य तालिका संपत्ति के मूल्य के रूप में निर्दिष्ट किया गया है: सूचना रजिस्टर की मुख्य तालिका, संचय रजिस्टर, लेखांकन रजिस्टर, गणना रजिस्टर, लेखांकन रजिस्टर की वर्चुअल तालिका मूवमेंटसबकॉन्टो:

● गतिशील पठन गुण:
● स्थापित: विधि 1 का उपयोग किया जाता है (विधियों का विवरण ऊपर दिया गया है)।
● रीसेट: विधि 2 का उपयोग किया जाता है (विधियों का विवरण ऊपर दिया गया है)।

● मुख्य तालिका संपत्ति में निष्पादक द्वारा चयन मानदंड तालिका या कार्य तालिका शामिल है (कलाकार द्वारा कार्य):
● तालिका पंक्ति की पहचान करने वाली कुंजी: लिंक।

● मुख्य तालिका संपत्ति सूचना रजिस्टर SliceFirst या SliceLast की वर्चुअल तालिका निर्दिष्ट करती है:
● तालिका पंक्ति की पहचान करने वाली कुंजी: रिकॉर्डकी।
● डायनामिक रीडिंग प्रॉपर्टी लागू नहीं है।
● विधि 2 का उपयोग किया जाता है (विधियों का विवरण ऊपर दिया गया है)।

● ऊपर सूचीबद्ध तालिकाओं को छोड़कर, मुख्य तालिका संपत्ति वर्चुअल रजिस्टर तालिकाओं में से एक पर सेट है:

● डायनामिक रीडिंग प्रॉपर्टी लागू नहीं है।

● मुख्य तालिका संपत्ति निर्दिष्ट नहीं है, एक मनमानी क्वेरी का उपयोग किया जाता है:
● तालिका पंक्ति की पहचान करने वाली कुंजी: संख्या।
● डायनामिक रीडिंग प्रॉपर्टी लागू नहीं है।
● विधि 3 का उपयोग किया जाता है (विधियों का विवरण ऊपर दिया गया है)।

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

4. गतिशील सूची सेटिंग्स

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


चावल। 2. गतिशील सूची की सशर्त शैली

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

सलाह।यह याद रखना चाहिए कि सॉर्टिंग फ़ील्ड का खराब चयन (साथ ही डेटा का चयन और समूहन) गतिशील नमूने की दक्षता को नकारात्मक रूप से प्रभावित करता है।
एप्लिकेशन डेवलपर के दृष्टिकोण से, डायनामिक सूची सेटिंग्स में कई भाग शामिल होते हैं जो आपस में जुड़े होते हैं। मुख्य संपत्ति जिसके माध्यम से आप डायनामिक सूची की सेटिंग्स को प्रबंधित कर सकते हैं वह है लिंकरसेटिंग्स. इस ऑब्जेक्ट में सेटिंग्स के तीन सेट होते हैं, जो सिस्टम चलने पर, डायनामिक सूची पर लागू अंतिम सेटिंग्स निर्धारित करते हैं:
● सेटिंग्स - कॉन्फ़िगरेशन मोड में बनाई गई सेटिंग्स। डायनामिक सूची की ऑर्डर प्रॉपर्टी, डायनामिक सूची के सेटिंग बिल्डर की सेटिंग्स.ऑर्डर प्रॉपर्टी तक त्वरित पहुंच प्रदान करती है, इसलिए निम्नलिखित निर्माण समतुल्य हैं:
सूची.आदेश और सूची.सेटिंग्सलिंकर.सेटिंग्स.आदेश;
● उपयोगकर्ता सेटिंग्स - ये ऐसी सेटिंग्स हैं जो उपयोगकर्ता द्वारा 1C:एंटरप्राइज़ मोड में बदली जाती हैं;
● निश्चित सेटिंग्स - ये सेटिंग्स अंतर्निहित भाषा से सेट की जाती हैं। इस संपत्ति में चयन मान भी शामिल हैं जो इसके मापदंडों का उपयोग करके फॉर्म में स्थानांतरित किए जाते हैं। डायनामिक सूची गुण चयन, विकल्प, सशर्त उपस्थिति डायनामिक सूची सेटिंग्स बिल्डर की निश्चित सेटिंग्स तक त्वरित पहुंच प्रदान करते हैं। दूसरे शब्दों में, ये कॉल समतुल्य हैं:
सूची.सेटिंग्स संगीतकार.निश्चितसेटिंग्स.चयन और सूची.चयन.
डायनामिक सूची के लिए अंतिम सेटिंग्स बनाते समय, विभिन्न सेटिंग्स विकल्प निम्नानुसार संयुक्त होते हैं:
● यदि किसी भी प्रकार की सेटिंग्स को पूरी तरह से कस्टम के रूप में चिह्नित किया गया है, तो परिणामी सेटिंग्स में कस्टम सेटिंग्स शामिल हैं
(सूची.कंपोजरसेटिंग्स.यूजरसेटिंग्स)। इसके अलावा, यदि किसी भी सेटिंग तत्व को अनुपलब्ध के रूप में चिह्नित किया जाता है, तो इन सेटिंग्स को List.Settings Composer प्रॉपर्टी से परिणामी सेटिंग्स में रखा जाएगा। समायोजन।
● यदि किसी भी प्रकार की सेटिंग्स को पूरी तरह से नहीं, बल्कि तत्व दर तत्व कस्टम के रूप में चिह्नित किया जाता है, तो:
● कस्टम के रूप में चिह्नित आइटम List.SettingsComposer.CustomSettings प्रॉपर्टी से परिणामी सेटिंग्स में शामिल किए जाएंगे।
● अनुपलब्ध के रूप में चिह्नित आइटम List.SettingsComposer.Settings प्रॉपर्टी से परिणामी सेटिंग्स में शामिल किए जाएंगे।
● निश्चित सेटिंग्स (List.SettingsComposer.FixedSettings) परिणामी सेटिंग्स में "जैसा है" जोड़ दी जाती हैं। साथ ही, यह अस्वीकार्य है कि निश्चित और उपयोगकर्ता सेटिंग्स में एक ही नाम की सेटिंग्स होती हैं, उदाहरण के लिए, स्थिति में समान बाएं मान के साथ चयन।

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


चावल। 3. उपयोगकर्ता सेटिंग्स में समावेशन को नियंत्रित करें

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

यदि आपको डायनामिक सूची खोलते समय किसी विशेष सेटिंग्स को लोड करने की आवश्यकता है, तो यह दो तरीकों से किया जा सकता है:
● डायनामिक सूची प्रपत्र पैरामीटर UserSettings का उपयोग करना। इस पैरामीटर में मौजूद डेटा को उपयोगकर्ता की डायनामिक सूची सेटिंग्स में रखा जाएगा।
● डायनामिक सूची प्रपत्र पैरामीटरUserSettingsKey का उपयोग करना। यदि आप फॉर्म खोलते समय इस पैरामीटर को निर्दिष्ट करते हैं, तो निर्दिष्ट कुंजी के साथ सेटिंग्स स्टोरेज में स्थित उपयोगकर्ता सेटिंग्स को डायनामिक सूची में लोड किया जाएगा, जो फॉर्म की मुख्य विशेषता है।

5. गतिशील सूची में खोजें

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


चावल। 4. गतिशील सूची में खोज स्ट्रिंग

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


● यदि संगतता मोड प्रॉपर्टी को उपयोग न करें या संस्करण 8.3.4 से पुराना पर सेट किया गया है - तो मान कमांड पैनल है।
खोज पंक्ति पर इस प्रकार जाएँ:
● कुंजी संयोजन Ctrl+F दबाकर;
● चूहा;
● जब आप एक डायनामिक सूची में टाइप करना शुरू करते हैं (डायनामिक सूची की SearchOnTyping प्रॉपर्टी के मूल्य को ध्यान में रखते हुए)।
● राज्य स्थिति देखें - वर्णन करता है कि दृश्य स्थिति कहाँ प्रदर्शित की जाएगी: कौन से फ़ील्ड खोजे गए और कौन से मान
हर क्षेत्र में खोजा. निम्नलिखित मान ले सकते हैं: ऑटो, कोई नहीं, ऊपर, नीचे


चावल। 5. गतिशील सूची में स्थिति खोजें

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


चावल। 6. गतिशील सूची में खोज का प्रबंधन करना

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

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

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

● प्रत्येक शब्द के लिए, शर्तों का अपना सेट बनता है, जो "OR द्वारा" संयुक्त होते हैं। शर्तों का यह सेट तब उत्पन्न होता है जब तालिका में किसी दिए गए शब्द के लिए पूर्ण-पाठ खोज, जहां से यह फ़ील्ड प्राप्त किया गया था, कम से कम एक ऑब्जेक्ट लौटाता है, या इस फ़ील्ड के लिए पूर्ण-पाठ खोज का उपयोग नहीं किया गया था। स्थितियाँ इस प्रकार बनती हैं:
● स्ट्रिंग प्रकार के फ़ील्ड के लिए, शर्त फ़ील्डनाम %Word% जैसा है।
● संख्या प्रकार के फ़ील्ड के लिए, शर्त का रूप फ़ील्डनाम = मान है, जहां मान एक शब्द है जिसे संख्या प्रकार में परिवर्तित किया जाता है। यदि कास्ट निष्पादित नहीं किया जा सकता है, तो फ़ील्ड खोज निष्पादित नहीं की जाएगी।
● शब्द को वर्तमान सत्र के लिए परिभाषित डिफ़ॉल्ट बूलियन प्रतिनिधित्व में एक सबस्ट्रिंग के रूप में देखा जाता है। यदि खोज शब्द किसी दृश्य में पाया जाता है, तो यह उस दृश्य के अनुरूप मूल्य की खोज करता है जिसमें शब्द पाया गया था। इस मामले में, खोज उन दृश्यों का उपयोग नहीं करती है जो प्रारूप प्रपत्र तत्व गुण का उपयोग करके निर्दिष्ट किए गए हैं।
● दिनांक प्रकार के फ़ील्ड के लिए, स्थिति फ़ील्डनाम>=स्टार्टऑफ़डे(वर्ड) एंडफ़ील्डनाम जैसी दिखती है<=КонецДня(Слово). Если Слово подобно дате, в которой год
एक या दो अंकों से संकेतित होने पर, वर्ष को घटाकर वर्तमान शताब्दी कर दिया जाएगा और यह मान खोज स्थिति में जोड़ दिया जाएगा।
● संदर्भ फ़ील्ड के लिए, संदर्भ दृश्य बनाने के लिए उपयोग किए गए फ़ील्ड पर एक खोज की जाती है। इनमें से प्रत्येक फ़ील्ड में खोजें
ऊपर वर्णित नियमों के अनुसार किया गया। खोज कस्टम डेटा प्रतिनिधित्व बनाने के लिए उपयोग किए गए फ़ील्ड का उपयोग नहीं करती है।
प्रत्येक शब्द के लिए शर्तों का सेट "और" संयुक्त है।
● अग्रणी शून्य वाले मानों के लिए, आप या तो अग्रणी शून्य वाली स्ट्रिंग या अग्रणी शून्य के बिना निर्दिष्ट स्ट्रिंग खोज सकते हैं।
● यदि कोई गतिशील सूची दस्तावेज़ों की सूची या दस्तावेज़ इतिहास प्रदर्शित करती है, तो आपके द्वारा निर्दिष्ट सूची दृश्य अंतराल वांछित गतिशील सूची के लिए दृश्य स्थिति प्रदर्शित करने के लिए आरक्षित प्रपत्र के क्षेत्र में भी प्रदर्शित होता है।
● यदि डायनेमिक सूची की मुख्य तालिका चयन मानदंड है तो वर्तमान मान कमांड द्वारा खोज उपलब्ध नहीं है।
● तालिका में प्रदर्शित होने पर पाए गए स्ट्रिंग टुकड़े हाइलाइट किए जाते हैं।
● एक कॉलम के लिए केवल एक खोज स्ट्रिंग समर्थित है। पहले से खोजे जा रहे कॉलम के लिए नई खोज क्वेरी जोड़ते समय, दो खोज क्वेरी को एक साथ जोड़ने के बजाय खोज अभिव्यक्ति को बदल दिया जाएगा।
● यदि फॉर्म में डायनामिक सूची प्रदर्शित करने वाली तालिका (फॉर्म एलिमेंट एडिशन सोर्स प्रॉपर्टी) से जुड़े फॉर्म सर्च स्ट्रिंग डिस्प्ले का फॉर्म तत्व जोड़ नहीं है, तो Ctrl + F कुंजी संयोजन दबाने से खोज संवाद खुल जाता है।


चावल। 7. खोज संवाद

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

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

6. डेटा को गतिशील सूची द्वारा प्रदर्शित करना

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

स्कीमा = Elements.List.GetExecutableDataCompositionSchema();
सेटिंग्स = Items.List.GetExecutableDataCompositionSettings();
लेआउटलिंकर = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(स्कीम, सेटिंग्स);
कंपोजीशनप्रोसेसर = newDataCompositionProcessor;
लेआउटप्रोसेसर.इनिशियलाइज़(लेआउटलेआउट);
आउटपुटप्रोसेसर = नया आउटपुटप्रोसेसरDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

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

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

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

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


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

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


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

क्या आपका कोई प्रश्न है या किसी सलाहकार की मदद चाहिए?


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


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


अब जब तारीख बदलेगी, तो शेष राशि स्वचालित रूप से अपडेट हो जाएगी:




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


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


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



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

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

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

आइये इसके गुणों के बारे में जानें और देखें कि इसमें क्या है।

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

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

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

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

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

सबसे पहले, आइए शेष राशि और कीमतों के साथ आवश्यक अनुरोध बनाएं। उस तरह:

"सेटिंग्स" टैब

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

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

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

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

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