1सी अनुरोध में एक प्रकार के रूप में व्यक्त करें। एस: उद्यम को "बाईं ओर" पसंद है

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

ऐसा करने के लिए, आपको निम्नलिखित प्रारूप में एक्सप्रेस फ़ंक्शन का उपयोग करना होगा:

अभिव्यक्त करना(<Число>संख्या के रूप में(<ДлинаЧисла>,<Точность>))

कहाँ:
संख्या- वह क्षेत्र जिसे गोल करने की आवश्यकता है
लंबाईसंख्याएँज्यादा से ज्यादा लंबाईनंबर
शुद्धता- संख्या पूर्णांकन की सटीकता

लंबाई और परिशुद्धता दोनों पैरामीटर सकारात्मक पूर्णांक होने चाहिए।
नीचे दी गई छवि में देखें कि यह फ़ंक्शन कैसे काम करता है।

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

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

अभिव्यक्त करना(<Строка>रस्सी जैसी(<ДлинаСтроки>)

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

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

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

अभिव्यक्त करना(<Документ>दस्तावेज़ के रूप में.<ИмяТаблицы>)
अभिव्यक्त करना(<Справочник>एक निर्देशिका के रूप में.< ИмяТаблицы >)
.

कहाँ
तालिका नाम- वस्तु का नाम .

मिश्रित प्रकारों के साथ काम करते समय हमेशा एक्सप्रेस फ़ंक्शन का उपयोग करें, यह क्वेरी को काफी हद तक अनुकूलित करता है।

यदि आप अभी भी क्वेरी भाषा की संरचना में "तैर" रहे हैं, और यहां तक ​​कि सबसे सरल प्रश्न भी आपके लिए कठिनाइयों का कारण बनते हैं, तो मैं आपको अपने पाठ्यक्रम "शुरुआती से पेशेवर तक 1सी में प्रश्न" की अनुशंसा करता हूं। जहां इन और कई अन्य मुद्दों पर अधिक विस्तार से चर्चा की जाती है।

क्या है इस कोर्स में खास:
यह पाठ्यक्रम उन लोगों के लिए डिज़ाइन किया गया है जो 1सी में क्वेरी भाषा से परिचित नहीं हैं;
शैक्षणिक सामग्रीअच्छी तरह से संरचित और सीखने में आसान;
कई दर्जन पाठ;
उपयोगी व्यावहारिक उदाहरण;
सभी पाठ स्पष्ट एवं सरल भाषा में प्रस्तुत किये गये हैं

मेरे पाठकों के लिए, 25% डिस्काउंट कूपन: hrW0rl9Nnx

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

आप कोई भी राशि सीधे हस्तांतरित कर सकते हैं:
यांडेक्स.मनी - 410012882996301
वेब मनी - R955262494655

मेरे समूहों में शामिल हों.

आइए अब बाकी पर नजर डालें।

1सी प्रश्नों में स्ट्रिंग्स के साथ काम करने के लिए कार्य

1सी प्रश्नों में स्ट्रिंग डेटा के साथ काम करने के लिए कुछ फ़ंक्शन और ऑपरेटर हैं।

सबसे पहले, प्रश्नों में स्ट्रिंग्स जोड़ी जा सकती हैं। ऐसा करने के लिए, "+" ऑपरेटर का उपयोग करें:

अनुरोध। पाठ = "चुनें
" "रेखा: " " + स्रोत.नाम
;

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

  1. स्रोत स्ट्रिंग.
  2. उस वर्ण की संख्या जिससे चयनित पंक्ति प्रारंभ होनी चाहिए.
  3. वर्णों की संख्या.

अनुरोध। पाठ= "चुनना
सबस्ट्रिंग("
"रेखा: " ", 4, 3) परिणाम के रूप में";

// परिणाम: ठीक है समारोह

ISNULL NULL 1C:Enterprise प्लेटफ़ॉर्म पर एक विशेष डेटा प्रकार है। वह अकेला हैसंभव अर्थ

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

ISNULL.

  1. इसके दो पैरामीटर हैं:
  2. मूल्य की जाँच की जा रही है.

अनुरोध। पाठ= "चुनना
यदि पहला पैरामीटर शून्य हो जाता है तो उसे प्रतिस्थापित करने का मान।
; ISNULL(स्रोत.शेष, 0) शेष के रूप में"
// यदि अनुरोध का परिणाम फ़ील्ड शेष = शून्य है,

// फिर इसे 0 से बदल दिया जाएगा, और आप इसके साथ गणितीय कार्य कर सकते हैं कार्यप्रदर्शन और

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

अनुरोध। पाठ= "चुनना
- केवल लिंक करता है, और शेष मानों को वैसे ही लौटाता है, परिवर्तित नहीं किया जाता।
प्रतिनिधित्व(सही) बूलियन के रूप में,
प्रतिनिधित्व (स्रोत.लिंक) एएस लिंक,
प्रतिनिधित्व(दिनांकसमय(2016,10,07)) दिनांक के अनुसार"
;
// बूलियन = "हाँ", संख्या = "4", लिंक = "उपभोज्य दस्तावेज़ नकद आदेशनहीं....से..."
//दिनांक='07.10.2016 0:00:00'

अनुरोध। पाठ= "चुनना
प्रतिनिधित्वसंदर्भ(सत्य) बूलियन के रूप में,
प्रतिनिधित्वसंदर्भ(4) संख्या के रूप में
प्रेजेंटिंगलिंक(स्रोत.लिंक) लिंक के रूप में,
प्रतिनिधित्वसंदर्भ(दिनांकसमय(2016,10,07)) दिनांक के अनुसार"
;
// बूलियन = सत्य, संख्या = 4, लिंक = "दस्तावेज़ नकद रसीद आदेश संख्या....से..."
// दिनांक=07.10.2016 0:00:00

// फिर इसे 0 से बदल दिया जाएगा, और आप इसके साथ गणितीय कार्य कर सकते हैं प्रकारप्रदर्शन प्रकार मान

// परिणाम: ठीक है प्रकार 1C:एंटरप्राइज़ प्लेटफ़ॉर्म डेटा प्रकार लौटाता है।

अनुरोध। पाठ= "चुनना
प्रकार (संख्या)
प्रकार (स्ट्रिंग),
प्रकार (दस्तावेज़. व्यय नकद आदेश)"
;

// परिणाम: ठीक है प्रकार मानउसे दिए गए मान का प्रकार लौटाता है।

अनुरोध। पाठ= "चुनना
मान प्रकार (5) संख्या के रूप में,
प्रकार ("
"रेखा" ") रस्सी जैसी,
संदर्भ के रूप में टाइप करें (स्रोत.लिंक)।
निर्देशिका से। स्रोत एएस स्रोत"
;
//संख्या=संख्या, स्ट्रिंग=स्ट्रिंग, निर्देशिका = निर्देशिकालिंक.स्रोत

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

अनुरोध। पाठ= "चुनना

से

कहाँ
मान प्रकार(संपर्क सूचना.ऑब्जेक्ट) = प्रकार(निर्देशिका.प्रतिपक्ष)"
;

// परिणाम: ठीक है अर्थ

// परिणाम: ठीक है अर्थआपको बिना उपयोग किए सीधे अनुरोध में 1C कॉन्फ़िगरेशन ऑब्जेक्ट का उपयोग करने की अनुमति देता है।

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

अनुरोध। पाठ= "चुनना
संपर्क जानकारी.परिचय
से
सूचना का रजिस्टर. संपर्क जानकारी कैसे संपर्क जानकारी
कहाँ
मान प्रकार(संपर्क सूचना.ऑब्जेक्ट) = प्रकार(निर्देशिका.प्रतिपक्ष)
और contactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

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

संचालिका जोड़ना

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

उदाहरण के लिए, चयन कार्य संपर्क जानकारीप्रतिपक्षों का समाधान इस प्रकार किया जा सकता है:

अनुरोध। पाठ= "चुनना
संपर्क जानकारी.परिचय
से
सूचना का रजिस्टर. संपर्क जानकारी कैसे संपर्क जानकारी
कहाँ
संपर्क जानकारी.ऑब्जेक्ट लिंक निर्देशिका.प्रतिपक्ष"
;

संचालिका अभिव्यक्त करना

संचालिका अभिव्यक्त करनादो मामलों में 1C प्रश्नों में उपयोग किया जाता है:

  • जब आपको किसी आदिम प्रकार की विशेषताओं को बदलने की आवश्यकता हो;
  • जब आपको किसी मिश्रित डेटा प्रकार वाले फ़ील्ड को एकल प्रकार वाले फ़ील्ड में बदलने की आवश्यकता होती है।

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

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

अनुरोध। पाठ= "चुनना
मात्रा (वस्तुओं और सेवाओं का अलग-अलग आगमन। लिंक) एएस लिंक
से
दस्तावेज़। वस्तुओं और सेवाओं की प्राप्ति। वस्तुओं और सेवाओं की प्राप्ति कैसे होती है
द्वारा समूह बनाएं
एक्सप्रेस (वस्तुओं और सेवाओं की प्राप्ति। पंक्ति के अनुसार टिप्पणी करें (200))"
;

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

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

ऑपरेटर्स पसंदप्रदर्शन शून्य है

संचालिका पसंदऑपरेटर के समान अगरअंतर्निहित 1सी भाषा में, लेकिन इसकी कार्यक्षमता कुछ हद तक कम हो गई है।

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

अनुरोध। पाठ= "चुनना
संपर्क जानकारी.परिचय,
पसंद
जब मान प्रकार(ContactInformation.Object) = प्रकार(निर्देशिका.प्रतिपक्ष)
तब "
प्रतिपक्ष "
अन्य विकल्प
जब मान प्रकार(संपर्क सूचना.वस्तु) = प्रकार(निर्देशिका.व्यक्ति)
तब "
व्यक्ति"
अन्यथा "कोई और" "
अंत
स्वामी के रूप में समाप्त करें
से
सूचना का रजिस्टर. संपर्क जानकारी के रूप में संपर्क जानकारी"
;

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

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

अनुरोध। पाठ= "चुनना
पसंद
जब मान शून्य हो तो 0
अन्य का अर्थ
अंत"
;

इसके अलावा, ऑपरेटर शून्य हैक्वेरी स्थितियों में उपयोग किया जा सकता है, जैसे कि एक वाक्य में कहाँ।

क्वेरी भाषा डेवलपर्स के लिए 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सी प्रश्नों को अनुकूलित करने के लिए एक अस्थायी तालिका बनाता है। ऐसे अनुरोधों को बैच अनुरोध कहा जाता है।

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

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

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

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

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

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


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

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

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

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

1सी क्वेरी भाषा कार्य

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

1. समारोह दिनांक समय - यह फ़ंक्शन"दिनांक" प्रकार का एक स्थिर फ़ील्ड बनाता है।

सिंटेक्स: दिनांक समय(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

उपयोग उदाहरण:

2. दिनांक अंतर फ़ंक्शन- किसी एक आयाम (वर्ष, माह, दिन, घंटा, मिनट, सेकंड) में दो तिथियों के बीच का अंतर लौटाता है। माप को एक पैरामीटर के रूप में पारित किया जाता है।

सिंटेक्स: विभेदित दिनांक(<Дата1>, <Дата2>, <Тип>)

उपयोग उदाहरण:

Query.Text = "चयन करें | भिन्न दिनांक (दिनांक समय (2015, 4, 17), दिनांक समय (2015, 2, 1), दिन) | दिनों की संख्या के अनुसार";

3. फ़ंक्शन मान- डेटाबेस से पूर्वनिर्धारित रिकॉर्ड के साथ एक स्थिर फ़ील्ड सेट करता है, आप किसी भी प्रकार का एक खाली लिंक भी प्राप्त कर सकते हैं;

सिंटैक्स: मान(<Имя>)

उपयोग उदाहरण:

Request.Text = "SELECT //पूर्वनिर्धारित तत्व | VALUE(निर्देशिका.मुद्राएँ.Dollar) AS डॉलर, //खाली लिंक | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //transfer value | VALUE(Transfer) . कानूनी व्यक्ति। व्यक्तिगत) एएस व्यक्तिगत, //पूर्वनिर्धारित खाता मूल्य (खातों का चार्ट। स्व-लेखा। सामग्री) एएस खाता_10" ;

4. फ़ंक्शन चुनें- हमारे सामने IF निर्माण का एक एनालॉग है, जिसका उपयोग कोड में किया जाता है, केवल इसका उपयोग 1C प्रश्नों में किया जाता है।

सिंटेक्स: कब चुनें<Выражение>तब<Выражение>अन्यथा<Выражение>अंत

उपयोग उदाहरण:

Request.Text = //यदि राशि 7500 से अधिक है, तो 300 रूबल की छूट होनी चाहिए, //इसलिए यदि स्थिति चालू हो जाती है तो फ़ंक्शन //राशि लौटाता है - 300 //अन्यथा अनुरोध केवल राशि लौटाएगा "चुनें | चुनें | जब TCReceipts.Amount > 7500 | तब TCReceipts.Amount - 300 | अन्यथा TCReceipts.Amount | AmountWithDiscount के रूप में समाप्त करें | FROM |

5. एक्सप्रेस समारोह- आपको एक विशिष्ट प्रकार के साथ एक स्थिर क्षेत्र को व्यक्त करने की अनुमति देता है।

सिंटेक्स: एक्सप्रेस (फ़ील्डनाम जैसा टाइपनाम)

उपयोग उदाहरण:

Query.Text = "विभिन्न चुनें | सेल्स.रजिस्ट्रार.नंबर, | चुनें | जब सेल्स.रजिस्ट्रार दस्तावेज़.व्यय को लिंक करें | तब व्यक्त करें (सेल्स.रजिस्ट्रार दस्तावेज़.व्यय के रूप में) | अन्यथा चुनें | जब सेल्स.रजिस्ट्रार दस्तावेज़.कार्यान्वयन को लिंक करें | फिर व्यक्त करें (बिक्री रजिस्ट्रार दस्तावेज़ कार्यान्वयन के रूप में) |। अंत |। संख्या के रूप में संचय रजिस्टर करें";

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

उपयोग उदाहरण:

Query.Text = "चयन करें | एक्सप्रेस (नामपद्धति। लाइन के रूप में टिप्पणी करें (300)) टिप्पणी के रूप में, | एक्सप्रेस (नामकरण। संख्या के रूप में योग (15,2)) योग के रूप में | FROM | निर्देशिका। नामकरण के रूप में नामकरण";

6. ISNULL फ़ंक्शन(वैकल्पिक वर्तनी ISNULL) - यदि फ़ील्ड NULL प्रकार का है, तो इसे फ़ंक्शन के दूसरे पैरामीटर से बदल दिया जाता है।

सिंटेक्स: शून्य(<Поле>, <ПодставляемоеЗначение>)

उपयोग उदाहरण:

यह भी ध्यान दें कि हमेशा NULL प्रकार को कुछ मान से बदलने की सलाह दी जाती है, क्योंकि NULL प्रकार के साथ तुलना हमेशा FALSE लौटाती है, भले ही आप NULL की तुलना NULL से करें। अक्सर, NULL मान तालिकाओं में शामिल होने (आंतरिक को छोड़कर सभी प्रकार के जोड़ों) के परिणामस्वरूप बनते हैं।

Query.Text = //संपूर्ण आइटम और उसके शेष का चयन करें //यदि किसी आइटम में कोई शेष नहीं है, तो एक फ़ील्ड होगा //NULL जिसे मान 0 "SELECT | No. Link, | ISNULL" से बदल दिया जाएगा (ProductsInStockRemains.InStockRemaining, 0) शेष के रूप में |

7. प्रतिनिधित्व समारोह- आपको अनुरोध फ़ील्ड का प्रतिनिधित्व प्राप्त करने की अनुमति देता है।

सिंटेक्स: प्रदर्शन(<НаименованиеПоля>)

उपयोग उदाहरण:

Query.Text = "चयन | प्रतिनिधित्व(FreeRemainingRemains.Nomenclature) नामकरण के रूप में, | प्रतिनिधित्व(FreeRemainingRemaining.Warehouse) गोदाम के रूप में, | FreeRemainingRemaining.InStockRemaining |FROM |Accumulation Register.FreeRemaining.Remaining as FreeRemainingRemaining";

1C क्वेरी भाषा में निर्माण करता है

हमने आपसे ऊपर चर्चा की 1C क्वेरी भाषा फ़ंक्शन, अब विचार करने का समय आ गया है 1C क्वेरी भाषा में निर्माण करता है, वे कम महत्वपूर्ण और उपयोगी नहीं हैं, आइए शुरू करें।

1. निर्माण लिंक- संदर्भ प्रकार की जाँच के लिए एक तार्किक ऑपरेटर है। किसी विशिष्ट प्रकार के विरुद्ध किसी जटिल प्रकार के फ़ील्ड की जाँच करते समय अक्सर इसका सामना करना पड़ता है। सिंटेक्स: जोड़ना<Имя таблицы>

उपयोग उदाहरण:

Request.Text = //यदि मान प्रकार लकड़हारा है दस्तावेज़ प्रवेश कक्ष, //तब अनुरोध "माल की रसीद" लौटाएगा, अन्यथा "माल की बिक्री" "चयन करें | चयन करें | जब शेष। रजिस्ट्रार लिंक दस्तावेज़। माल और सेवाओं की रसीद | फिर ""रसीद"" | अन्यथा ""उपभोग" " | END AS मूवमेंट टाइप | FROM | संचय रजिस्टर। गोदामों में शेष माल यथा अवशेष" ;

2. के बीच डिज़ाइन करें- यह ऑपरेटर जाँचता है कि मान निर्दिष्ट सीमा के भीतर है या नहीं।

सिंटेक्स: बीच में<Выражение>और<Выражение>

उपयोग उदाहरण:

Request.Text = //संपूर्ण नामकरण प्राप्त करें जिसका कोड 1 से 100 तक की सीमा में है "SELECT | Nomenclature.Link |FROM | Directry.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. निर्माण बी और बी पदानुक्रम- जांचें कि क्या मान हस्तांतरित सूची में है (सरणियाँ, मूल्यों की तालिकाएँ, आदि को एक सूची के रूप में स्थानांतरित किया जा सकता है)। IN HIERARCHY ऑपरेटर आपको पदानुक्रम देखने की अनुमति देता है (खातों के चार्ट का उपयोग करने का एक उदाहरण)।

सिंटेक्स: में(<СписокЗначений>), पदानुक्रम में(<СписокЗначений>)

उपयोग उदाहरण:

Request.Text = //खाते के सभी उप-खातों का चयन करें "चयन करें | स्वावलंबी। खाते के रूप में लिंक करें | FROM | खातों का चार्ट। स्वावलंबी के रूप में स्वावलंबी | कहां | स्वावलंबी। पदानुक्रम मान में लिंक करें (चार्ट का लेखा। स्वावलंबी सामान)";

4. डिज़ाइन समान- यह फ़ंक्शन हमें एक स्ट्रिंग की तुलना एक स्ट्रिंग पैटर्न से करने की अनुमति देता है।

सिंटेक्स: पसंद "<ТекстШаблона>"

पंक्ति पैटर्न विकल्प:

% - एक अनुक्रम जिसमें किसी भी संख्या में मनमाने वर्ण हों।

एक मनमाना चरित्र.

[...] - वर्गाकार कोष्ठकों के अंदर सूचीबद्ध कोई एकल वर्ण या वर्णों का क्रम। गणना श्रेणियाँ निर्दिष्ट कर सकती है, उदाहरण के लिए a-z, जिसका अर्थ है सीमा में शामिल एक मनमाना वर्ण, जिसमें सीमा के सिरे भी शामिल हैं।

[^...] - निषेध चिह्न के बाद सूचीबद्ध वर्णों को छोड़कर वर्गाकार कोष्ठक के अंदर सूचीबद्ध कोई एकल वर्ण या वर्णों का क्रम।

उपयोग उदाहरण:

Query.Text = //संपूर्ण नामकरण ढूंढें जिसमें मूल TABUR शामिल है और //या तो एक छोटे अक्षर से या इसके साथ शुरू होता है बड़े अक्षरटी "चयन करें | नामकरण। लिंक | से | निर्देशिका। नामकरण के रूप में नामकरण | कहां | उत्पाद। नाम जैसे "" [टीटी]अबुर%""" ;

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

सिंटेक्स: कीवर्ड SELECT के बाद ALLOWED लिखा होता है

उपयोग उदाहरण:

Request.Text = "चयन की अनुमति है | प्रतिपक्ष। लिंक | FROM | निर्देशिका। प्रतिपक्षों के रूप में प्रतिपक्ष";

6. विभिन्न डिज़ाइन करें- आपको उन रिकॉर्ड्स का चयन करने की अनुमति देता है जिनमें कोई डुप्लिकेट रिकॉर्ड नहीं हैं।

सिंटेक्स: कीवर्ड SELECT के बाद VARIOUS लिखा होता है

उपयोग उदाहरण:

Request.Text = // उन रिकॉर्ड्स का चयन करता है जिन पर पाठक के पास अधिकार हैं "विभिन्न का चयन करें | प्रतिपक्ष.नाम | FROM | निर्देशिका। प्रतिपक्षों के रूप में प्रतिपक्ष" ;

इसके अलावा, विभिन्न निर्माण का उपयोग स्वीकृत ऑपरेटर और अन्य ऑपरेटरों के साथ किया जा सकता है।

उपयोग उदाहरण:

Request.Text = // विभिन्न रिकॉर्ड्स का चयन करता है जिन पर पाठक के पास अधिकार हैं "अनुमत विभिन्न का चयन करें | प्रतिपक्ष.नाम | FROM | निर्देशिका। प्रतिपक्षों के रूप में प्रतिपक्ष";

7. पहले डिज़ाइन करें- क्वेरी परिणाम से पैरामीटर में निर्दिष्ट रिकॉर्ड की संख्या का चयन करता है।

सिंटैक्स: प्रथम<число>

उपयोग उदाहरण:

Request.Text = //निर्देशिका से पहले 4 सीसीडी नंबर चुनें "पहले 4 चुनें | सीसीडी नंबर। लिंक | FROM | निर्देशिका। सीसीडी नंबर सीसीडी नंबर के रूप में";

8. बदलाव के लिए डिज़ाइन- आपको एक टेबल लॉक करने की अनुमति देता है, केवल लेनदेन में काम करता है (केवल स्वचालित लॉक के लिए प्रासंगिक)।

सिंटेक्स: को बदलने<НаименованиеТаблицы>

उपयोग उदाहरण:

Query.Text = "चयन करें | निःशुल्क शेष अवशेष। नामकरण, | निःशुल्क शेष शेष। गोदाम, | निःशुल्क शेष शेष। स्टॉक में शेष | FROM | संचय का रजिस्टर। निःशुल्क शेष। निःशुल्क शेष के रूप में शेष | परिवर्तन के लिए | संचय का रजिस्टर . निःशुल्क शेष";

9. डिज़ाइन ऑर्डर द्वारा- एक विशिष्ट क्षेत्र द्वारा डेटा व्यवस्थित करता है। यदि फ़ील्ड एक लिंक है, तो ध्वज सेट करते समय ऑटो ऑर्डरसॉर्टिंग लिंक प्रतिनिधित्व के आधार पर होगी; यदि ध्वज बंद है, तो लिंक को मेमोरी में लिंक पते की वरिष्ठता के आधार पर सॉर्ट किया जाता है।

सिंटेक्स: द्वारा आदेश<НаименованиеПоля>ऑटो ऑर्डर

उपयोग उदाहरण:

Query.Text = "चयन करें | निःशुल्क शेष शेष। नामकरण के रूप में नामकरण, | निःशुल्क शेष शेष। गोदाम के रूप में गोदाम, | निःशुल्क शेष शेष। स्टॉक में शेष | FROM | रजिस्टर संचय। निःशुल्क शेष। शेष निःशुल्क शेष के रूप में | | ऑर्डर द्वारा |. नामकरण |. ऑटो ऑर्डर रीडिंग";

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

सिंटेक्स: द्वारा समूह बनाएं<НаименованиеПоля1>, .... , <НаименованиеПоляN>

उपयोग उदाहरण:

Query.Text = "SELECT | ProductInWarehouses.Nomenclature as Nomenclature, | ProductInWarehouses.Nomenclature, | SUM(GoodsInWarehouses.InStock) as INSTOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductInWarehouses | | Group BY | ProductInWarehouses.Nomenclature, | Treasures.Warehouse";

11. डिजाइन होना- आपको WHERE निर्माण के समान, डेटा चयन स्थिति में एक समग्र फ़ंक्शन लागू करने की अनुमति देता है।

सिंटेक्स: होना<агрегатная функция с условием>

उपयोग उदाहरण:

Query.Text = // समूहीकृत रिकॉर्ड का चयन करता है जहां इनस्टॉक फ़ील्ड 3 से अधिक है "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | समूह द्वारा |. उत्पाद गोदामों में. नामकरण, | उत्पाद गोदामों में | | उपलब्ध राशि |

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

सिंटेक्स: द्वारा सूचकांक<Поле1, ... , ПолеN>

उपयोग उदाहरण:

Request.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | Place DataTs | FROM | &Ts AS Ts | | Index BY | Ts.NameOS, | Ts .कोडओएस";

13. डिज़ाइन कहां- आपको किसी भी चयन फ़ील्ड पर एक शर्त लगाने की अनुमति देता है। परिणाम में केवल वही रिकॉर्ड शामिल होंगे जो शर्त को पूरा करते हैं।

सिंटेक्स: कहाँ<Условие1 ОператорЛогСоединения УсловиеN>

उपयोग उदाहरण:

Query.Text = //CompensationRemaining वाले सभी रिकॉर्ड चयनित हैं<>0 और //AmountForcalcCompRemaining > 100 "चयन करें | CompensationRPOREmains.Counterparty, |CompensationRPOREmains.Child, | CompensationRPOREmains.CompensationRemaining, | CompensationRPOREmains.AmountForcalcCompRemains |Place DataTz |FROM | Accumulation Register.CompensationRP.Remains AS CompensationRPOREmains |Where |Compensation RPORemaining.CompensationRemaining<>0 | और CompensationRPOREmains.AmountForcalcCompRemaining> 100" ;

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

सिंटेक्स: परिणाम<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>द्वारा<ОБЩИЕ> <Поле1, ... , ПолеN>

उपयोग उदाहरण:

Request.Text = "चयन करें | गणना। प्रतिपक्ष समझौता। अनुबंध के प्रकार के रूप में समझौते का प्रकार, | गणना। अनुबंध के रूप में प्रतिपक्ष समझौता, | गणना। प्रतिपक्ष, | गणना। पारस्परिक निपटान शेष की राशि शेष राशि के रूप में | FROM | संचय का रजिस्टर। पारस्परिक प्रतिपक्षों के साथ निपटान। गणना के रूप में शेष | कुल |। राशि (शेष राशि) | सामान्य, | समझौते का प्रकार";

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

ध्यान! यह पाठ का एक परिचयात्मक संस्करण है, जिसकी सामग्री अधूरी हो सकती है।

एक छात्र के रूप में साइट पर लॉगिन करें

स्कूल सामग्री तक पहुँचने के लिए एक छात्र के रूप में लॉग इन करें

शुरुआती प्रोग्रामर के लिए क्वेरी भाषा 1C 8.3: प्रकार (मूल्य प्रकार, प्रकार, संदर्भ, ISNULL, एक्सप्रेस) के साथ काम करने के लिए फ़ंक्शन और ऑपरेटर

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

क्वेरी भाषा में, विभिन्न प्रकार के विवरणों के साथ काम करने के लिए फ़ंक्शंस और ऑपरेटरों की एक पूरी श्रेणी होती है। आइए उन पर नजर डालें.

मूल्य प्रकार फ़ंक्शन

यह फ़ंक्शन एक पैरामीटर (मान) लेता है और उसका प्रकार लौटाता है। चित्र में वर्णित प्रॉप्स के लिए (ऊपर) स्वादनिर्देशिका खानानिम्नलिखित लौटाया जाएगा:

अब आइए प्रॉप्स पर नजर डालें विशिष्ट विशेषतानिर्देशिका पर शहर:

आप देख सकते हैं कि यह प्रोप कई प्रकारों में से एक हो सकता है: रेखा, निर्देशिका.स्वाद, निर्देशिका.रंग. इस प्रकार के विवरण को कंपोजिट कहा जाता है।

यदि हम 1C:एंटरप्राइज़ मोड में ऐसे विवरण का मान भरने का प्रयास करते हैं, तो सिस्टम हमसे पूछेगा कि किस प्रकार का मान दर्ज किया जाएगा:

और हमारे चयन के बाद ही यह हमें चयनित प्रकार का मान दर्ज करने की अनुमति देगा।

इस प्रकार, एक ही प्रकार के निर्देशिका तत्व ( निर्देशिका.शहर) उसी विशेषता में संग्रहीत करने में सक्षम होंगे ( विशिष्ट विशेषता) मान अलग - अलग प्रकार(स्ट्रिंग, रंग या स्वाद)।

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

यहाँ अर्थ है विशिष्ट विशेषताएक निर्देशिका तत्व है जायके:

यहाँ पंक्ति है:

और यहाँ आम तौर पर संदर्भ पुस्तक का एक तत्व है रंग:

ये वे संभावनाएँ हैं जो एक समग्र डेटा प्रकार हमारे लिए खोलता है!

मुझे आश्चर्य है कि फ़ंक्शन कैसे व्यवहार करेगा प्रकार मानसहारा पर विशिष्ट तत्व, एक समग्र डेटा प्रकार होना:

यह पहले से ही बहुत दिलचस्प है. आइए प्रत्येक पंक्ति को व्यक्तिगत रूप से देखें।

तत्व के लिए विशिष्ट विशेषता के मूल्य का प्रकार रूस के बराबर है व्यर्थ. यह पहली बार है जब हमने इस प्रकार का सामना किया है। इस प्रकार के मानों का उपयोग केवल डेटाबेस के साथ काम करते समय लापता मान को निर्धारित करने के लिए किया जाता है।

यह सच है, क्योंकि रूस तत्व एक समूह है, न कि कोई सामान्य निर्देशिका तत्व शहर, इसलिए इसका कोई क्षेत्र नहीं है विशिष्ट विशेषता. और लुप्त मान का प्रकार, जैसा कि हमने ऊपर पढ़ा, हमेशा बराबर होता है व्यर्थ.

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

क्रास्नोयार्स्क के लिए, विशेषता का प्रकार बराबर है रंग, क्योंकि डेटाबेस में चयनित मान एक निर्देशिका तत्व का लिंक है रंग.

वोरोनिश के लिए, विशेषता का प्रकार बराबर है रेखा, क्योंकि डेटाबेस में दर्ज किया गया मान एक नियमित स्ट्रिंग है।

भारत फिर एक समूह है इसलिए कोई मतलब नहीं है. और लुप्त मान का प्रकार, जैसा कि हमें याद है, बराबर है व्यर्थ.

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

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

फ़ंक्शन प्रकार

यह केवल एक पैरामीटर लेता है - आदिम प्रकार का नाम ( रेखा, संख्या, तारीख, बूलियन), या उस तालिका का नाम जिसका लिंक प्रकार आप प्राप्त करना चाहते हैं।

इस निर्माण का परिणाम निर्दिष्ट प्रकार के लिए प्रकार का मान होगा।

अस्पष्ट लगता है, है ना?

आइए इस डिज़ाइन के अनुप्रयोग को देखें और सब कुछ तुरंत ठीक हो जाएगा।

मान लीजिए हमें सभी निर्देशिका प्रविष्टियों का चयन करने की आवश्यकता है शहर, जिसमें मिश्रित प्रॉप्स हैं विशिष्ट विशेषताप्रकार का एक मान है रेखा:

अब उन सभी रिकॉर्ड्स का चयन करें जिनमें विशेषता मान हैं विशिष्ट विशेषतानिर्देशिका तत्वों के लिंक हैं रंग(मेज़ निर्देशिका.रंग):

पीछे हटना

जैसा कि आपको याद है, निर्देशिका के कुछ तत्व शहरसहारा नहीं है विशिष्ट विशेषता. समारोह प्रकार मानऐसे तत्वों के लिए यह पैदा करता है व्यर्थ.

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

यहां इसके उपयोग का एक उदाहरण दिया गया है:

महान। लेकिन क्या आपने देखा कि साओ पाउलो, प्रॉप्स वैल्यू टाइप का कोई तत्व नहीं है विशिष्ट विशेषताजिसे उन्होंने दे भी दिया व्यर्थ. ऐसा क्यों हुआ?

लेकिन बात यह है कि स्थिति उन समूहों (रूस, भारत, ब्राजील) के लिए है, जिनके लिए विवरण भरना है विशिष्ट विशेषतासिद्धांत रूप में असंभव है, क्योंकि उनके पास यह बिल्कुल नहीं है, साओ पाउलो तत्व की स्थिति से भिन्न है, जिसके लिए प्रॉप्स भरना संभव है, लेकिन यह बस भरा नहीं है और बराबर है, जैसा कि हम याद करते हैं, एक के लिए विशेष मूल्य अपरिभाषित.

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

लेकिन खाली (अनफिल्ड) विशेषताओं को निर्धारित करने के लिए अपरिभाषित के साथ तुलना केवल समग्र प्रकारों के लिए काम करेगी।

वैसे, लॉजिकल ऑपरेटर IS NULL का एक निषेध रूप है जो इस तरह दिखता है:

तार्किक ऑपरेटर लिंक

उदाहरण के लिए, आइए निर्देशिका से चयन करें शहरकेवल वे रिकॉर्ड जिनमें समग्र विशेषता का मान होता है विशिष्ट विशेषताएक निर्देशिका तत्व के लिए एक लिंक हैं जायके:

जैसा कि आपको याद है, हम उसी समस्या का उपयोग करके हल कर सकते हैं प्रकार मानऔर प्रकार:

फ़ंक्शन ISNULL

फ़ंक्शन को किसी मान को प्रतिस्थापित करने के लिए डिज़ाइन किया गया है व्यर्थएक अलग अर्थ के लिए.

हमें वह मतलब याद है व्यर्थयदि अनुरोधित विशेषता (फ़ील्ड, संपत्ति) मौजूद नहीं है तो लौटा दिया जाता है।

उदाहरण के लिए, सहारा विशिष्ट विशेषतानिर्देशिका समूहों के लिए शहर:

// परिणाम: ठीक है समारोहयदि यह मान बराबर है तो हमें एक अलग मान आउटपुट करने में मदद मिलेगी व्यर्थ. आप पाठ का परीक्षण संस्करण पढ़ रहे हैं, पूर्ण पाठ उपलब्ध हैं। मान लीजिए कि इस मामले में यह पंक्ति है "ऐसा कोई सहारा नहीं है!":

यह पता चला है कि यदि फ़ंक्शन का पहला पैरामीटर समारोहसम नही व्यर्थ, फिर वह लौट आता है। यदि यह NULL है, तो दूसरा पैरामीटर लौटा दिया जाता है।

एक्सप्रेस समारोह

यह फ़ंक्शन केवल उन फ़ील्ड के लिए है जिनका समग्र प्रकार है। ऐसे क्षेत्र का एक उत्कृष्ट उदाहरण संपत्ति है विशिष्ट विशेषतानिर्देशिका तत्वों के लिए शहर.

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

मैदान के लिए विशिष्ट विशेषताऐसे मान्य प्रकार हैं रेखा, निर्देशिका.रंगऔर निर्देशिका.स्वाद.

कभी-कभी किसी समग्र फ़ील्ड के मानों को किसी विशिष्ट प्रकार में डालना आवश्यक हो जाता है।

आइए सभी फ़ील्ड मानों को सूचीबद्ध करें विशिष्ट विशेषताटाइप करने के लिए संदर्भ.रंग:

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

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

परीक्षण करें

परीक्षण प्रारंभ करें

1. सबसे सही कथन चुनें

2. वे विवरण जो कई प्रकारों में से किसी एक का मान ले सकते हैं, कहलाते हैं

3. विशेषता मान का प्रकार निर्धारित करने के लिए, फ़ंक्शन का उपयोग करें

4. समग्र प्रकार के खाली विवरण महत्वपूर्ण हैं