1सी डेटा भंडारण अस्थायी भंडारण। अस्थायी भंडारण। उन्हें कैसे कहा जाता है?

लगभग किसी भी जानकारी को वैल्यू स्टोर में संग्रहित किया जा सकता है, उदा.

... तस्वीरें (तस्वीरें):

currentImage.Object = SprFabric.Link; currentImage.DataType = गणना.वस्तुओं की अतिरिक्त जानकारी के प्रकार.छवि; स्टोरेज = न्यूवैल्यूस्टोरेज(न्यूपिक्चर, न्यूडाटाकंप्रेशन()); करंटइमेज.स्टोरेज = स्टोरेज.गेट();

// इस स्थान पर यह सब कुछ प्रदर्शित करता है... फॉर्म एलिमेंट्स.पिक्चरफील्ड1.पिक्चर = स्टोरेज.गेट(); करंटइमेज.लिखें();

...स्प्रेडशीट दस्तावेज़:

TabDoc=नया TabularDocument; TabDoc.Output(FormElements.TabularDocumentField1); स्टोरेज=न्यूवैल्यूस्टोरेज(टैबडॉक); लिखना();

प्रक्रिया का अंत

प्रक्रिया पुनर्स्थापनाफ्रॉमस्टोरेजप्रेस(तत्व)

TabDoc=Storage.Get(); यदि TabDoc<>अपरिभाषित ThanFormElements.TabularDocumentField1.Output(TabDoc); अगर अंत;

प्रक्रिया का अंत

...मनमाना फ़ाइलें (बाइनरी डेटा):

XZ = NewValueStorage(NewBinaryData(फ़ाइल));

आठ भंडारण में रखे गए डेटा के संपीड़न का समर्थन करते हैं:

XZ = NewValueStorage(NewBinaryData(file),NewDataCompression(9));

... बाहरी प्रसंस्करण और रिपोर्टिंग:

प्रक्रिया LoadProcessingIntoStorage(PropsStorageType)

कंप्रेशनरेट = न्यूडाटाकंप्रेशन(9); //9 अधिकतम प्रॉप्सस्टोरेजटाइप = नया स्टोरेजवैल्यू (नया बाइनरीडेटा ("सी:\रिपोर्ट\रिपोर्ट.ईपीएफ", संपीड़न दर));

प्रक्रिया का अंत

प्रक्रिया स्टार्टप्रोसेसिंगफ्रॉमस्टोरेज(प्रॉप्सस्टोरेजटाइप)

TemporaryFileName = TemporaryFileDirectory()+"report.epf"; बाइनरीडेटा = PropsStorageType.Get(); बाइनरीडेटा.लिखें(अस्थायीफ़ाइलनाम); एक्सटर्नलप्रोसेसिंग = एक्सटर्नलप्रोसेसिंग.क्रिएट(अस्थायीफ़ाइलनाम); एक्सटर्नलप्रोसेसिंग.गेटफॉर्म().ओपन();

प्रक्रिया का अंत

भंडारण के साथ कार्य करना

यदि यह बाइनरी डेटा था, तो इसे Get विधि का उपयोग करके वैल्यू स्टोर से पुनर्स्थापित किया जा सकता है और Write() विधि का उपयोग करके फ़ाइल में लिखा जा सकता है।

यदि टाइप वैल्यू (भंडारण)<>फिर ("बाइनरीडेटा") टाइप करें

बाइनरीडेटा = स्टोरेज.गेट();

बाइनरीडेटा = भंडारण;

अगर अंत; बाइनरीडेटा.लिखें(फ़ाइलनाम);

यदि यह, उदाहरण के लिए, एक Word दस्तावेज़ (doc फ़ाइल, या अन्य पंजीकृत फ़ाइल प्रकार) था, तो इसे इस तरह खोला जा सकता है:

लॉन्चएप्लिकेशन(फ़ाइलनाम);

वैल्यू स्टोरेज प्रकार के फ़ील्ड को साफ़ करने के लिए, आपको इसे अपरिभाषित निर्दिष्ट करने की आवश्यकता है:

प्रॉप्सस्टोरेज = अपरिभाषित;

अंतर्निहित भाषा 1सी:एंटरप्राइज़ 8 में फ़ाइलों और चित्रों के साथ कार्य करना

उद्देश्य

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

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

विधि का दायरा

अस्थायी भंडारण

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

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

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

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

सूचना आधार

तंत्र आपको वैल्यू स्टोरेज प्रकार की विशेषताओं में संग्रहीत बाइनरी डेटा तक पहुंचने की अनुमति देता है।

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

इन्फोबेस विवरण के साथ काम करते समय फ़ाइलों के साथ काम करने के तरीकों की सीमाएँ होती हैं। उनके लिए, अस्थायी भंडारण के विपरीत, केवल पढ़ने की जानकारी उपलब्ध है, लेकिन उसे लिखने या हटाने की नहीं।

फ़ाइलों के साथ काम करने के तरीकों का विवरण

डेटा को अस्थायी भंडारण में सहेजना

इस तंत्र का उपयोग करने के लिए सबसे विशिष्ट परिदृश्य में प्रारंभ में उपयोगकर्ता डेटा को अस्थायी भंडारण में रखना शामिल है। इसके लिए दो विधियाँ हैं: PlaceFile() और PlaceFileInTemporaryStorage()।

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

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

परिणामस्वरूप, यदि उपयोगकर्ता ने फ़ाइल चयन संवाद में कोई ऑपरेशन करने से इंटरैक्टिव रूप से इनकार कर दिया है, तो विधि गलत रिटर्न देती है। यह विधि केवल क्लाइंट पर उपलब्ध है।

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

अस्थायी भंडारण से फ़ाइल पुनर्प्राप्त करना

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

किसी फ़ाइल को अस्थायी संग्रहण से हटाना

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

अस्थायी भंडारण के लिए पते की जाँच की जा रही है

फ़ाइल पता इन्फोबेस में अस्थायी भंडारण और विवरण दोनों को इंगित कर सकता है। इसके प्रकार की जांच करने के लिए, एक विधि है यह TemporaryStorageAddress() है।

यह जाँचता है कि पारित पता स्टोर की ओर इंगित करने वाला पता है। यदि पता अस्थायी भंडारण की ओर इंगित करता है तो सत्य लौटाता है। विधि सर्वर पर उपलब्ध है.

प्रॉप्स पता प्राप्त करना

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

लेकिन इससे पहले कि आप डेटा प्राप्त करें, उदाहरण के लिए किसी संपत्ति से, आपको इस संपत्ति का पता प्राप्त करना होगा। इस प्रयोजन के लिए, एक विधि GetFileAddressInInformationBase() है।

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

इन्फोबेस से एक फ़ाइल पुनर्प्राप्त करना

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

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

फ़ाइल विधियों का उपयोग करने का उदाहरण

// इंटरैक्टिव मोड में डिस्क से एक फ़ाइल प्राप्त करना // और इसे अस्थायी भंडारण में रखना और क्लाइंट प्रक्रिया पर चयन करनाDiskFileAndWrite()

परिवर्तनीय चयनित नाम; परिवर्तनीयअस्थायीभंडारणपता; यदि पुटफ़ाइल (अस्थायी स्टोरेज पता, चयनित नाम, सत्य) तो ऑब्जेक्ट.फ़ाइल नाम = चयनित नाम; प्लेसऑब्जेक्टफ़ाइल(अस्थायीस्टोरेजएड्रेस); अगर अंत;

प्रक्रिया का अंत

// किसी फ़ाइल को अस्थायी भंडारण से किसी निर्देशिका में कॉपी करना // विशेषता, किसी ऑब्जेक्ट को रिकॉर्ड करना, किसी फ़ाइल को अस्थायी // भंडारण से हटाना और सर्वर प्रक्रिया पर ऑब्जेक्ट फ़ाइल रखें (अस्थायी भंडारण पता)

निर्देशिका तत्व = फॉर्म विशेषताएँ वैल्यू ("ऑब्जेक्ट"); बाइनरीडेटा = GetFileFromTemporaryStorage(TemporaryStorageAddress); निर्देशिका तत्व.फ़ाइल डेटा = न्यूवैल्यूस्टोरेज(बाइनरीडेटा); FilePathOnDisk = नई फ़ाइल(DirectoryItem.FileName); निर्देशिका आइटम.फ़ाइलनाम = FilePathOnDisk.Name; निर्देशिका तत्व.लिखें(); संशोधित = गलत; DeleteFileFromTemporaryStorage(TemporaryStorageAddress); वैल्यूएफ़ॉर्मएट्रिब्यूट्स(निर्देशिका तत्व, "ऑब्जेक्ट");

प्रक्रिया का अंत

// प्रॉप्स से एक फ़ाइल को पढ़ना और इसे सहेजना // इंटरैक्टिव मोड में स्थानीय डिस्क पर और क्लाइंट प्रक्रिया पर ReadFileAndSaveToDisk()

पता = GetFileAddressInInformationBase(Object.Link, "FileData"); GetFile(पता, ऑब्जेक्ट.फ़ाइलनाम, सत्य);

प्रक्रिया का अंत

चित्र क्षेत्र में पतों के लिए समर्थन

चित्र फ़ील्ड नियंत्रण अस्थायी भंडारण या डेटाबेस में फ़ाइल के पते द्वारा निर्दिष्ट चित्र प्रदर्शित करने का समर्थन करता है।

ऐसा करने के लिए, आपको प्रपत्र तत्व की डेटा प्रॉपर्टी में एक स्ट्रिंग प्रकार विशेषता सेट करनी होगी। इस विशेषता का मान चित्र के पते के रूप में समझा जाएगा।

उदाहरण // अस्थायी // भंडारण में छवि फ़ील्ड को छवि पते से बांधना। पता चित्र स्ट्रिंग प्रकार का विवरण बनाते हैं

प्लेसफ़ाइल (चित्र पता, सत्य)

चित्र.डेटा = पताचित्र

वेब क्लाइंट के साथ काम करते समय सीमाएँ

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

क्लाइंट पर वैल्यू स्टोरेज के साथ काम करते समय सुविधाएँ

संकट:

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

अनुमानित कारण:

शायद, फॉर्म खोलते समय, क्लाइंट को वैल्यू स्टोर में स्थित डेटा का लिंक नहीं भेजा जाता है, बल्कि डेटा ही भेजा जाता है।

समाधान

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

इसका उपयोग करना और भी बेहतर है अस्थायी भंडारणक्लाइंट और सर्वर के बीच फ़ाइलें स्थानांतरित करने के लिए।

सामग्री को Drupal 8.7.0+ से मिलान करने के लिए अद्यतन किया गया

अस्थायी दुकान(अस्थायी भंडारण) - आपको किसी भी डेटा को अस्थायी रूप से संग्रहीत करने की अनुमति देता है। यह $_SESSION में एक प्रकार का डेटा स्टोरेज है, क्योंकि यह स्टोरेज आमतौर पर एक निश्चित उपयोगकर्ता से जुड़ा होता है। लेकिन यह $_SESSION का उपयोग नहीं करता है और सिस्टम के अंदर (डेटाबेस में) सब कुछ संग्रहीत करता है।

कोर में अस्थायी भंडारण के लिए दो सेवाएँ हैं, tempstore.private और tempstore.shared। वे समान रूप से काम करते हैं, लेकिन प्राइवेट हमेशा एक विशिष्ट उपयोगकर्ता के लिए डेटा संग्रहीत करता है। यानी, निजी स्टोरेज से एक कुंजी को कॉल करने पर प्रत्येक उपयोगकर्ता के लिए अलग-अलग डेटा वापस आएगा। साझा प्रत्येक उपयोगकर्ता के लिए सुलभ है।

इन सेवाओं के अनुप्रयोग और उनके भंडारण का दायरा बहुत विशाल हो सकता है। उदाहरण के लिए, प्रपत्रों के कुछ अस्थायी मान संग्रहीत करें, और यदि उपयोगकर्ता ने उन्हें सहेजा नहीं है, तो उन्हें इस संग्रहण से पुनर्स्थापित किया जा सकता है, उदाहरण के लिए, कुछ REST प्रपत्रों के लिए, और नियमित प्रपत्रों के लिए भी उपयुक्त। सामान्य तौर पर, आपके पास जिसके लिए पर्याप्त कल्पना या कार्य हैं। उदाहरण के लिए, इसका उपयोग Drupal के बाहर नियंत्रित कुछ रूपों के लिए किया जा सकता है, उदाहरण के लिए React या Vue में।

इन स्टोरेज में मान डिफ़ॉल्ट रूप से 604800 सेकंड (1 सप्ताह) तक रहते हैं, जिसके बाद वे स्वचालित रूप से हटा दिए जाते हैं।

इस मान को बदलने के लिए. उदाहरण के लिए, आपको साइट्स/डिफॉल्ट/सर्विसेज.yml को कनेक्ट करना होगा और इसे फिर से परिभाषित करना होगा:

पैरामीटर्स: # 10 सेकंड टेम्पस्टोर.एक्सपायर: 10

लेकिन, अच्छे कारण से, ऐसा नहीं होना चाहिए।

आइए प्रत्येक स्टोरेज डिवाइस की क्षमताओं को देखें; हालांकि वे समान हैं, वे थोड़े अलग हैं।

tempstore.private - निजी भंडारण

यह संग्रहण प्रत्येक उपयोगकर्ता के लिए निजी है.

tempstore.shared - साझा भंडारण

यह संग्रहण साझा किया गया है और इसमें सभी उपयोगकर्ताओं के लिए सामान्य डेटा हो सकता है।

रिपॉजिटरी में निम्नलिखित विधियाँ हैं:

  • get($key): स्टोर से उसकी कुंजी द्वारा एक मान प्राप्त करता है। यदि कोई डेटा नहीं है, तो यह NULL लौटाएगा, यदि है, तो यह एक मान लौटाएगा।
  • getIfOwner($key): स्टोर से उसकी कुंजी द्वारा एक मान प्राप्त करता है। यदि कोई डेटा नहीं है या डेटा वर्तमान उपयोगकर्ता के अंतर्गत नहीं लिखा गया है, तो यह NULL लौटाएगा, यदि वर्तमान उपयोगकर्ता के अंतर्गत है और लिखा गया है, तो यह मान लौटाएगा।
  • setIfNotExists($key, $value): भंडारण के लिए कुंजी $key के अंतर्गत मूल्य $value केवल तभी लिखता है जब उस कुंजी के लिए वर्तमान में कोई डेटा न हो। यदि रिकॉर्ड किया गया है तो सत्य लौटाता है, यदि डेटा पहले ही रिकॉर्ड किया जा चुका है तो गलत लौटाता है।
  • setIfOwner($key, $value): भंडारण के लिए key $key के अंतर्गत मान $value तभी लिखता है जब वर्तमान में कोई डेटा नहीं है या वास्तविक डेटा का स्वामी वर्तमान उपयोगकर्ता है।
  • सेट($कुंजी, $मूल्य): भंडारण के लिए कुंजी $कुंजी के अंतर्गत मूल्य $मूल्य लिखता है।
  • getMetadata($key): डेटा के बिना, किसी विशिष्ट $key के लिए मेटाडेटा लौटाता है। यह एक वस्तु है जिसमें मालिक की संपत्ति होती है, जो मूल्य को संग्रहीत करती है, मूल्य का मालिक कौन है, और अद्यतन संपत्ति - जिस समय यह मूल्य लिखा गया था उस समय का यूनिक्स टाइम स्टैम्प।
  • delete($key): स्टोरेज से दिए गए $key से जुड़े डेटा को हटा देता है।
  • deleteIfOwner($key): दिए गए $key से जुड़े डेटा को स्टोरेज से हटाता है, केवल तभी जब डेटा वर्तमान उपयोगकर्ता का हो।

उन्हें कैसे कहा जाता है?

उन्हें कॉल करने के तरीके के छोटे उदाहरण.

पहला कदम आवश्यक भंडारण के टेम्पस्टोर को प्राप्त करना है, फिर भंडारण से एक "संग्रह" प्राप्त किया जाता है, जहां डेटा पहले से ही आवश्यक कुंजियों के तहत संग्रहीत होता है। एक नियम के रूप में, "संग्रह" का नाम मॉड्यूल के नाम के बराबर है।

Drupal\Core\TempStore\PrivateTempStoreFactory का उपयोग करें; Drupal\Core\TempStore\SharedTempStoreFactory का उपयोग करें; /** @var PrivateTempStoreFactory $private_tempstore */ $private_tempstore = \Drupal::service('tempstore.private'); $my_private_storage = $private_tempstore->get('dummy'); $my_private_storage->set('उपयोगकर्ता नाम', 'Drupal'); /** @var SharedTempStoreFactory $shared_tempstore */ $shared_tempstore = \Drupal::service('tempstore.shared'); $my_shared_storage = $shared_tempstore->get('dummy'); $my_shared_storage->set("उपयोगकर्ता नाम", "Drupal");

उदाहरण

उदाहरण में, हम /temp-store-form पेज पर दो फ़ील्ड के साथ एक फॉर्म बनाएंगे, जिनमें से एक संदेश को निजी स्टोरेज में संग्रहीत करेगा, और दूसरा सार्वजनिक रूप से।

एक फॉर्म बनाएं:

Src/FormWithTempStore.php

PrivateTempStore = $private_temp_store->get('dummy'); $this->sharedTempStore = $shared_temp_store->get('dummy'); ) /** * (@inheritdoc) */ सार्वजनिक स्थैतिक फ़ंक्शन बनाएं(कंटेनरइंटरफ़ेस $कंटेनर) ( नया स्थैतिक लौटाएं($कंटेनर->प्राप्त करें("tempstore.private"), $कंटेनर->प्राप्त करें("tempstore.shared") ); ) /** * (@inheritdoc) */ सार्वजनिक फ़ंक्शन getFormId() (वापसी "form_with_temp_store"; ) /** * (@inheritdoc) */ सार्वजनिक फ़ंक्शन बिल्डफ़ॉर्म(सरणी $फ़ॉर्म, फॉर्मस्टेटइंटरफ़ेस $फ़ॉर्म_स्टेट) ($फ़ॉर्म ["निजी_संदेश"] = ["#प्रकार" => "पाठक्षेत्र", "#शीर्षक" => $यह->t("निजी संदेश"), "#आवश्यक" => सत्य, "#विवरण" => $ this->t('यह मान प्रत्येक उपयोगकर्ता के लिए निजी होगा।'), '#default_value' => $this->privateTempStore->get('message'), ]; $form['shared_message'] = [ " #type" => "textarea", "#title" => $this->t("साझा संदेश"), "#required" => TRUE, "#description" => $this->t("यह मान सभी उपयोगकर्ताओं के लिए साझा किया जाएगा। ]; $form["actions"]["submit"] = [ "#type" => "submit", "#value" => $this->t("Save"), ]; वापसी $फॉर्म; ) /** * (@inheritdoc) */ सार्वजनिक फ़ंक्शन सबमिटफॉर्म(सरणी और $फॉर्म, फॉर्मस्टेटइंटरफेस $फॉर्म_स्टेट) ( $यह->निजीटेम्पस्टोर->सेट("संदेश", $फॉर्म_स्टेट->गेटवैल्यू("निजी_संदेश")); $this->sharedTempStore->set("message", $form_state->getValue("shared_message")); ) )

प्रिंट करें (Ctrl+P)

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

अस्थायी भंडारण

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

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

2. यदि, डेटा को अस्थायी भंडारण में रखते समय, फॉर्म की बाइंडिंग पूरी नहीं हुई थी, तो अस्थायी भंडारण को निम्नलिखित मामलों में साफ़ कर दिया जाएगा:

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

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

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

बर्टी . आलू, जड़ वाली सब्जियों और सफेद पत्तागोभी को स्टोर करने का सबसे स्वीकार्य तरीका बोतलबंद करना है। ढेर एक आयताकार तटबंध होता है, जो दोनों तरफ झुका होता है और ऊपर से इन्सुलेशन सामग्री से ढका होता है। इसे एक सीज़न के लिए फसल को स्टोर करने के लिए बनाया गया है। जब आलू को समतल सतह पर डाला जाता है, तो बर्ट्स को पीसा जा सकता है, और जब उथले गड्ढे खोदे जाते हैं, तो उन्हें अर्ध-जमीन किया जा सकता है। पॉपुनॉटनी (दफनाया हुआ) ढेर। ऐसे ढेर के लिए, उत्तर से दक्षिण दिशा में 25 सेमी गहरा एक गड्ढा खोदा जाता है। बीज आलू के लिए गड्ढे की सबसे अच्छी चौड़ाई 170-200 सेमी है। स्वस्थ आलू के अल्पकालिक भंडारण के लिए, आप बना सकते हैं एक चौड़ा तटबंध (4 मीटर तक)। गड्ढे की लंबाई मनमानी हो सकती है, लेकिन, फिर भी, यह बेहतर है जब यह 20-25 मीटर से अधिक न हो। ढेर के तटबंध की ऊंचाई, 2 मीटर के आधार पर इसकी चौड़ाई के साथ, 90- हो सकती है। 100 सेमी. आमतौर पर, आलू को एक ही स्थान पर कई ढेरों में संग्रहित किया जाता है। ड्रिलिंग स्थल को आलू उगाने वाले क्षेत्रों के पास ऐसी जगह पर रखा गया है जो बारिश और पिघले पानी से भरा न हो, सड़क से ज्यादा दूर न हो। गड्ढे के केंद्रीय अक्ष के साथ 20-25 सेमी चौड़ा और गहरा एक वेंटिलेशन डक्ट खोदा जाता है। यह गड्ढे से परे तक फैला होता है और कॉलर के अंत में आवरण से 25 सेमी लंबा होता है। गड्ढे की सीमाओं से परे फैले चैनल के हिस्से को शीर्ष पर बोर्डों से कसकर ढक दिया जाता है ताकि कोई मिट्टी गड्ढे और चैनल में न जाए। ग्राउंड कॉलर में, वेंटिलेशन डक्ट को सीधे जमीन की सतह पर रखा जाता है और इसे अलग-अलग डेढ़ मीटर खंडों से बने जाली तम्बू के रूप में बनाया जाता है। पुआल और मिट्टी को वेंटिलेशन वाहिनी में जाने से रोकने के लिए, इसके सिरे बिना अंतराल के बनाए जाते हैं। वेंटिलेशन नलिकाओं को कवर करने के लिए, 1.5 मीटर लंबे और 0.5 मीटर चौड़े जाली खंड पहले से तैयार किए जाते हैं। अनुभाग में 2-3 सेमी चौड़े स्लैट होते हैं और उनके बीच 2-2.5 सेमी का अंतराल होता है। अनुभागों को वेंटिलेशन वाहिनी पर रखा जाता है और बांधा जाता है एक दूसरे। परिणामी निरंतर वेंटिलेशन ग्रिल उत्पाद के नीचे स्थित चैनल के हिस्से को कवर करती है। आलू या अन्य उत्पादों के ढेर के निर्माण के दौरान, 3x3 सेमी के आंतरिक क्रॉस-सेक्शन के साथ एक कॉलर थर्मामीटर या विशेष रूप से निर्मित टेट्राहेड्रल ट्यूब-केस अंदर रखे जाते हैं, जिसमें रॉड के अंत में थर्मामीटर डाले जाते हैं। कॉलर एक रिज और एक वेंटिलेशन वाहिनी के माध्यम से हवादार होते हैं। ढेर भूसे और मिट्टी से ढके हुए हैं। पूर्ण-मोटाई वाले भूसे को नीचे से ऊपर तक एक घनी परत में बिछाया जाता है ताकि ढेर का शिखर ओवरलैप हो जाए। इसके बाद ढेर के किनारों पर मिट्टी की एक पतली परत छिड़क दी जाती है। ढेर की चोटी पहली ठंढ तक पुआल से ढकी रहती है। बरसात के मौसम में, इसे अस्थायी रूप से रूफिंग फेल्ट या प्लास्टिक फिल्म से ढक दिया जाता है। स्थिर ठंढों की शुरुआत से पहले आलू को +4 डिग्री सेल्सियस तक ठंडा करते समय, वेंटिलेशन नलिकाओं को कसकर पुआल से ढक दिया जाता है, और ढेर पूरी तरह से पृथ्वी से ढक दिया जाता है। यदि ढेर में तापमान +1 डिग्री सेल्सियस से नीचे चला जाता है, तो ढेर को अतिरिक्त रूप से गर्मी-इन्सुलेट सामग्री - पीट, पुआल, पुआल खाद या बर्फ से ढक दिया जाता है। भारी बर्फबारी की स्थिति में, जिससे ढेर अत्यधिक ढक जाते हैं, उन्हें समय-समय पर बर्फ से साफ किया जाता है।

खाई भंडारण . इस भंडारण विधि में ढेर में भंडारण की तुलना में 2 गुना कम पुआल या अन्य गर्मी-इन्सुलेट सामग्री की आवश्यकता होती है। भूजल गहरा होने पर खाइयों का उपयोग किया जाता है। खाई की गहराई और चौड़ाई 60-80 सेमी (दक्षिणी क्षेत्रों में) से 1.5-2 मीटर (साइबेरिया में) तक है। खाइयों को ऊपर से पुआल की एक परत से ढक दिया जाता है: मध्य क्षेत्रों में यह 30-40 सेमी है, साइबेरिया में - 70 सेमी तक। फिर पृथ्वी की एक परत डाली जाती है (क्षेत्र के आधार पर 40 से 70 सेमी तक)। आमतौर पर, विभिन्न प्रकार की खाइयों का उपयोग किया जाता है: उथली, वेंटिलेशन नलिकाओं के साथ गहरी, मिट्टी की एक परत के साथ और एक परत के बिना, और साधारण। खाइयाँ और ढेर (प्राकृतिक) सरल वेंटिलेशन से सुसज्जित हैं। इसका मुख्य उद्देश्य शरद ऋतु में आलू और सब्जियों को ठंडा करना है। आपूर्ति और निकास वेंटिलेशन के संचालन का सिद्धांत वायु दबाव में अंतर पर आधारित है, अर्थात। उत्पादों के ढेर और बाहर के तापमान में अंतर के कारण ऊपर की ओर हवा की गति के कारण। गर्म हवा, हल्की होने के कारण, निकास पाइप के माध्यम से निकलती है, और ठंडी हवा आपूर्ति वाहिनी के माध्यम से प्रवेश करती है। वेंटिलेशन सिस्टम में आपूर्ति और निकास नलिकाएं होती हैं। इनलेट चैनल कॉलर के आधार के मध्य में चलता है; अंतिम छोर पर बाहर की ओर निकास होते हैं। आलू और जड़ वाली सब्जियों के ढेर में, वे 20x20 सेमी या 30x30 सेमी के क्रॉस-सेक्शन के साथ एक नाली बनाते हैं, जिसे जाली बोर्ड, अनुप्रस्थ स्लैट या ब्रशवुड से ढक दिया जाता है, ताकि उत्पाद की व्यक्तिगत प्रतियां गिर न जाएं। इस चैनल के माध्यम से, बाहर की ठंडी हवा गुरुत्वाकर्षण द्वारा स्टैक में प्रवाहित होती है। स्टैक से गर्म हवा को निकास नलिकाओं (पाइप) के माध्यम से हटा दिया जाता है। वे 20x20 सेमी या 15x15 सेमी के क्रॉस-सेक्शन वाले बोर्डों से बने टेट्राहेड्रल बक्से हैं। निचले हिस्से में, सब्जियों की परत से गुजरते हुए, उन्हें जाली बनाया जाता है, और ऊपरी हिस्से में, आश्रय से गुजरते हुए, वे ठोस होते हैं ताकि मिट्टी उनमें न गिरे. उत्पादों को वर्षा जल से बचाने के लिए उनके ऊपर एक छतरी लगाई जाती है। भंडारण के लिए संग्रहीत सब्जियों की विशेषताओं और गुणवत्ता के आधार पर निकास पाइप, ढेर की लंबाई के साथ हर 2-4 मीटर पर स्थापित किए जाते हैं। ऊर्ध्वाधर निकास पाइपों का एक नुकसान यह है कि गर्म और आर्द्र हवा केवल स्टैक के निकटवर्ती क्षेत्रों से हटा दी जाती है, और दूरदराज के क्षेत्रों को शायद ही ठंडा किया जाता है। निकास पाइपों के पास पानी बहता है, जिससे पसीना निकलता है और उत्पाद जम जाते हैं, क्योंकि यहाँ आश्रय कम घना और विश्वसनीय है। इसलिए, रिज एग्जॉस्ट वेंटिलेशन का उपयोग किया जाता है। सूखे, ठंडे मौसम में सब्जियों का भंडारण करते समय, खाई के शिखर को केवल पुआल से ढक दिया जाता है, जिसके माध्यम से गर्म हवा निकाल दी जाती है। हालाँकि, ऐसी स्थितियाँ दुर्लभ हैं; पतझड़ में मौसम अक्सर बारिश वाला होता है। ऐसे मामलों में, एक क्षैतिज निकास वाहिनी स्थापित की जाती है - बोर्ड 90 डिग्री के कोण पर एक साथ खटखटाए जाते हैं, जो सब्जियों के ढेर पर रखे जाते हैं जिनके सिरों पर बाहर की ओर निकास होता है। इस मामले में, रिज के किनारे की खाई को तुरंत पुआल और मिट्टी से ढक दिया जा सकता है, बिना पुआल के गीला होने और उत्पाद के जमने के डर के बिना। आपको बस समय रहते अंतिम छिद्रों को बंद करने की आवश्यकता है। ऊर्ध्वाधर निकास वेंटिलेशन पाइप पर क्षैतिज रिज निकास वाहिनी का लाभ यह भी है कि इस मामले में उत्पादों के पूरे ढेर से गर्म और नम हवा समान रूप से हटा दी जाती है।

गड्ढा. सबसे सरल भंडारण एक मिट्टी का गड्ढा है - भंडारण के लिए, सबसे अधिक बार, आलू का एक छोटा बैच, और कभी-कभी जड़ वाली फसलें। इसे निम्न भूजल स्तर वाले ऊंचे क्षेत्र पर खोदा जाता है। मिट्टी के घनत्व के आधार पर इसे सीधी या झुकी हुई दीवारों के साथ खोदा जाता है। सबसे स्वीकार्य गड्ढे का आकार गोल है, हालांकि, कभी-कभी उन्हें आयताकार बनाया जाता है। घनी चिकनी मिट्टी में एक गड्ढा खोदा जाता है, जिसका आकार सुराही जैसा होता है। रेतीली मिट्टी में ऐसा करने की अनुशंसा नहीं की जाती है, क्योंकि यह ढह जाएगी। एक छेद इस प्रकार खोदें: 1 मीटर व्यास वाला एक वृत्त बनाएं और जग की गर्दन खोदें, फिर, गहराई तक खोदते हुए, धीरे-धीरे छेद को 2-2.5 मीटर व्यास की चौड़ाई तक विस्तारित करें। गड्ढे-सुराही की गहराई 1.5-2 मीटर होनी चाहिए। पिघले पानी को गड्ढे में प्रवेश करने से रोकने के लिए, गर्दन के उद्घाटन के चारों ओर निकाली गई मिट्टी का एक रोलर बिछाया जाता है। ऐसी भंडारण सुविधा को ढलान पर रखे ढक्कन से ढक दिया जाता है ताकि वर्षा का पानी लुढ़क सके। एक अच्छी तरह से बनाया गया सुराही बिना मरम्मत के 30-40 साल तक चलता है। सर्दियों में, यह नियमित बेसमेंट की तुलना में अधिक स्थिर तापमान और आर्द्रता बनाए रखेगा। ऐसे गड्ढे में आलू लंबे समय तक नहीं सूखते और अंकुरित नहीं होते। आलू को बिना हवा के छोटे-छोटे गड्ढों में संग्रहित किया जाता है। बड़े लोगों में, एक वेंटिलेशन पाइप को बोर्डों या गड्ढे के तल में संचालित चार हिस्सों से स्थापित किया जाता है और एक पुआल कॉर्ड के साथ लपेटा जाता है। आलू को बाल्टी की सहायता से छेद में उतारा जाता है। बाल्टी से दो रस्सियाँ बंधी हैं: एक हैंडल से, और दूसरी नीचे से। बाल्टी के फर्श पर पहुंचने के बाद, नीचे से जुड़ी रस्सी को खींच लें। उसी समय, बाल्टी पलट जाती है और आलू बाहर गिर जाते हैं। बैकफ़िलिंग की इस विधि से कंद क्षतिग्रस्त नहीं होते हैं। गड्ढे-सुराही को आलू से भरने के बाद, गर्दन को पुआल और ढक्कन से बंद कर दिया जाता है। पहले दो हफ्तों के दौरान, आलू सांस लेते समय बहुत अधिक नमी छोड़ते हैं, इसलिए भूसे की परत मोटी नहीं होनी चाहिए। बाद में, स्थानीय सर्दियों की स्थिति के आधार पर, परत को 50-70 सेमी तक समायोजित किया जाता है।

प्रिंट करें (Ctrl+P)

यह अनुभाग अस्थायी भंडारण और फ़ाइलों के साथ काम करने के लिए तंत्र के सबसे सामान्य उपयोगों का वर्णन करता है।

किसी फ़ाइल से डेटा को अस्थायी संग्रहण में सहेजना

एक फ़ाइल का प्लेसमेंट

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

फ़ाइलों का एक सेट रखना

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

// फाइललिस्ट - वैल्यूलिस्ट प्रकार के फॉर्म की विशेषता,
// जिसमें जोड़ी गई फ़ाइलों की एक सूची शामिल है
फाइलअरे = नया एरे;
फ़ाइल चक्र की सूची से सूची के प्रत्येक तत्व के लिए
FileArray.Add(NewDescriptionofTransferFile(ListElement,));
अंतचक्र;
प्लेसफ़ाइलें= नई सरणी;
परिणाम = प्लेसफाइल्स (एरेफाइल्स, प्लेस्डफाइल्स, गलत, यूनिकआइडेंटिफायर);

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

डेटा को अस्थायी भंडारण में रखना

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

अस्थायी भंडारण से डेटा पुनर्प्राप्त करना

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

अस्थायी भंडारण से डेटा हटाना

इन्फोबेस ऑब्जेक्ट विशेषता में डेटा सहेजे जाने के बाद, अस्थायी भंडारण में डेटा को हटाया जा सकता है। इसके लिए एक विधि है
अस्थायीस्टोरेज से हटाएँ(),जो निष्कासन का कार्य करता है। विधि एक पैरामीटर के रूप में अस्थायी भंडारण में एक पता लेती है।

अस्थायी भंडारण के लिए पते की जाँच की जा रही है

पता सूचना आधार में अस्थायी भंडारण और विवरण दोनों को इंगित कर सकता है। इसके प्रकार को जांचने की एक विधि है
यह TemporaryStorageAddress() है।यह जाँचता है कि पारित पता स्टोर की ओर इंगित करने वाला पता है। यदि पता अस्थायी भंडारण की ओर इंगित करता है तो सत्य लौटाता है।

प्रॉप्स पता प्राप्त करना

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

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

इन्फोबेस से एक फ़ाइल पुनर्प्राप्त करना

एक फ़ाइल प्राप्त हो रही है

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

फ़ाइलों का एक सेट प्राप्त करना

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

// फ़ाइल सूची - तत्वों के लिंक वाले मानों की एक सूची
// निर्देशिका जिसमें अपलोड की गई फ़ाइलें स्थित हैं
// मान प्रतिनिधित्व की सूची अपलोड की जा रही फ़ाइल का नाम है
फाइलअरे = नया एरे;
फ़ाइल चक्र की सूची से सूची के प्रत्येक तत्व के लिए
फ़ाइल = नया फ़ाइल(स्ट्रिंग(ListElement.Value));
रिसीवफ़ाइल = नया प्रेषित फ़ाइल का विवरण;
फ़ाइल प्राप्त करें.नाम = सूची तत्व.देखें;
फ़ाइल प्राप्त करें.भंडारण= पी getNavicationLink(ListItem.Value, "डेटा");
FileArray.Add(प्राप्त फ़ाइल);
अंतचक्र;
प्राप्त की गई संचिकाएं= नई सरणी;
परिणाम= फ़ाइलें प्राप्त करें (फ़ाइलें ऐरे, प्राप्त फ़ाइलें, अपलोड की गई फ़ाइलें पथ, ग़लत);
यदि परिणाम नहीं तो
संदेश = नया उपयोगकर्ता को संदेश;
संदेश.पाठ= "फ़ाइलें प्राप्त करने में त्रुटि!";
संदेश.संदेश();
अगर अंत ;

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

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

ट्रांसफर की गई फ़ाइलें = नई सरणी;
विवरण = नया प्रेषित फ़ाइल का विवरण("विवरण", फ़ाइल पता);
स्थानांतरित फ़ाइलें.जोड़ें(विवरण );
फ़ाइल चयन = नया FileSelectionDialog(FileSelectionDialogMode.Save);
फ़ाइल चयन.शीर्षलेख= "संग्रह सहेजें";
फ़ाइल चयन.विस्तार= "ज़िप";
फ़ाइल चयन.फ़िल्टर= "संग्रह(*.ज़िप)|*.ज़िप|सभी फ़ाइलें|*.*";
फ़ाइल चयन.फ़िल्टर इंडेक्स = 0;
फ़ाइलें प्राप्त करें (स्थानांतरण फ़ाइलें, चयन फ़ाइल, ग़लत);

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

फ़ाइल विधियों का उपयोग करने का उदाहरण

// इंटरैक्टिव ढंग से डिस्क से फ़ाइल पुनर्प्राप्त करना
// और इसे अस्थायी भंडारण में रखना।
&ऑनक्लाइंट
प्रक्रिया चयनडिस्कफ़ाइलIWrite()
परिवर्तनीय चयनित नाम;
पेरेम अस्थायी भंडारण पता;
न्यूऑब्जेक्ट = ऑब्जेक्ट.लिंक.खाली();
अगर प्लेसफ़ाइल (अस्थायी स्टोरेज पता, "", चयनित नाम, सत्य)तब
ऑब्जेक्ट.फ़ाइलनाम = चयनितनाम;
प्लेसऑब्जेक्टफ़ाइल(अस्थायीस्टोरेजएड्रेस);
अगर अंत;
प्रक्रिया का अंत
// किसी फ़ाइल को अस्थायी संग्रहण से प्रॉप्स में कॉपी करना
// निर्देशिका, एक ऑब्जेक्ट लिखना, एक फ़ाइल को अस्थायी से हटाना
// भंडारण।
&सर्वर पर
प्रक्रिया प्लेसऑब्जेक्ट फ़ाइल (अस्थायी स्टोरेज पता)
निर्देशिका तत्व = प्रपत्र गुण मान ("ऑब्जेक्ट");
बाइनरीडेटा = GetFromTemporaryStorage(TemporaryStorageAddress);
निर्देशिका तत्व. फ़ाइल डेटा= नया स्टोरेजवैल्यूज़ (बाइनरीडेटा, NewDataCompression());
फ़ाइल = नया फ़ाइल(निर्देशिका आइटम.फ़ाइलनाम);
निर्देशिका आइटम.फ़ाइलनाम = फ़ाइल.नाम;
निर्देशिका तत्व.लिखें();
संशोधित = गलत;
DeleteFromTemporaryStorage(TemporaryStorageAddress);
वैल्यू फॉर्म एट्रिब्यूट्स (निर्देशिका तत्व, "ऑब्जेक्ट");
प्रक्रिया का अंत
// प्रॉप्स से फ़ाइल पढ़ें और इसे सेव करें
//इंटरैक्टिव मोड में स्थानीय डिस्क पर।
&ऑनक्लाइंट
प्रक्रिया ReadFileAndSaveToDisk()
पता= GetNavicationLink(Object.Link,"FileData");
GetFile(पता, ऑब्जेक्ट.फ़ाइलनाम, सत्य);
प्रक्रिया का अंत

फ़ाइल संचालन का एक समूह निष्पादित करने की अनुमति

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

अगर कनेक्टएक्सटेंशनफ़ाइलों के साथ काम करना()तब
लिंक = गेटनेविगेशनलिंक(ऑब्जेक्ट.लिंक, "फ़ाइलडेटा");
// स्थानांतरित फ़ाइलों के विवरण का निर्माण (इस मामले में केवल एक फ़ाइल है)
स्थानांतरित फ़ाइलें= नई सरणी;
विवरण = स्थानांतरित फ़ाइल का नया विवरण (ऑब्जेक्ट. फ़ाइल नाम, लिंक);
स्थानांतरितफ़ाइलें.जोड़ें(विवरण);
// प्राप्त फ़ाइलों के बारे में जानकारी प्राप्त करने के लिए एक ऑब्जेक्ट तैयार करें
स्थानांतरित फ़ाइलें= नई सरणी;

// अन्य विधि मापदंडों को परिभाषित करें
निर्देशिका सहेजें= "सी:\तापमान";
इंटरएक्टिव = गलत;
प्रेषित फ़ाइल नाम = निर्देशिका सहेजा जा रहा है + “\” + ऑब्जेक्ट.फ़ाइलनाम;
// अनुमतियाँ प्राप्त करने के तरीकों का विवरण तैयार करें
विधियाँ = नई सारणी;

तरीके.जोड़ें(“फ़ाइलें प्राप्त करें”);
तरीके.जोड़ें(ट्रांसफरफ़ाइलें);
तरीके.जोड़ें(स्थानांतरितफ़ाइलें);
तरीके.जोड़ें(सेवडायरेक्टरी);
तरीके.जोड़ें(इंटरैक्टिव);
तरीके.जोड़ें(नई सारणी);
तरीके.जोड़ें(''रनएप्लिकेशन'');
तरीके.जोड़ें(स्थानांतरितफ़ाइलनाम);
अगर नहीं RequestUserPermission(तरीके)तब
चेतावनी ("उपयोगकर्ता ने अनुमति देने से इनकार कर दिया है");
वापस करना;
अगर अंत;
GetFiles(ट्रांसफरफाइल्स, ट्रांसमिटेडफाइल्स, सेविंगडायरेक्टरी, इंटरएक्टिव);
रनएप्लिकेशन(स्थानांतरितफ़ाइलनाम);
अन्यथा
चेतावनी ("निष्पादन समर्थित नहीं है। फ़ाइल एक्सटेंशन स्थापित नहीं है।");
अगर अंत;

विधि की कई विशेषताओं पर ध्यान दिया जाना चाहिए RequestUserPermission()।

1. अनुमति केवल निम्नलिखित तरीकों के लिए मांगी गई है:

GetFiles()/StartGettingFiles(),
● प्लेसफ़ाइल्स()/स्टार्टप्लेसफ़ाइल्स(),
● फाइंडफाइल्स()/स्टार्टसर्चफाइल्स(),
● CopyFile()/StartCopyFile(),
● मूवफाइल()/स्टार्टमूविंगफाइल(),
●डिलीटफाइल्स()/स्टार्टडिलीटफाइल्स(),
● CreateDirectory()/StartCreatingDirectory(),
● लॉन्चएप्लिकेशन()/स्टार्टरनएप्लिकेशन()।

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

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

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

दी गई अनुमतियाँ या तो अधिकृत कॉल निष्पादित होने तक या अंतर्निहित भाषा निष्पादित होने तक बरकरार रखी जाती हैं।
टिप्पणी. मोटे और पतले ग्राहकों में अनुरोध उपयोगकर्ता अनुमति()उपयोगकर्ता की सहभागिता के बिना, विधि हमेशा सत्य लौटाती है।

पृष्ठभूमि कार्य में अस्थायी भंडारण के साथ कार्य करना

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

चित्र क्षेत्र में पतों के लिए समर्थन

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

// उदाहरण 1
// छवि फ़ील्ड को अस्थायी रूप से छवि पते से बांधना
// भंडारण। पता चित्र - स्ट्रिंग प्रकार प्रपत्र विवरण
प्लेसफ़ाइल (छवि पता, प्रारंभिक नाम, चयनित नाम, सत्य, अद्वितीय पहचानकर्ता);
// उदाहरण 2
// ऑब्जेक्ट विशेषता से छवि का पता प्राप्त करना
// सूचना आधार
फाइलपिक्चर्स = ऑब्जेक्ट.फाइलपिक्चर्स;
यदि PictureFile.Empty() नहीं है तो
ImageAddress = GetNavicationLink(ImageFile, “FileData”);
अन्यथा
छवि पता = "";
अनंत;

मानक निर्देशिकाओं तक पहुंच

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