क्वेरी 1s द्वारा समूहीकृत करें। एक प्रश्न में समूहीकरण

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

उदाहरण के लिए, समस्याओं को हल करने के लिए: एक अवधि के लिए प्रतिपक्ष की सभी बिक्री का योग निर्धारित करने के लिए, अधिकतम या औसत बिल।

तेज मार्ग

मूल सिंटैक्स:

चुनना<ГруппировочныеПоля>, <СУММА(<РасчетноеПоле>)>
से<Источник>
द्वारा समूह बनाएं
<ГруппировочныеПоля>

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

मैं ध्यान देता हूं कि समूहीकरण में पहले से मौजूद आदिम मूल्यों (संख्या, दिनांक, स्ट्रिंग) या लिंक के विवरण को जोड़ना आवश्यक नहीं है।

कोई समग्र कार्य भी नहीं हो सकता है, इस स्थिति में क्वेरी ऐसे काम करेगी जैसे कि SELECT DISTINCT का उपयोग किया जा रहा हो।

// यह क्वेरी सिस्टम में प्रत्येक वेयरहाउस से पारित अद्वितीय आइटमों की संख्या प्राप्त करेगी
चुनना
माल और सामग्रियों के अवशेष। गोदाम,
मात्रा (माल और सामग्री के विभिन्न अवशेष। नामकरण) नामकरण के रूप में,
1,
दिनांक समय (2017,1,12),
माल और सामग्री के अवशेष। गोदाम। नाम
से
संचय रजिस्टर। माल सूची शेष के रूप में सूची संतुलन

द्वारा समूह बनाएं
माल और सामग्री के अवशेष गोदाम

समूहीकरण कार्य (कुल)

  • जोड़ (<Поле>)
  • मात्रा(<Поле>)
  • मात्रा (विभिन्न<Поле>)
  • अधिकतम (<Поле>)
  • न्यूनतम (<Поле>)
  • औसत(<Поле>)

अन्य समूहीकरण विकल्प

इसे ग्रुपिंग फ़ंक्शंस (+, *, /, -) पर गणितीय ऑपरेटरों का उपयोग करने की अनुमति है, साथ ही कुल और अंदर (आवश्यकताओं के आधार पर) दोनों के शीर्ष पर चयन निर्माण की अनुमति है।

चुनना
,
AMOUNT (वस्तुओं के टर्नओवर के अवशेष। राशि टर्नओवर) राशि टर्नओवर के रूप में,
एसयूएम (इन्वेंट्री टर्नओवर का अवशेष। टर्नओवर की राशि) एएस टर्नओवर की राशि,
पसंद
जब SUM (इन्वेंट्री टर्नओवर के अवशेष। मात्रा टर्नओवर) = 0
फिर 0
अन्य योग (इन्वेंट्री टर्नओवर के अवशेष। राशि टर्नओवर) / एसयूएम (इन्वेंट्री टर्नओवर के अवशेष। मात्रा टर्नओवर)
औसत मूल्य के रूप में अंत
से

द्वारा समूह बनाएं
इन्वेंटरी टर्नओवर के अवशेष नामकरण

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

द्वारा समूह बनाएं
इन्वेंटरी टर्नओवर के अवशेष नामकरण

सम्मिलित तालिकाओं पर समुच्चय का उपयोग करना संभव है, लेकिन शीर्ष पर IsNULL फ़ंक्शन का उपयोग करने की अनुशंसा की जाती है

चुनना
स्प्र नामकरण। लिंक,
ISNULL(SUM(इन्वेंट्री टर्नओवर के अवशेष।SumTurnover), 0) AS योग
से
निर्देशिका। नामकरण AS SprNomenclature
बाँया जोड़
सॉफ्टवेयर (इन्वेंट्री टर्नओवर के अवशेष। नामकरण = SprNomenclature.Reference)

द्वारा समूह बनाएं

स्प्र नामकरण। लिंक

क्वेरी बिल्डर में ग्रुपिंग

इसी नाम के टैब पर बनाया गया है।

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

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

1सी (कोड)

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

अनुरोध< spanclass="k" > . < /span>मूलपाठ< spanclass="k" > =< /span>

< spanclass="s" >"चुनना

| usshippingOrder.Link AS Link,

| usStatusDocuments.Status AS स्थिति,

| usShippingOrder.Contractor AS ठेकेदार,

// वितरण पता इसमें संलग्न है"अभिव्यक्त करना ", क्योंकि मेटाडेटा में डिलीवरी पता असीमित लंबाई की एक स्ट्रिंग है और यदि इसे सीमित लंबाई की स्ट्रिंग में परिवर्तित नहीं किया जाता है,

//फिर इसका उपयोग करना असंभव होगा"परिणाम चालू"

// और हमें एक त्रुटि मिलती है"< strong>समूहीकरण के लिए अमान्य क्षेत्र< /strong> "

| एक्सप्रेस(usshippingOrder.ShippingAddress AS STRING(350)) ASShippingAddress

| से

| RegisterInformation.usStatusDocuments AS usStatusDocuments

| लेफ्ट जॉइन डॉक्यूमेंट। यूएसशिपिंगऑर्डर हमारे रूप मेंशिपिंगऑर्डर

| SW usDocumentStatus.Document = usShippingOrder.Link

|कहाँ

| usshippingOrder.Performed

|

| द्वारा आदेश

| usStatusDocuments.Status.Order

|परिणाम चालू

| प्रतिपक्ष,

| शिपिंग पता"< /span> < spanclass="k" > ; < /span>

इस क्वेरी का नतीजा एक ऐसा डेटासेट होगा जो ऐसा कुछ दिखता है:

प्रतिपक्ष 1

  • डिलीवरी का पता1

प्रतिपक्ष 1

  • डिलीवरी का पता 2

प्रतिपक्ष2

  • डिलीवरी का पता3

अब हमें तीन सरणियाँ प्राप्त करने की आवश्यकता है:
- क्रम 1, क्रम 2, क्रम 3
- क्रम 4, क्रम 5
- आदेश 6
इन सरणियों को प्राप्त करने के लिए, उपरोक्त क्वेरी "पदानुक्रम के साथ समूहीकरण करके" के बायपास को व्यवस्थित करना आवश्यक है:

1सी (कोड)

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

नमूनाकरण विधि< spanclass="k" > =< /span>बाईपासRequestResult< spanclass="k" > . < /span>समूहों और पदानुक्रम द्वारा< spanclass="k" > ; < /span>

परिणाम< spanclass="k" > =< /span>अनुरोध< spanclass="k" > . < /span> < spanclass="k" >दौड़ना< /span> < spanclass="k" > (< /span> < spanclass="k" > ) < /span> < spanclass="k" > ; < /span>

प्रथम स्तर का नमूना< spanclass="k" > =< /span>परिणाम< spanclass="k" > . < /span>चुनना< spanclass="k" > (< /span>नमूनाकरण विधि< spanclass="k" > ) < /span> < spanclass="k" > ; < /span>

< spanclass="k" >अलविदा< /span>प्रथम स्तर का नमूना< spanclass="k" > . < /span>अगला< spanclass="k" > (< /span> < spanclass="k" > ) < /span> < spanclass="k" >चक्र< /span> < spanclass="c" > // पदानुक्रम के प्रत्येक स्तर के भीतर, आदेश दिए गए हैं: "बनाया गया", "काम करने के लिए", "कार्य प्रगति पर है", "शिपमेंट के लिए तैयार" (बिल्कुल इसी क्रम में, गणना में आदेश सेट किया गया है)

दूसरे स्तर का नमूना< spanclass="k" > =< /span>प्रथम स्तर का नमूना< spanclass="k" > . < /span>चुनना< spanclass="k" > (< /span>नमूनाकरण विधि< spanclass="k" > ) < /span> < spanclass="k" > ; < /span>

msvOrders< spanclass="k" > . < /span>साफ़< spanclass="k" > (< /span> < spanclass="k" > ) < /span> < spanclass="k" > ; < /span> < spanclass="c" > // सूची में पहले को जोड़ने से पहले साफ़ किया गया

< spanclass="k" >अलविदा< /span>दूसरे स्तर का नमूना< spanclass="k" > . < /span>अगला< spanclass="k" > (< /span> < spanclass="k" > ) < /span> < spanclass="k" >चक्र< /span> < spanclass="c" > // पदानुक्रम के प्रत्येक स्तर के भीतर, आदेश दिए गए हैं: "बनाया गया", "काम करने के लिए", "कार्य प्रगति पर है", "शिपमेंट के लिए तैयार" (बिल्कुल इसी क्रम में, गणना में आदेश सेट किया गया है)

तीसरे स्तर का नमूना< spanclass="k" > =< /span>दूसरे स्तर का नमूना< spanclass="k" > . < /span>चुनना< spanclass="k" > (< /span>बाईपासRequestResult< spanclass="k" > . < /span>सीधा< spanclass="k" > ) < /span> < spanclass="k" > ; < /span> < spanclass="c" > // पैरामीटर छोड़ा जा सकता है, नमूनाकरण की डिफ़ॉल्ट विधि प्रत्यक्ष है

< spanclass="k" >अलविदा< /span>तीसरे स्तर का नमूना< spanclass="k" > . < /span>अगला< spanclass="k" > (< /span> < spanclass="k" > ) < /span> < spanclass="k" >चक्र< /span> < spanclass="c" > // पदानुक्रम के प्रत्येक स्तर के भीतर, आदेश दिए गए हैं: "बनाया गया", "काम करने के लिए", "कार्य प्रगति पर है", "शिपमेंट के लिए तैयार" (बिल्कुल इसी क्रम में, गणना में आदेश सेट किया गया है)

msvOrders< spanclass="k" > . < /span>जोड़ना< spanclass="k" > (< /span>तीसरे स्तर का नमूना< spanclass="k" > . < /span>जोड़ना< spanclass="k" > ) < /span> < spanclass="k" > ; < /span>

< spanclass="k" >एंडसाइकिल< /span> < spanclass="k" > ; < /span>

प्रपत्रचयनआदेश द्वारा< spanclass="k" > (< /span>msvOrders< spanclass="k" > ) < /span> < spanclass="k" > ; < /span> < spanclass="c" > // यहां हम एक-एक करके आवश्यक सरणियों के माध्यम से लूप करते हैं: [ऑर्डर 1, ऑर्डर 2, ऑर्डर 3], फिर [ऑर्डर 4, ऑर्डर 5] और [ऑर्डर 6]

< spanclass="k" >एंडसाइकिल< /span> < spanclass="k" > ; < /span>

< spanclass="k" >एंडसाइकिल< /span> < spanclass="k" > ; < /span>

टिप्पणी। निर्माण "ऑर्डर बाय usStatusDocuments.Status.Order" प्रत्येक सरणी के अंदर काम करेगा, अर्थात। प्रत्येक प्राप्त सरणियों में स्थिति के अनुसार आदेश दिए जाएंगे।

कॉन्फिगुरेटर सहायता में विवरण से क्वेरी योग की गणना करने में सहायता करें

क्वेरी योग की गणना

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

क्वेरी योग की गणना करने की प्रक्रिया निम्नलिखित नियमों के अनुसार वर्णित है:

<Описание итогов>

<Итоги> [<Список агрегатных функций>]

<Итоги>

परिणाम [<Список итоговых_полей>] [सामान्य] द्वारा<Список контрольных точек>

<Список итоговых_полей>

<Итоговое_поле> [,<Список_итоговых_полей> [, …]]

<Итоговое_поле>

<Агрегатная_функция> | <Выражение>[[कैसे]<Псевдоним_поля>]

<Список контрольных точек>

<Контрольная точка> [, <Контрольная точка> [, …]]

<Контрольная точка>

<Выражение>[[केवल] पदानुक्रम] | [अवधि(दूसरा | मिनट | घंटा | दिन | सप्ताह | महीना | तिमाही | वर्ष | दशक | आधा वर्ष
[,<Литерал типа DATE> | <Идентификатор параметра>]
[,<Литерал типа DATE> | <Идентификатор параметра>])] [[एएस] फील्ड उपनाम]

सारांश विवरण अनिवार्य खोजशब्द परिणामों के साथ शुरू होता है।

<Список агрегатных функций>कुल कार्यों की एक सूची शामिल है जिसकी गणना परिणामों में की जानी चाहिए। कुल कार्यों में शामिल हैं।

कुल योग के अलावा, आप नियंत्रण बिंदुओं द्वारा योग की गणना निर्दिष्ट कर सकते हैं। ऐसा करने के लिए, अनिवार्य सॉफ़्टवेयर कीवर्ड के बाद, आपको निर्दिष्ट करना होगा<Список контрольных точек>. प्रत्येक<Контрольная точка>रोकना<Выражение>क्वेरी निष्पादित होने पर इसका मूल्यांकन किया जाता है। इन अभिव्यक्तियों के मूल्यों के प्रत्येक संयोजन के लिए, कुल पंक्तियों की गणना की जाएगी और क्वेरी परिणाम में जोड़ी जाएगी।

यदि चेकपॉइंट अकाउंटिंग रजिस्टर का सबकॉन्टो फील्ड है, तो इस चेकपॉइंट के लिए टोटल प्राप्त करते समय NULL वैल्यू को नजरअंदाज कर दिया जाएगा।

क्वेरी भाषा कुल कार्य

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

<Агрегатная функция>

जोड़ (<Выражение>) |
औसत (<Выражение>) |
न्यूनतम (<Выражение>) |
अधिकतम (<Выражение>) |
मात्रा ([विभिन्न]<Выражение> | *)

उदाहरण:

चुनना
चालान। नामकरण। विवरण,
राशि (चालान। राशि) राशि के रूप में,
औसत (चालान.राशि) औसत के रूप में,
अधिकतम (चालान.राशि) अधिकतम के रूप में,
न्यूनतम (चालान.राशि) न्यूनतम के रूप में
मात्रा (चालान। राशि) मात्रा के रूप में

से

द्वारा समूह बनाएं
चालान। नामकरण

परिणाम सामान्य

प्रश्न परिणाम:

नाम जोड़ औसत अधिकतम न्यूनतम मात्रा
265 955,45 12 511,12 40 000,23 555 8
बच्चों के लिए पतलून 28 500,22 9 500,07 15 000 3 000 3
शर्ट "काउगर्ल" 24 000 8 000 16 000 4 000 3
महिलाओं के लिए जींस 63 555 6 355,5 30 000 555 10
बच्चों का स्वेटर 6 400 6 400 6 400 6 400 1
सिंक "लिली" 60 000,23 30 000,115 40 000,23 20 000 2
मोयोडोड्र "एक्वेरियम" 65 500 21 833,33 40 000 8 000 3
मिक्सर "अल्ट्रा" 15 000 15 000 15 000 15 000 1
फूड प्रोसेसर क्रुप्स 3 000 3 000 3 000 3 000 1

एग्रीगेट फ़ंक्शंस का उपयोग चयन फ़ील्ड सूची, HAVING, TOTALS, ORDER BY क्लॉज़ में किया जा सकता है।

कुल समारोह SUM

फ़ंक्शन चयन में शामिल सभी फ़ील्ड मानों के अंकगणितीय योग की गणना करता है।

केवल संख्यात्मक मान वाले फ़ील्ड को फ़ंक्शन पैरामीटर के रूप में निर्दिष्ट किया जा सकता है।

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

कुल समारोह औसत

फ़ंक्शन चयन में शामिल सभी फ़ील्ड मानों के औसत मान की गणना करता है।

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

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

कुल समारोह न्यूनतम

फ़ंक्शन चयन में सभी फ़ील्ड मानों से न्यूनतम मान की गणना करता है।

न्यूनतम मूल्य का निर्धारण करते समय, मूल्य तुलना नियमों में वर्णित है।

कुल समारोह मैक्सिमम

फ़ंक्शन चयन में शामिल सभी फ़ील्ड मानों से अधिकतम मान की गणना करता है।

फ़ंक्शन पैरामीटर के रूप में, आप किसी भी प्रकार के मान वाले फ़ील्ड के संदर्भ निर्दिष्ट कर सकते हैं।

अधिकतम मूल्य का निर्धारण करते समय, मूल्य तुलना नियमों में वर्णित है।

कुल कार्य मात्रा

फ़ंक्शन चयन में शामिल पैरामीटर मानों की संख्या की गणना करता है। अन्य समग्र कार्यों के विपरीत, QUANTITY फ़ंक्शन का उपयोग तीन तरीकों से किया जा सकता है।

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

फ़ंक्शन पैरामीटर के रूप में, आप किसी भी प्रकार के मान वाले फ़ील्ड के संदर्भ निर्दिष्ट कर सकते हैं।

उदाहरण:

चुनना
मात्रा (*) कुल के रूप में,
मात्रा (अलग चालान। नामकरण) अलग के रूप में

से
Document.Invoice.Composition चालान के रूप में

प्रश्न परिणाम:

कुल अलग
24 8

कुल योग की गणना

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

उदाहरण:



कुल मिलाकर कुल राशि (संख्या)।

प्रश्न परिणाम:

उत्पाद मात्रा संख्या प्राप्तकर्ता
238
नल 10 आरएनए 1 यूरीपिंकटॉर्ग
नल 8 आरएनके-3 पत्रिका। "मालिक"
नल 44 आरएनए-4 पत्रिका। "बहुत बड़ा"
नल 22 आरएनके-5 यूरीपिंकटॉर्ग
वैंटस 5 आरएनए 1 यूरीपिंकटॉर्ग
वैंटस 1 आरएनके-3 पत्रिका। "मालिक"
वैंटस 14 आरएनए-4 पत्रिका। "बहुत बड़ा"
मेज 1 आरएनए 1 यूरीपिंकटॉर्ग
मेज 15 शाही सेना 2 पत्रिका। "फर्नीचर"
मेज 10 आरएनए-4 पत्रिका। "बहुत बड़ा"
कुर्सी 55 शाही सेना 2 पत्रिका। "फर्नीचर"
कुर्सी 5 आरएनके-3 पत्रिका। "मालिक"
कुर्सी 32 आरएनए-4 पत्रिका। "बहुत बड़ा"
कुर्सी 16 आरएनके-5 यूरीपिंकटॉर्ग

क्वेरी भाषा में बूलियन अभिव्यक्तियाँ

क्वेरी भाषा में, चयन संचालन और चयन स्थितियों में, तार्किक अभिव्यक्तियों का उपयोग किया जाता है:

<Логическое выражение>

<Выражение> |
<Выражение> <Операция сравнения> <Выражение> |
<Выражение>[नहीं] [पदानुक्रम] में (<Список значений> | <Массив значений>) |
<Выражение>[नहीं] [पदानुक्रम] में (<Описание запроса>) |
<Выражение>[बीच में नहीं<Выражение>और<Выражение> |
<Выражение>है [नहीं] शून्य |
<Выражение>जोड़ना<Имя таблицы> |
<Выражение>[उसके जैसा नहीं<Литерал типа СТРОКА>
[विशेष चार<Литерал типа СТРОКА>]

<Операция сравнения>

> | < | = | >= | <= | <>

<Список значений>

<Выражение>[, <Выражение> [, …]]

तार्किक अभिव्यक्ति हो सकती है:

मूल्य तुलना नीचे वर्णित मूल्य तुलना नियमों का उपयोग करती है।

मूल्य तुलना नियम

चूँकि क्वेरी भाषा में विभिन्न प्रकार के मानों की तुलना की जा सकती है, ऐसे नियम परिभाषित किए जाते हैं जिनके द्वारा दो मानों की तुलना की जाती है। इन नियमों का उपयोग इसके लिए किया जाता है:

  • तुलना ऑपरेटरों में मूल्य तुलना;
  • कुल कार्यों न्यूनतम और अधिकतम में अधिकतम और न्यूनतम मान निर्धारित करना;
  • ऑर्डर द्वारा क्लॉज में निर्दिष्ट ऑर्डर के अनुसार क्वेरी परिणाम रिकॉर्ड ऑर्डर करना।

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

  • न्यूल टाइप करें (सबसे कम);
  • बूलियन प्रकार;
  • नंबर टाइप करें;
  • दिनांक टाइप करें;
  • स्ट्रिंग टाइप करें;
  • संदर्भ प्रकार।

किसी विशेष प्रकार के अनुरूप तालिकाओं की आंतरिक संदर्भ संख्या के आधार पर विभिन्न संदर्भ प्रकारों के बीच संबंध निर्धारित किए जाते हैं।

यदि डेटा प्रकार मेल खाते हैं, तो मूल्यों की तुलना निम्नलिखित नियमों के अनुसार की जाती है:

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

महत्वपूर्ण!दो मानों की कोई भी तुलना जिसमें कम से कम एक NULL मान होता है, परिणाम FALSE के समान होता है।

वैल्यू मैच ऑपरेटर

निम्नलिखित में से किसी एक के साथ मैच के लिए परीक्षण करने के लिए ऑपरेटर बी का फॉर्म

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

उदाहरण:

चुनना

कहाँ
निर्देशिका। नामकरण। माता-पिता। नाम
वी ("घरेलू उपकरण", "कार्यालय उपकरण")

पदानुक्रमित सदस्यता परीक्षण के लिए ऑपरेटर बी का प्रपत्र

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

उदाहरण:

// समूह पैरामीटर के रूप में, अनुरोध के लिए एक लिंक पास किया जाता है
// नामकरण संदर्भ पुस्तक के किसी भी समूह के लिए।

चुनना
निर्देशिका। नामकरण। विवरण

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

उदाहरण:

चुनना
निर्देशिका। नामकरण। विवरण

यह जांचने के लिए ऑपरेटर बी का फॉर्म कि क्या कोई मान किसी क्वेरी के परिणाम से मेल खाता है

इस ऑपरेटर का उपयोग करने का एक उदाहरण होगा:

उदाहरण:


चुनना
उत्पाद। नाम
से
निर्देशिका। माल के रूप में माल
कहाँ
उत्पाद। लिंक बी
चुनना
व्यय चालान संरचना। उत्पाद
से

)

प्रश्न परिणाम:

विपरीत परिणाम प्राप्त करने के लिए, यदि आप यह निर्धारित करना चाहते हैं कि मान क्वेरी के किसी भी परिणाम से मेल नहीं खाता है, तो क्वेरी इस तरह दिखती है:

उदाहरण:

// उन सामानों के नाम चुनें जो इनवॉइस में मौजूद थे
चुनना
उत्पाद। नाम
से
निर्देशिका। माल के रूप में माल
कहाँ
Products.Link IN नहीं
चुनना
व्यय चालान संरचना। उत्पाद
से
दस्तावेज़। व्यय चालान। व्यय के रूप में रचना
)

प्रश्न परिणाम:

ध्यान दें कि ऑपरेशन बी की क्वेरी से, ऑपरेशन की उपस्थिति से पहले बाहरी क्वेरी में सामने आई तालिकाओं के क्षेत्रों तक पहुंचना संभव है।

उदाहरण:

// उन सामानों के नाम चुनें जो इनवॉइस में मौजूद थे
चुनना
उत्पाद। नाम
से
निर्देशिका। माल के रूप में माल
कहाँ
उत्पाद। लिंक बी
चुनना
व्यय चालान संरचना। उत्पाद
से
दस्तावेज़। व्यय चालान। व्यय के रूप में रचना
कहाँ
ExpenditureInkComposition.Product = Products.Link
)

प्रश्न परिणाम:

यह जाँचने के लिए ऑपरेटर कि क्या कोई मान किसी श्रेणी में है

BETWEEN ऑपरेटर आपको यह जांचने की अनुमति देता है कि क्या इसके दाईं ओर निर्दिष्ट अभिव्यक्ति का मान बाईं ओर निर्दिष्ट सीमा के भीतर है (साथ में सीमा की सीमा)। यदि ऐसा है, तो कथन का परिणाम सत्य होगा, अन्यथा यह असत्य होगा। आवेदन करने से ऑपरेटर की कार्रवाई उलट नहीं जाती है। मूल्यों की तुलना में वर्णित नियमों के अनुसार की जाती है।

उदाहरण:

चुनना


कहाँ
100 और 1000 के बीच निर्देशिका। नामकरण। खरीद मूल्य

शून्य परीक्षण ऑपरेटर

IS NULL ऑपरेटर आपको इसके बाईं ओर NULL के लिए अभिव्यक्ति के मान की जाँच करने की अनुमति देता है। यदि मान NULL है, तो ऑपरेटर का परिणाम TRUE है, अन्यथा यह FALSE है। आवेदन करने से ऑपरेटर की कार्रवाई उलट नहीं जाती है।

उदाहरण:

चुनना
निर्देशिका। नामकरण। नाम,
निर्देशिका। नामकरण। खरीद मूल्य
कहाँ
Directory.Nomenclature.PurchasePrice Yes NULL

संदर्भ मूल्य जांच ऑपरेटर

संदर्भ ऑपरेटर आपको यह जांचने की अनुमति देता है कि इसके दाईं ओर निर्दिष्ट अभिव्यक्ति का मान बाईं ओर निर्दिष्ट तालिका का संदर्भ है या नहीं। यदि हाँ, तो संचालिका का परिणाम TRUE होगा, अन्यथा FALSE होगा। टेबल डीरेफरेंसिंग को "फील्ड डीरेफरेंसिंग" पैराग्राफ में वर्णित किया गया है।

उदाहरण:

चुनना
निर्देशिका। नामकरण। नाम,
संदर्भ। नामकरण। मापन की इकाई
कहाँ
संदर्भ। नामकरण। माप की इकाई संदर्भ संदर्भ। माप की इकाइयाँ

पैटर्न चेक ऑपरेटर

LIKE ऑपरेटर आपको इसके बाईं ओर निर्दिष्ट अभिव्यक्ति के मान की तुलना दाईं ओर निर्दिष्ट टेम्पलेट स्ट्रिंग से करने की अनुमति देता है। अभिव्यक्ति मान टाइप स्ट्रिंग का होना चाहिए। यदि व्यंजक का मान टेम्पलेट से मेल खाता है, तो ऑपरेटर का परिणाम TRUE होगा, अन्यथा यह FALSE होगा।

टेम्प्लेट स्ट्रिंग में निम्नलिखित वर्ण सेवा वर्ण हैं और स्ट्रिंग वर्ण से भिन्न अर्थ रखते हैं:

  • % (प्रतिशत): अनुक्रम जिसमें मनमाना वर्ण होते हैं
  • _ (अंडरस्कोर): एक मनमाना चरित्र
  • [...] (वर्ग कोष्ठक के भीतर एक या अधिक वर्ण): वर्ग कोष्ठक के अंदर सूचीबद्ध कोई भी एकल वर्ण
    एक गणन में श्रेणियाँ हो सकती हैं, जैसे कि a-z, जिसका अर्थ है कि श्रेणी के भीतर कोई भी वर्ण, जिसमें सीमा के अंत भी शामिल हैं।
  • [^...] (वर्ग कोष्ठक में एक नकारात्मक चिह्न जिसके बाद एक या अधिक वर्ण होते हैं): निषेध चिह्न के बाद सूचीबद्ध वर्णों के अलावा कोई भी एकल वर्ण

किसी भी अन्य प्रतीक का अर्थ स्वयं होता है और कोई अतिरिक्त भार नहीं उठाता है।

यदि सूचीबद्ध वर्णों में से किसी एक को स्वयं के रूप में लिखना आवश्यक है, तो इसके पहले होना चाहिए<Спецсимвол>. खुद<Спецсимвол>(कोई भी उपयुक्त वर्ण) उसी कथन में विशेष वर्ण कीवर्ड के बाद परिभाषित किया गया है।

उदाहरण के लिए, पैटर्न "%ABC[abc]_abc%" SPECIAL CHARACTER "" का अर्थ वर्णों के अनुक्रम से युक्त एक सबस्ट्रिंग है:
अक्षर ए; अक्षर बी; अक्षर बी; एक अंक; ए, बी, सी या डी अक्षरों में से एक; अंडरस्कोर चरित्र; अक्षर ए; पत्र बी; में पत्र

इसके अलावा, यह क्रम वर्णों के एक मनमाना सेट से पहले हो सकता है।

पदानुक्रम योग

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

उदाहरण:

Doc.Item, Doc.Quantity, Doc.Link.Number, Doc.Link.Recipient का चयन करें
दस्तावेज़ से। व्यय। संरचना डॉक्टर के रूप में
डॉक्टर उत्पाद द्वारा आदेश
दस्तावेज़ द्वारा सारांश योग (मात्रा)। उत्पाद पदानुक्रम

प्रश्न परिणाम:

उत्पाद मात्रा संख्या प्राप्तकर्ता
पाइपलाइन 104
नल 84
नल 10 आरएनए 1 यूरीपिंकटॉर्ग
नल 8 आरएनके-3 पत्रिका। "मालिक"
नल 44 आरएनए-4 पत्रिका। "बहुत बड़ा"
नल 22 आरएनके-5 यूरीपिंकटॉर्ग
वैंटस 20
वैंटस 5 आरएनए 1 यूरीपिंकटॉर्ग
वैंटस 1 आरएनके-3 पत्रिका। "मालिक"
वैंटस 14 आरएनए-4 पत्रिका। "बहुत बड़ा"
फर्नीचर 134
मेज 26
मेज 1 आरएनए 1 यूरीपिंकटॉर्ग
मेज 15 शाही सेना 2 पत्रिका। "फर्नीचर"
मेज 10 आरएनए-4 पत्रिका। "बहुत बड़ा"
कुर्सी 108
कुर्सी 55 शाही सेना 2 पत्रिका। "फर्नीचर"
कुर्सी 5 आरएनके-3 पत्रिका। "मालिक"
कुर्सी 32 आरएनए-4 पत्रिका। "बहुत बड़ा"
कुर्सी 16 आरएनके-5 यूरीपिंकटॉर्ग

उदाहरण:

Doc.Item, Doc.Quantity, Doc.Link.Number, Doc.Link.Recipient का चयन करें
दस्तावेज़ से। व्यय। रचना डॉक्टर
डॉक्टर उत्पाद द्वारा आदेश
डॉक्टर द्वारा कुल योग (मात्रा)। उत्पाद केवल पदानुक्रम

प्रश्न परिणाम:

उत्पाद मात्रा संख्या प्राप्तकर्ता
पाइपलाइन 104
नल 10 आरएनए 1 यूरीपिंकटॉर्ग
नल 8 आरएनके-3 पत्रिका। "मालिक"
नल 44 आरएनए-4 पत्रिका। "बहुत बड़ा"
नल 22 आरएनके-5 यूरीपिंकटॉर्ग
वैंटस 5 आरएनए 1 यूरीपिंकटॉर्ग
वैंटस 1 आरएनके-3 पत्रिका। "मालिक"
वैंटस 14 आरएनए-4 पत्रिका। "बहुत बड़ा"
फर्नीचर 134
मेज 1 आरएनए 1 यूरीपिंकटॉर्ग
मेज 15 शाही सेना 2 पत्रिका। "फर्नीचर"
मेज 10 आरएनए-4 पत्रिका। "बहुत बड़ा"
कुर्सी 55 शाही सेना 2 पत्रिका। "फर्नीचर"
कुर्सी 5 आरएनके-3 पत्रिका। "मालिक"
कुर्सी 32 आरएनए-4 पत्रिका। "बहुत बड़ा"
कुर्सी 16 आरएनके-5 यूरीपिंकटॉर्ग
में प्रकाशित किया गया था , टैग की गईं #

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

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

लेख में मैं 1 सी क्वेरी भाषा में मुख्य खोजशब्दों के बारे में बात करने की कोशिश करूँगा:

  • चुनना
  • अनुमत
  • विभिन्न
  • अभिव्यक्त करना
  • पहला
  • बदलाव के लिए
  • अर्थ
  • मूल्य प्रकार (और आरईएफ ऑपरेटर)
  • पसंद
  • द्वारा समूह बनाएं
  • रखना
  • शून्य है
  • शून्य हैं
  • कनेक्शन - दाएँ, बाएँ, आंतरिक, पूर्ण.

साथ ही 1C भाषा की छोटी-छोटी तरकीबें, जिनका उपयोग करके आप क्वेरी टेक्स्ट को बेहतर ढंग से बना सकते हैं।

1C 8.2 सिस्टम में प्रश्नों को डीबग करने के लिए, एक विशेष उपकरण प्रदान किया जाता है - क्वेरी कंसोल। आप विवरण देख सकते हैं और इसे लिंक पर डाउनलोड कर सकते हैं -।

1C क्वेरी भाषा के सबसे महत्वपूर्ण और दिलचस्प ऑपरेटरों पर विचार करें।

चुनना

1C Enterprise 8 क्वेरी भाषा में, कोई भी क्वेरी कीवर्ड से शुरू होती है चुनना. 1C भाषा में कोई UPDATE, DELETE, CREATE TABLE, INSERT निर्माण नहीं हैं, ये जोड़-तोड़ ऑब्जेक्ट तकनीक का उपयोग करके किए जाते हैं। इसका मकसद केवल डेटा को पढ़ना होता है।

उदाहरण के लिए:

चुनना
वर्तमान सूची। नाम
से
संदर्भ। नामकरण वर्तमान संदर्भ के रूप में

क्वेरी आइटम नामों के साथ एक तालिका लौटाएगा।

संरचना के बगल में चुननाकीवर्ड्स मिल सकते हैं बदलाव के लिए, अनुमत, विभिन्न, पहला

अनुमत- तालिका से केवल उन अभिलेखों का चयन करता है जिन पर वर्तमान उपयोगकर्ता का अधिकार है।

विभिन्न- का मतलब है कि परिणाम में डुप्लिकेट पंक्तियां शामिल नहीं होंगी।

चयन (मामला)

बहुत बार इस निर्माण को प्रोग्रामर द्वारा कम करके आंका जाता है। इसके उपयोग का एक उदाहरण:

वर्तमानसूची.नाम,

WHEN CurrentCatalog.Service THEN

"सेवा"

एक तरह के नामकरण के रूप में अंत

संदर्भ। नामकरण वर्तमान संदर्भ के रूप में

उदाहरण "नामकरण प्रकार" फ़ील्ड - "उत्पाद" या "सेवा" में एक पाठ मान लौटाएगा।

कहाँ

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

चुनना
निर्देशिका। नाम
से
CurrentDirectory.Nomenclature AS CurrentDirectory
जहां CurrentDirectory.Service = TRUE

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

"जहां सेवा"

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

आप अभिव्यक्तियों में प्रत्यक्ष स्थितियों का उपयोग कर सकते हैं:

जहां कोड = "005215"

शर्तों में "VALUE ()" ऑपरेटर का उपयोग करते हुए, 1C क्वेरी में पूर्वनिर्धारित तत्वों और गणनाओं के संदर्भ का उपयोग करें:

जहां आइटम प्रकार = मूल्य (गणना। आइटम प्रकार। आइटम)

समय मान निम्नानुसार निर्दिष्ट किए जा सकते हैं:

जहां दिनांक आने वाली> दिनांक समय (2012,01,01):

अक्सर, शर्तों को अनुरोध के लिए पारित मापदंडों के रूप में निर्दिष्ट किया जाता है:

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

जहां आइटम समूह = और आइटम समूह

शर्त को विशेषता प्रकार पर लगाया जा सकता है यदि यह समग्र प्रकार का है:

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

जहां संचय रजिस्टर। रजिस्ट्रार बी (और चयन के लिए दस्तावेजों की सूची)

स्थिति जटिल हो सकती है, जिसमें कई स्थितियां शामिल हैं:

जहां दिनांक आने वाली> दिनांक समय (2012,01,01) और आइटम समूह = और आइटम समूह और सेवा नहीं

द्वारा समूह बनाएं

1C 8.2 क्वेरी लैंग्वेज कंस्ट्रक्शन का इस्तेमाल रिजल्ट को ग्रुप करने के लिए किया जाता है।

उदाहरण के लिए:

चुनना
माल, सेवाओं, माल की प्राप्ति। माल,
एसयूएम (आने वाली वस्तुएं, सेवाएं, माल। मात्रा) मात्रा के रूप में,
एसयूएम (आने वाली वस्तुएं, सेवाएं, सामान। राशि) के रूप में योग
से
दस्तावेज़। GoodsServices की रसीद। Goods के रूप में GoodsServices Goods की रसीद

द्वारा समूह बनाएं
माल, सेवाओं, माल की प्राप्ति। माल

यह क्वेरी आइटम के संदर्भ में राशि और मात्रा द्वारा सभी प्राप्तियों का योग करेगी।

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

रखना

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

1C अनुरोध में HAVING का उपयोग करने का एक उदाहरण:

चुनना
माल, सेवाओं, माल की प्राप्ति। माल,
एसयूएम (आने वाली वस्तुएं, सेवाएं, माल। मात्रा) मात्रा के रूप में,
एसयूएम (आने वाली वस्तुएं, सेवाएं, सामान। राशि) के रूप में योग
से
दस्तावेज़। GoodsServices की रसीद। Goods के रूप में GoodsServices Goods की रसीद

द्वारा समूह बनाएं
GoodsServicesGoods.goods की प्राप्ति

एसयूएम (आने वाली वस्तुएं, सेवाएं, माल। मात्रा)> 5

इसलिए हम उन सामानों की संख्या का चयन करेंगे, जिन्हें 5 से अधिक टुकड़े प्राप्त हुए हैं।

अर्थ()

उदाहरण के लिए:

जहां बैंक = मूल्य (Catalog.Banks.EmptyReference)

जहां नामकरण प्रकार = मान (निर्देशिका। नामकरण प्रकार। उत्पाद)

जहां आइटम प्रकार = मूल्य (गणना। आइटम प्रकार। सेवा)

अनुरोध में टाइप करें

डेटा प्रकार को निम्नानुसार चेक किया जा सकता है: TYPE() और VALUETYPE() फ़ंक्शंस का उपयोग करके या तार्किक संदर्भ ऑपरेटर का उपयोग करके।

अभिव्यक्त करना()

1C प्रश्नों में एक्सप्रेस ऑपरेटर का उपयोग डेटा प्रकारों को परिवर्तित करने के लिए किया जाता है।

वाक्य - विन्यास: अभिव्यक्त करना(<Выражение>कैसे<Тип значения>)

इसके साथ, आप स्ट्रिंग मानों को दिनांक या संदर्भ मानों को स्ट्रिंग डेटा में परिवर्तित कर सकते हैं, और इसी तरह।

व्यावहारिक उपयोग में, एक्सप्रेस () ऑपरेटर का उपयोग अक्सर असीमित लंबाई के क्षेत्रों को परिवर्तित करने के लिए किया जाता है, क्योंकि असीमित लंबाई के क्षेत्रों का चयन, समूहीकरण आदि नहीं किया जा सकता है। यदि ऐसे क्षेत्र परिवर्तित नहीं होते हैं, तो आपको एक त्रुटि मिलेगी आप असीमित लंबाई के क्षेत्रों और असंगत प्रकार के क्षेत्रों की तुलना नहीं कर सकते.

चुनना
संपर्क जानकारी। वस्तु,
एक्सप्रेस (संपर्क जानकारी। स्ट्रिंग के रूप में देखें (150)) के रूप में देखें
से
सूचना का रजिस्टर। संपर्क जानकारी संपर्क जानकारी के रूप में

द्वारा समूह बनाएं
एक्सप्रेस (संपर्क जानकारी। एक स्ट्रिंग के रूप में प्रतिनिधित्व (150)),
संपर्क जानकारी। वस्तु

ISNULL (ISNULL)

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

ISNULL(TaxesPrevMonth.FSS छूट लागू, 0)

1C क्वेरी लैंग्वेज IS NULL का ऐसा फंक्शन मान के अभाव में शून्य लौटाएगा, जो किसी त्रुटि से बच जाएगा।

जोड़ना

कनेक्शन 4 प्रकार के होते हैं: बाएं, सही, पूर्ण, आंतरिक.

बाएँ और दाएँ शामिल हों

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

1C अनुरोध में लेफ्ट जॉइन का एक उदाहरण:

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

1C 8.3 में राइट जॉइन करेंबिल्कुल समान बाँया जोड़, एक अंतर को छोड़कर: सही शामिल हों"मास्टर" टेबल दूसरी है, पहली नहीं।

पूर्ण संबंध

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

उदाहरण के लिए:

पूर्ण संबंध
निर्देशिका बैंक एएस बैंक

द्वारा

यदि रिकॉर्ड में शामिल होने की स्थिति पूरी होती है, तो क्वेरी भाषा दोनों तालिकाओं को पूर्ण रूप से वापस कर देगी। बाएं/दाएं जुड़ने के विपरीत, NULL दो क्षेत्रों में हो सकता है।

आंतरिक रूप से जुड़ा

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

उदाहरण के लिए:

से
निर्देशिका। ग्राहक के रूप में प्रतिपक्ष

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

द्वारा
ग्राहक। नाम = बैंक। नाम

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

निष्कर्ष

यह 1C 8 क्वेरी भाषा से सिंटैक्स का केवल एक छोटा सा हिस्सा है, भविष्य में मैं कुछ बिंदुओं पर अधिक विस्तार से विचार करने, दिखाने और बहुत कुछ करने की कोशिश करूंगा!

; उपश्रेणियाँ (विकास में)।

माल और सेवाओं की प्राप्ति.

नए टैब: समूहन

पाठ संख्या 5 का सैद्धांतिक भाग

एक प्रश्न में समूहीकरण दो प्रकार के क्षेत्रों का उपयोग करते हुए कई चयन पंक्तियों का एक में संयोजन है:

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

उदाहरण 1. आइए दो फ़ील्ड वाली तालिका लें: फलऔर मात्रा. एक ही फल के साथ समूह पंक्तियाँ और प्रत्येक फल के लिए कुल संख्या की गणना करें।

उदाहरण की शर्तों के अनुसार, field फल- समूहीकरण, और क्षेत्र मात्रा- एक समग्र फ़ंक्शन का उपयोग करके समूहीकृत जोड़.

ग्रुपिंग के बाद, हमारी टेबल इस तरह दिखेगी:

उदाहरण 2. एक गोदाम में फलों को बक्सों, बक्सों आदि में रखा जाता है। चूंकि फल अलग-अलग बैच में आते हैं, इसलिए उनकी कीमत अलग-अलग हो सकती है। प्रत्येक प्रकार के कंटेनर के लिए अधिकतम फलों की कीमतों की गणना करें।

तो हमारे पास तीन फ़ील्ड वाली एक टेबल है फल, तारा, कीमत।पंक्तियों को खेतों के अनुसार समूहित करें फलऔर तारा, और पूरे क्षेत्र में कीमतगिनती करना अधिकतम.

इस उदाहरण में, हमारे पास दो ग्रुप फील्ड और एक ग्रुप फील्ड है। ग्रुपिंग के बाद, हमारी टेबल इस तरह दिखेगी:

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

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

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

पाठ संख्या 5 का व्यावहारिक भाग

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

कार्य: चालू वर्ष के लिए प्राप्तियों की राशि प्राप्त करें, महीनों में विभाजित करें। डेटा प्राप्त करने के लिए, पोस्ट किए गए दस्तावेज़ों का उपयोग करें माल और सेवाओं की प्राप्ति.

  • आइए एक नया अनुरोध बनाएं;
  • आइए क्वेरी बिल्डर लॉन्च करें;
  • आइए एक तालिका चुनें आने वाली माल सेवाएंएक शाखा से प्रलेखन;
  • मेज से आने वाली माल सेवाएंखेतों का चयन करें तारीखऔर दस्तावेज़ राशि;
  • एक क्षेत्र का चयन करें तारीखऔर बटन दबाएं वर्तमान तत्व बदलेंकस्टम अभिव्यक्ति संपादक में इसे खोलने के लिए;

  • अध्याय में क्वेरी भाषा सुविधाएँएक शाखा खोजें दिनांक कार्य;
  • फ़ंक्शन को इस शाखा से एक्सप्रेशन सेक्शन में खींचें महीनाऔर पैरामीटर बदलें तारीखप्राप्ति की तिथि के साथ हमारे द्वारा चुने गए क्षेत्र में;

  • कस्टम एक्सप्रेशन एडिटर के नीचे ओके बटन दबाएं;
  • आइए टैब पर जाएं संघ / उपनामऔर फ़ील्ड को माह संख्या के साथ उपनाम पर सेट करें महीना;

  • शर्तें टैब पर जाएं;
  • अध्याय में खेत, शाखा खोलो आने वाली माल सेवाएं"+" बटन का उपयोग करना;
  • आइए प्रॉप्स ढूंढते हैं तारीखऔर इसे शर्तों के अनुभाग में खींचें, तुलना ऑपरेटर का चयन करें बीच मेंऔर वर्ष के प्रारंभ और अंत के लिए पैरामीटर निर्दिष्ट करें, उदाहरण के लिए वर्ष के प्रारम्भ मेऔर वर्ष की समाप्ति;
  • खंड से खेतसहारा खींचें आयोजित, झंडे को शर्त के अनुरूप रखें मनमानाऔर शर्त के अतिरिक्त हिस्से को हटा दें "= &Performed";
  • आइए टैब पर जाएं समूहन;
  • खंड को समूहीकरण क्षेत्रमैदान खींचो MONTH(आने वाली वस्तुएं/सेवाएं.तारीख), और खंड में समूहीकृत फ़ील्डमाल, सेवाओं की प्राप्ति दस्तावेज़ राशि. कुल समारोह डिफ़ॉल्ट रूप से सेट किया जाएगा। जोड़, इस मामले में, यह हमें काफी अच्छी तरह से सूट करता है;


  • क्वेरी पूरी हो गई है, बटन पर क्लिक करें ठीकक्वेरी डिज़ाइनर को बंद करने के लिए;

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

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

क्वेरी निष्पादित होने के बाद समूहीकरण का विस्तार करना संभव नहीं है और पता करें कि क्वेरी निष्पादित होने के बाद इसमें कौन सी पंक्तियां शामिल हैं (उपयोग के विपरीत) परिणाम).

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

ग्रुपिंग कॉलम एक विशेष क्वेरी सेक्शन में दर्शाए जाते हैं जो वाक्यांश से शुरू होता है द्वारा समूह बनाएं. ग्रुपिंग कॉलम को सेक्शन में एग्रीगेट फ़ंक्शन द्वारा दर्शाया जाता है चुनना.

समूहों में उपयोग किए जाने वाले कुल 6 प्रकार के कार्य हैं:

  1. जोड़- समूहबद्ध कॉलम के मानों को जोड़ता है, केवल संख्यात्मक मानों पर लागू होता है।
  2. औसत -समूहीकृत स्तंभ मानों के अंकगणितीय माध्य की गणना करता है, केवल संख्यात्मक मानों पर लागू होता है।
  3. अधिकतम -समूहीकृत कॉलम के किसी भी प्रकार के मूल्यों पर लागू किया जा सकता है, और सभी समूहीकृत मूल्यों का अधिकतम मूल्य वापस कर दिया जाता है। यदि मान संख्यात्मक नहीं हैं, तो आरोही क्रम में क्रमबद्ध होने पर अंतिम मान वापस आ जाता है।
  4. न्यूनतम -समूहीकृत कॉलम के किसी भी प्रकार के मूल्यों पर लागू किया जा सकता है, और सभी समूहीकृत मूल्यों का न्यूनतम मूल्य वापस कर दिया जाता है। यदि मान संख्यात्मक नहीं हैं, तो आरोही क्रम में क्रमबद्ध होने पर पहले वाले को वापस कर दिया जाता है।
  5. मात्रा- समूहीकृत कॉलम में मानों की संख्या लौटाता है, किसी भी प्रकार के मानों के लिए उपयोग किया जा सकता है। प्रकार के मूल्यों पर ध्यान नहीं दिया जाता है। व्यर्थ।
  6. मात्रा अलग-समूहीकृत कॉलम में विभिन्न मानों की संख्या लौटाता है, जिसका उपयोग किसी भी प्रकार के मान के लिए किया जा सकता है। प्रकार के मूल्यों पर ध्यान नहीं दिया जाता है। व्यर्थ।

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

उदाहरणों का प्रयोग करते हुए 1C प्रश्नों में समूहीकरण के उपयोग पर विचार करें।

डेटा स्रोत माल की खरीद की एक तालिका होगी आपूर्ति,जो माल की डिलीवरी के संचालन को दर्शाता है (प्रत्येक डिलीवरी एक अलग लाइन में):

कार्य 1।

पता करें कि किन आपूर्तिकर्ताओं ने माल की आपूर्ति की।

समाधान:एक कॉलम चुनना एक समाधान हो सकता है प्रदाताऔर इसके द्वारा समूहीकरण।

अनुरोध। पाठ = "चुनना
आपूर्ति।आपूर्तिकर्ता
से
प्रसव के रूप में वितरण
द्वारा समूह बनाएं
आपूर्ति। आपूर्तिकर्ता"
;

कार्य 2।

प्रत्येक प्रकार के वितरित माल की कुल मात्रा का पता लगाएं।

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

अनुरोध। पाठ = "चुनना
वितरण। उत्पाद,
राशि (आपूर्ति। मात्रा) मात्रा के रूप में
से
प्रसव के रूप में वितरण
द्वारा समूह बनाएं
प्रसव। माल"
;

कार्य 3।

निर्धारित करें कि प्रत्येक आपूर्तिकर्ता औसतन कितनी इकाइयों की आपूर्ति करता है।

समाधान:आपको दो स्तंभों का चयन करना होगा: आपूर्तिकर्ता और मात्रा, परिणाम को फ़ील्ड द्वारा समूहित करें प्रदाता,समग्र समारोह का उपयोग करना औसत.

अनुरोध। पाठ = "चुनना
आपूर्ति। आपूर्तिकर्ता,
औसत (आपूर्ति। मात्रा) मात्रा के रूप में
से
प्रसव के रूप में वितरण
द्वारा समूह बनाएं
आपूर्ति। आपूर्तिकर्ता"
;