अंतर्निहित भाषा अनुरोध ऑब्जेक्ट के साथ काम करने की प्रक्रिया। "भाषा" कॉन्फ़िगरेशन ऑब्जेक्ट का उद्देश्य क्या है?

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

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

· सॉफ्ट टाइपिंग (वेरिएबल का प्रकार उसमें मौजूद मूल्य के प्रकार से निर्धारित होता है और ऑपरेशन के दौरान बदल सकता है);

· एप्लिकेशन प्रकारों के सॉफ़्टवेयर विवरण की कमी (वे कॉन्फ़िगरेशन ऑब्जेक्ट जोड़ते समय बनाए जाते हैं);

· घटना-उन्मुख अंतर्निहित भाषा;

· सभी ऑपरेटरों के पास रूसी और अंग्रेजी दोनों वर्तनी हैं, जिनका उपयोग एक साथ किया जा सकता है।

कॉन्फ़िगरेशन मॉड्यूल

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

निम्नलिखित प्रकार के सॉफ़्टवेयर मॉड्यूल प्रतिष्ठित हैं:

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

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

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

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

· प्रपत्र मॉड्यूल. प्रत्येक फॉर्म का अपना मॉड्यूल होता है, जो फॉर्म के व्यवहार और उससे की जाने वाली क्रियाओं को परिभाषित करता है, उदाहरण के लिए, अन्य फॉर्म खोलना। घटनाएँ सभी रूपों के लिए उठाई जाती हैं खोलने से पहले, खोलने के दौरान, बंद करने से पहलेऔर समापन पर.

प्रसंग

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

· वैश्विक संदर्भ, अन्य सभी संदर्भों में उपलब्ध, निम्नलिखित भाग शामिल हैं:

§ वैश्विक संदर्भ के गुण, तरीके और घटनाएं (उदाहरण के लिए, संपत्ति कार्य दिनांक);

§ सिस्टम गणना और सिस्टम मूल्य सेट (उदाहरण के लिए, कोडडायलॉग लौटेंऔर प्रतीक).

· सामान्य मॉड्यूल संदर्भवैश्विक संदर्भ और सामान्य मॉड्यूल के स्थानीय संदर्भ द्वारा गठित (यानी, सामान्य मॉड्यूल के भीतर परिभाषित प्रक्रियाएं और कार्य)। एक सामान्य मॉड्यूल के संदर्भ में, अन्य सामान्य मॉड्यूल की निर्यातित प्रक्रियाएं और कार्य उपलब्ध हैं। एप्लिकेशन मॉड्यूल के निर्यातित चर, प्रक्रियाएं और फ़ंक्शन उपलब्ध नहीं हैं।

· किसी एप्लिकेशन मॉड्यूल या बाहरी कनेक्शन मॉड्यूल के संदर्भ मेंसामान्य मॉड्यूल की निर्यातित प्रक्रियाएँ और कार्य उपलब्ध हैं।

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

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

संदर्भों के बीच संबंध को योजनाबद्ध रूप से दिखाया गया है चावल। 2.पर चावल। 3जर्नल फॉर्म मॉड्यूल और दस्तावेज़ मॉड्यूल की संभावित बातचीत को दर्शाया गया है।


प्रक्रियाएं और कार्य

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

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

उदाहरण 1:

प्रक्रिया गणना()

राशि=मूल्य*मात्रा;

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

गणना(); // प्रक्रिया को कॉल करें

उदाहरण 2:

पेरेम ग्लोब;

// प्रक्रिया का विवरण

प्रक्रिया गणना (Par1, Par2, ParZ) निर्यात

ग्लोब = ग्लोब + Par1 + Par2 + ParZ;

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

गणना(5, 6, 7); // प्रक्रिया को कॉल करें

उदाहरण 3:

पेरेम ग्लोब;

// फ़ंक्शन का विवरण

फ़ंक्शन गणना (Par1, Par2, ParZ) निर्यात

लोक = ग्लोब + Par1 + Par2 + ParZ;

रिटर्न लॉक;

अंतकार्य

रेस = कैल्क(5, 6, 7); // फ़ंक्शन कॉल

डेटा के प्रकार

संख्या, स्ट्रिंग, दिनांक, बूलियन, अपरिभाषित, शून्य (डेटाबेस तालिकाओं में अनिर्दिष्ट मानों के लिए)

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

चर घोषित करना

निम्नलिखित मामलों में प्रोग्राम में वेरिएबल दिखाई देते हैं:

· वेरिएबल ऑपरेटर का उपयोग करके घोषित किए जाने के बाद।

पेरेम<Имя_переменной>[निर्यात करना];

चर ए, बी;

· असाइनमेंट ऑपरेटर के बाईं ओर वेरिएबल नाम की पहली नियुक्ति के बाद।

उदाहरण:

· संपादित संवाद तत्वों के पहचानकर्ताओं के नाम निर्धारित करते समय;

· प्रक्रियाओं के औपचारिक पैरामीटर निर्धारित करते समय।

ढालना

टाइप कास्टिंग स्पष्ट या अंतर्निहित हो सकती है।

स्पष्ट कास्टिंग के लिए, निम्नलिखित फ़ंक्शन मौजूद हैं: संख्या, स्ट्रिंग, दिनांक, बूलियन। भावों का मूल्यांकन करते समय सिस्टम द्वारा अंतर्निहित प्रकार की कास्टिंग स्वचालित रूप से की जाती है।

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

ए = "महीना" + महीना संख्या;

निर्देशिका

निर्देशिकाओं के साथ कार्य निम्नलिखित वस्तुओं का उपयोग करके किया जाता है:

· निर्देशिकाएँ प्रबंधक।सभी कॉन्फ़िगरेशन संदर्भ पुस्तकों तक पहुंच प्रदान करता है। इस ऑब्जेक्ट के गुण निर्देशिकाओं के नाम से मेल खाते हैं और इसमें डायरेक्टरीमैनेजर प्रकार की ऑब्जेक्ट शामिल हैं।

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

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

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

· निर्देशिका चयन.निर्देशिका तत्वों के माध्यम से पुनरावृति करने की क्षमता प्रदान करता है। नमूनाकरण प्रत्यक्ष या श्रेणीबद्ध हो सकता है।

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

1सी:एंटरप्राइज़ प्रणाली में?

1. कॉन्फ़िगरेशन और डेटाबेस टेक्स्ट को प्रारूप में संग्रहीत किया जाता हैयूनिकोड

3. कोई सही उत्तर नहीं है

6.75 कॉन्फ़िगरेशन और डेटाबेस टेक्स्ट को किस उद्देश्य से प्रारूप में संग्रहीत किया जाता हैयूनिकोड?

1. यूनिकोड प्रारूप सूचना प्रस्तुति की अपरिवर्तनीयता (ऑपरेटिंग सिस्टम सॉफ़्टवेयर प्लेटफ़ॉर्म की स्वतंत्रता) सुनिश्चित करता है

2. प्रारूपयूनिकोड आपको 1सी:एंटरप्राइज़ सिस्टम में विभिन्न भाषाओं का समर्थन करने की अनुमति देता है

3. कोई सही उत्तर नहीं है

6.76 अंतर्राष्ट्रीयकरण तंत्र निर्धारित. ..

1. प्रौद्योगिकी मंच 1सी:एंटरप्राइज़

2. लागू समाधान

3. उत्तर 1 और 2 सही हैं

4. कोई सही उत्तर नहीं है

6.77 स्थानीयकरण कोड क्या है?

1. एक स्ट्रिंग जिसमें एक भाषा कोड और एक देश कोड होता है जो दुनिया के कुछ क्षेत्र की पहचान करता है

2. सॉफ्टवेयर उत्पाद कोड (पंजीकरण फॉर्म पर दर्शाया गया है, डिलीवरी किट में शामिल दस्तावेज)

3. रूपांतरण के लिए प्रारूप स्ट्रिंग विकल्प

4. उसका उत्तर सही है

6.78 क्या यह सच है कि 1सी:एंटरप्राइज़ 8 में किसी भी पाठ्य सूचना में एक साथ विभिन्न भाषाओं के अक्षर शामिल हो सकते हैं?

1. हां, चूंकि सभी कॉन्फ़िगरेशन और डेटाबेस टेक्स्ट प्रारूप में संग्रहीत हैंयूनिकोड

2. इन्फोबेस बनाते समय निर्दिष्ट सेटिंग्स के आधार पर

3. केवल तभी जब यह कॉन्फ़िगरेशन द्वारा प्रदान किया गया हो

6.79 "भाषा" कॉन्फ़िगरेशन ऑब्जेक्ट का उद्देश्य क्या है?

1. विभिन्न भाषाओं में प्रोग्राम इंटरफ़ेस बनाना

2. विभिन्न भाषाओं में टेक्स्ट दस्तावेज़ बनाना

3. ऐसी कोई वस्तु 1C: एंटरप्राइज़ 8 में मौजूद नहीं है

6.80 मैं कॉन्फ़िगरेशन को देखने (संपादित करने) के लिए भाषा कैसे बदल सकता हूं?

1. "NUM" बटन के दाईं ओर स्थिति पट्टी में स्थित भाषा चयन बटन का उपयोग करना

2. मेनू आइटम "कॉन्फ़िगरेशन - कॉन्फ़िगरेशन संपादन भाषा" के माध्यम से

3. 1 सी: एंटरप्राइज़ में यह संभावना मौजूद नहीं है

4. वेरपा उत्तर 1 और 2 देता है

6.81 अंतर्निहित भाषा ऑपरेटरों की वर्तनी क्या है?

1. केवल रूसी लेखन

3.

6.82 क्या एक स्रोत पाठ में रूसी और अंग्रेजी लेखन में अंतर्निहित भाषा ऑपरेटरों का उपयोग करना संभव है?

1. केवल विशेष विन्यासक सेटिंग्स के साथ

2. हाँ, इसके लिए किसी विन्यासकर्ता सेटिंग को बदलने की आवश्यकता नहीं है

3. नहीं, चूंकि कॉन्फ़िगरेशन गुणों में अंतर्निहित भाषा विकल्प सेट है

6.83 अंतर्निर्मित भाषा का उद्देश्य क्या है?

1. डिफ़ॉल्ट प्रोग्राम इंटरफ़ेस निर्धारित करने के लिए

2. किसी लागू कार्य के कामकाज के लिए (कॉन्फ़िगरेशन विकास चरण में) एल्गोरिदम का वर्णन करना

3. कोई सही उत्तर नहीं है

6.84 अंतर्निहित भाषा फ़ंक्शन की वर्तनी क्या है?

1. केवल रूसी लेखन

2. केवल अंग्रेजी वर्तनी

3. रूसी और अंग्रेजी लेखन

4. विन्यासकर्ता सेटिंग्स के आधार पर

6.85 पैरामीटर एल का क्या मतलब है?(एल) NumberInWriting() फ़ॉर्मेटिंग फ़ंक्शन की फ़ॉर्मेट स्ट्रिंग में?

1. चिन्ह "भिन्नात्मक भाग को संख्याओं/शब्दों में आउटपुट करें"

2. दशमलव स्थानों की संख्या

3. स्थानीयकरण कोड

7. अनुप्रयोग समाधान का सारणीबद्ध मॉडल

7.1 डेटा एक्सेस प्रतिबंध सेट करते समय, आप कई (फ़ील्ड की संख्या के आधार पर) प्रतिबंध सेट कर सकते हैं:

1. "पढ़ें" के लिए सही

2. सही "परिवर्तन" के लिए

3. "जोड़ें" अधिकार के लिए

4. "हटाएं" के लिए दाईं ओर

5. उपरोक्त सभी अधिकारों के लिए

6. सभी संभव अधिकारों के लिए

7.2 डेटा एक्सेस प्रतिबंध सेट करते समय, निम्नलिखित का उपयोग उन मानों के रूप में किया जा सकता है जिनके द्वारा डेटा एक्सेस प्रतिबंध बनाए जाते हैं:

1. केवल सत्र पैरामीटर मान

2. केवल तालिकाओं से डेटा (प्रश्न)

3. सत्र पैरामीटर मान और तालिकाओं से डेटा (प्रश्न)

4. केवल प्रकार वाले मान: संख्या, स्ट्रिंग, बूलियन, दिनांक

7.3 उपरोक्त में से किस विधि का उपयोग किया जा सकता है ताकि निर्देशिका का कोड और नाम क्वेरी डिज़ाइनर के "फ़ील्ड" अनुभाग में दिखाई दे?

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

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

3. सबसे पहले "टेबल्स" अनुभाग भरें, और फिर, इस अनुभाग से आवश्यक वस्तुओं का चयन करके, फॉर्म ">" "" पर बटनों का उपयोग करके उन्हें "फ़ील्ड्स" अनुभाग में स्थानांतरित करें।

4. उत्तर I और 3 सही हैं

5. उत्तर I, 2 और 3 सही हैं

7.4 अनुरोध निष्पादन की गति बढ़ाने के लिए, आपको यह करना होगा:

1. अधिकांश वास्तविक तालिकाओं के लिए पैरामीटर सेट करें

2. अधिकांश वर्चुअल तालिकाओं के लिए पैरामीटर सेट करें

3. वास्तविक या आभासी तालिका के लिए पैरामीटर निर्दिष्ट करने के बजाय, "WHERE" क्वेरी भाषा निर्माण द्वारा निर्दिष्ट चयन का उपयोग करें

4. उत्तर I और 2 सही हैं

7.5 क्या क्वेरी डिज़ाइनर के "टेबल्स" अनुभाग में स्रोत तालिका का चयन करते समय इसके लिए एक नया नाम (उपनाम) निर्दिष्ट करना संभव है?

1. हाँ तुम कर सकते हो

2. हां, आप कर सकते हैं, लेकिन केवल तभी जब डेटा स्रोत एक नेस्टेड क्वेरी हो

3. हां, आप कर सकते हैं, लेकिन केवल तभी जब डेटा स्रोत एक वर्चुअल टेबल हो

4. उत्तर 1 और 2 सही हैं

5. उत्तर 1 और 3 सही हैं

7.6 एक नेस्टेड क्वेरी का उपयोग किया जा सकता है:

1. डेटा स्रोत तालिका के रूप में

2. वर्चुअल टेबल पैरामीटर सेट करते समय तुलनात्मक संचालन "बी" या "बी नहीं" के ऑपरेंड के रूप में

3. क्वेरी भाषा निर्माण को निर्दिष्ट करते समय तुलनात्मक संचालन "बी" या "बी नहीं" के एक ऑपरेंड के रूप में "कहां" बनाएं

4. वर्पा उत्तर 1, 2 और 3 देता है

7.7 क्या क्वेरी डिज़ाइनर का उपयोग करके पदानुक्रम द्वारा कुल योग प्राप्त करना संभव है?

1. यदि आप समूहीकरण क्षेत्र के लिए कुल प्रकार "तत्व और पदानुक्रम" निर्दिष्ट करते हैं तो यह संभव है

2. यह संभव है यदि आप समूहीकरण फ़ील्ड के लिए कुल प्रकार "केवल पदानुक्रम" निर्दिष्ट करते हैं

3. वेरपा उत्तर 1 और 2 देता है

7.8 क्वेरी डिज़ाइनर के "शर्तें" टैब पर, शर्तों की सूची की एक अलग पंक्ति तैयार की जा सकती है:

1. उपलब्ध फ़ील्ड की सूची में वांछित फ़ील्ड पर बाईं माउस बटन से डबल-क्लिक करें

2. ड्रैग एंड ड्रॉप तकनीक का उपयोग करके वांछित फ़ील्ड को सूची में ले जाकर

3. "जोड़ें" बटन पर क्लिक करें। यदि शर्त मनमानी है, तो शर्त पाठ "मैन्युअल रूप से" दर्ज किया जा सकता है

4. संदर्भ मेनू पर कॉल करें और उसमें से "जोड़ें" चुनें। मनमाना अभिव्यक्ति का उपयोग संभव है

5. उपरोक्त सभी उत्तर सही हैं

7.9 क्वेरी डिज़ाइनर के "लिंक्स" टैब पर, आप परिभाषित कर सकते हैं:

1. डेटा स्रोत तालिकाओं और उनके बीच संबंधों को जोड़ना

2. डेटा स्रोत तालिकाओं और उनके बीच कनेक्शन का संयोजन

3. क्वेरी के परिणामस्वरूप प्राप्त तालिका के फ़ील्ड के बीच संबंध

4. डेटा स्रोत तालिका के फ़ील्ड और क्वेरी के परिणामस्वरूप प्राप्त तालिका के बीच संबंध

7.10 क्वेरी डिज़ाइनर में डेटा स्रोत तालिकाओं को जोड़ते समय, आप यह कर सकते हैं:

1. कनेक्शन शर्त निर्दिष्ट किए बिना कनेक्शन असाइन करें

2. कनेक्शन की स्थिति दर्शाते हुए एक कनेक्शन असाइन करें, और यह शर्त केवल एक ही हो सकती है

3. कनेक्शन की स्थिति को दर्शाते हुए एक कनेक्शन असाइन करें, और यह शर्त केवल सरल हो सकती है

4. संचार स्थितियों की आवश्यक संख्या दर्शाते हुए कनेक्शनों की आवश्यक संख्या निर्दिष्ट करें, और ये स्थितियाँ या तो सरल या मनमानी हो सकती हैं

7.11 क्वेरी डिज़ाइनर में डेटा स्रोत तालिकाओं के बीच संबंध बनाने से निम्न की अनुमति मिलती है:

1. केवल दो डेटा स्रोत तालिकाओं को जोड़ना

2. डेटा स्रोत तालिकाओं की आवश्यक संख्या को कनेक्ट करना

3. केवल दो डेटा स्रोत तालिकाओं को कनेक्ट करना, और कम से कम एक तालिका के लिए "सभी" चेकबॉक्स को चेक करना होगा

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

यहां अंतर्निहित भाषा की कुछ सबसे महत्वपूर्ण विशेषताएं दी गई हैं:

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

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

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

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

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

पूर्वनिर्धारित डेटा प्रकार

1C:एंटरप्राइज़ 8.0 प्लेटफ़ॉर्म डेवलपर को विभिन्न प्रकार के डेटा का उपयोग करने की अनुमति देता है।

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


विवरण आदिम डेटा प्रकार:

  • व्यर्थ- अनुपस्थित मान। उदाहरण के लिए, प्रश्नों में प्रयुक्त।
  • अपरिभाषित- खाली, अपरिभाषित मान. इसका उपयोग, उदाहरण के लिए, मापदंडों के पारित होने का मूल्यांकन करते समय किया जाता है यदि किसी प्रक्रिया या फ़ंक्शन को कॉल करते समय यह पैरामीटर छोड़ दिया जाता है। जिन विवरणों में समग्र डेटा प्रकार होता है वे डिफ़ॉल्ट रूप से "अनिर्धारित" प्रकार के होते हैं।
  • बूलियन- इसमें दो मान शामिल हैं: सही या गलत। उदाहरण के लिए, तार्किक अभिव्यक्तियों में प्रयुक्त - एक तार्किक अभिव्यक्ति "बूलियन" प्रकार की होती है।
  • तारीख- दिनांक और समय शामिल है। डिफ़ॉल्ट मान 01/01/01 00:00:00 हमारे युग की प्रारंभ तिथि है। समय को दिन की शुरुआत से मापा जाता है। एक अभिव्यक्ति जिसका शाब्दिक प्रकार "तिथि" है, इस प्रकार लिखा जाता है - "00010101000000"। सबसे पहले साल लिखा जाता है, फिर महीना, फिर तारीख और फिर समय। निम्नलिखित प्रविष्टि संभव है: "20041031"। डिफ़ॉल्ट समय दिन की शुरुआत है.
  • रेखा- परिवर्तनीय, निश्चित या असीमित लंबाई हो सकती है। सामान्य तौर पर, परिवर्तनीय लंबाई वाली स्ट्रिंग का उपयोग करने की अनुशंसा की जाती है।
  • संख्या- संख्या बिट गहराई को 38 बिट्स तक बढ़ा दिया गया है।
  • प्रकार- मूल्यों के प्रकार निर्धारित करने का कार्य करता है। उदाहरण के लिए, डेटा प्रकारों की तुलना करने के लिए उपयोग किया जाता है। इसका कोई शाब्दिक अर्थ नहीं है और इसे फ़ंक्शन टाइप () द्वारा लौटाया जाता है<Имя типа>) या टाइपवैल्यू(<Значение>).

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


डेटा प्रकार "सार्वभौमिक संग्रह" - किसी भी प्रकार के डेटा ऑब्जेक्ट की एक सूची (सेट), जिसके मूल्यों को क्रूर बल या निर्दिष्ट सूचकांक (कुंजी) द्वारा पहुंचा जा सकता है। संग्रह तत्वों की संख्या 0 से शुरू होती है। सभी निर्दिष्ट डेटा प्रकार केवल प्रोग्रामेटिक रूप से बनाए जाते हैं।

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

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

पत्र-व्यवहार. संरचना की तरह, यह कुंजी-मूल्य जोड़े का एक संग्रह है। हालाँकि, एक संरचना के विपरीत, एक कुंजी लगभग किसी भी प्रकार की हो सकती है।

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

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

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

COMSafeArray. बहुआयामी SAFEARRAY सरणी पर एक ऑब्जेक्ट रैपर का प्रतिनिधित्व करता है

प्रक्रिया चुनेंFromFileClick(Element) // व्यूइंगFileSelectionDialog के साथ एक फ़ाइल का चयन करना = NewFileSelectionDialog(FileSelectionDialogMode.Open); FileSelectionDialog.Directory = ""; FileSelectDialog.Preview = सत्य; FileSelectionDialog.FilterIndex = 0; यदि FileSelectDialog.Select() तो फ़ाइल = नई फ़ाइल(FileSelectDialog.FullFileName); छवि = NewValueStorage(NewImage(FileSelectionDialog.FullFileName)); प्रदर्शन छवि(); अगर अंत; प्रक्रिया का अंत

यह_कीवर्ड
<Это конструкция языка>,
<Это конструкция языка>
यह_फ़ंक्शन(<Это конструкция языка>)

क्वेरी भाषा का वर्णन करने वाले नियमों में, भाषा निर्माण को कोण कोष्ठक में दर्शाया गया है। कीवर्ड और फ़ंक्शन नाम बड़े अक्षरों में वर्णित हैं।

भाषा निर्माण में वैकल्पिक तत्व - कीवर्ड आदि शामिल हो सकते हैं। क्वेरी भाषा का वर्णन करने वाले नियमों में, वैकल्पिक तत्व वर्गाकार कोष्ठक "[" और "]" में संलग्न हैं:

[यह एक वैकल्पिक शब्द है] [<Это необязательная конструкция>]

कुछ मामलों में, भाषा डिज़ाइन कई वैकल्पिक तत्वों में से एक का उपयोग कर सकता है। नियमों में ऐसे तत्वों को एक ऊर्ध्वाधर पट्टी "|" के माध्यम से सूचीबद्ध किया गया है:

EITHER_THIS_WORD | या यह_शब्द
<Либо эта конструкция> | <Либо эта конструкция>

सभी निर्माणों के विवरण उदाहरणों के साथ हैं जो बताते हैं कि क्वेरी भाषा में उनका उपयोग कैसे किया जाता है।

क्वेरी भाषा में टिप्पणियाँ

अनुरोध निकाय में टिप्पणियाँ शामिल हो सकती हैं। एक टिप्पणी को एक पंक्ति का एक हिस्सा माना जाता है जो वर्णों के अनुक्रम से शुरू होता है // और पंक्ति के अंत तक जारी रहता है:

// यह एक टिप्पणी है.

अनुरोध निष्पादित होने पर टिप्पणियों को अनदेखा कर दिया जाता है।

कीवर्ड का द्विभाषी प्रतिनिधित्व

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

अनुरोध पाठ के मुख्य भाग

अनुरोध पाठ को निम्नलिखित नियम द्वारा वर्णित किया जा सकता है:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[ऑटो ऑर्डर]
[<Описание итогов>]

जैसा कि इस नियम से देखा जा सकता है, अनुरोध पाठ में कई भाग या अनुभाग होते हैं:

अनुभाग में<Упорядочивание результатов>आप क्वेरी परिणाम में पंक्तियों के लिए ऑर्डर देने की शर्तें परिभाषित कर सकते हैं। किसी क्वेरी के परिणाम को क्रमबद्ध करने पर पृष्ठ 324 पर चर्चा की गई है।

ऑटो ऑर्डर आपको क्वेरी परिणाम में पंक्तियों के स्वचालित क्रम को सक्षम करने की अनुमति देता है। यह मोड पृष्ठ 331 पर वर्णित है।

अनुभाग में<Описание итогов>आप निर्दिष्ट कर सकते हैं कि क्वेरी में किन योगों की गणना की जानी चाहिए। यह अनुभाग पृष्ठ 332 पर वर्णित है।

विवरण का अनुरोध करें

जैसा कि पहले ही उल्लेख किया गया है, अनुरोध पाठ में आवश्यक रूप से एक अनुरोध विवरण अनुभाग होना चाहिए, जो परिभाषित करता है:

वे फ़ील्ड जो अनुरोध के परिणाम में शामिल होंगे;

क्वेरी डेटा स्रोत - स्रोत तालिकाएँ;

अनुरोध में डेटा के चयन को प्रभावित करने वाली स्थितियाँ;

वह क्रम जिसमें क्वेरी परिणाम समूहीकृत किए जाते हैं.

अनुरोध विवरण अनुभाग में कई परस्पर संबंधित वाक्य शामिल हैं:

[अलग] [पहले] चुनें<Количество>]
<Список полей выборки>
[से<Список источников>]
[कहाँ<Условие отбора>]
[द्वारा समूह बनाएं<Поля группировки>]
[होना<Условие отбора>]
[बदलाव के लिए [<Список таблиц верхнего уровня>]]

अनुरोध विवरण एक आवश्यक कीवर्ड से शुरू होता है चुनना.

प्रस्ताव कहाँ<Условие отбора> आपको क्वेरी परिणाम फ़िल्टर करने की अनुमति देता है। परिणाम में केवल वे रिकॉर्ड शामिल हैं जिनके लिए निर्दिष्ट शर्त सत्य है। चयन शर्तों का वर्णन करने के नियमों की चर्चा पृष्ठ 315 पर की गई है।

प्रस्ताव बदलाव के लिएइसका उद्देश्य लेन-देन में पढ़े जाने वाले डेटा को ब्लॉक करने की आवश्यकता को इंगित करना है।

प्रस्ताव समूहआपको उस क्रम का वर्णन करने की अनुमति देता है जिसमें क्वेरी परिणाम समूहीकृत किए जाते हैं। समूहीकरण पर पृष्ठ 316 पर विस्तार से चर्चा की गई है।

प्रस्ताव होनाआपको समूहीकरण परिणामों पर शर्तें लगाने की अनुमति देता है। पृष्ठ 318 पर वर्णित है।

इस अध्याय में सभी क्वेरी उदाहरण क्वेरी टेक्स्ट और क्वेरी परिणाम प्रदान करते हैं। यह माना जाता है कि अनुरोध पाठ को अनुरोध ऑब्जेक्ट की निष्पादन विधि के पैरामीटर के रूप में पारित किया गया है।

आइए एक काफी सरल क्वेरी का उदाहरण दें जिसमें एक SELECT स्टेटमेंट और चयन फ़ील्ड की एक सूची शामिल है।

//आपको रिपोर्ट में चालानों की एक सूची प्रदर्शित करनी होगी।

क्वेरी परिणाम:

भिन्न शब्द का प्रयोग

कई स्थितियों में, यह वांछनीय है कि रिपोर्ट में समान पंक्तियाँ दोहराई न जाएँ।

// यह पता लगाना आवश्यक है कि सामान्य रूप से कौन से प्रतिपक्षकार हैं
// माल इस अवधि के लिए भेज दिया गया था।
दस्तावेज़.चालान.प्रतिपक्ष का चयन करें

क्वेरी परिणाम:

यह देखा जा सकता है कि क्वेरी परिणाम में कई दोहराई गई पंक्तियाँ हैं, जिससे इसकी स्पष्टता कम हो जाती है। दोहराव से बचने के लिए, क्वेरी विवरण में कीवर्ड DIFFERENT निर्दिष्ट किया जाना चाहिए।

विभिन्न दस्तावेज़.चालान.प्रतिपक्ष का चयन करें

क्वेरी परिणाम:

FIRST शब्द का प्रयोग

कुछ मामलों में, रिपोर्ट में सीमित संख्या में पंक्तियाँ प्रदर्शित करना आवश्यक होता है। ऐसा करने के लिए, क्वेरी विवरण में आपको कीवर्ड FIRST निर्दिष्ट करना चाहिए, और उसके बाद - पंक्तियों की आवश्यक संख्या निर्दिष्ट करनी चाहिए।

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

क्वेरी परिणाम:

चयन फ़ील्ड का विवरण

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

<Описание поля>[ [कैसे]<Псевдоним поля>]

<Выражение>[.<Группа полей>]

चयन फ़ील्ड की सूची में अल्पविराम द्वारा अलग किए गए एक या अधिक तत्व होते हैं। प्रत्येक<Поле выборки>इसमें चयन फ़ील्ड का विवरण और एक वैकल्पिक फ़ील्ड उपनाम शामिल है।

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

टिप्पणी!चयन फ़ील्ड की सूची में तारांकन "*" निर्दिष्ट करते समय, स्रोत तालिकाओं के वर्चुअल फ़ील्ड परिणाम में शामिल नहीं होते हैं।

<Описание поля>परिभाषित करता है कि फ़ील्ड मान कैसे उत्पन्न किया जाना चाहिए। सरलतम मामले में, चयन फ़ील्ड स्रोत तालिका में किसी फ़ील्ड का लिंक है। लिंक को इस फ़ील्ड वाली तालिका को निर्दिष्ट करके या तालिका को निर्दिष्ट किए बिना निर्दिष्ट किया जा सकता है। फ़ील्ड डीरेफ़रेंसिंग पर चर्चा की गई है।

सामान्य तौर पर, चयन फ़ील्ड न केवल स्रोत तालिका में किसी फ़ील्ड का लिंक हो सकता है, बल्कि कुछ अन्य भी हो सकता है<Выражение>. भावों की चर्चा पृष्ठ 344 पर विस्तार से की गई है।

क्वेरी परिणामों को चयनित फ़ील्ड में अभिव्यक्ति के रूप में निर्दिष्ट समग्र फ़ंक्शंस का उपयोग करके समूहीकृत किया जा सकता है। समूहीकरण क्वेरी परिणामों पर पृष्ठ 316 पर चर्चा की गई है। समग्र कार्यों का वर्णन पृष्ठ 345 पर किया गया है।

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

<Группа полей>केवल तभी निर्दिष्ट किया जा सकता है जब चयन फ़ील्ड किसी नेस्टेड तालिका की ओर इंगित करता है। इस मामले में, आप निर्दिष्ट कर सकते हैं कि नेस्टेड तालिका चयन में किन फ़ील्ड को संसाधित किया जाना चाहिए। यदि कोई फ़ील्ड समूह निर्दिष्ट नहीं है, तो नेस्टेड तालिका के सभी फ़ील्ड चयन में संसाधित किए जाएंगे। नेस्टेड तालिकाओं तक पहुंच का वर्णन किया गया है।

चयन सूची में फ़ील्ड उपनाम

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

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

फ़ील्ड उपनाम चर पहचानकर्ताओं को निर्दिष्ट करने के नियमों के अनुसार सेट किए गए हैं। अनुरोध में उपनाम समान नहीं हो सकते.

फ़ील्ड में उपनाम निर्दिष्ट करना अपने आप में क्वेरी में डेटा चयन को प्रभावित नहीं करता है।

// उत्पाद निर्देशिका से चयन किया जाना चाहिए
// माल के नाम और समूहों के नाम।
चुनना
निर्देशिका। नामकरण। उत्पाद के रूप में नाम,
निर्देशिका। नामकरण.अभिभावक.समूह के रूप में नाम
से
निर्देशिका.नामपद्धति

क्वेरी परिणाम:

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

चयन फ़ील्ड की सूची में नेस्टेड तालिकाएँ

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

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

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей>इसमें अल्पविराम द्वारा अलग किए गए एक या अधिक तत्व होते हैं। यदि सूची में एक तत्व शामिल है, तो इसे कोष्ठक में संलग्न करने की आवश्यकता नहीं है।

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

<Выражение>[[कैसे]<Псевдоним поля>]

<Вложенное поле>कुछ अभिव्यक्ति का प्रतिनिधित्व कर सकता है। सबसे सरल मामले में<Выражение>नेस्टेड तालिका में किसी फ़ील्ड का संदर्भ है। भावों की चर्चा पृष्ठ 344 पर विस्तार से की गई है।

प्रत्येक नेस्टेड फ़ील्ड को एक उपनाम दिया जा सकता है। आगे<Псевдоним поля>चयन सूची में फ़ील्ड के लिए उपनाम के समान, इस फ़ील्ड तक अधिक सुविधाजनक पहुंच के लिए उपयोग किया जा सकता है - "चयन सूची में फ़ील्ड के लिए उपनाम" अनुभाग देखें

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

//रिपोर्ट में चालान के विनिर्देश प्रदर्शित करना आवश्यक है,
// दस्तावेज़ स्वयं, नामकरण और मात्रा।
चुनना

दस्तावेज़.चालान.संरचना.(उत्पाद, मात्रा के रूप में नामकरण)

क्वेरी परिणाम:

जोड़ना मिश्रण
उत्पाद मात्रा
महिलाओं के लिए जींस 4
महिलाओं के लिए जींस 5
शर्ट "काउगर्ल" 5
चालान 00005 दिनांक 02/24/2002 0:00:00 महिलाओं के लिए जींस 1
महिलाओं के लिए जींस 1
मोयडोडिर "एक्वेरियम" 5
सिंक "लिली" 8
मिक्सर "अल्ट्रा" 10

कृपया ध्यान दें कि क्वेरी परिणाम का "संरचना" फ़ील्ड एक नेस्टेड तालिका है जिसमें "नामकरण" और "मात्रा" फ़ील्ड हैं।

//इनवॉइस के सारणीबद्ध भाग के सभी फ़ील्ड को रिपोर्ट में प्रदर्शित करें।
चुनना
दस्तावेज़.चालान.लिंक,
दस्तावेज़.चालान.संरचना.*

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

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

कीवर्ड IZ के बाद, स्रोतों की एक सूची इंगित की गई है। सामान्य तौर पर, स्रोतों की सूची निम्नलिखित नियमों के सेट द्वारा वर्णित है:

<Источник>[, <Источник>[, ...]]

क्वेरी डेटा स्रोतों को अल्पविराम से अलग करके, स्रोत सूची में सूचीबद्ध किया गया है। प्रत्येक<Источник>स्रोतों की सूची में स्रोत का विवरण शामिल होना चाहिए; इसके अतिरिक्त, इसे निर्दिष्ट किया जा सकता है<Перечень соединений>- किसी स्रोत को अन्य स्रोतों से जोड़ने के नियम। कनेक्शन विशिष्टताओं का वर्णन किया गया है।

<Описание источника> [ <Перечень соединений> ]

यदि डेटा स्रोत एक इन्फोबेस तालिका है,<Описание источника>रोकना<Имя таблицы>.

<Таблица>[ [कैसे]<Псевдоним источника>]

यदि स्रोत तालिका आभासी है, तो आप निर्दिष्ट कर सकते हैं<Параметры>इसका गठन. वर्चुअल टेबल पैरामीटर्स को "क्वेरी डेटा स्रोत" अनुभाग में विस्तार से वर्णित किया गया है।

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

एक सबक्वेरी क्वेरी डेटा स्रोत के रूप में भी कार्य कर सकती है; इस मामले में स्रोत विवरण शामिल है<Описание запроса>. नेस्टेड क्वेरीज़ का उपयोग यहां वर्णित है।

डेटा स्रोत का विवरण उसका उपनाम भी निर्दिष्ट कर सकता है। आगे<Псевдоним источника>इस स्रोत तक अधिक सुविधाजनक पहुंच के लिए इसका उपयोग किया जा सकता है। डेटा स्रोत उपनामों के उपयोग पर चर्चा की गई है।

कनेक्शन विशिष्टताएँ

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

क्वेरी परिणाम:

प्रतिपक्ष किनारा
आपूर्तिकर्ताओं जेएससीबी इन्वेस्टबैंक
आपूर्तिकर्ताओं जेएससीबी प्रोमस्ट्रॉयबैंक
बुनाई का कारखाना "ज़रिया" जेएससीबी इन्वेस्टबैंक
बुनाई का कारखाना "ज़रिया" जेएससीबी प्रोमस्ट्रॉयबैंक
डेनिम कपड़ों का कारखाना जेएससीबी इन्वेस्टबैंक
डेनिम कपड़ों का कारखाना जेएससीबी प्रोमस्ट्रॉयबैंक
खरीदार जेएससीबी इन्वेस्टबैंक
खरीदार जेएससीबी प्रोमस्ट्रॉयबैंक
वस्त्र मेला जेएससीबी इन्वेस्टबैंक
वस्त्र मेला जेएससीबी प्रोमस्ट्रॉयबैंक
ट्रेडिंग हाउस "बुडेनोव्स्की" जेएससीबी इन्वेस्टबैंक
ट्रेडिंग हाउस "बुडेनोव्स्की" जेएससीबी प्रोमस्ट्रॉयबैंक
थोक बाजार में मंडप 45 जेएससीबी इन्वेस्टबैंक
थोक बाजार में मंडप 45 जेएससीबी प्रोमस्ट्रॉयबैंक
बवेरिया - चीनी मिट्टी के बरतन जेएससीबी इन्वेस्टबैंक
बवेरिया - चीनी मिट्टी के बरतन जेएससीबी प्रोमस्ट्रॉयबैंक
डेनिम कपड़ों का कारखाना जेएससीबी इन्वेस्टबैंक
डेनिम कपड़ों का कारखाना जेएससीबी प्रोमस्ट्रॉयबैंक
जेएससीबी प्रोमस्ट्रॉयबैंक जेएससीबी इन्वेस्टबैंक
जेएससीबी प्रोमस्ट्रॉयबैंक जेएससीबी प्रोमस्ट्रॉयबैंक

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

कनेक्शन कई प्रकार के होते हैं, उनका वर्णन निम्नलिखित नियमों द्वारा किया गया है:

<Соединение> [<Перечень соединений>]

सामान्य रूप में<Перечень соединений>इसमें न केवल एक कनेक्शन (दो स्रोतों का) शामिल हो सकता है और उसका वर्णन भी किया जा सकता है, बल्कि एक साथ कई स्रोतों के कई कनेक्शन भी शामिल हो सकते हैं।

[आंतरिक] शामिल हों<Описание источника>द्वारा<Условие отбора> |

बाईं ओर का बाहरी जोड़<Описание источника>द्वारा<Условие отбора> |

दाएँ [बाहरी] जुड़ें<Описание источника>द्वारा<Условие отбора> |

पूर्ण (बाहरी) शामिल हों<Описание источника>द्वारा<Условие отбора>

<Условие отбора>इसमें ऐसी स्थितियाँ शामिल हैं जिनके अनुसार चयन को मूल तालिकाओं - क्वेरी के स्रोतों से डेटा को संयोजित करना होगा। किसी क्वेरी भाषा में स्थितियों का वर्णन करने के नियमों की चर्चा पृष्ठ 357 पर की गई है।

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

शामिल होने वाले स्रोत एक-दूसरे के समतुल्य नहीं हैं, और कुछ मामलों में परिणाम इस बात पर निर्भर करता है कि कौन सी तालिका पहले सूचीबद्ध है, JOIN कीवर्ड से पहले (इसके बाईं ओर), और कौन सी तालिका दूसरे (दाईं ओर) सूचीबद्ध है।

[आंतरिक] जॉइन का मतलब है कि दोनों स्रोत तालिकाओं - डेटा स्रोतों से, केवल रिकॉर्ड के उन संयोजनों को जो निर्दिष्ट शर्त को पूरा करते हैं, क्वेरी परिणाम में शामिल किया जाना चाहिए। शेष रिकॉर्ड परिणाम में शामिल नहीं हैं.

// यह पता लगाने की आवश्यकता है कि एक ही समय में कौन से बैंक हैं
// प्रतिपक्ष (समान नाम मौजूद हैं
// प्रतिपक्ष निर्देशिका और बैंक निर्देशिका दोनों में)।
चुनना

Banks.Link बैंक कैसे करें
से

आंतरिक रूप से जुड़ा
निर्देशिका.बैंक कैसे बैंक
द्वारा

क्वेरी परिणाम:

प्रतिपक्ष किनारा
जेएससीबी प्रोमस्ट्रॉयबैंक जेएससीबी प्रोमस्ट्रॉयबैंक

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

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

//रिपोर्ट में सभी प्रतिपक्षकारों को प्रदर्शित करना आवश्यक है, और उनके लिए भी
// बैंक भी कौन है - बैंक का लिंक बताएं।
चुनना
प्रतिपक्ष.प्रतिपक्ष के रूप में लिंक,
Banks.Link बैंक कैसे करें
से
निर्देशिका। प्रतिपक्ष कैसे प्रतिपक्ष
बाईं ओर का बाहरी जोड़
निर्देशिका.बैंक कैसे बैंक
द्वारा
प्रतिपक्ष.नाम = बैंक.नाम

क्वेरी परिणाम:

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

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

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

क्वेरी परिणाम:

प्रतिपक्ष किनारा
व्यर्थ जेएससीबी इन्वेस्टबैंक
जेएससीबी प्रोमस्ट्रॉयबैंक जेएससीबी प्रोमस्ट्रॉयबैंक

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

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

// रिपोर्ट में सभी समकक्षों और सभी बैंकों को प्रदर्शित करना आवश्यक है,
// और जो दोनों हैं - एक लाइन में प्रिंट करें।
चुनना
प्रतिपक्ष.प्रतिपक्ष के रूप में लिंक,
Banks.Link बैंक कैसे करें
से
निर्देशिका। प्रतिपक्ष कैसे प्रतिपक्ष
पूर्ण बाहरी जुड़ाव
निर्देशिका.बैंक कैसे बैंक
द्वारा
प्रतिपक्ष.नाम = बैंक.नाम

क्वेरी परिणाम:

डेटा स्रोत उपनाम

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

उपनाम को चर पहचानकर्ता निर्दिष्ट करने के नियमों के अनुसार सेट किया गया है। अनुरोध में उपनाम समान नहीं हो सकते.

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

स्रोतों को उपनाम निर्दिष्ट करना अपने आप में क्वेरी में डेटा चयन को प्रभावित नहीं करता है।

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

स्रोत सूची में नेस्टेड तालिकाएँ

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

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

क्वेरी परिणाम:

जोड़ना नामपद्धति मात्रा
चालान 00007 दिनांक 02/25/2002 21:03:21 महिलाओं के लिए जींस 4
चालान 00006 दिनांक 02/25/2002 0:00:00 महिलाओं के लिए जींस 5
चालान 00006 दिनांक 02/25/2002 0:00:00 शर्ट "काउगर्ल" 5
चालान 00005 दिनांक 03/01/2002 20:58:28 महिलाओं के लिए जींस 1
चालान 00004 दिनांक 03/01/2002 20:50:40 महिलाओं के लिए जींस 1
चालान 00003 दिनांक 02/23/2002 0:00:00 मोयडोडिर "एक्वेरियम" 5
चालान 00003 दिनांक 02/23/2002 0:00:00 सिंक "लिली" 8
चालान 00003 दिनांक 02/23/2002 0:00:00 मिक्सर "अल्ट्रा" 10

कृपया ध्यान दें कि स्रोतों की सूची में नेस्टेड तालिका निर्दिष्ट करते समय, नेस्टेड तालिका के दोनों फ़ील्ड और शीर्ष-स्तरीय तालिका (जिसमें नेस्टेड तालिका शामिल है) के फ़ील्ड तक पहुंच संभव है। इस स्थिति में, दस्तावेज़ के "लिंक" फ़ील्ड तक ही पहुंच प्राप्त होती है।

स्रोत सूची में उपश्रेणियाँ

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

डेटा स्रोत के रूप में नेस्टेड क्वेरी का उपयोग करना इन्फोबेस तालिका का उपयोग करने से अलग नहीं है। सबक्वेरी चयन फ़ील्ड की सूची में वर्णित सभी फ़ील्ड ऐसे स्रोत के फ़ील्ड के रूप में उपलब्ध हैं।

परिणाम बिल्कुल पिछले उदाहरण जैसा ही होगा।

रिपोर्ट तैयार करना

अनुरोधों के साथ कार्य करना

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

क्वेरी डेटा स्रोत

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

वास्तविक तालिकाएँ, बदले में, वस्तु (संदर्भ) या गैर-वस्तु (गैर-संदर्भ) हो सकती हैं:

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

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

वास्तविक तालिकाओं को वस्तु (संदर्भ) और गैर-वस्तु (गैर-संदर्भ) तालिकाओं में विभाजित किया गया है।

ऑब्जेक्ट (संदर्भ) तालिकाएँ संदर्भ डेटा प्रकारों (निर्देशिका, दस्तावेज़, विशेषताओं के प्रकार की योजनाएँ, आदि) के बारे में जानकारी प्रदान करती हैं। और गैर-ऑब्जेक्ट (गैर-संदर्भ) में - अन्य सभी डेटा प्रकार (स्थिरांक, रजिस्टर, आदि)।

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

पूछताछ भाषा

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

    विवरण का अनुरोध करें,

    विलय संबंधी प्रश्न

    परिणामों का आदेश देना,

    ऑटो ऑर्डरिंग,

    परिणामों का विवरण.

अनुरोध का एकमात्र अनिवार्य भाग पहला है - अनुरोध का विवरण। अन्य सभी आवश्यकतानुसार उपस्थित हैं।

विवरण का अनुरोध करेंडेटा स्रोतों, चयन क्षेत्रों, समूहों आदि को परिभाषित करता है।

क्वेरीज़ को मर्ज करनायह निर्धारित करता है कि एकाधिक प्रश्नों के परिणाम कैसे संयोजित होंगे।

आयोजन परिणामक्वेरी परिणाम पंक्तियों के लिए आदेश देने की शर्तों को परिभाषित करता है।

स्वत: आदेशआपको क्वेरी परिणाम पंक्तियों का स्वचालित क्रम सक्षम करने की अनुमति देता है।

परिणामों का विवरणयह निर्धारित करता है कि क्वेरी में किन योगों की गणना की जानी चाहिए और परिणामों को कैसे समूहीकृत किया जाना चाहिए।

दस्तावेज़ों का रिपोर्ट रजिस्टर, सेवाओं का प्रावधान

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

आइए विन्यासकर्ता में एक नया कॉन्फ़िगरेशन ऑब्जेक्ट बनाएं: रिपोर्ट "दस्तावेज़ों का रजिस्टर सेवाओं का प्रावधान"। आइए "लेआउट" टैब पर जाएं और आउटपुट फॉर्म डिज़ाइनर लॉन्च करें।

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

  • "मालिक",

    "ग्राहक":

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

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

आइए "रिपोर्ट" टैब पर जाएं और "रिपोर्ट बिल्डर का उपयोग करें" ध्वज को रीसेट करें:

आइए "रिपोर्ट बिल्डर का उपयोग करें" ध्वज को रीसेट करें...

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

Query.Text = “चुनें

सेवाओं का प्रावधान। दिनांक AS दिनांक,

सेवाओं का प्रावधान। संख्या एएस संख्या,

सेवाओं का प्रावधान। गोदाम,

सेवाएँ प्रदान करना। गोदाम। प्रस्तुति,

सेवाएं प्रदान करना। मास्टर,

सेवाएँ प्रदान करना। मास्टर। प्रस्तुति,

सेवाओं का प्रावधान। ग्राहक,

सेवाओं का प्रावधान। ग्राहक। प्रतिनिधित्व

दस्तावेज़.सेवाओं का प्रावधानसेवाएँ कैसे प्रदान करें

इसके अनुसार क्रमबद्ध करें

अनुरोध पाठ शुरू होता है, जैसा कि हमने ऊपर कहा, अनुरोध विवरण के भाग के साथ:

I सेवा का प्रावधान। दिनांक AS दिनांक,

I सेवाओं का प्रावधान। संख्या एएस संख्या,

I सेवाओं का प्रावधान। गोदाम,

I सेवाओं का प्रावधान। गोदाम। प्रस्तुति,

मैं सेवाएँ प्रदान कर रहा हूँ। मास्टर,

मैं सेवाओं का प्रावधान। मास्टर। प्रस्तुति,

I सेवाओं का प्रावधान। ग्राहक,

1 सेवाओं का प्रावधान। ग्राहक। प्रतिनिधित्व

मैं दस्तावेज़। सेवाओं का प्रावधान सेवाएँ कैसे प्रदान करें

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

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

हम इस कॉल को चयन फ़ील्ड के विवरण में देखते हैं:

| सेवाओं का प्रावधान। दिनांक AS दिनांक,

| सेवाओं का प्रावधान। संख्या एएस संख्या,

| सेवाओं का प्रावधान। गोदाम,

| सेवाएँ प्रदान करना। गोदाम। प्रस्तुति,

| सेवाएं प्रदान करना। मास्टर,

| सेवाएँ प्रदान करना। मास्टर। प्रस्तुति,

| सेवाओं का प्रावधान। ग्राहक,

| सेवाओं का प्रावधान। ग्राहक। प्रतिनिधित्व

चयन फ़ील्ड में उपनाम भी हो सकते हैं, जिनका उपयोग बाद में अनुरोध पाठ में इस फ़ील्ड को संदर्भित करने के लिए किया जा सकता है। हमारे मामले में, ये उपनाम "दिनांक" और "संख्या" हैं।

हमारे उदाहरण में क्वेरी के विवरण भाग के बाद परिणाम क्रम वाला भाग आता है:

|आदेश द्वारा

| दिनांक, | संख्या";

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

आइए अब इस बात पर ध्यान दें कि स्प्रेडशीट दस्तावेज़ में क्वेरी परिणाम कैसे प्रदर्शित होता है।

दस्तावेज़ों का प्रक्रिया रजिस्टर सेवाओं का प्रावधान (टैबडॉक) निर्यात

//((CONSTRUCTOR_OUTPUT_FORM(सेवाओं के प्रावधान दस्तावेजों का रजिस्टर)// यह टुकड़ा कंस्ट्रक्टर द्वारा बनाया गया था।// कंस्ट्रक्टर का पुन: उपयोग करते समय,// पुर:मैन्युअल परिवर्तनखो जाएगा!!!

लेआउट = गेटलेआउट("सेवाएं प्रदान करने वाले दस्तावेज़ों का रजिस्टर"); अनुरोध = नया अनुरोध;

परिणाम = क्वेरी.रन();

हेडरएरिया = लेआउट.गेटएरिया('हेडर'); एरिया बेसमेंट =

लेआउट.गेटएरिया('टेबलफुटर'); DetailRecordsArea =

TabDoc.Output(TableHeadArea); TabDoc.StartAutogruttingRows();

चयनविवरण = परिणाम.चयन();

जबकि SelectDetails.NextFunctions() लूप

एरियाडिटेलरिकॉर्ड्स.पैरामीटर्स.फिल(चयनविवरण);

TabDoc.Output(RecordsDetailsArea,DetailsSelection.Level()); अंतचक्र;

/एल)CONSTRUCTOR_OUTPUT_FORM अंतिम प्रक्रिया

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

प्रक्रिया की शुरुआत में, हम रिपोर्ट लेआउट प्राप्त करते हैं, जिससे हम उसमें मौजूद क्षेत्रों को संबंधित चर में प्राप्त करते हैं:

हेडरएरिया = लेआउट.गेटएरिया('हेडर'); एरिया बेसमेंट =

लेआउट.गेटएरिया('तहखाने'); टेबलहेडरएरिया =

लेआउट.गेटएरिया('टेबलहेडर'); टेबलफुटरएरिया =

Layout.GetArea("TableFooter"");DetailRecordsArea =

लेआउट.गेटएरिया('विवरण');

फिर हम स्प्रेडशीट दस्तावेज़ को साफ़ करते हैं और उन क्षेत्रों को प्रदर्शित करते हैं जिनमें क्वेरी परिणाम से प्राप्त डेटा शामिल नहीं है:

TabDoc.Clear(); TabDoc.Output(AreaHeader);

TabDoc.Output(TableHeadArea); TabDoc.StartAutoGroupingRows();

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

इसके बाद, हमें क्वेरी परिणाम से एक चयन मिलता है, जिसे हम एक लूप में पार करते हैं:

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

प्रक्रिया के अंत में, हम लेआउट के अंतिम क्षेत्रों को एक स्प्रेडशीट दस्तावेज़ में प्रदर्शित करते हैं:

TabDoc.FiishAutoGroupingRows();

TabDoc.Output(TableFooterArea);

TabDoc.Output(AreaFooter);

आइए अब 1C:एंटरप्राइज़ को डिबग मोड में लॉन्च करें और हमारी रिपोर्ट के परिणाम देखें:

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

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

आइए एक नया कॉन्फ़िगरेशन ऑब्जेक्ट "सेवा रेटिंग" रिपोर्ट बनाएं। आइए "लेआउट" टैब पर जाएं और आउटपुट फॉर्म कंस्ट्रक्टर को कॉल करें।

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

फिर कर्सर को "सेल्स टर्नओवर" टेबल पर रखें और वर्चुअल टेबल पैरामीटर दर्ज करने के लिए डायलॉग को कॉल करें:

वर्चुअल टेबल पैरामीटर दर्ज करने के लिए संवाद खोलें

आइए हम इंगित करें कि अवधि की शुरुआत और अंत संबंधित पैरामीटर "स्टार्टडेट" और "एंडडेट" में पारित किया जाएगा (नाम से पहले "&" प्रतीक इंगित करता है कि यह एक अनुरोध पैरामीटर है):

फिर तालिकाओं से फ़ील्ड "SprNomenclature.Link" और "SalesTurnover.RevenueTurnover" चुनें:

SprNomenclature.प्रस्तुति

बिक्री कारोबार राजस्व कारोबार

आइए "लिंक्स" टैब पर जाएं और देखें कि डिजाइनर ने पहले ही दो चयनित तालिकाओं के बीच एक कनेक्शन बना लिया है - "नामकरण" रजिस्टर परिवर्तन का मूल्य "नामकरण" निर्देशिका तत्व के संदर्भ के बराबर होना चाहिए।

हमें जो एकमात्र काम करना है वह रजिस्टर तालिका के लिए "सभी" ध्वज को रीसेट करना और इसे निर्देशिका तालिका के लिए सेट करना है।

हम "नामकरण" निर्देशिका से सभी तत्वों का चयन करेंगे

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

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

दूसरी शर्त यह होनी चाहिए कि चयनित वस्तु एक सेवा है (यह "सरल शर्त" है):

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

आइए "एसोसिएशन/उपनाम" टैब पर जाएं और निर्दिष्ट करें कि निर्देशिका आइटम दृश्य में उपनाम "सेवा" होगा, और रजिस्टर फ़ील्ड में उपनाम "राजस्व" होगा:

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

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

"रिपोर्ट" टैब पर, "रिपोर्ट बिल्डर का उपयोग करें" ध्वज साफ़ करें।

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

ओके पर क्लिक करें"। प्लेटफ़ॉर्म एक लेआउट और रिपोर्ट फॉर्म तैयार करेगा। फॉर्म मॉड्यूल खोलें और उसमें "सेवा रेटिंग" प्रक्रिया ढूंढें।

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

| बायां कनेक्शन रजिस्टरसंचय.बिक्री, कारोबार(&प्रारंभ दिनांक,

| &समाप्ति तिथि,)

| टर्नओवर की बिक्री कैसे करें

|आदेश द्वारा | राजस्व नीचे

|परिणाम राशि (राजस्व) द्वारा | आम हैं";

RequestSetParameterC"नामकरण का प्रकार",

स्थानान्तरण, नामकरण के प्रकार, सेवा);

Query.SetParameter('StartDate',StartDate); Request.SetParameterC"EndDate", EndDate);

अब आइए कंस्ट्रक्टर द्वारा उत्पन्न अनुरोध टेक्स्ट को देखें:

| SprNomenclature.प्रतिनिधित्व AS प्रतिनिधित्व,

|सेल्सटर्नओवर.रेवेन्यूटर्नओवर राजस्व के रूप में

| निर्देशिका.नामकरण AS RefNomenclature

बायां कनेक्शन रजिस्टरसंचय.बिक्री.कारोबार(&प्रारंभदिनांक,

| टर्नओवर की बिक्री कैसे करें

| सॉफ़्टवेयर SalesTurnover.Nomenclature = SprNomenclature.Link

| (RefNomenclature.ThisGroup = गलत) तथा

| SprNomenclature.नामपद्धति का प्रकार = &नामकरण का प्रकार

|आदेश द्वारा

| राजस्व नीचे

|परिणाम राशि (राजस्व)द्वारा

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

अनुरोध स्रोतों का वर्णन करते समय (IZ कीवर्ड के बाद), कई अनुरोध स्रोतों को परिभाषित करने की क्षमता का उपयोग किया गया था:

| निर्देशिका.नामकरण AS RefNomenclature

|&अंततिथि,)

| टर्नओवर की बिक्री कैसे करें

| सॉफ़्टवेयर SalesTurnover.Nomenclature = SprNomenclature.Link

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

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

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

| रजिस्टरसंचय.बिक्री.कारोबार(&प्रारंभदिनांक,&समाप्तिदिनांक,)

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

यदि यह पहले से ज्ञात है कि उपयोगकर्ता को सेकंड की सटीकता के साथ निर्दिष्ट अवधि में रिपोर्ट के परिणामों में दिलचस्पी नहीं होगी, तो निम्नलिखित सुविधा को ध्यान में रखा जाना चाहिए: डिफ़ॉल्ट रूप से, दिनांक में समय 00 पर सेट है :00:00. इसलिए, यदि आप विशेष उपाय नहीं करते हैं, तो यह पता चलता है कि जब उपयोगकर्ता रिपोर्टिंग अवधि 03/01/2004 से 03/31/2004 तक निर्धारित करता है, तो रजिस्टर योग की गणना 03/01/ दिन की शुरुआत से की जाएगी। 2004 00:00:00 से दिन की शुरुआत तक 03/31/2004 00:00: 00। इस प्रकार, दिन की शुरुआत के अलावा 31वें दिन का डेटा गणना में शामिल नहीं किया जाएगा, जो उपयोगकर्ता को बहुत आश्चर्यचकित करेगा।

इस स्थिति को खत्म करने के लिए दो काम करने होंगे.

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

आइए तिथि की संरचना निर्धारित करें...

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

प्रोसीजरफॉर्मएक्शन्सरेटिंगसर्विसेजजेनरेट(बटन) //((CONSTRUCTOR_WEEKEND_FORM_PROCEDURE_CALL(रेटिंगसर्विसेज) //यह टुकड़ा कंस्ट्रक्टर द्वारा बनाया गया था। // कंस्ट्रक्टर का पुन: उपयोग करते समय, // मैन्युअल रूप से किए गए परिवर्तन खो जाएंगे!!!

TabDoc = फॉर्मएलिमेंट्स.टेबलफिल्ड;

//))CONSTRUCTOR_OUTPUT_FORM_CALL_PROCEDURE

कं नेटप्रक्रियाएँ

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

| SprNomenclature.प्रतिनिधित्व AS प्रतिनिधित्व,

| SalesTurnover.RevenueTurnover AS राजस्व

| निर्देशिका.नामकरण AS RefNomenclature

| बायां कनेक्शन रजिस्टरसंचय.बिक्री.कारोबार(&प्रारंभदिनांक,

| &समाप्ति तिथि,

| टर्नओवर की बिक्री कैसे करें

| सॉफ़्टवेयर SalesTurnover.Nomenclature = SprNomenclature.Ssshka

| SprNomenclature.ThisGroup = गलत और

| SprNomenclature.नामपद्धति का प्रकार = &नामकरण का प्रकार

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

परिणाम राशि (राजस्व) पीओ

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

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

आइए रिपोर्टिंग अवधि 03/01/2004 से 04/30/2004 तक निर्धारित करें। परिणाम इस तरह दिखेगा:

आइए अब अंतिम तिथि को 03/31/2004 में बदलें और सुनिश्चित करें कि 31 मार्च का डेटा रिपोर्ट में शामिल है: