1 सी सभी को गठबंधन करें। अनुरोधों के परिणामों को मिलाएं

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

SQL से पहले क्वेरी भाषा 1C 8.3 (8.2) के मुख्य लाभ:

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

1 सी में प्रश्नों के नुकसान:

  • एसक्यूएल के विपरीत, 1 सी अनुरोधों में डेटा बदलने की अनुमति नहीं है;
  • संग्रहीत प्रक्रियाओं की कमी;
  • स्ट्रिंग को संख्या में बदलने में असमर्थता।

1 सी क्वेरी भाषा के मुख्य डिजाइनों पर हमारी मिनी पाठ्यपुस्तक पर विचार करें।

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

निम्न उदाहरण में, हैंडबुक "नामकरण" से संपूर्ण नामकरण के नाम चुने गए हैं। शब्द "कैसे" शब्द के बाद तालिकाओं और क्षेत्रों के लिए छद्म नाम (नाम) द्वारा इंगित किया जाता है।

चुनें
नामकरण। Namenamenalogue के रूप में नाम
का
निर्देशिका। नामकरण के रूप में Namerenclature

"चयन" कमांड के बगल में, आप कीवर्ड निर्दिष्ट कर सकते हैं:

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

इन खोजशब्दों का उपयोग सभी एक साथ और अलग से किया जा सकता है।

बदलाव के लिए

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

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

चुनें
आपसी बस्तियों
आपसी settlements.sumumavzimoraschetovostok
का
Regisrting visaimoochetheetsstatniki। आपसी बस्तियों के रूप में लॉस्टैट्स
बदलाव के लिए

कहां कहां)

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

नीचे एक निश्चित स्थिति के साथ संपर्क व्यक्तियों को प्राप्त करने के अनुरोध का एक उदाहरण है। चयन पैरामीटर में एक प्रारूप है: और नाम पैरामीटर (पैरामीटर नाम मनमानी)।

विकल्प (मामला)

डिजाइन आपको सीधे क्वेरी बॉडी में स्थितियों को निर्दिष्ट करने की अनुमति देता है।

नीचे दिए गए उदाहरण में, "अतिरिक्त" में टेक्स्ट शामिल होगा या नहीं, इस पर निर्भर करता है कि दस्तावेज़ क्या किया गया है या नहीं:

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

कनेक्शन (शामिल हों)

कनेक्शन एक विशिष्ट संचार स्थिति पर दो तालिकाओं को जोड़ते हैं।

बाएं / सही कनेक्शन

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

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

चुनें
रसीद। Namerencleature,
कीमतें। कीमत
का
दस्तावेज़। उपलब्ध नहीं है प्रवेश आपूर्ति समर्थन
पंजीकरण के आंतरिक कनेक्शन। ProseenClasture। कीमतों के रूप में निवारक
आगमन द्वारा। Namerencleatch \u003d कीमतें। Namerencleature

दाईं ओर, सब कुछ बिल्कुल विपरीत है।

पूर्ण संबंध

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

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

आंतरिक संबंध

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

समूह द्वारा)

1 सी प्रश्नों में समूह आपको एक विशिष्ट सामान्य विशेषता (समूहित फ़ील्ड) द्वारा तालिका (समूह समूह) की पंक्तियों को फोल्ड करने की अनुमति देता है। ग्रुपिंग फ़ील्ड केवल कुल कार्यों के उपयोग के साथ प्रदर्शित किए जा सकते हैं।

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

चुनें
,
अधिकतम (मूल्य। मूल्य) मूल्य के रूप में
का

द्वारा समूहीकृत
कीमतें। NoMeLaCleature। Vidnomencleature

परिणाम

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

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

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

चुनें
कीमतें। घरेलू निपटान। VidNomencleate VisnenenCleature के रूप में,
कीमतें। कीमत के रूप में कीमत
का
पंजीकरण। Priceennencleature। कीमतों के रूप में निवारक
परिणाम
अधिकतम (मूल्य)
द्वारा द्वारा
Vidnomenclature

(होने)

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

निम्न उदाहरण में, अधिकतम नामकरण की कीमतों का चयन किया जाता है यदि वे 1000 से अधिक हो जाते हैं, जो नामकरण के प्रकार से समूहीकृत होते हैं।

चुनें

अधिकतम (मूल्य। मूल्य) मूल्य के रूप में
का
पंजीकरण। Priceennencleature। कीमतों के रूप में निवारक
द्वारा समूहीकृत
कीमतें। NoMeLaCleature। Vidnomencleature
बीत रहा है
अधिकतम (कीमतें। मूल्य)\u003e 1000

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

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

नाम से क्रमबद्ध कर्मचारियों की एक सूची प्राप्त करने का एक उदाहरण:

चुनें
कर्मचारी। नाम के रूप में नाम
का
निर्देशिका। कर्मचारियों के रूप में
इसके अनुसार क्रमबद्ध करें
नाम
स्वत: आदेश

क्वेरी भाषा 1 सी के अन्य निर्माण

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

भाषा सुविधाओं का अनुरोध करें

  • सबस्ट्रिंगएक विशिष्ट स्थिति से निर्दिष्ट संख्या में वर्णों से फसल वाली स्ट्रिंग।
  • वर्ष ... दूसरा चयनित संख्यात्मक प्रकार मान की अनुमति दें। इनपुट पैरामीटर दिनांक है।
  • कानूनी दृश्य और अंततिथियों के साथ काम करते समय उपयोग किया जाता है। एक अतिरिक्त पैरामीटर के रूप में, अवधि का प्रकार (दिन, महीना, वर्ष, आदि) इंगित किया जाता है।
  • स्थान जोड़ेंआपको एक निश्चित प्रकार (दूसरा, मिनट, दिन, आदि) के निर्दिष्ट समय की तारीख से जोड़ने या लेने की अनुमति देता है।
  • विभाजनआउटपुट मूल्य (दिन, वर्ष, महीने, आदि) के प्रकार के संकेत के साथ दो तिथियों के बीच अंतर निर्धारित करता है।
  • भूरा लापता मान को निर्दिष्ट अभिव्यक्ति में बदल देता है।
  • प्रतिनिधित्व और प्रतिनिधित्व निर्दिष्ट फ़ील्ड का एक स्ट्रिंग प्रतिनिधित्व प्राप्त करें। क्रमशः किसी भी मान और केवल संदर्भों के लिए आवेदन करें।
  • टाइप करें, टाइप करेंइनपुट पैरामीटर के प्रकार को निर्धारित करने के लिए उपयोग किया जाता है।
  • संपर्कप्रोप मूल्य के प्रकार के लिए एक तार्किक तुलना ऑपरेटर है।
  • एक्सप्रेसमूल्य को वांछित प्रकार में परिवर्तित करने के लिए उपयोग किया जाता है।
  • दिनांक और समय संख्यात्मक मूल्यों (वर्ष, महीने, दिन, घंटा, मिनट, दूसरे) से "दिनांक" प्रकार का मूल्य प्राप्त करता है।
  • मूल्य1 सी अनुरोध में पूर्वनिर्धारित मूल्यों को इंगित करने के लिए उपयोग किया जाता है - संदर्भ पुस्तकें, गणना, प्रजाति योजनाएं। उपयोग का उदाहरण: " जहां वैधता \u003d मान (गणना .Urfizlitsa। Fizli)«.

अनुरोधों का डिजाइनर

1 सी से अनुरोध बनाने के लिए एक बहुत ही सुविधाजनक अंतर्निहित तंत्र है - क्वेरी कन्स्ट्रक्टर। इसमें निम्नलिखित मुख्य टैब शामिल हैं:

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

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


कंसोल अनुरोध

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

आप इसकी डिस्क या सॉफ़्टवेयर पर क्वेरी कंसोल डाउनलोड कर सकते हैं।

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

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

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

इसके विपरीत, अनुरोधों का संयोजन करते समय, परिणाम "लंबवत gluing" होता है, यानी, पहले अनुरोध के परिणाम की पहली पंक्ति, फिर दूसरा।

आइए अभ्यास करने दें:

एक नामकरण, संख्या, राशि चुनें जोड़ना दस्तावेज़ से एक नामकरण, मात्रा, राशि चुनें। स्रोत। टीवी

इस अनुरोध का परिणाम निम्नानुसार है:

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

एक नामकरण, के रूप में मात्रा चुनें टक्कर, योग के रूप में सारांश0 के रूप में रंग0 के रूप में साइडिंग दस्तावेज़ से। किरिटी। तंजे जोड़ना टक्कर0 के रूप में सारांश, के रूप में संख्या रंग, योग के रूप में साइडिंग दस्तावेज़ से। रूस

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

शब्दावली टक्कर सारांश रंग साइडिंग
पेपर ए 4। 25 14 500
स्टिकर 500 एल। 8 4 880
फाइल पारदर्शी 5 4 100
कार्यालय सेट 8 8 840
कार्यालय सेट 1 1 105
फाइल पारदर्शी 1 820
स्टिकर 500 एल। 1 610

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

चुनें
नामकरण,
एक colleate के रूप में राशि (सामूहिक),
राशि (फुटपाथ) एक राशि के रूप में
एक हाथ के रूप में राशि (जादू)
एक प्रकार के रूप में राशि (sording)
का
(
एक नामकरण, के रूप में मात्रा चुनें टक्कर, योग के रूप में सारांश0 के रूप में रंग0 के रूप में साइडिंग दस्तावेज़ से। किरिटी। तंजे जोड़ना एक नामकरण 0 के रूप में चुनें टक्कर0 के रूप में सारांश, के रूप में संख्या रंग, योग के रूप में साइडिंग दस्तावेज़ से। रूस ) नेस्टेड अनुरोध के रूप में
नामकरण पर समूह

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

शब्दावली टक्कर सारांश रंग साइडिंग
पेपर ए 4। 25 14 500
स्टिकर 500 एल। 8 4 880 1 610
कार्यालय सेट 5 4 100 1 1 105
फाइल पारदर्शी 8 8 840 1 820

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

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

; निवेश किए गए अनुरोध (विकास में)।

माल और सेवाओं का प्रवेशतथा माल आपूर्तिकर्ता की वापसी निर्दिष्ट अवधि के लिए।

नए टैब: एसोसिएशन / छद्म नाम।

पाठ №4 का सैद्धांतिक हिस्सा

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

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

अनुभाग विभाजन पर विचार करें एसोसिएशन / छद्म नाम:

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

  • टेबल पूछताछ दो कॉलम:
    • नाम। प्रारूप में स्वचालित रूप से सेट करें अनुरोध 1 ... अनुरोध एन;
    • डुप्लिकेट के बिना। यदि आपको पिछले अनुरोध के साथ संयुक्त होते हैं तो आपको बार-बार तारों को बाहर करने की आवश्यकता होती है। यह ध्यान देने योग्य है कि यह ध्वज केवल उस क्वेरी को जोड़ने पर कार्य करेगा जिसमें इसे पिछले अनुरोध के साथ सेट किया गया है।

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

पाठ №4 का व्यावहारिक हिस्सा

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

कार्य: सभी दस्तावेजों का अनुरोध करें माल और सेवाओं का प्रवेशतथा माल आपूर्तिकर्ता की वापसी निर्दिष्ट अवधि के लिए।

  1. एक नया अनुरोध बनाएं;
  2. आइए क्वेरी कन्स्ट्रक्टर शुरू करें;
  3. तालिका का चयन करें Adaitetovarov पर्यवेक्षण शाखा से प्रलेखन;
  4. मेज से Adaitetovarov पर्यवेक्षण एक फ़ील्ड चुनें संपर्क;
  5. आइए हम टैब पर जाएं शर्तेँ;
  6. अध्याय में मैदान, शाखा को प्रकट करें Adaitetovarov पर्यवेक्षण"+" बटन का उपयोग करना;
  7. हमें आवश्यकता मिलती है तारीखऔर इसे शर्त अनुभाग में खींचकर, तुलना ऑपरेटर का चयन करें के बीच और उदाहरण के लिए, अवधि की शुरुआत और अंत के पैरामीटर निर्दिष्ट करें अवधि की शुरुआत तथा सोफ़ा;
  8. आइए हम टैब पर जाएं एसोसिएशन / छद्म नाम.
  9. एक नया अनुरोध, ध्वज जोड़ें डुप्लिकेट के बिना आपको उठाने की जरूरत नहीं है, क्योंकि हम विभिन्न प्रकार के दस्तावेजों का उपयोग करते हैं;

  10. 1 सी अनुरोध डिजाइनर स्वचालित रूप से टैब पर जाएगा टेबल्स और फ़ील्ड। विंडो के दाईं ओर देखा जाएगा कि दूसरा संयोजन अनुरोध सक्रिय है;


  11. तालिका के लिए पैराग्राफ 1 - 7 दोहराएं रद्द;
  12. हम फिर से टैब पर आगे बढ़ते हैं एसोसिएशन / छद्म नाम। छद्म नाम की तालिका से पता चलता है कि फ़ील्ड संपर्क दोनों टेबल एक पंक्ति में खड़े हैं, जिसका अर्थ है कि दोनों दस्तावेजों के संदर्भ एक कॉलम में अनुरोध के परिणामस्वरूप होंगे;
  13. के साथ कॉलम का नाम बदलें संपर्क पर डाक्यूमेंट(आइए हम फील्ड उपनाम सेट करें)। ऐसा करने के लिए, फ़ील्ड नाम से बाएं माउस बटन को डबल-क्लिक करें। जिसके बाद आप अपना नाम पूछ सकते हैं, हम वहां जाएंगे डाक्यूमेंट;

  14. अनुरोध तैयार है, कन्स्ट्रक्टर विंडो के नीचे "ओके" बटन दबाएं।

नतीजतन, हमें निम्नलिखित पाठ के साथ एक अनुरोध मिलेगा।

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

मान लीजिए कि हमारे सिस्टम में सामान खरीदने और बेचने के तथ्य क्रमशः दस्तावेजों और खपत द्वारा पंजीकृत हैं। प्रतिपक्ष एक खरीदार और आपूर्तिकर्ता दोनों हो सकता है। ऋण क्रेडिट माल द्वारा वितरित किया जा सकता है:

प्रतिपक्ष के कुल ऋण की गणना करने के लिए, इस प्रतिपक्ष पर सभी खर्चों की राशि जोड़ना आवश्यक है और एक ही प्रतिपक्ष से सभी आगमन की मात्रा को घटाएं, ऑपरेटर की मदद से सबकुछ गठबंधन करने के लिए इसे करने का सबसे आसान तरीका :

Request.text \u003d।
"
// मैं मानता हूं कि हमने प्रतिपक्षों को कितना भेज दिया
| का चयन करें
| खपत। संवाददाता,
| है
| दस्तावेज़। व्यय के रूप में स्रोत
द्वारा समूहीकृत
| खपत। संवाददाता
| सब कुछ मिलाएं
// इस बात पर विचार करें कि प्रतिपक्षियों की राशि कैसे
// माल को हमारे पास रखो
| का चयन करें
| आगमन। ठेकेदार,
// योग एक नकारात्मक संकेत के साथ,
// जब एक यूनाइटेड यह खपत की मात्रा से बाहर रखी है
| राशि (आकार। ऐसा)
| है
| दस्तावेज़। अधिक आगमन के रूप में
द्वारा समूहीकृत
| आगमन। Kontragent ";

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

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

अनुरोध \u003d नया अनुरोध;
Request.text \u003d।
"चुनें
| खपत। संवाददाता,
| ऋण के रूप में राशि (प्रवाह दर)
| जगह wt_production
| है
| दस्तावेज़। व्यय के रूप में स्रोत
द्वारा समूहीकृत
| खपत। संवाददाता
| सब कुछ मिलाएं
| का चयन करें
| आगमन। ठेकेदार,
| राशि (आकार। ऐसा)
| है
| दस्तावेज़। अधिक आगमन के रूप में
द्वारा समूहीकृत
| आगमन। Kontragent।
|;
|////////////////////////////////////////////////////////////////////////////////
| का चयन करें
| Wt_pripping। संवाद,
| राशि (WT_PRODUCTION। DOLG) एक ऋण के रूप में
| है
| Wt_production t_priphodovo की तरह है
द्वारा समूहीकृत
| Wt_pripping.contragent ";

विलय अनुरोध के लिए आवश्यकताएँ

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

अनुरोध \u003d नया अनुरोध;
Request.text \u003d।
"चुनें
| खपत। संवाददाता,

| है
| दस्तावेज़। व्यय के रूप में स्रोत
द्वारा समूहीकृत
| खपत। संवाददाता
| सब कुछ मिलाएं
| का चयन करें
| आगमन। ठेकेदार,
| राशि (आकार। Summum),
// शून्य फ़ील्ड छूट जोड़ें
| 0
| है
| दस्तावेज़। अधिक आगमन के रूप में
द्वारा समूहीकृत
| आगमन। Kontragent ";

यह छूट और समूहीकृत कटौती के लिए बनी हुई है।

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

अनुरोध \u003d नया अनुरोध;
Request.text \u003d।
"चुनें
| खपत। संवाददाता,
| राशि (प्रवाह दर) ऋण के रूप में,
| छूट के रूप में राशि (प्रवाह दर)
| है
| दस्तावेज़। व्यय के रूप में स्रोत
द्वारा समूहीकृत
| खपत। संवाददाता
| सब कुछ मिलाएं
| का चयन करें
| आगमन। ठेकेदार,
// स्थान बदलें
| 0,
| राशि (आकार। ऐसा)
| है
| दस्तावेज़। अधिक आगमन के रूप में
द्वारा समूहीकृत
| आगमन। Kontragent ";

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

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

अनुरोधों का संयोजन करते समय, परिणामों का "लंबवत gluing" होता है, यानी, पहले क्वेरी तारों का पालन किया जाता है, फिर दूसरा।

आइए अभ्यास करने दें:
कोड 1C वी 8.X चयन करें
नामकरण,
संख्या,
योग
का
दस्तावेज़। महान

जोड़ना

चुनें
नामकरण,
संख्या,
योग
का
दस्तावेज़। महान

इस अनुरोध का परिणाम निम्नानुसार है:
योग की राशि राशि
पेपर ए 4 25 14 500
स्टिकर 500 एल 8 4 880
पारदर्शी फ़ाइल 5 4 100
कार्यालय सेट 8 8 840

नतीजतन, हमें दो टेबल मिलेगा जो एक-दूसरे से जुड़े होंगे। यह देखना मुश्किल है कि दस्तावेज़ समाप्त होता है और दस्तावेज़ व्यय शुरू होता है। लेकिन हम इसे समझने के लिए कुछ करेंगे:
कोड 1C वी 8.X
चुनें
नामकरण,
एक colleate के रूप में मात्रा
राशि के रूप में राशि
0 एक हाथ के रूप में,
0 साइडिंग के रूप में
का
दस्तावेज़। महान

जोड़ना

चुनें
नामकरण,
0 एक कोल्ट्स के रूप में,
0 के रूप में
एक हाथ के रूप में मात्रा
साइडिंग के रूप में राशि
का
दस्तावेज़। प्रस्थान। Tasters

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

पेपर ए 4 25 14 500
स्टिकर 500 एल 8 4 880
पारदर्शी फ़ाइल 5 4 100
कार्यालय सेट 8 8 840
कार्यालय सेट 1 1 105
पारदर्शी फ़ाइल 1 820
स्टिकर 500l 1 610

अब हमें डुप्लिकेट तत्वों को हटाने के अनुरोध के परिणाम से आवश्यकता है। हमारे पास दो अनुरोध हैं और यदि हम एक साथ बदल जाते हैं, तो प्रत्येक अलग-अलग डुप्लिकेट तत्वों को खत्म करने के लिए, फिर हम काम नहीं करेंगे। इसलिए, हम निम्नलिखित रूपों का अनुरोध करेंगे:
कोड 1C वी 8.X
चुनें
नामकरण,
एक colleate के रूप में राशि (सामूहिक),
राशि (फुटपाथ) एक राशि के रूप में
एक हाथ के रूप में राशि (जादू)
एक प्रकार के रूप में राशि (sording)
का

(चुनें
नामकरण,
एक colleate के रूप में मात्रा
राशि के रूप में राशि
0 एक हाथ के रूप में,
0 साइडिंग के रूप में
का
दस्तावेज़। महान

जोड़ना

चुनें
नामकरण,
0 एक कोल्ट्स के रूप में,
0 के रूप में
एक हाथ के रूप में मात्रा
साइडिंग के रूप में राशि
का
दस्तावेज़। स्रोत। Tasters) एक एम्बेडर के रूप में

नामकरण पर समूह

इसलिए, हम देखते हैं कि हमारा पूरा अनुरोध ब्रैकेट में संलग्न है और इसे एक एम्बेडर के रूप में नामित किया गया है। ऐसा किया जाता है ताकि हम दोनों उप-सुविधाओं से प्रविष्टियों को समूहित कर सकें और डुप्लिकेट तत्वों को खत्म कर सकें। इस डिजाइन को एक निवेश अनुरोध कहा जाता है। इस अनुरोध का परिणाम निम्नानुसार है:
Nomencleature Kolp Creek Supreghod रेंगने वाली जगहें
पेपर ए 4 25 14 500
स्टिकर 500 एल 8 4 880 1 610
कार्यालय सेट 5 4 100 1 1 105
फ़ाइल पारदर्शी 8 8 840 1 820

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

यदि हम समूहिंग का उपयोग किए बिना एक ही समय में प्रविष्टियों के केवल अद्वितीय मानों को छोड़ना चाहते हैं। आपको एक महत्वपूर्ण शब्द के बिना आगे बढ़ने का प्रस्ताव लिखना होगा।

साइट से ली गई जानकारी