अनुरोध में 1सी प्रतिनिधित्व। क्वेरी भाषा के व्यू फ़ील्ड और व्यू() फ़ंक्शन के साथ काम करने की विशेषताएं

इस लेख में हम 1सी क्वेरी भाषा में नेस्टेड तालिकाओं के विषय की जांच करेंगे।

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

अपने प्रशिक्षण डेटाबेस में, मैं क्वेरी कंसोल लॉन्च करूंगा, क्वेरी डिज़ाइनर खोलूंगा और "सेवाओं का प्रावधान" तालिका का चयन करूंगा।

आइए इस तालिका का विस्तार करें

और इसमें हम सारणीबद्ध भाग "सेवाएँ" देखते हैं।

आइए इस संपूर्ण तालिका भाग का चयन करें।

जैसा कि आप देख सकते हैं, सेवा का संपूर्ण सारणीबद्ध भाग पूरी तरह से फ़ील्ड में चला गया है।

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

आइए नेस्टेड टेबल के तीन फ़ील्ड छोड़ें और दस्तावेज़ हेडर से कुछ फ़ील्ड जोड़ें।

आइए डिज़ाइनर में ओके पर क्लिक करें और देखें कि हमारा अनुरोध कैसा दिखेगा।

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

आइए अनुरोध पूरा करें.

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

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

आइए देखें कि ऐसे अनुरोध को कैसे क्रियान्वित किया जाएगा।

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

हमने सीखा है कि कंसोल में नेस्टेड टेबल के साथ क्वेरी कैसे बनाई जाती है, अब हम सीखेंगे कि चयन में नेस्टेड टेबल का उपयोग कैसे करें

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

नीचे कोड का एक छोटा सा उदाहरण दिया गया है जो नेस्टेड तालिका के साथ काम करता है:


&सर्वर पर
प्रक्रिया फिलऑनसर्वर()
अनुरोध = नया अनुरोध;
अनुरोध। पाठ = "चुनना
| उत्पाद की बिक्री. लिंक,
| उत्पाद.उत्पादों की बिक्री.(
| उत्पाद,
| मात्रा
|से
| दस्तावेज़। उत्पाद बेचना उत्पाद कैसे बेचें"
;
फ़ेच = क्वेरी। दौड़ना()। चुनना();
अलविदा चयन. अगला() लूप
पेड़ की शीर्ष रेखा = उत्पादों की बिक्री। GetItems();
न्यूरो = टॉपरोट्री। जोड़ना();
नई पंक्ति। लिंक = चयन. जोड़ना;
तालिका उत्पाद = चयन। चीज़ें;
चयन उत्पाद = तालिका उत्पाद। चुनना();
उत्पादों का चयन करते समय. अगला() लूप
ट्रीचाइल्डरो = न्यूरो. GetItems();
उत्पाद पंक्ति = चाइल्डट्री पंक्ति। जोड़ना();
उत्पादस्ट्रिंग. लिंक = उत्पाद चयन. उत्पाद;
उत्पादस्ट्रिंग. मात्रा = नमूना आइटम। मात्रा ;
अंतचक्र;
अंतचक्र;
प्रक्रिया का अंत

मैं उपरोक्त कोड को समझाता हूँ।

सबसे पहले, हमें एक रैखिक चयन मिला, और हम इस चयन से एक लूप में गुजरते हैं, जिसमें हम वैल्यू ट्री की शीर्ष पंक्ति बनाते हैं (यह फॉर्म पर है), और इसमें हमारे दस्तावेज़ के लिए एक लिंक लिखते हैं।

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

और इस लूप के अंदर हम चयन फ़ील्ड को नेस्टेड टेबल के फ़ील्ड के रूप में संदर्भित करेंगे, और उन्हें फॉर्म से पेड़ की चाइल्ड पंक्तियों में लिखेंगे।

यह परिणाम यह कोड वापस आएगा

क्या आपके पास अभी भी प्रश्न हैं?

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

20% छूट के लिए प्रोमो कोड: hrW0rl9Nnx

किसी भी राशि का दान देकर मेरे प्रोजेक्ट का समर्थन करें

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

26.10.2016

1सी में वस्तुओं (लिंक) का प्रतिनिधित्व

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

जैसा कि आप स्क्रीनशॉट से देख सकते हैं, व्यू गेट हैंडलर इसके लिए उपलब्ध है:

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


इसके बाद, हम स्ट्रिंग विवरण के विभिन्न मूल्यों के साथ निर्देशिका में कई तत्व बनाएंगे, और एक में हम सत्यापन के लिए एक लिंक इंगित करेंगे


जैसा कि आप देख सकते हैं, तत्वों का मानक प्रतिनिधित्व अब प्रदर्शित होता है (मानक विशेषता "नाम" का मान)। आइए हमारी निर्देशिका के प्रबंधक मॉड्यूल को खोलें और इसमें निम्नलिखित कोड जोड़ें: प्रक्रिया प्राप्त करने वाली प्रस्तुति प्रसंस्करण (डेटा, प्रस्तुति, मानक प्रसंस्करण) मानक प्रसंस्करण = गलत; देखें = "(" + डेटा.विशेषता1 + ", " + डेटा.विशेषता2 + ") " + डेटा.नाम; EndProcedureProcedureProcessingGettingRepretationFields (फ़ील्ड, मानक प्रसंस्करण) मानक प्रसंस्करण = गलत; फ़ील्ड्स.जोड़ें('प्रॉप्स1'); फ़ील्ड्स.जोड़ें("प्रॉप्स2"); फ़ील्ड्स.जोड़ें("नाम"); प्रक्रिया का अंत कॉन्फ़िगरेशन सहेजें और लागू करें। "1C:एंटरप्राइज़" लॉन्च करना


अब तत्वों की प्रस्तुति बदल गई है, जैसा कि हमने प्रबंधक मॉड्यूल में लिखा था (पहले दो विवरणों के मान, और फिर नाम)।
आइए 1C सिंटैक्स सहायक खोलें और देखें कि हमने किन प्रक्रियाओं का उपयोग किया: वाक्य - विन्यास:प्रोसेसिंगगेटिंगव्यूफील्ड्स(<Поля>, <СтандартнаяОбработка>) विवरण:उन फ़ील्ड्स की संरचना प्राप्त करते समय कॉल किया जाता है जिनसे किसी ऑब्जेक्ट या लिंक का प्रतिनिधित्व बनता है। टिप्पणी:इवेंट प्रोसेसिंग का परिणाम सत्र के लिए कैश किया जाता है। वाक्य - विन्यास:प्रोसेसिंगरिसीवव्यू(<Данные>, <Представление>, <СтандартнаяОбработка>) विवरण:किसी ऑब्जेक्ट या संदर्भ का प्रतिनिधित्व पुनर्प्राप्त होने पर कॉल किया जाता है। दूसरे शब्दों में, हमने सबसे पहले उन क्षेत्रों की संरचना प्राप्त की जिनकी हमें प्रतिनिधित्व बनाते समय आवश्यकता होती है, और फिर हमने उस प्रारूप का प्रतिनिधित्व दर्शाया कि हमें किस प्रारूप को प्राप्त करने की आवश्यकता है।

इस लेख में हम आपसे हर बात पर चर्चा करना चाहते हैं 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 रूबल की छूट होनी चाहिए, //इसलिए यदि स्थिति ट्रिगर हो जाती है तो फ़ंक्शन //Sum - 300 लौटाता है //अन्यथा अनुरोध केवल Sum लौटाएगा "चुनें | चुनें | जब TCReceipts.Amount > 7500 | तब TCReceipts.Amount - 300 | अन्यथा TCReceipts.Amount | END AS AmountWithDiscount |FROM | Document.Receipt of GoodsServices.Goods AS TCReceipts";

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) अवशेष के रूप में | FROM | निर्देशिका। नामकरण संख्या के रूप में | बायां कनेक्शन संचय रजिस्टर करें। GoodsInWarehouses। GoodsInWarehouses अवशेष के रूप में शेष | चालू (GoodsInStockRemains। नामकरण = संख्या लिंक)";

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

वाक्य - विन्यास: प्रदर्शन(<НаименованиеПоля>)

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

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

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

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

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

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

Request.Text = //यदि रिकॉर्डर मान प्रकार दस्तावेज़ रसीद है, //तो क्वेरी "माल की रसीद" लौटाएगी, अन्यथा "माल की बिक्री" "चयन करें | चयन करें | शेष कब। रजिस्ट्रार लिंक दस्तावेज़। माल की रसीद और सेवाएँ | फिर ""रसीद"" | अन्यथा ""उपभोग"" | संचलन के प्रकार के रूप में समाप्त | 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 शामिल है और //या तो छोटे या बड़े अक्षर t से शुरू होता है t "SELECT | Nomenclature. Link | FROM | Directry. Nomenclature AS Nomenclature | WHERE | Product. Name LIKE "" [टीटी ]अबुर%""" ;

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 | ItemsInWarehouses.Nomenclature as Nomenclature, | ItemsInWarehouses.Nomenclature, | SUM(ItemsInWarehouses.InStock) as INSTOCK |FROM | RegisterAccumulations.ItemsInWarehouses as ItemsInWarehouses | | GROUP BY | ItemsInWarehouses.Nomenclature, | ItemsAtWare घर आह.गोदाम" ;

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

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

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

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

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

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

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

Query.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, | CompensationRPORmains.AmountForcalCompRemains |Place DataTz |FROM | Accumulation Register.CompensationRP.Remains AS CompensationRPRemains | WHERE |CompensationRP Oशेष.मुआवजाशेष<>0 | और CompensationRPOREmains.AmountForcalcCompRemaining> 100" ;

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

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

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

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

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

1सी 8 क्वेरी भाषा 1सी प्रोग्रामर के लिए एक अनिवार्य उपकरण है; यह आपको अधिक संक्षिप्त, सरल, समझने योग्य कोड लिखने और डेटा के साथ काम करते समय कम सिस्टम संसाधनों का उपयोग करने की अनुमति देता है। यह आलेख 1C 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 फ़ील्ड उपनाम

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

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

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

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

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

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

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

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

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

इस लेख में मैं 1सी क्वेरी भाषा में मुख्य कीवर्ड के बारे में बात करने का प्रयास करूंगा:

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

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

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

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

चुनना

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

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

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

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

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

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

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

चयन (मामला)

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

वर्तमान निर्देशिका.नाम,

जब वर्तमान निर्देशिका.सेवा तब

"सेवा"

नामकरण कैसे देखें समाप्त करें

निर्देशिका.नामपद्धति वर्तमान निर्देशिका के रूप में

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

कहाँ

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

चुनना
निर्देशिका.नाम
से
वर्तमान निर्देशिका। वर्तमान निर्देशिका के रूप में नामकरण
जहां करंटडायरेक्टरी.सर्विस = सत्य है

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

"सेवा कहाँ है"

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

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

कहां कोड = "005215"

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

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

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

जहां रसीद दिनांक > दिनांक समय(2012,01,01):

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

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

जहां नामकरण समूह = और नामकरण समूह

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

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

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

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

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

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

परिणाम को समूहीकृत करने के लिए उपयोग की जाने वाली 1C 8.2 क्वेरी भाषा का डिज़ाइन।

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

चुनना
माल और सेवाओं की प्राप्ति माल। माल,
एसयूएम (वस्तुओं की प्राप्ति, सेवाओं, वस्तुओं की मात्रा) मात्रा के रूप में,
SUM (वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। राशि) राशि के रूप में
से
दस्तावेज़। माल और सेवाओं की प्राप्ति। माल कैसे माल और सेवाओं की प्राप्ति माल

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

यह अनुरोध सभी प्राप्तियों को राशि और मात्रा के आधार पर संक्षेप में प्रस्तुत करेगा।

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

होना

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

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

चुनना
माल और सेवाओं की प्राप्ति माल। माल,
एसयूएम (वस्तुओं की प्राप्ति, सेवाओं, वस्तुओं की मात्रा) मात्रा के रूप में,
SUM (वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति। राशि) राशि के रूप में
से
दस्तावेज़। माल और सेवाओं की प्राप्ति। माल कैसे माल और सेवाओं की प्राप्ति माल

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

SUM(वस्तुओं, सेवाओं, वस्तुओं की प्राप्ति, मात्रा) > 5

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

अर्थ()

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

जहां बैंक = मूल्य(निर्देशिका.बैंक.खालीलिंक)

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

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

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

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

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

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

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

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

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

चुनना
संपर्क जानकारी.वस्तु,
एक्सप्रेस(ContactInfo.पंक्ति के रूप में देखें(150)) दृश्य के रूप में
से
सूचना का रजिस्टर। संपर्क जानकारी कैसे संपर्क जानकारी

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

इसशून्य (इसशून्य)

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

ISNULL(पूर्व-माह कर.लागूFSS लाभ, 0)

1C क्वेरी भाषा ISNULL का ऐसा फ़ंक्शन कोई मान न होने पर शून्य लौटा देगा, जिससे त्रुटि से बचा जा सकेगा।

जोड़ना

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

बाएँ और दाएँ कनेक्शन

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

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

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

1सी 8.3 भाषा में राइट जॉइनबिल्कुल समान बाएँ कनेक्शन, एक अंतर के अपवाद के साथ: में कनेक्शन का अधिकार"मुख्य" तालिका दूसरी है, पहली नहीं।

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

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

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

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

द्वारा

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

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

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

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

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

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

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

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

निष्कर्ष

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

शेयर करना: