डेटा संरचना आरेख बनाने के उपयोगी उदाहरण। देखें अन्य शब्दकोशों 1s SKD अर्थ में "SKD" क्या है

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

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

एक रिपोर्ट बनाना और विशेषताएँ स्थापित करना

आइए एक सरल रिपोर्ट बनाएं. इसमें निम्नलिखित क्वेरी के साथ एक डेटा सेट होगा:

QueryText = "चयन करें | संगठन . लिंक एएस संगठन,| संगठनों| . टिन, |. चेकप्वाइंटसे

निर्देशिका" ;

रिपोर्ट संरचना केवल क्वेरी में चयनित सभी फ़ील्ड के साथ विस्तृत रिकॉर्ड आउटपुट करेगी। डिज़ाइनर में, रिपोर्ट संरचना सेट करना इस तरह दिखेगा:

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

  1. सॉफ्ट स्टार्टर्स सहित अधिकांश मानक कॉन्फ़िगरेशन में विशेषता तंत्र का संचालन। ऐसा करने के लिए, कई कॉन्फ़िगरेशन ऑब्जेक्ट का उपयोग किया जाता है।
  2. विशेषताओं के प्रकार की योजना "वस्तुओं के गुण"।

सूचना का रजिस्टर "वस्तु गुणों के मूल्य"।

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

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

इसके बाद, डेटा सेट अनुरोध को ऑब्जेक्ट विशेषताओं को प्राप्त करने के निर्देशों के साथ पूरक किया जाएगा।

"चयन करें | संगठन . लिंक एएस संगठन,| संगठनों| . टिन, |. चेकप्वाइंट| निर्देशिका | . संगठन एएस संगठन // जोड़ना। विशेषताएँ प्राप्त करने के निर्देश|(विशेषताएँ | | प्रकार | (निर्देशिका। संगठन) | विशेषताओं के प्रकार विशेषताओं के प्रकारों की योजना। वस्तु गुण | फ़ील्ड कुंजी लिंक | फ़ील्ड का नाम नाम | उड़ान प्रकार मान प्रकार मान | विशेषताएँ मूल्य सूचना रजिस्टर। वस्तु संपत्ति मान | फ़ील्ड वस्तु वस्तु"

पोलेविडा संपत्ति

उपयोगी मूल्य अर्थ)

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

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

विशेषताओं के साथ प्रोग्रामेटिक कार्य रिपोर्ट फॉर्म खोलते समय, निम्नलिखित प्रोग्राम कोड निष्पादित करें:करंटसेटिंग्स = कंपोजरसेटिंग्स। सेटिंग्स; संग्रह संग्रह = वर्तमान सेटिंग्स। चयन. तत्व; // अतिरिक्त द्वारा चयन जोड़ें। आइटम विवरण के लिए "मुख्य गोदाम". [मुख्य गोदाम] // अतिरिक्त द्वारा चयन जोड़ें। नामकरण विवरण के लिए "प्लेसमेंट का देश"नोवेल = संग्रह चयन। जोड़ें(प्रकार(" चयन एलिमेंटडेटा लेआउट" ) ) ; NewEl.ComparisonType = DataCompositionComparisonType. बराबर; NewEl.LeftValue = . [पोस्टिंग का देश]. [मुख्य गोदाम] // अतिरिक्त द्वारा चयन जोड़ें। नामकरण विवरण के लिए "प्लेसमेंट का देश"" ) ; NewEl. उपयोग = गलत ; // अतिरिक्त द्वारा चयन जोड़ें। आइटम विवरण के लिए "संबंधित प्रतिपक्ष"" ) ); NewEl.ComparisonView = DataCompositionComparisonView. बराबर; NewEl.LeftValue = NewDataCompositionField("संगठन

. [संबंधित प्रतिपक्ष]

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

NewDataCompositionField('संगठन // अतिरिक्त द्वारा चयन जोड़ें। आइटम विवरण के लिए "संबंधित प्रतिपक्ष"" ) ,

अर्थात् पाठ "[लिंक्ड प्रतिपक्ष]"। यदि हम इस प्रकार लिखें:

NewDataCompositionField('संगठन . संबंधित प्रतिपक्ष" ) ,

फिर रिपोर्ट चलाते समय, एसीएस गलत तरीके से लेआउट फ़ील्ड का पता लगाएगा। सेटिंग्स में, चयन फ़ील्ड को गलत के रूप में हाइलाइट किया जाएगा:

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

NewDataCompositionField(" . " )

इस प्रकार, हम रिपोर्ट सेटिंग्स सेट कर सकते हैं, भले ही फ़ील्ड एसीएस डिज़ाइनर में उपलब्ध न हों।

निष्कर्ष

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

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

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

समाधान का सार एसीएस अभिव्यक्ति भाषा फ़ंक्शन का उपयोग करना है गणनाअभिव्यक्ति()जोड़े गए परिकलित फ़ील्ड में जिसे मैंने कॉल किया था डेल्टा. फ़ंक्शन में निम्नलिखित पैरामीटर हैं:

पैरामीटर:

  • अभिव्यक्ति. प्रकार डोरी;
  • समूहन. प्रकार डोरी;
  • गणना प्रकार. प्रकार डोरी;
  • शुरू
  • अंत. एक स्ट्रिंग जिसमें विकल्पों में से एक है;
  • छंटाई. रेखा;
  • पदानुक्रमित छँटाई;
  • ऑर्डर के समान मूल्यों को संसाधित करना

हम पैरामीटर 4 और 5 में रुचि रखते हैं ( शुरूऔर अंत). अभिव्यक्ति इस तरह दिखेगी:

शून्य है((गणना अभिव्यक्ति("मूल्य", "पिछला", "पिछला") - मूल्य), 0)

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

स्प्रेडशीट दस्तावेज़ सेल में मानों की एक तालिका रखें

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

ऐसा करने के लिए आपको फ़ंक्शन का उपयोग करना होगा: अभिव्यक्तिविथग्रुपवैल्यूटेबल की गणना करें() , जिसमें पैरामीटर हैं:

  • अभिव्यक्ति- गणना की जाने वाली अभिव्यक्ति। स्ट्रिंग टाइप करें. एक पंक्ति में अल्पविराम द्वारा अलग किए गए कई भाव हो सकते हैं। प्रत्येक अभिव्यक्ति के बाद एक वैकल्पिक हो सकता है कीवर्ड AS मान तालिका कॉलम का नाम है। उदाहरण के लिए: "प्रतिपक्ष, राशि (राशि टर्नओवर) बिक्री की मात्रा के रूप में।"
  • फ़ील्डएक्सप्रेशनसमूह- अल्पविराम द्वारा अलग किए गए फ़ील्ड समूहीकरण की अभिव्यक्तियाँ। उदाहरण के लिए, "प्रतिपक्ष, पार्टी";
  • अभिलेखों का चयन- विवरण रिकॉर्ड पर लागू एक अभिव्यक्ति। उदाहरण के लिए, "ध्वज हटाएँ = ग़लत";
  • समूहों का चयन- चयन समूह रिकॉर्ड पर लागू किया गया। उदाहरण के लिए: "राशि(राशि टर्नओवर) > &पैरामीटर1"।

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

स्तंभों को क्रमांकित करें

आप एक्सेस कंट्रोल सिस्टम में कॉलमों को नंबर कैसे दे सकते हैं इसका एक उदाहरण।

समाधान का सार:

  1. हम एक क्वेरी बनाते हैं जिसमें हम क्वेरी परिणाम की पंक्तियों को एक निश्चित अधीनता के भीतर क्रमांकित करते हैं
  2. हम परिणाम को एक क्रॉस-टैब में प्रदर्शित करते हैं

महत्वपूर्ण!

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

परिणाम प्राप्त करने के लिए, आपको अभिव्यक्ति के साथ एक परिकलित फ़ील्ड बनाने की आवश्यकता है "कर्मचारी" + प्रारूप(एनपीपी,"सीएचटी=3; सीएचवीएन=")और परिकलित फ़ील्ड पूरा नाम, जिसमें आप बस कर्मचारी को रख सकते हैं, फिर हम फ़ील्ड डालते हैं पूरा नामएक अभिव्यक्ति के साथ एक संसाधन के लिए अधिकतम(पूरा नाम)या बस पूरा नाम- कोई फर्क नहीं

रंग हाइलाइटिंग के साथ वैकल्पिक समूह

मिस्ट पर या उसी 1Cskd.ru पर कहीं हाइलाइट करने के तरीके के बारे में एक प्रश्न था विभिन्न रंगतार समूह बनाते हैं

यह एक परिकलित फ़ील्ड बनाकर प्राप्त किया जाता है:

अभिव्यक्ति की गणना करें ("मात्रा (विभिन्न नामकरण)", "पहला", "पिछला", "एक साथ") % 2

हम नामकरण फ़ील्ड के विभिन्न "समूहों" की संख्या की गणना करते हैं; समूहों की गणना पैरामीटर प्रोसेसिंग आइडेंटिकल ऑर्डरवैल्यूज़ = "टुगेदर" का मान सेट करके की जा सकती है।

दो से विभाजन के शेष से यह स्पष्ट हो जाएगा कि समूह सम है या नहीं, तदनुसार, हम शर्त के साथ एक सशर्त डिजाइन तत्व बनाते हैं मैदान = 1

विशेषताओं द्वारा रहता है. कोष्ठक में मात्रा के साथ एक पंक्ति में विशेषताएँ

उसी 1CSkd.ru पर एक विषय था जिसमें लेखक एक रिपोर्ट बनाने में मदद मांगता है, जहां एक कॉलम में उनकी मात्रा के साथ विशेषताओं (जूते के आकार) की एक सूची की आवश्यकता होती है। http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

यह उसी फ़ंक्शन का उपयोग करके हासिल किया गया है कैलकुलेटएक्सप्रेशनविथग्रुपअरे()

इस उदाहरण में फ़ंक्शन इस तरह दिखता है:

कैलकुलेटएक्सप्रेशनविथग्रुपएरे ("नामकरण की विशेषता। नाम +
""("" + प्रारूप(शेष मात्रा,""CHG=0"") + "")""",
,
"मूल्यभरण(नामकरण विशेषता)")

तीसरा पैरामीटर चयन है, यह आपको खाली स्ट्रिंग "" प्रस्तुत करने से बचने की अनुमति देता है - तदनुसार, आप विशेषताओं के बिना अवशेष नहीं देखेंगे

पंक्ति = संख्या कुंजी के साथ दो तालिकाओं को जोड़ें

या एसकेडी में किसी संख्या प्रकार के मान को स्ट्रिंग में बदलने का विकल्प

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

किसी संख्या को स्ट्रिंग में बदलने के लिए, बस एसीएस डेटा संरचना प्रणाली के अभिव्यक्ति भाषा फ़ंक्शन का उपयोग करें रेखा()या प्रारूप()

किसी स्ट्रिंग को संख्या में बदलने के लिए आप फ़ंक्शन का उपयोग कर सकते हैं गणना()

संख्या के अनुसार स्ट्रिंग द्वारा क्रमबद्ध करें

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

परिणाम इस तरह दिखेगा:

यह एक परिकलित फ़ील्ड बनाकर और ACS अभिव्यक्ति भाषा फ़ंक्शन का उपयोग करके प्राप्त किया जाता है गणना()

  1. एक परिकलित फ़ील्ड बनाएँ टैबनंबरनंबर, अभिव्यक्ति के साथ: गणना करें(कर्मचारी.कोड)
  2. इस फ़ील्ड के अनुसार क्रमबद्ध करें

अनिवार्य रूप से यह SKD अभिव्यक्ति भाषा फ़ंक्शन का उपयोग करके एक स्ट्रिंग को एक संख्या में परिवर्तित कर रहा है गणना()

मैं आपको "एसीएस पर वीडियो ट्यूटोरियल" देखने की भी सलाह देता हूं (Google पर आसानी से खोजा जा सकता है)

विकास करते समय, मैं एक परिवर्तित का उपयोग करता हूं।

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

ऑब्जेक्ट मॉड्यूल खोलें और परिणाम लिखते समय एक पूर्वनिर्धारित प्रक्रिया बनाएं (दस्तावेज़ परिणाम, डिक्रिप्शन डेटा, मानक प्रसंस्करण)

इस प्रक्रिया के अंदर हम डेटा एकत्र करेंगे और एक रिपोर्ट तैयार करेंगे।
परिणाम लिखते समय प्रक्रिया में, हम मानक प्रसंस्करण को अक्षम कर देते हैं। मानक प्रसंस्करण = ग़लत;
फिर हम मनमाने ढंग से मूल्यों की एक तालिका बनाते हैं। मान तालिका के स्तंभों के नाम ACS में डेटा सेट के भविष्य के फ़ील्ड से मेल खाने चाहिए:


उदाहरण के लिए, आइए डेटा की तीन पंक्तियाँ जोड़ें। इसके बाद, हम चरण दर चरण रिपोर्ट आउटपुट बनाते हैं।

  • आरेख से हमें डिफ़ॉल्ट सेटिंग्स मिलती हैं।

  • हम डिक्रिप्शन डेटा को उपयुक्त वेरिएबल पर भेजते हैं।

  • हम लेआउट बिल्डर का उपयोग करके लेआउट बनाते हैं।

  • हम आरेख, सेटिंग्स और डिकोडिंग डेटा को लेआउट लेआउट में स्थानांतरित करते हैं।

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

  • स्प्रेडशीट दस्तावेज़ का फ़ील्ड साफ़ करें।

  • हम परिणाम को एक स्प्रेडशीट दस्तावेज़ में प्रदर्शित करते हैं।
परिणाम निम्न कोड है:
डेटालेआउटस्कीम = गेटलेआउट( "मेनडाटाकंपोजिशनस्कीमा"); //सेटिंग्स = डेटाकंपोजिशनस्कीम.डिफॉल्टसेटिंग्स;सेटिंग्स = सेटिंग्सकंपोजर. GetSettings(); डिक्रिप्शनडेटा = newDataCompositionDecryptionData;लेआउटलिंकर = newDataLayoutLayoutLinker;

लेआउटलेआउट = लेआउटलोकेटर. निष्पादित(डेटाकंपोजिशनस्कीम, सेटिंग्स, डिक्रिप्शनडेटा); एक्सटर्नलडेटासेट = नई संरचना("मूल्य तालिका उदाहरण"

, TZOutput);

डेटाकंपोजिशनप्रोसेसर = न्यूडेटाकंपोजिशनप्रोसेसर;

डेटाकंपोज़िशनप्रोसेसर। इनिशियलाइज़ (लेआउटलेआउट, एक्सटर्नलडेटासेट, डिक्रिप्शनडेटा);


दस्तावेज़परिणाम. स्पष्ट(); आउटपुटप्रोसेसर = नया आउटपुटप्रोसेसरDataCompositionResultInTabularDocument;

आउटपुट प्रोसेसर. SetDocument(DocumentResult);

आउटपुट प्रोसेसर. आउटपुट(डेटाकंपोज़िशनप्रोसेसर);

एक लेआउट आरेख लेआउट जोड़ना। हम नाम को डिफ़ॉल्ट के रूप में छोड़ सकते हैं.

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

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

तो, आइए विशिष्ट बातों पर गौर करें। पहला कॉलम: प्रकार- यहां हम ऑब्जेक्ट के प्रकार का चयन करते हैं जिससे विशेषताएँ जुड़ी होंगी, उदाहरण के लिए "DirectoryLink.Nomenclature"

इसका मतलब यह है कि अब निर्दिष्ट प्रकार की सभी वस्तुओं के लिए संपत्ति मूल्य प्राप्त करना संभव होगा।

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

कॉलम में विशेषताओं के प्रकारहमें उस इन्फोबेस तालिका का चयन करना होगा आवश्यक प्रकारविशेषताएँ, हमारे उदाहरण में यह "विशेषताओं के प्रकारों की योजना, वस्तुओं के गुण" होगी।

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

अब मूल्यों के स्रोत की ओर बढ़ते हैं। हमारे मूल्यों का स्रोत सूचना रजिस्टर "ObjectPropertyValues" होगा, इसलिए हम कॉलम में चयन करते हैं मूल्यों का स्रोतमेज़, और कॉलम में गुण मान- "सूचना रजिस्टर। वस्तु गुणों के मूल्य।" स्तंभों में वस्तु, संपत्ति, अर्थ, उपयुक्त रजिस्टर फ़ील्ड का चयन करें वस्तु, संपत्ति, अर्थ.

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

हम नामकरण समूह के विवरण की सूची का विस्तार करते हैं और... हमें वहां कोई संपत्ति नहीं दिखती है:

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

तो, आइए वही सेटिंग खोलें, लेकिन एंटरप्राइज़ मोड में:

जैसा कि आप देख सकते हैं, हमने नया "विवरण" और संपत्ति "जोड़ी है" ब्रांड” बाह्य रूप से सामान्य निर्देशिका विवरण से भिन्न नहीं है। और संपत्ति " उत्पाद का प्रकार" वर्गाकार कोष्ठक में है क्योंकि संपत्ति प्रतिनिधित्व में एक स्थान होता है।

हालाँकि, हमारे पास संपत्ति भी है ” समझौते का प्रकार"जो निर्देशिका से जुड़ा हुआ है" करार"और इसका इससे कोई लेना-देना नहीं है" नामपद्धति“. यदि सेटिंग में उपयोग नहीं किया गया है" समझौते का प्रकार” तब सब कुछ सही ढंग से काम करेगा, लेकिन यदि आप इसे चुनते हैं, तो परिणामस्वरूप यह अधूरा हो जाएगा, क्योंकि नामकरण में एक भी आइटम में यह संपत्ति वास्तव में नहीं भरी गई है। लेकिन आप अनावश्यक संपत्तियों को कैसे फ़िल्टर कर सकते हैं ताकि वे आपके पैरों के नीचे न आएँ?

ऐसा करने के लिए, हमें "विशेषताएँ" टैब पर, क्वेरी डिज़ाइनर में दृश्य स्रोत सेटिंग को बदलने की आवश्यकता है। याद रखें, लेख की शुरुआत में मैंने आपको यह बताने का वादा किया था कि व्यू सोर्स प्रकार की आवश्यकता क्यों है अनुरोध? अभी ऐसा ही एक मामला है. दृश्य स्रोत प्रकार को इसमें बदलें अनुरोध. विशेषताओं के प्रकार के कॉलम में, "[...]" बटन पर क्लिक करें और एक नई क्वेरी डिज़ाइनर विंडो खुलती है।

वहां निम्नलिखित क्वेरी दर्ज करें:

चुनना
वस्तु गुण.Ref.
वस्तु गुण। नाम + "(संपत्ति)" नाम के रूप में,
वस्तु गुण. प्रकार मान
से
वस्तुओं के गुणों के प्रकार की योजना वस्तुओं के गुणों के रूप में
कहाँ
वस्तु गुण। गुणों का उद्देश्य = मूल्य (विशेषताओं के प्रकार की योजना। वस्तु श्रेणियों के गुणों का उद्देश्य। निर्देशिका_नामपद्धति)
और (ObjectProperties.DeletionMark नहीं)
और (ऑब्जेक्टप्रॉपर्टीज़.श्रेणी नहीं)

स्तंभों में मुख्य क्षेत्र, नाम फ़ील्डऔर मान प्रकार फ़ील्ड, उपयुक्त चयन फ़ील्ड चुनें: जोड़ना, नामऔर टाइपवैल्यू. यह इस प्रकार निकलेगा:

अब, जब हम रिपोर्ट स्थापित करने के लिए आगे बढ़ते हैं, तो नामकरण विवरण की सूची में तस्वीर बदल जाएगी:

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

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

विन्यासकर्ता उन विवरणों को प्रदर्शित करेगा जिन्हें वह लाल क्रॉस के साथ अनुपलब्ध के रूप में नहीं समझता है:

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

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


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

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

कैलकुलेटएक्सप्रेशनविथग्रुपएरे ("राशि(राशि टर्नओवर)", "प्रतिपक्ष")
लेआउट बिल्डर आउटपुट के लिए निम्नलिखित अभिव्यक्ति उत्पन्न करेगा:

कनेक्टरोज़(ऐरे(ऑर्डर(कैलकुलेटएक्सप्रेशनविथग्रुपिंगवैल्यूटेबल("देखें(Sum(DataSet.SumTurnover)),Sum(DataSet.SumTurnover)",,"DataSet.Account"),"2")))

पैरामीटर:

प्रकार: स्ट्रिंग. मूल्यांकन की जाने वाली अभिव्यक्ति. स्ट्रिंग, उदाहरण के लिए, राशि(राशि टर्नओवर)।

प्रकार: स्ट्रिंग. समूहीकरण फ़ील्ड अभिव्यक्तियाँ - समूहीकरण फ़ील्ड्स की अभिव्यक्तियाँ, अल्पविराम द्वारा अलग की गईं। उदाहरण के लिए, ठेकेदार, पार्टी।

प्रकार: स्ट्रिंग. विस्तृत रिकॉर्ड पर लागू चयन का वर्णन करने वाली एक अभिव्यक्ति। अभिव्यक्ति समग्र कार्यों के उपयोग का समर्थन नहीं करती है। उदाहरण के लिए, विलोपनध्वज = गलत।

प्रकार: स्ट्रिंग. समूह रिकॉर्ड पर लागू चयन का वर्णन करने वाली एक अभिव्यक्ति। उदाहरण के लिए, राशि(राशि टर्नओवर) > &पैरामीटर1।
उदाहरण:

अधिकतम(गणनाअभिव्यक्तिविथग्रुपअरे("राशि(राशि टर्नओवर)", "प्रतिपक्ष"));

फ़ंक्शन सिंटैक्स का विस्तृत विवरण http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582 पर पाया जा सकता है
अब गणना के लिए, "ऑर्डर" फ़ील्ड को डुप्लिकेट करें विभिन्न अर्थनिम्नलिखित अभिव्यक्तियों का उपयोग करके "गणना करें..." ध्यान दें कि उपरोक्त प्रत्येक स्तर समूहों के नीचे के स्तरों के मानों का उपयोग करता है।

परिणामस्वरूप, हमें निम्नलिखित निर्माण मिलता है: