एसीएस केवल रिपोर्टों के लिए नहीं है - सार्वभौमिक चयनों का कार्यान्वयन। एससीडी में चयन का उपयोग करना एसडीएस के बिना चयन कैसे करें

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

उपयोगकर्ता के लिए प्रतिपक्ष द्वारा नियमित रूप में चयन को व्यवस्थित करने के लिए, प्रोग्रामर को फॉर्म पर तीन तत्व रखने होते थे, जो कुछ इस तरह दिखते थे:

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

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

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

और चयन टैब पर, प्रतिपक्ष को चयन में जोड़ें:

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

अब ऑनओपन फॉर्म के लिए इवेंट हैंडलर और रन बटन पर क्लिक करने के लिए एक हैंडलर बनाएं, कोड नीचे प्रस्तुत किया गया है:

पेरेम लेआउट; प्रक्रिया ButtonExecutePress(बटन) Result.Clear(); लेआउटलिंकर = newDataLayoutLayoutLinker; लेआउट लेआउट = लेआउट कंपोजर.एक्सेक्यूट(लेआउट, कंपोजर.गेटसेटिंग्स(), टाइप("DataCompositionLayoutGeneratorForValueCollection")); कंपोजीशनप्रोसेसर = newDataCompositionProcessor; लेआउटप्रोसेसर.इनिशियलाइज़(लेआउटलेआउट); आउटपुट प्रोसेसर = मानों के संग्रह में डेटा की संरचना के परिणाम का नया आउटपुट प्रोसेसर; आउटपुटप्रोसेसर.सेटऑब्जेक्ट(परिणाम); आउटपुटप्रोसेसर.आउटपुट(कंपोजीशनप्रोसेसर); यदि formElements.Result.Columns.Quantity() = 0 तो formElements.Result.CreateColumns(); अगर अंत; एंडप्रोसीडर प्रोसीजरऑनओपन() लेआउट = गेटलेआउट("लेआउट"); सोर्सअवेलेबलसेटिंग्स = नया सोर्सअवेलेबलसेटिंग्सडेटाकंपोजिशन(लेआउट); Linker.Initialize(SourceAvailableSettings); लिंकर.लोडसेटिंग्स(लेआउट.डिफॉल्टसेटिंग्स); प्रक्रिया का अंत

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

बस इतना ही, मुझे उम्मीद है कि यह लेख आपके प्रसंस्करण में चयन के लचीलेपन को बेहतर बनाने में आपकी मदद करेगा।

कोनोनोव सर्गेई

एसकेडी का उपयोग किस लिए किया जा सकता है?

स्थापित राय रिपोर्टिंग उद्देश्यों के लिए है।

वास्तव में एसीएस क्षमताएं सार्वभौमिक रिपोर्ट बनाने से कहीं आगे जाती हैं.

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

यह किन कार्यों के लिए उपयोगी होगा?

चलो हम देते है विशिष्ट विन्यास से उदाहरण:

  • प्रसंस्करण "साइट पर डेटा अपलोड करना"
  • मूल्य सूची का गठन
  • टीएसडी (डेटा संग्रह टर्मिनल) पर डेटा अपलोड करना
  • उत्पादों, साझेदारों का विभाजन
  • आवश्यकताओं के अनुसार ऑर्डर (ग्राहकों, आपूर्तिकर्ताओं) का निर्माण
  • 1सी:ईआरपी में मरम्मत योजना।

अर्थात्, उपयोगकर्ता को व्यापक चयन विकल्प प्रदान करने के लिए जहां भी आवश्यक हो, उपकरण उपयोगी है।

ACS का उपयोग करके नियंत्रित रूप में यादृच्छिक चयन बनाना

पाठ में साथ काम करना शामिल है सेटिंग्स बिल्डरडेटा लेआउट योजनाएँ:

  • प्रपत्र पर चयन आउटपुट
  • सेटिंग्स बिल्डर और लेआउट आरेख के बीच सॉफ़्टवेयर कनेक्शन
  • अभिगम नियंत्रण प्रणाली में डिफ़ॉल्ट चयन बनाना।

एसीएस चयन द्वारा फ़िल्टरिंग के साथ डेटाबेस से डेटा प्राप्त करना

वीडियो दिखाता है कि आप सेटिंग बिल्डर में पहले से सेट चयन का उपयोग करके डेटा का चयन कैसे कर सकते हैं।

एक "डरावनी" वस्तु का प्रयोग किया जाता है - प्रोसेसरआउटपुटरिजल्टकंपोजिशनडेटाइनटूवैल्यूकलेक्शन.

वास्तव में, सब कुछ इतना जटिल नहीं है - 8 मिनट में हम समस्या का समाधान कर देते हैं।

सूचना आधार में एसकेडी चयनों को संग्रहीत करना

पाठ में हम देखेंगे ACS बिल्डर सेटिंग्स सहेजनावैल्यू स्टोर का उपयोग करना।

आइए जानें कि "1C: मैन्युफैक्चरिंग एंटरप्राइज मैनेजमेंट 1.3" कॉन्फ़िगरेशन में इस समस्या को कैसे हल किया जाए।

देखने का मज़ा लें! :)

सामान्य तौर पर, एसीएस बहुत सारे अवसर प्रदान करता है।

यहां कुछ "ट्रिक्स" दी गई हैं जिनका वर्णन करने के लिए हमारे पास पाठ्यक्रम पृष्ठ पर समय भी नहीं था।

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

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

साथ ही, सही परिणाम प्राप्त करना महत्वपूर्ण है - यदि कई स्रोत हैं तो इसकी अपनी विशिष्टताएं हैं

SKD की सहायता से आप आसानी से कर सकते हैं रिपोर्ट में प्रत्येक दिनांक के लिए नवीनतम का स्नैपशॉट प्राप्त करें.

या, स्पष्टता के लिए, - प्रत्येक बिक्री तिथि के लिए उत्पाद का मूल्य प्राप्त करें.

ACS की मदद से आप व्यवस्थित कर सकते हैं रिपोर्ट में अवधि के लिए सभी तिथियां प्रदर्शित करना, और न केवल वे जिनके लिए रिपोर्ट में डेटा था (प्रोग्रामिंग के बिना तारीखें जोड़ना, केवल एक्सेस कंट्रोल सिस्टम की क्षमताओं के साथ)

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

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

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

किसी रिपोर्ट में OR का उपयोग करके कई शर्तों को कैसे संयोजित करें? उदाहरण के लिए, यह विकल्प रिपोर्ट बिल्डर में उपलब्ध नहीं है, लेकिन एसीएस में उपलब्ध है

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

बेशक, ऐसी बारीकियाँ हैं जिन पर ध्यान देने की आवश्यकता है।

रिपोर्ट बनाते समय, डेवलपर ने क्वेरी टेक्स्ट को डीबग किया, लेकिन एक्सेस कंट्रोल सिस्टम पर रिपोर्ट में इस क्वेरी का उपयोग करते समय, सिस्टम गलत परिणाम उत्पन्न करता है।

इसलिए, उस क्वेरी को प्राप्त करने में सक्षम होना महत्वपूर्ण है जिसे सिस्टम वास्तव में डेटाबेस से डेटा प्राप्त करने के लिए निष्पादित करता है, और ऐसी क्वेरी को डीबग करने में सक्षम होना महत्वपूर्ण है।

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

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

रिपोर्ट का परिणाम इस आधार पर बदल सकता है कि संसाधन मान द्वारा चयन कहाँ कॉन्फ़िगर किया गया है - रिपोर्ट स्तर पर और एक व्यक्तिगत समूह के स्तर पर, आपको इसकी निगरानी करने की आवश्यकता है।

यदि आप चाहते हैं पेशेवर रूप से एसीएस में महारत हासिल करेंऔर दैनिक अपने काम में लागू करें, पाठ्यक्रम के लिए साइन अप करें:

सहायता - 2 महीने. कोर्स का दायरा- 34 शिक्षण घंटे.

अपनी पढ़ाई में देरी न करें!

डेटा संरचना प्रणाली के लिए क्वेरी भाषा विस्तार

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

डेटा संरचना प्रणाली क्वेरी भाषा विस्तार के वाक्यात्मक तत्व

चुनना

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

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

(आइटम चुनें, गोदाम)

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

उदाहरण के लिए, प्रविष्टि Nomenclature.* "नामकरण" फ़ील्ड के चाइल्ड फ़ील्ड का उपयोग करने की संभावना को इंगित करती है (उदाहरण के लिए, "Nomenclature.Code" फ़ील्ड)। SELECT तत्व केवल पहली जॉइन क्वेरी में दिखाई दे सकता है।

कहाँ

उन फ़ील्ड्स का वर्णन किया गया है जिन पर उपयोगकर्ता चयन लागू कर सकता है। यह प्रस्ताव तालिका फ़ील्ड का उपयोग करता है. चयन सूची फ़ील्ड उपनामों के उपयोग की अनुमति नहीं है। संघ के प्रत्येक भाग में अपना स्वयं का WHERE तत्व हो सकता है।

(जहां नामकरण.*, गोदाम)

एक सरल उदाहरण

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

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

संदर्भ नामकरण का चयन करें। नामकरण के रूप में लिंक, सेल्स टर्नओवर। काउंटरपार्टी, सेल्स टर्नओवर। काउंटरपार्टी समझौता, सेल्स टर्नओवर। क्वांटिटी टर्नओवर मात्रा के रूप में, सेल्स टर्नओवर। लागत टर्नओवर संदर्भ से लागत के रूप में। संदर्भ के रूप में नामकरण नामकरण बायां कनेक्शन रजिस्टर संचय। बिक्री। टर्नओवर सेल्स टर्नओवर के रूप में पीओ स्प्रनोमेनक्लेचर.लिंक = सेल्स टर्नओवर। नामपद्धति

यहाँ परिणाम है:

प्रतिपक्ष समझौता नामपद्धति मात्रा जोड़
व्यर्थ व्यर्थ _टेस्ट1 व्यर्थ व्यर्थ
एलएलसी "हॉर्न्स एंड हूव्स" समझौता1 चप्पलें 10 1200
"गज़प्रॉम" अच्छा अनुबंध घुटनों तक पहने जाने वाले जूते 5 13000
व्यर्थ व्यर्थ रबड़ के जूते व्यर्थ व्यर्थ
व्यर्थ व्यर्थ स्लेट व्यर्थ व्यर्थ

इस उदाहरण में, वस्तुओं की कोई बिक्री नहीं हुई: "ओवरशूज़" और "चप्पल"

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

बिल्कुल वह नहीं जिसकी हमें आवश्यकता है, है ना?

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

एक समाधान है: इसके लिए क्वेरी बिल्डरटैब पर डेटा संरचना => टेबलवर्चुअल टेबल शर्तों में एक शर्त फ़ील्ड जोड़ें बिक्री कारोबारऔर उसका उपनाम बदल दें प्रतिपक्ष चयन

चयन फ़ील्ड के साथ उपयोगकर्ता को भ्रमित न करने के लिए, हम शर्त फ़ील्ड को अक्षम कर देंगे प्रतिपक्षऔर फ़ील्ड का शीर्षक बदलें प्रतिपक्ष चयन


प्रतिपक्ष फ़ील्ड द्वारा सक्षम चयन के साथ इस योजना को निष्पादित करने के परिणामस्वरूप, परिणामी क्वेरी इस रूप में होगी:

नामपद्धति के रूप में लिंक चुनें, सेल्सटर्नओवर।काउंटरपार्टी के रूप में काउंटरपार्टी, सेल्सटर्नओवर।काउंटरपार्टी एग्रीमेंट काउंटरपार्टी एग्रीमेंट के रूप में, सेल्सटर्नओवर।क्वांटिटीटर्नओवर >मात्रा के रूप में, सेल्सटर्नओवर।लागत टर्नओवर लागत के रूप में, प्रेजेंटेशनलिंक(सेल्सटर्नओवर।काउंटरपार्टी एग्रीमेंट) कॉन्ट्रैक्ट के रूप मेंकाउंटरपार्टी एप्रजेंटेशन, प्रेजेंटेशनलिंक (बिक्री कारोबार.प्रतिपक्ष ) AS प्रतिपक्ष प्रस्तुति, SprNomenclature.Presentation as NomenclaturePresentation from निर्देशिका.Nomenclature AS SprNomenclature बायां कनेक्शन रजिस्टर संचय.बिक्री.टर्नओवर(&P , , , प्रतिपक्ष = &P3 ) AS SalesTurnover BY SprNomenclature.Link = SalesTurnover.Nomenclature

और तदनुसार परिणाम:

प्रतिपक्ष समझौता नामपद्धति मात्रा जोड़
व्यर्थ व्यर्थ _टेस्ट1 व्यर्थ व्यर्थ
एलएलसी "हॉर्न्स एंड हूव्स" समझौता1 चप्पलें 10 1200
व्यर्थ व्यर्थ घुटनों तक पहने जाने वाले जूते व्यर्थ व्यर्थ
व्यर्थ व्यर्थ रबड़ के जूते व्यर्थ व्यर्थ
व्यर्थ व्यर्थ स्लेट व्यर्थ व्यर्थ

Test1 नामकरण निर्देशिका में एक समूह है जिसमें सब कुछ स्थित है

प्रकाशन के साथ प्रकाशन में प्रयुक्त रिपोर्ट का XML स्कीमा संलग्न है। मैंने इंटीग्रेटेड ऑटोमेशन में सर्किट बनाया, लेकिन मुझे लगता है कि यूपीपी और यूटी 10 दोनों में सब कुछ ठीक काम करेगा

सारांश

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

यदि आपके पास बिना उपयोग किए सर्किट बनाने का पर्याप्त अनुभव है स्वत: भरण- तो फिर इस सलाह का कोई मतलब नहीं बनता.

सॉफ्टवेयर का उपयोग किया गया

  • स्क्रीनशॉट प्रोग्रामस्निमोक!
  • एक्सएमएल फ़ाइल संपादक