1सी में सीधे प्रश्न कैसे लिखे जाते हैं। प्रश्न बनाना और उनके साथ काम करना (शुरुआती लोगों के लिए)

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

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

आधिकारिक 1C 8 वेबसाइट पर क्वेरी डिज़ाइनर का विवरण: v8.1c.ru

टेबल और फ़ील्ड; ; ; ; ; ; नेस्टेड क्वेरीज़ (विकास में)।

प्रोग्राम कोड में 1s 8 क्वेरी डिज़ाइनर को कॉल करने के लिए आपको यह करना होगा:

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

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

पाठ #1. क्वेरी बिल्डर सबसे सरल उपयोग का मामला है।

कार्य: नामकरण निर्देशिका के लिए एक अनुरोध लिखें, निर्देशिका के संपूर्ण नामकरण का चयन करें।

नए टैब: टेबल और फ़ील्ड.

नए तंत्र: "अनुरोध" बटन का उपयोग करके अनुरोध पाठ को देखना और संपादित करना।

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

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

टैब टेबल और फ़ील्डइसमें तीन खंड शामिल हैं:

डेटाबेस. यह अनुभाग सभी डेटाबेस तालिकाएँ प्रस्तुत करता है जिनका उपयोग क्वेरी बनाने के लिए किया जा सकता है;

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

  • या टेबल पर डबल-क्लिक करें;
  • या ">" या ">>" बटन का उपयोग करें।

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

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

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

  • या फ़ील्ड पर डबल-क्लिक करें;
  • या ">" या ">>" बटन का उपयोग करें;
  • आप चयनित तालिकाओं और क्वेरी भाषा फ़ंक्शंस के फ़ील्ड से एक मनमाना अभिव्यक्ति का उपयोग करके स्वयं एक नया फ़ील्ड भी जोड़ सकते हैं।

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

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

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

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

आइए आइटमों के लिए अनुरोध बनाना शुरू करें:

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

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

क्वेरी भाषा 1सी एंटरप्राइज़ 8 - ऑपरेटर संरचना चयन

आइए SELECT ऑपरेटर की संरचना को देखें (ऑपरेटर के वैकल्पिक हिस्से वर्गाकार कोष्ठक में दर्शाए गए हैं)। 1C क्वेरी भाषा डेटा नमूने बनाने के लिए उपकरणों की एक विस्तृत श्रृंखला प्रदान करती है।

[अनुमति] [अलग] [प्रथम ए] [फ़ील्ड1] [उपनाम 1 के रूप में], [फ़ील्ड2] [उपनाम 2 के रूप में], ... [फ़ील्डएम] [उपनाम बी के रूप में] [अस्थायी तालिका का नाम डालें] [तालिका 1 से उपनाम तालिका 1 के रूप में [[आंतरिक जुड़ाव] चुनें ][बाएं जोड़][पूरा जोड़] तालिका2 उपनाम के रूप में तालिका2 [[आंतरिक जोड़][बाएं जोड़][पूर्ण जोड़] तालिकासी उपनाम के रूप में तालिकासी अभिव्यक्ति1 द्वारा [और अभिव्यक्ति2]...[और अभिव्यक्तिडी]] .. ... एक्सप्रेशन1 द्वारा [और एक्सप्रेशन2]...[और एक्सप्रेशनई]] ... [टेबलएफ एएस टेबलएफ उपनाम] ... ] [ग्रुपिंगफील्ड1 द्वारा ग्रुप[,] ... [ग्रुपिंगफिल्डजी]] [जहां एक्सप्रेशन1 [और अभिव्यक्ति2] ... [और अभिव्यक्तिएच]] [सभी को एकजुट करें...] [; ...] [एलियास1 द्वारा सूचकांक... एलियासबी] [कुल [एग्रीगेशनफंक्शन(फील्ड1)][,] [एग्रीगेशनफंक्शन(फील्ड2)][,] ... [एग्रीगेशनफंक्शन(फील्डआई)] [सामान्य][,] द्वारा ग्रुपिंगफ़ील्ड1][,] ... [ग्रुपिंगफ़ील्डजे]]

फ़ील्ड के साथ काम करने के लिए कीवर्ड और ब्लॉक

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

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

तालिकाओं के साथ काम करने के लिए कीवर्ड और ब्लॉक

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

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

कीवर्ड और डेटा रूपांतरण ब्लॉक

  • समूह ब्लॉक- इस ब्लॉक का उपयोग तालिका पंक्तियों को समूहीकृत करने के लिए किया जाता है। यदि कीवर्ड के बाद फ़ील्ड के मान निर्दिष्ट किए जाते हैं तो पंक्तियों को एक में जोड़ दिया जाता है द्वारा समूह बनाएंवैसा ही हो जाओ. इस मामले में, अन्य सभी क्षेत्रों को समग्र कार्यों का उपयोग करके सारांशित, औसत, अधिकतम या न्यूनतम किया जाता है। एग्रीगेट फ़ंक्शंस का उपयोग फ़ील्ड ब्लॉक में किया जाता है। उदाहरण: अधिकतम(TableAlias.TableFieldName) AS फ़ील्डअलियास
  • शर्त ब्लॉक- इस ब्लॉक में कीवर्ड के बाद कहाँतार्किक ऑपरेटरों द्वारा अलग किए गए सशर्त अभिव्यक्तियों को दर्शाया गया है और, या, किसी भी चयनित पंक्ति को नमूने में शामिल करने के लिए, यह आवश्यक है कि समुच्चय में सभी शर्तों का एक मान हो सत्य।
  • सब कुछ मिलाओ- इस कीवर्ड का उपयोग क्वेरीज़ (ऑपरेटरों) को संयोजित करने के लिए किया जाता है चुनना). 1C क्वेरी भाषा आपको कई क्वेरीज़ को एक में संयोजित करने की अनुमति देती है। क्वेरीज़ को मर्ज करने के लिए, उनके पास फ़ील्ड का समान सेट होना चाहिए;
  • «;» - अर्धविराम का उपयोग उन कथनों को अलग करने के लिए किया जाता है जो एक दूसरे से स्वतंत्र होते हैं चुनना;
  • द्वारा सूचकांक- कीवर्ड का उपयोग इसके बाद निर्दिष्ट फ़ील्ड को अनुक्रमित करने के लिए किया जाता है;
  • सारांश ब्लॉक- पेड़ जैसे नमूने बनाने के लिए उपयोग किया जाता है। कीवर्ड के बाद निर्दिष्ट प्रत्येक ग्रुपिंग फ़ील्ड के लिए द्वारा,चयन में एक अलग पंक्ति बनाई जाएगी. इस पंक्ति में, समग्र फ़ंक्शंस का उपयोग करके, कीवर्ड के बाद निर्दिष्ट फ़ील्ड के कुल मानों की गणना की जाएगी परिणाम।

क्या आप 1सी 8 क्वेरी भाषा सीखना जारी रखना चाहते हैं? फिर अगला लेख पढ़ें.

अनुरोध .मूलपाठ = "चुनना | स्टोरेजयूनिट्स.लिंक |से | निर्देशिका.यूएसस्टोरेजयूनिटस्टोरेजयूनिट का उपयोग कैसे करें // उदाहरण 1: खाली बूलियन मान के साथ तुलना: |कहां | स्टोरेजयूनिट्स.AllowSelectionFromReserveZone = गलत // उदाहरण 2. लेकिन यदि इस बूलियन को परिभाषित किया गया है, तो यह इस तरह बेहतर है: // एक नकारात्मक बूलियन के लिए शर्त: |कहां | भंडारण इकाइयाँ नहीं। रिजर्व ज़ोन से चयन की अनुमति दें // उदाहरण 3. एक खाली फ़ील्ड की स्थिति के आधार पर चयन जिसमें "एक विशिष्ट प्रकार की निर्देशिका" प्रकार है |कहां | स्टोरेजयूनिट्स.एक्टिवसेलेक्शनएरिया = वैल्यू(डायरेक्टरी.सिलेक्शनएरिया.एम्प्टीलिंक) // उदाहरण 3ए. "एक विशिष्ट प्रकार का दस्तावेज़" प्रकार वाले खाली फ़ील्ड की स्थिति के आधार पर चयन |कहां | ourInformationRegister.Document = VALUE(Document.ourDocument.EmptyLink) // उदाहरण 3बी। "दस्तावेज़" प्रकार के खाली फ़ील्ड की स्थिति के आधार पर चयन अलग - अलग प्रकार" (समग्र क्षेत्र) |कहां | (ourInformationRegister.Document = VALUE(Document.ourDocument1.EmptyLink) | या ourInformationRegister.Document = VALUE(Document.ourDocument2.EmptyLink) | या... (आदि - हम इस मिश्रित क्षेत्र के सभी संभावित प्रकारों के लिए शर्तों को क्रमिक रूप से सूचीबद्ध करते हैं) ) // उदाहरण 4. या इसके विपरीत, यदि आपको "स्ट्रिंग" प्रकार का भरा हुआ मान चुनने की आवश्यकता है, तो स्थिति मदद करेगी: |कहाँ | भंडारण इकाई.नाम > """" // उदाहरण 5. यदि आपको समग्र डेटा प्रकार के साथ किसी विशिष्ट प्रकार के दस्तावेज़ों का चयन करने की आवश्यकता है, उदाहरण के लिए, "रनिंगटास्क" रजिस्टर में, "टास्क" संसाधन में एक समग्र प्रकार होता है, जिसके मानों के बीच दस्तावेज़ "चयन" संभव है |कहां | एक्सप्रेस (सूचना रजिस्टर निष्पादित कार्य। दस्तावेज़ के रूप में कार्य। चयन) लिंक दस्तावेज़। चयन // उदाहरण 5ए. एक और समान उदाहरण जब आपको किसी विशिष्ट प्रकार के दस्तावेज़ों का चयन करने की आवश्यकता होती है | विकल्प | कब व्यक्त करें (दस्तावेजों का एजी पत्राचार। दस्तावेज़बीयू एएस दस्तावेज़। वस्तुओं और सेवाओं की रसीद) लिंक दस्तावेज़ फिर ""वस्तुओं और सेवाओं की प्राप्ति"" | कब व्यक्त करें (एजी दस्तावेजों का पत्राचार। दस्तावेज़बीयू एएस दस्तावेज़। वस्तुओं और सेवाओं की बिक्री) लिंक दस्तावेज़ फिर ""वस्तुओं और सेवाओं की बिक्री"" | अन्यथा """" | दस्तावेज़ दृश्य के रूप में समाप्त करें // उदाहरण 6. अपरिभाषित मान की शर्त के अनुसार चयन: |कहां | SaveSettings.User = अपरिभाषित // उदाहरण 7. संचलन के प्रकार के अनुसार चयन, संचय रजिस्टर की "आने वाली", "व्यय" - इसी तरह): |कहां | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Incoming) // उदाहरण 8. किसी अनुरोध में कैसे इंगित करें कि अनुरोध को निष्पादित करना आवश्यक नहीं है (उदाहरण के लिए, आपको प्रोग्रामेटिक रूप से, कुछ शर्तों के आधार पर, एक खाली अनुरोध परिणाम लौटाने की आवश्यकता है - Request.Text = StrReplace(Request.Text, "कहाँ Doc.Link = &DocumentLink", "झूठ कहाँ है");). ऐसा करने के लिए, बस "कहां गलत है" शर्त जोड़ें। वैसे, नमूने में अनुरोधित डेटा की मात्रा की परवाह किए बिना, ऐसे अनुरोध को तुरंत निष्पादित किया जाएगा। |झूठ कहाँ है // उदाहरण 9. यह जाँचना कि क्वेरी परिणाम में डेटा है: यदि नहींअनुरोध.निष्पादित करना().खाली() तब // उदाहरण 10. रिक्त तिथि के आधार पर चयन: |कहां | tbStrings.CancelationDate = DATETIME(1, 1, 1)

लेख प्रदान करता है उपयोगी तरकीबें 1C v.8.2 प्रश्नों के साथ काम करते समय, साथ ही ऐसी जानकारी जो क्वेरी भाषा के बारे में इतनी अच्छी तरह से ज्ञात नहीं है। मैं देने की कोशिश नहीं कर रहा हूँ पूर्ण विवरणक्वेरी भाषा, लेकिन मैं केवल कुछ बिंदुओं पर ध्यान केंद्रित करना चाहता हूं जो किसी के लिए उपयोगी हो सकते हैं।

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

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

जहां शहर = मान(निर्देशिका.शहर.मास्को)
जहां शहर = मान(निर्देशिका.शहर.खालीलिंक)
WHEREProductType = VALUE(गणना.ProductTypes.Service)
WHEREMmovementType = VALUE(AccumulationMovementType.Incoming)
मार्ग बिंदु कहां है =
मूल्य(बिजनेसप्रोसेस.एग्रीमेंट.रूटप्वाइंट.एग्रीमेंट)

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

2. किसी क्वेरी में ऑटो-ऑर्डरिंग प्रक्रिया को काफी धीमा कर सकती है। यदि छँटाई की आवश्यकता नहीं है, तो इसका उपयोग न करना ही बेहतर है। कई मामलों में किसी कीवर्ड का उपयोग करके सॉर्टिंग लिखना अधिक कुशल होता है द्वारा आदेश.

3.आपको यह सुनिश्चित करना होगा कि उपनामों का उपयोग करते समय कोई अस्पष्ट फ़ील्ड दिखाई न दे। अन्यथा, सिस्टम समझ नहीं पाएगा कि किस ऑब्जेक्ट तक पहुंचने की आवश्यकता है।
अस्पष्ट फ़ील्ड वाले अनुरोध का उदाहरण:
चुनना
नामकरण.लिंक,
शेष मालशेष.मात्राशेष
से
निर्देशिका.नामपद्धति नामकरण के रूप में
बाएँ कनेक्शन शेष माल शेष के रूप में रजिस्टर करें
सॉफ़्टवेयर शेष उत्पाद शेष.नामपद्धति = नामकरण.लिंक
तालिका उपनाम को सही करना आवश्यक है, उदाहरण के लिए, इस तरह: "Directory.Nomenclature AS Nomenclature1", और "Nomenclature.Link" को "Nomenclature1.Link" के अनुसार सही किया जाना चाहिए।

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

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

6.जब 1सी कॉन्फ़िगरेशन में ऐसे उपयोगकर्ता होते हैं जिनके पास कुछ कॉन्फ़िगरेशन ऑब्जेक्ट्स पर सीमित अधिकार होते हैं, तो ऐसे ऑब्जेक्ट्स के अनुरोध में कीवर्ड का उपयोग किया जाना चाहिए अनुमतताकि अनुरोध बिना किसी त्रुटि के निष्पादित हो जाए (अनुमति चुनें...)

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

सब कुछ मिलाओ
लिंक चुनें.संख्या, संरचना.(पंक्ति संख्या, नामकरण, मात्रा)
दस्तावेज़.चालान से

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

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

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

11.चयन क्षेत्रों में प्रश्नों में, आप चयन क्षेत्रों के विवरण तक स्वतंत्र रूप से पहुंच सकते हैं। इस सुविधा को सेलेक्ट फ़ील्ड डीरेफ़रेंसिंग कहा जाता है। यदि डेटा स्रोत एक नेस्टेड तालिका (दस्तावेज़ का सारणीबद्ध भाग) है, तो चयन फ़ील्ड में आप मुख्य तालिका के फ़ील्ड तक भी पहुंच सकते हैं (उदाहरण के लिए, लिंक फ़ील्ड के माध्यम से, मुख्य तालिका खाते के फ़ील्ड तक पहुंचें)
उदाहरण:
चुनना[बी] वस्तुओं और सेवाओं की प्राप्ति मात्रा के रूप में मात्रा, वस्तुओं और सेवाओं की प्राप्ति Goods.Link.Counterparty से कहाँ
यदि अनुरोध में समूह हैं तो फ़ील्ड डीरेफ़रेंसिंग का उपयोग करने की एक ख़ासियत है। अनुरोध फ़ील्ड की सूची में समूहीकरण वाले किसी भी अनुरोध में, आप समूहीकरण फ़ील्ड के विवरण तक स्वतंत्र रूप से पहुंच सकते हैं।
उदाहरण:
चुनना
वस्तुओं एवं सेवाओं की प्राप्ति, वस्तुओं का नामकरण।
वस्तुओं और सेवाओं की प्राप्ति, वस्तुओं का नामकरण।
एसयूएम (वस्तुओं और सेवाओं की प्राप्ति माल। मात्रा) एएस मात्रा,
वस्तुओं और सेवाओं की प्राप्ति Goods.Link.Counterparty,
वस्तुओं और सेवाओं की प्राप्ति Goods.Link.Date
से
दस्तावेज़। माल और सेवाओं की प्राप्ति। माल और सेवाओं की प्राप्ति
कहाँ
वस्तुओं और सेवाओं की प्राप्ति Goods.Link = &Link
द्वारा समूह बनाएं
वस्तुओं एवं सेवाओं की प्राप्ति, वस्तुओं का नामकरण।
वस्तुओं और सेवाओं की प्राप्ति Goods.Link
1C सहायता कहती है कि यदि समूहीकरण है, तो केवल समूहीकरण फ़ील्ड और चयन फ़ील्ड के लिए समग्र फ़ंक्शन क्वेरी चयन फ़ील्ड में भाग ले सकते हैं। वहां एक है असाधारण मामलाजब समग्र फ़ंक्शन किसी नेस्टेड तालिका के फ़ील्ड पर लागू होते हैं। इस मामले में, चयन फ़ील्ड की सूची में, इन फ़ील्ड द्वारा परिणामों को समूहीकृत किए बिना, शीर्ष-स्तरीय तालिका के फ़ील्ड तक पहुंचना संभव है।
उदाहरण:
चुनना
वस्तुओं और सेवाओं की प्राप्ति (एसयूएम (मात्रा), नामकरण)।
वस्तुओं और सेवाओं की प्राप्ति लिंक,
सामान और सेवाओं की प्राप्ति
से
दस्तावेज़। वस्तुओं और सेवाओं की प्राप्ति। वस्तुओं और सेवाओं की प्राप्ति कैसे होती है
द्वारा समूह बनाएं
वस्तुओं और सेवाओं की प्राप्ति (नामपद्धति)

12. कभी-कभी, समूहीकरण में किसी फ़ील्ड को निर्दिष्ट करने के बजाय, क्वेरी चयन फ़ील्ड में निम्नलिखित पैरामीटर को शामिल करना उपयोगी होता है:
चुनना DocProducts.नामपद्धति, &प्रतिपक्ष, &अवधि, SUM(DocProducts.Quantity * DocProducts.K) AS मात्रा, SUM(DocProducts.Amount) AS राशि से दस्तावेज़.प्रवेश.उत्पाद AS DocProducts कहाँ DocProducts.Link = &Link
द्वारा समूह बनाएं DocProducts.नामपद्धति
और फिर अनुरोध निकाय में पैरामीटर सेट करें:
Request.SetParameter ("&खाता", चयनखाता);
Query.SetParameter("&अवधि", दिनांक);

13. सार्वभौमिक क्वेरी में, पैरामीटर का उपयोग क्वेरी डेटा स्रोतों के विवरण में, शर्तों में किया जा सकता है कहाँ,टेबल कनेक्शन शर्तों और वर्चुअल टेबल पैरामीटर्स में। सामान्य प्रश्न बनाने की दो तकनीकें हैं:
ए) स्ट्रिंग कॉन्सटेनेशन तंत्र का उपयोग करके, अनुरोध पाठ में चर जोड़ना;
उदाहरण 1:

ऑर्डरिंग प्रकार = ?(कुछ परिवर्तनीय,"","DESC");
Query.Text = "चुनें... फ़ील्ड1 के अनुसार व्यवस्थित करें" + ऑर्डर प्रकार + "...";
उदाहरण2:
Query.Text = "फ़ील्ड1 चुनें...";

यदि कुछ चर = 1 है तो
Request.Text = Request.Text + ",Field2 ...";
अंतयदि;
बी) में पैरामीटर का उपयोग करें विभिन्न भागअनुरोध (उदाहरण के लिए, अनुरोध के डेटा स्रोत अनुभाग में), और फिर अंतर्निहित भाषा विधि - स्ट्रेप्लेस()।सार्वभौमिक क्वेरी डिज़ाइन करते समय, वस्तुओं की संपत्ति तक पहुँचना उपयोगी होता है मेटाडेटा(), जिससे आप किसी लिंक के लिए तालिका का नाम निर्धारित कर सकते हैं (उदाहरण के लिए, किसी दस्तावेज़ के लिए यह कुछ इस तरह होगा - लिंक . METADATA().NAME), एक पैरामीटर के माध्यम से कुछ सार्वभौमिक प्रक्रिया में पारित किया गया।
उदाहरण:
चुनना
DocTch.नामपद्धति,
...
से
&कुछ DocTC AS DocTC
और फिर अनुरोध निकाय में पैरामीटर सेट करें
Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Document."+Link.Metadata().Name+.Products");

वैकल्पिक स्थिति को सक्षम करने के लिए पैरामीटर्स का उपयोग क्वेरी स्थितियों में किया जा सकता है &पैरामीटर या कुछ संपत्ति नहीं:
Request.SetParameter('&Parameter', 'Counterparty.Name=''Ivanov'''');
शाब्दिक का उपयोग करना सत्यआप अनुरोध में कुछ फ़िल्टर हटा सकते हैं
Query.SetParameter("&Parameter", True);

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

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

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

17.क्वेरी फ़ंक्शन शून्य है(अंग्रेजी संस्करण लिखना अधिक सुविधाजनक है शून्य है) का उपयोग आमतौर पर संख्यात्मक क्वेरी फ़ील्ड के लिए शून्य मानों से छुटकारा पाने के लिए किया जाता है। कुछ मामलों में, उदाहरण के लिए, दो तालिकाओं का पूर्ण जुड़ाव, फ़ंक्शन शून्य है (पैरामीटर1,पैरामीटर2)डिज़ाइन को सफलतापूर्वक प्रतिस्थापित कर सकता है चुनाव जब...तब..अन्यथा...समाप्त, जब किसी भी फ़ील्ड के लिए NULL मान पहली तालिका और दूसरी तालिका दोनों में हो सकते हैं (यह निर्माण आपको फ़ील्ड के लिए एक गैर-शून्य मान प्राप्त करने की अनुमति देता है)। लेकिन हमें यह याद रखना चाहिए, इसके विपरीत सशर्त ऑपरेटर पसंदसमारोह शून्य हैदूसरे तर्क के प्रकार को पहले तर्क के प्रकार में परिवर्तित करता है, जिसे तर्क प्रकार भिन्न होने पर ध्यान में रखा जाना चाहिए!
उदाहरण:
शून्य है(Reg.शेष,0)
IsNull(Doc.Product,Doc1.Item)

18. सशर्त निर्माण पर पसंदएक निश्चित मूल्य पर समानता के परीक्षण के सरल मामले के लिए एक वैकल्पिक वाक्यविन्यास है, लेकिन यह, हालांकि, अप्रलेखित है:
विकल्प अभिव्यक्ति जब 1 तब "उच्च" जब 2 तब "मध्यम" अन्यथा "निम्न" अंत

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

20. कभी-कभी ऑपरेटर फॉर्म उपयोगी होता है मेंसूचीबद्ध मानों में से किसी एक के साथ मिलान की जाँच करने के लिए।
उदाहरण:
...उत्पाद कहां है। नाम बी ("घरेलू उपकरण", "कंप्यूटर")
संदर्भ पुस्तकों के लिए, ऑपरेटर प्रपत्र उपयोगी हो सकता है मेंपदानुक्रम सदस्यता जाँच।
उदाहरण:
...पदानुक्रम में नामकरण कहां है (और समूह)
संचालिका मेंइसका उपयोग अक्सर यह जांचने के लिए किया जाता है कि सबक्वेरी के परिणाम में कोई मान शामिल है या नहीं।
उदाहरण:
...जहां नामकरण.लिंक बी (नामपद्धति.लिंक चुनें...).
सबक्वेरी में, आप किसी शर्त में बाहरी क्वेरी फ़ील्ड तक पहुंच सकते हैं।
उदाहरण:
// मौजूद उत्पादों के नाम चुनें
// चालान में
चुनना
उत्पाद.नाम
से
निर्देशिका.नामकरण कैसे उत्पाद
कहाँ
उत्पाद.लिंक बी
(चुनना
बीजक संरचना.नामपद्धति
से
Document.Invoice.Composition AS InvoiceComposition
कहाँ
InvoiceContent.Nomenclature = उत्पाद.लिंक)
संचालन मेंसरणियों, मानों की सूची, मानों की तालिकाओं, नेस्टेड क्वेरीज़ के साथ उपयोग किया जा सकता है। ऐसे में शर्तों को कम करना संभव है
सबक्वेरी के लिए सिंटेक्स
(अभिव्यक्ति1, अभिव्यक्ति2,...,अभिव्यक्तिएन) में (अभिव्यक्ति1, अभिव्यक्ति2,...,अभिव्यक्तिएन... का चयन करें)
मान तालिका के लिए सिंटैक्स
(अभिव्यक्ति1, अभिव्यक्ति2,...,अभिव्यक्तिएन) (&टीके) में, जहां टीके मानों की तालिका में पहले एन कॉलम का उपयोग किया जाता है

20. इंटरनेट पर एक चुटकुला है कि क्वेरी डिज़ाइनर हमेशा कैसे काम करता है बाएंतालिकाओं को जोड़ना (और उनकी अदला-बदली करना), चाहे हम कैसे भी निर्दिष्ट करें सही:
1सी: उद्यम को "बाईं ओर" पसंद है।

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

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

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

चुनना
उपभोज्य उत्पाद.लिंक,
उपभोज्य.लाइन नंबर,
उपभोज्य उत्पाद.उत्पाद,
उपभोज्य वस्तुएँ.मात्रा,
उपभोज्य उत्पाद,
उपभोज्य वस्तुएँ.राशि
से

कहाँ
उपभोज्य उत्पाद
(शीर्ष 1 चुनें
डी. लिंक
से
दस्तावेज़. उपभोज्य एएस डी
कहाँ
डी.लिंक.संचालित

डी. लिंक द्वारा आदेश। समय का अवरोही क्षण)

संभावित समाधान:
ए) के साथ बदलें द्वारा आदेशपर
दिनांक डीईएससी द्वारा आदेश।
डी.लिंक अवरोही द्वारा आदेश

बी) आप नेस्टेड क्वेरी को एक अस्थायी तालिका में ले जा सकते हैं:
शीर्ष 1 चुनें
डी. लिंक
TZलिंक डालें
से
दस्तावेज़. उपभोज्य एएस डी
कहाँ
डी.लिंक.संचालित
और डी.प्रतिपक्ष = &प्रतिपक्ष

द्वारा आदेश
डी. लिंक, समय का अवरोहण
;

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

द्वारा आदेश
उपभोज्य। समय में कमी का क्षण

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

नेस्टेड टेबल Receipt.Goods पर एक क्वेरी की तुलना में इस क्वेरी का लाभ यह है कि यदि दस्तावेज़ों में डुप्लिकेट हैं, तो क्वेरी परिणाम कीवर्ड का उपयोग किए बिना केवल अद्वितीय दस्तावेज़ लौटाएगा। विभिन्न.
तुलना करना:
विभिन्न उत्पादों का चयन करें। दस्तावेज़ से लिंक करें। रसीद। उत्पादों को उत्पाद के रूप में चुनें, जहां उत्पाद। नामकरण = और नामकरण।
संभवतः इसमें बस इतना ही है। यह स्पष्ट है कि क्वेरी भाषा में अभी भी कई प्रश्न हैं जिन्हें मैंने कवर नहीं किया है। इस लेख को लिखने के लिए, मैंने पूरा करने के बाद प्राप्त जानकारी का उपयोग किया बुनियादी पाठ्यक्रम 1C 8.2 spec8.ru, साथ ही पुस्तक "1C 8.2 डेवलपर गाइड" और इंटरनेट से।
सबको धन्यावाद!

क्वेरी भाषा डेवलपर्स के लिए 1C 8.3 के मूलभूत तंत्रों में से एक है। क्वेरीज़ का उपयोग करके, आप डेटाबेस में संग्रहीत किसी भी डेटा को तुरंत पुनर्प्राप्त कर सकते हैं। इसका सिंटैक्स SQL ​​के समान है, लेकिन इसमें कुछ अंतर हैं।

SQL की तुलना में 1C 8.3 (8.2) क्वेरी भाषा के मुख्य लाभ:

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

1सी में क्वेरी भाषा के नुकसान:

  • SQL के विपरीत, 1C में क्वेरीज़ डेटा बदलने की अनुमति नहीं देती हैं;
  • संग्रहित प्रक्रियाओं की कमी;
  • एक स्ट्रिंग को एक संख्या में परिवर्तित करने की असंभवता.

आइए 1C क्वेरी भाषा की बुनियादी संरचनाओं पर हमारे लघु ट्यूटोरियल पर एक नज़र डालें।

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

नीचे चर्चा किए गए उदाहरण में, संपूर्ण नामकरण के नाम "नामकरण" निर्देशिका से चुने गए हैं। शब्द "HOW" के बाद तालिकाओं और फ़ील्ड के लिए उपनाम (नाम) दर्शाए गए हैं।

चुनना
नामकरण। नाम के रूप में नामकरण का नाम
से
निर्देशिका.नामपद्धति नामकरण के रूप में

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

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

इन कीवर्ड का उपयोग एक साथ या अलग-अलग किया जा सकता है।

को बदलने

यह प्रस्ताव आपसी टकराव को रोकने के लिए डेटा को ब्लॉक कर देता है। लेन-देन समाप्त होने तक लॉक किया गया डेटा दूसरे कनेक्शन से नहीं पढ़ा जाएगा। इस खंड में, आप विशिष्ट तालिकाएँ निर्दिष्ट कर सकते हैं जिन्हें लॉक करने की आवश्यकता है। नहीं तो सभी को ब्लॉक कर दिया जाएगा. डिज़ाइन केवल स्वचालित लॉकिंग मोड के लिए प्रासंगिक है।

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

चुनना
कर्मचारी,
आपसी हिसाब-किताब। आपसी हिसाब-किताब की रकम
से
संचय का रजिस्टर, कर्मचारियों के साथ पारस्परिक निपटान
को बदलने

कहाँ

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

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

चयन (मामला)

डिज़ाइन आपको अनुरोध के मुख्य भाग में सीधे शर्तें निर्दिष्ट करने की अनुमति देता है।

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

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

जोड़ना

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

बाएँ/दाएँ कनेक्शन

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

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

चुनना
रसीद एवं यू.नामपद्धति,
कीमतें.कीमत
से
दस्तावेज़। माल और सेवाओं की प्राप्ति। माल की रसीद नियम और शर्तें
आंतरिक जॉइन रजिस्टर जानकारी। मूल्य नामकरण। कीमतों के रूप में अंतिम स्लाइस
सॉफ्टवेयर रसीद एवं यू.नामपद्धति = कीमतें.नामपद्धति

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

पूर्ण कनेक्शन

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

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

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

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

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

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

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

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

द्वारा समूह बनाएं
कीमतें.नामकरण.नामकरण का प्रकार

परिणाम

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

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

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

चुनना
कीमतें, नामकरण, नामकरण का प्रकार, नामकरण का प्रकार,
कीमतें. कीमत के रूप में कीमत
से
सूचना का रजिस्टर, नवीनतम एएस कीमतों का स्नैपशॉट
परिणाम
अधिकतम(कीमत)
द्वारा
प्रकारनामपद्धति

होना

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

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

चुनना

अधिकतम(मूल्य.मूल्य) मूल्य के रूप में
से
सूचना का रजिस्टर, नवीनतम एएस कीमतों का स्नैपशॉट
द्वारा समूह बनाएं
कीमतें.नामकरण.नामकरण का प्रकार
होना
अधिकतम(मूल्य.कीमत) > 1000

द्वारा आदेश

ORDER BY ऑपरेटर किसी क्वेरी के परिणाम को सॉर्ट करता है। यह सुनिश्चित करने के लिए कि रिकॉर्ड एक सुसंगत क्रम में प्रदर्शित हों, ऑटो ऑर्डर का उपयोग किया जाता है। आदिम प्रकारों को क्रमबद्ध किया जाता है सामान्य नियम. संदर्भ प्रकार GUID द्वारा क्रमबद्ध किए जाते हैं।

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

चुनना
कर्मचारी.नाम जैसा नाम
से
निर्देशिका.कर्मचारी कैसे कर्मचारी
द्वारा आदेश
नाम
ऑटो ऑर्डर

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

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

क्वेरी भाषा विशेषताएँ

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

क्वेरी बिल्डर

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

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

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


कंसोल का अनुरोध करें

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

आप क्वेरी कंसोल को ITS डिस्क पर या इसके माध्यम से डाउनलोड कर सकते हैं।