घंटी

आपसे पहले इस खबर को पढ़ने वाले भी हैं।
नवीनतम लेख प्राप्त करने के लिए सदस्यता लें।
ईमेल
नाम
उपनाम
आप द बेल को कैसे पढ़ना चाहेंगे
कोई स्पैम नहीं

नई खोज की कार्यक्षमता दो तंत्रों पर आधारित है:
- पूर्ण-पाठ खोज (बहुत तेजी से काम करता है और न्यूनतम कंप्यूटिंग संसाधनों की आवश्यकता होती है);
- एक DBMS के माध्यम से खोज (सामान्य स्थिति में, खोज की अवधि और कंप्यूटिंग संसाधनों की लागत तालिका में जानकारी की मात्रा के अनुपात में होती है)।

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

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

हम फर्म 1C से पूछते हैं - कैसे हो? कैसे सुनिश्चित करें कि खोज परिणाम हमेशा मान्य हैं?
हमें उत्तर मिलता है: हां, पूर्ण-पाठ खोज सक्षम होने पर खोज परिणामों को अद्यतित रखने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि पूर्ण-पाठ खोज अनुक्रमणिका अद्यतित है। प्रभावी और अद्यतन के लिए कोई अन्य विकल्प नहीं हैं- आज तक की खोज अभी तक ().

और क्या आम तौर पर "एक वास्तविक पूर्ण-पाठ अनुक्रमणिका" होती है? उपयोगकर्ताओं की संख्या पर निर्भर करता है, डेटाबेस में सूचना परिवर्तन की तीव्रता, और अनुक्रमणिका अद्यतन की आवृत्ति। आमतौर पर, हर 60 सेकंड में एक इंडेक्स अपडेट चलाया जाता है। ठीक है, अगर कई वस्तुओं को नहीं बदला गया था, और प्रक्रिया इन 60 सेकंड में सभी परिवर्तनों को संसाधित करने में कामयाब रही। और अगर आपने दस्तावेज़ों के एक समूह का पुनर्लेखन किया है, या निर्देशिका का सामूहिक पुनर्लेखन किया है? इस मामले में, कोई भी उस समय की गारंटी नहीं दे सकता है जिसके बाद सूचकांक में खोज फिर से विश्वसनीय डेटा देगी।
सिद्धांत रूप में, यह विशेष रूप से महत्वपूर्ण नहीं है, कुछ स्थितियों को छोड़कर। उपयोगकर्ताओं के लिए काम करने का एक सामान्य विकल्प सूची में चयन को कुछ मूल्य से सेट करना है, उदाहरण के लिए, "प्रतिपक्ष", एक नया दर्ज करें या किसी मौजूदा दस्तावेज़ की प्रतिलिपि बनाएँ और इसे लिख लें। पुरानी खोज के साथ, सूची में नया दस्तावेज़ तुरंत दिखाई दे रहा था। अब उपयोगकर्ता इसे केवल N सेकंड के बाद ही देखेगा, जहाँ N 2-3 के बजाय 50-60 सेकंड के करीब है।
यदि आप ध्यान नहीं देते हैं कि कोई नया दस्तावेज़ नहीं है और चयनित परिणामों के आधार पर किसी को जानकारी प्रदान करते हैं, तो यह स्पष्ट रूप से अविश्वसनीय होगा।

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

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

इस प्रकार, मुझे ऐसा लगता है कि इंडेक्स अपडेट ऑपरेशन इन्फोबेस एडमिनिस्ट्रेटर के लिए एक और सिरदर्द बन जाएगा।
प्रणाली, जो पहले किसी भी समय 100% सटीकता और सूचना की प्रासंगिकता की गारंटी देती थी, अब एक संदर्भ प्रणाली में बदल रही है जिसमें कोई पूरी तरह से सुनिश्चित नहीं हो सकता है।
और उपयोगकर्ताओं को आईटी लोगों को फटकारने का एक और कारण मिलता है - "आपका सिस्टम ठीक से काम नहीं कर रहा है।"

इस तथ्य के बावजूद कि डेवलपर्स द्वारा 8.3 प्लेटफॉर्म पर पूर्ण-पाठ खोज की घोषणा बहुत समय पहले की गई थी (8.3.5 प्लेटफॉर्म के बाद से), इसे मानक कॉन्फ़िगरेशन में सक्रिय रूप से उपयोग नहीं किया गया था। एंटरप्राइज अकाउंटिंग 3.0 की हालिया रिलीज़ में, डेवलपर्स ने कई सूचियों में पूर्ण-पाठ खोज शामिल की है। मेरे उपयोगकर्ताओं के लिए, यह एक झटका निकला - कार्यक्रम ने खोज बंद कर दी।

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

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

कई दिनों तक हम एक नई खोज के साथ जीते रहे। उपयोगकर्ताओं ने पीड़ित किया, शिकायत की, तोड़फोड़ की। शिकायतें बंद नहीं हुईं, प्रबंधन को "सब कुछ जैसा था वैसा ही बनाने" का काम दिया गया।

कहाँ से शुरू करें? आपको यह समझने की आवश्यकता है कि प्रपत्र एक दूसरे से कैसे भिन्न होते हैं। मैंने कॉन्फ़िगरेशन स्रोत कोड को नए खोज व्यवहार और पुराने के साथ डाउनलोड किया और फ़ॉर्म के स्रोत कोड की तुलना की।

नई पूर्ण-पाठ खोज की कार्यक्षमता के लिए "खोज स्ट्रिंग" प्रकार के साथ प्रपत्र तत्व का योग जिम्मेदार है। यह स्पष्ट हो गया कि क्या देखना है। ITS 7.3.1.5 पर एक लेख मिला। गतिशील सूची में खोजें। इस लेख की जांच ने मुझे इस निष्कर्ष पर पहुँचाया कि खोज कार्य करने का नया तरीका दो कारकों पर निर्भर करता है: 1. प्रपत्र में उपरोक्त प्रपत्र तत्व पूर्णता होनी चाहिए, 2. प्रपत्र पर गतिशील सूची में "SearchStringPosition" गुण होना चाहिए जो इसके बराबर नहीं होना चाहिए "कोई भी नहीं"।

सिद्धांत रूप में, सर्वर पर एक फॉर्म बनाते समय, "सर्चस्ट्रिंग पोजिशन" सूची संपत्ति को "सर्चस्ट्रिंग पोजिशन नहीं" पर सेट करने के लिए पर्याप्त है, लेकिन यह सभी रूपों के साथ काम नहीं करता है, कुछ मामलों में नई खोज काम करना जारी रखती है। हम गैर-प्रोग्रामेटिक रूप से बनाए गए प्रपत्र तत्वों को प्रोग्रामेटिक रूप से नहीं हटा सकते हैं, लेकिन दृश्यता को नियंत्रित किया जा सकता है। यदि प्रपत्र तत्व "AdditionSearchString" को दृश्यता से हटा दिया जाता है, तो पूर्ण-पाठ नई खोज भी काम करना बंद कर देती है। प्रयोगों के दौरान, निम्नलिखित कोड का जन्म हुआ, जिसे मैंने सामान्य मॉड्यूल में रखा:

NewSearchInLists(Form) निर्यात सूची को अक्षम करने की प्रक्रिया = Form.Items.Find("List"); यदि सूची = अपरिभाषित तो लौटें; अगर अंत; List.SearchStringPosition = SearchStringPosition.None; AdditionSearchString = Form.Elements.Find ("AdditionSearchString"); यदि ComplementSearchString = अपरिभाषित नहीं है तो ComplementSearchString.Visibility = False; अगर अंत; अंतिम प्रक्रिया

प्रक्रिया में "सूचियों में नई खोज को अक्षम करना" आपको सही फ़ॉर्म को पास करने की आवश्यकता है। लेकिन यह एक ही बार में सभी रूपों के लिए कैसे किया जा सकता है?

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

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

OnCreateOnServer (फ़ॉर्म, DefaultCommandPlace, PrintObjects) निर्यात करें

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

MyGeneralModule। NewSearchInLists (फॉर्म) को अक्षम करना;

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

अब तक, कम ही लोग जानते हैं कि संस्करण 8.1 से शुरू होकर, 1C: एंटरप्राइज प्लेटफॉर्म में एक अद्भुत और बहुत उपयोगी तंत्र है - पूर्ण-पाठ खोज। यह क्या है? यह आपके लिए कैसे उपयोगी हो सकता है? इन सवालों के जवाब लेख में वी.वी. मत्स्य पालन, फर्म "1 सी"।

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

पूर्ण पाठ खोज निम्नलिखित सुविधाएँ प्रदान करती है।

  1. लिप्यंतरण के लिए समर्थन है (GOST 7.79-2000 के अनुसार लैटिन वर्णों के साथ रूसी शब्द लिखना)। उदाहरण: "रूसी वाक्यांश" = "रूसी फ़राज़ा"।
  2. प्रतिस्थापन के लिए समर्थन है (एकल-कुंजी लैटिन वर्णों के साथ रूसी शब्दों में वर्णों का भाग लिखना)। उदाहरण: "russrfz frapf" (प्रत्येक शब्द का अंत लैटिन में टाइप किया जाता है, उदाहरण के लिए, ऑपरेटर त्रुटि के परिणामस्वरूप)।
  3. अस्पष्टता दहलीज के संकेत के साथ अस्पष्ट खोज (पाए गए शब्दों में अक्षर भिन्न हो सकते हैं) की संभावना है। उदाहरण: खोज स्ट्रिंग में "हैलो" शब्द निर्दिष्ट करके और 17% अस्पष्टता, हम त्रुटियों के साथ और बिना सभी समान शब्द पाएंगे: "हैलो", "हैलो", "लाओ"।
  4. चयनित मेटाडेटा ऑब्जेक्ट के लिए खोज का दायरा निर्दिष्ट करना संभव है।
  5. मानक क्षेत्रों के नामों का पूर्ण-पाठ अनुक्रमण ("कोड", "विवरण", आदि) सभी कॉन्फ़िगरेशन भाषाओं में किया जाता है।
  6. खोज रूसी, अंग्रेजी और यूक्रेनी भाषाओं के पर्यायवाची को ध्यान में रखते हुए की जाती है।
  7. रूसी भाषा के रूपात्मक शब्दकोश में 1C: एंटरप्राइज प्रोग्राम सिस्टम का उपयोग करके स्वचालित गतिविधि के क्षेत्रों से संबंधित कई विशिष्ट शब्द हैं।
  8. एक मानक के रूप में, आपूर्ति किए गए शब्दकोशों में शब्दकोश डेटाबेस और थिसॉरस के शब्दकोश और रूसी, यूक्रेनी और पर्यायवाची शब्द शामिल हैं अंग्रेज़ीसूचना विज्ञान द्वारा प्रदान किया गया।
  9. आप वाइल्डकार्ड वर्णों ("*"), साथ ही खोज ऑपरेटरों ("AND", "OR", "NOT", "NEAR") और विशेष वर्णों का उपयोग करके खोज कर सकते हैं।

1C:Enterprise 8.1 प्लेटफॉर्म पर किसी भी कॉन्फ़िगरेशन में पूर्ण-पाठ खोज की जा सकती है।

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

चावल। एक

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

यह हमेशा ITS डिस्क पर पाया जा सकता है। इस लेख में, हम पूर्ण-पाठ खोज क्षमताओं को प्रदर्शित करने के लिए डेमो कॉन्फ़िगरेशन "एंटरप्राइज़ अकाउंटिंग" (रेव. 1.6) में इस विशेष प्रसंस्करण के कार्य के उदाहरणों का उपयोग करेंगे।

जैसा कि पहले ही उल्लेख किया गया है, खोज ऑपरेटरों का उपयोग करके और सटीक वाक्यांश द्वारा कई शब्दों द्वारा खोज की जा सकती है। इसके अलावा, खोज स्थान विशिष्ट कॉन्फ़िगरेशन ऑब्जेक्ट (जैसे, उत्पादन सेवा अधिनियम दस्तावेज़) या कॉन्फ़िगरेशन ऑब्जेक्ट की सूची/सेट तक सीमित हो सकता है।

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

मेज


ध्यान रखें: यदि कोई ऑपरेटर निर्दिष्ट नहीं है (शब्दों को स्पेस के साथ टाइप किया गया है), प्रोग्राम "AND" ऑपरेटर का उपयोग करके क्वेरी से सभी शब्दों की खोज करता है।

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


चावल। 2

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


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

"डेटा खोज" प्रसंस्करण का उपयोग करके पूर्ण-पाठ खोज की जाती है, जो "टूल" मेनू में स्थित है:

आइए कुछ उदाहरण देखें कि पूर्ण-पाठ खोज तंत्र कैसे काम करता है।

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


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


विकल्प 3।मान लीजिए, माल की शिपिंग करते समय, हमने "माल और सेवाओं की बिक्री" - "आस्थगित भुगतान" कुछ दस्तावेजों में निम्नलिखित टिप्पणी छोड़ दी। और हमें देरी से भेजे गए सभी दस्तावेजों को खोजने की जरूरत थी। हम निम्नलिखित खोज क्वेरी बनाते हैं:

आप खोज ऑपरेटर (AND, OR, NOT, NEAR) का उपयोग करके अधिक जटिल खोज भी कर सकते हैं।
खोज क्षेत्र विशिष्ट कॉन्फ़िगरेशन ऑब्जेक्ट तक सीमित हो सकता है (उदाहरण के लिए, माल और सेवा रसीद दस्तावेज़)। ऐसा करने के लिए, "सेटिंग" बटन पर क्लिक करें:

कॉन्फ़िगरेशन ऑब्जेक्ट चुनने के लिए एक फ़ील्ड दिखाई देगी। "लिमिट सर्च स्कोप्स" बॉक्स को चेक करें और "सेलेक्ट मेटाडेटा ऑब्जेक्ट्स टू सर्च" बटन पर क्लिक करें:

उदाहरण के लिए, "वस्तुओं और सेवाओं की प्राप्ति" दस्तावेज़ का चयन करें।

यह एक खोज क्वेरी दर्ज करने और खोजने के लिए बनी हुई है।

"डेटा खोज" प्रसंस्करण के तल पर, सूचकांक की प्रासंगिकता परिलक्षित होती है। यदि आप देखते हैं - "इंडेक्स अप टू डेट नहीं है", तो आपको "अपडेट इंडेक्स" बटन पर क्लिक करना होगा।

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

पूर्ण पाठ खोज निम्नलिखित विशेषताएं प्रदान करती है:

  • लिप्यंतरण के लिए समर्थन है (GOST 7.79-2000 के अनुसार लैटिन वर्णों के साथ रूसी शब्द लिखना)। उदाहरण: "रूसी वाक्यांश" = "रूसी फ़राज़ा"।
  • प्रतिस्थापन के लिए समर्थन है (एकल-कुंजी लैटिन वर्णों के साथ रूसी शब्दों में वर्णों का भाग लिखना)। उदाहरण: "russrfz frapf" (प्रत्येक शब्द का अंत लैटिन में टाइप किया जाता है, उदाहरण के लिए, ऑपरेटर त्रुटि के परिणामस्वरूप)।
  • अस्पष्टता दहलीज के संकेत के साथ अस्पष्ट खोज (पाए गए शब्दों में अक्षर भिन्न हो सकते हैं) की संभावना है। उदाहरण: खोज स्ट्रिंग में "हैलो" शब्द निर्दिष्ट करके और 17% अस्पष्टता, हम त्रुटियों के साथ और बिना सभी समान शब्द पाएंगे: "हैलो", "हैलो", "लाओ"।
  • चयनित मेटाडेटा ऑब्जेक्ट के लिए खोज का दायरा निर्दिष्ट करना संभव है।
  • मानक क्षेत्रों के नामों का पूर्ण-पाठ अनुक्रमण ("कोड", "विवरण", आदि) सभी कॉन्फ़िगरेशन भाषाओं में किया जाता है।
  • खोज रूसी, अंग्रेजी और यूक्रेनी भाषाओं के पर्यायवाची को ध्यान में रखते हुए की जाती है।
  • रूसी भाषा के रूपात्मक शब्दकोश में 1C: एंटरप्राइज प्रोग्राम सिस्टम का उपयोग करके स्वचालित गतिविधि के क्षेत्रों से संबंधित कई विशिष्ट शब्द हैं।
  • एक मानक के रूप में, आपूर्ति किए गए शब्दकोशों में शब्दावली डेटाबेस और थिसॉरस के शब्दकोश और रूसी, यूक्रेनी और अंग्रेजी के समानार्थक शब्द शामिल हैं, जो इंफॉर्मेटिक द्वारा प्रदान किए जाते हैं।
  • आप वाइल्डकार्ड वर्णों ("*"), साथ ही खोज ऑपरेटरों ("AND", "OR", "NOT", "NEAR") और विशेष वर्णों का उपयोग करके खोज कर सकते हैं।

1C:Enterprise 8 प्लेटफॉर्म पर किसी भी कॉन्फ़िगरेशन में पूर्ण-पाठ खोज की जा सकती है

पूर्ण-पाठ खोज नियंत्रण विंडो खोलने के लिए, निम्न कार्य करें:

सामान्य आवेदन - पत्र- मेनू आइटम संचालन - पूर्ण पाठ खोज का प्रबंधन.

प्रबंधित अनुप्रयोग- मेनू आइटम मुख्य मेनू - सभी कार्य - मानक -पूर्ण पाठ खोज प्रबंधन।


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

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

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

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

खोज अभिव्यक्ति निर्दिष्ट करते समय विशेष ऑपरेटरों की अनुमति है

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

दो ऑपरेटर अगल-बगल

  • सरलीकृत। 8 शब्द अलग
  • NEAR/[+/-]n - एक एट्रिब्यूट में डेटा को उनके बीच n-1 शब्दों की दूरी पर खोजें।

यह चिन्ह बताता है कि पहले शब्द से दूसरे शब्द को किस दिशा में खोजा जाएगा। (+ - के बाद, - पहले)

वाइल्डकार्ड "*" का उपयोग केवल किसी शब्द के अंत के प्रतिस्थापन के रूप में किया जा सकता है

फ़ज़ी ऑपरेटर "#"। यदि नाम की सही वर्तनी ज्ञात नहीं है।

सॉफ्टवेयर उपकरण और उपकरण 1s: प्रोग्रामिंग।

समानार्थी ऑपरेटर "!"। आपको एक शब्द और उसके पर्यायवाची खोजने की अनुमति देता है

पूर्ण पाठ खोज अनुक्रमणिका को प्रोग्रामेटिक रूप से कैसे अपडेट करें?

कोड 1C v 8.x प्रक्रिया अद्यतन सूचकांक () निर्यात
FulltextSearch.UpdateIndex ();
अंतिम प्रक्रिया

पूर्ण पाठ डेटा खोज उदाहरण

चर परिभाषा खोज सूची

कोड 1सी बनाम 8.x वेरिएबल सर्चलिस्ट;

इसके अलावा, घटना को संसाधित करने की प्रक्रिया में जब प्रपत्र खोला जाता है, तो हम परिभाषित करते हैं कि इस चर में एक पूर्ण-पाठ खोज सूची होगी, जिसकी सहायता से हम डेटा में खोज करेंगे

कोड 1सी बनाम 8.x प्रक्रिया ऑनओपन ()
सर्चलिस्ट = फुलटेक्स्टसर्च। क्रिएटलिस्ट ();
अंतिम प्रक्रिया

अब, ढूँढें बटन पर क्लिक करने की स्थिति के लिए, कोड लिखते हैं जो हमें SearchExpression फ़ील्ड में निर्दिष्ट अभिव्यक्ति के अनुसार खोज करने की अनुमति देगा

कोड 1C v 8.x प्रक्रिया FindClick(Element)
SearchList.SearchString = SearchExpression;
कोशिश करना
सर्चलिस्ट.फर्स्टपार्ट ();
अपवाद
चेतावनी (त्रुटि विवरण ());
प्रयास का अंत;
अगर SearchList.TotalCount() = 0 तब
FormElements.MessageOResult.Value = "नहीं मिला";
FormElements.SearchResult.SetText("");
अन्यथा
PrintSearchResult();
अगर अंत;
अंतिम प्रक्रिया

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

फॉर्म मॉड्यूल में उसी नाम से एक प्रक्रिया बनाते हैं और उसमें कोड लिखते हैं,

कोड 1C v 8.x प्रक्रिया DisplaySearchResult()
FormElements.MessageOResult.Value = "दिखाया गया" + स्ट्रिंग (SearchList.StartingPosition () + 1) + "-" + स्ट्रिंग (SearchList.StartingPosition () +SearchList.Count ()) + "से" + SearchList.FullCount ();
परिणाम = SearchList.GetDisplay (FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText (परिणाम);
अभिगम्यता बटन ();
अंतिम प्रक्रिया

इस प्रक्रिया के चरण सरल हैं। सबसे पहले, हम एक संदेश बनाते हैं कि कौन से तत्व प्रदर्शित होते हैं और कुल कितने तत्व पाए गए। तब हमें HTML पाठ के रूप में पूर्ण-पाठ खोज का परिणाम मिलता है और इस पाठ को प्रपत्र में स्थित HTML दस्तावेज़ के क्षेत्र में प्रदर्शित करता है।

अंत में, हम नियंत्रण को ButtonsAccess() प्रक्रिया में स्थानांतरित करते हैं ताकि उपलब्ध कराया जा सके या, इसके विपरीत, पिछले भाग और अगले भाग के बटनों तक पहुंच को प्रतिबंधित किया जा सके (परिणामों के किस भाग के आधार पर प्रदर्शित किया जाता है)। इस प्रक्रिया का पाठ संहिता में प्रस्तुत किया गया है

कोड 1C v 8.x बटन अभिगम्यता प्रक्रिया ()
FormElements.NextPortion.Availability = (SearchList.FullCount () - SearchList.StartPosition ())> SearchList.Quantity ();
FormElements.PreviousPortion.Availability = (SearchList.StartPosition ()> 0);
अंतिम प्रक्रिया

अब आपको पिछला भाग () और अगला भाग () बटन दबाने के लिए ईवेंट हैंडलर बनाने की आवश्यकता है।

कोड 1C v 8.x प्रक्रिया PrevPartPress(Element)
सर्चलिस्ट। पिछला भाग ();
PrintSearchResult();
अंतिम प्रक्रिया
प्रक्रिया अगला बैच क्लिक करें (आइटम)
सर्चलिस्ट.नेक्स्टपार्ट ();
PrintSearchResult();
अंतिम प्रक्रिया

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

कोड 1C v 8.x प्रक्रिया खोज परिणाम क्लिक (तत्व, pEvtObj)
htmlElement = pEvtObj.srcElement;
// एलिमेंट आईडी चेक करें
अगर (htmlElement.id = "FullTextSearchListItem") तो
// फ़ाइल का नाम प्राप्त करें (खोज सूची लाइन नंबर),
// हाइपरलिंक में निहित
NumberInList = संख्या (htmlElement.nameProp);
// खोज सूची स्ट्रिंग संख्या से प्राप्त करें
चयनित पंक्ति = खोज सूची [सूची संख्या];
// मिली वस्तु का रूप खोलें
ओपनवैल्यू (चयनितरो.वैल्यू);
pEvtObj.returnValue = गलत;
अगर अंत;
अंतिम प्रक्रिया

घंटी

आपसे पहले इस खबर को पढ़ने वाले भी हैं।
नवीनतम लेख प्राप्त करने के लिए सदस्यता लें।
ईमेल
नाम
उपनाम
आप द बेल को कैसे पढ़ना चाहेंगे
कोई स्पैम नहीं