1c მონაცემთა შენახვის დროებითი საცავი. დროებითი შენახვა. როგორ ეძახიან?

თითქმის ნებისმიერი ინფორმაცია შეიძლება ინახებოდეს ღირებულების მაღაზიაში, მაგ.

... სურათები (ფოტოები):

CurrentImage.Object = SprFabric.Link; CurrentImage.DataType = Enumerations.Objects.Image დამატებითი ინფორმაციის ტიპები; შენახვა = NewValueStorage(NewPicture, NewDataCompression()); CurrentImage.Storage = Storage.Get();

// ამ ადგილას აჩვენებს ყველაფერს... Form Elements.PictureField1.Picture = Storage.Get(); CurrentImage.Write();

...ელცხრილის დოკუმენტი:

TabDoc=New TabularDocument; TabDoc.Output(FormElements.TabularDocumentField1); Storage=NewValueStorage(TabDoc); Write();

პროცედურის დასასრული

პროცედურა RestoreFromStoragePress(Element)

TabDoc=Storage.Get(); თუ TabDoc<>განუსაზღვრელი ThenFormElements.TabularDocumentField1.Output(TabDoc); დაასრულე თუ;

პროცედურის დასასრული

...თვითნებური ფაილები (ორობითი მონაცემები):

XZ = NewValueStorage(NewBinaryData(ფაილი));

Eight მხარს უჭერს საცავში განთავსებული მონაცემების შეკუმშვას:

XZ = NewValueStorage(NewBinaryData(ფაილი),NewDataCompression(9));

... გარე დამუშავება და მოხსენება:

პროცედურა LoadProcessingIntoStorage (PropsStorageType)

CompressionRate = NewDataCompression(9); //9 მაქსიმალური PropsStorageType = New StorageValues(New BinaryData("c:\reports\report.epf", შეკუმშვის სიხშირე));

პროცედურის დასასრული

პროცედურა StartProcessingFromStorage(PropsStorageType)

TemporaryFileName = TemporaryFileDirectory()+"report.epf"; BinaryData = PropsStorageType.Get(); BinaryData.Write(TemporaryFileName); ExternalProcessing = ExternalProcessing.Create(TemporaryFileName); ExternalProcessing.GetForm().Open();

პროცედურის დასასრული

საცავთან მუშაობა

თუ ეს იყო ორობითი მონაცემები, მაშინ ის შეიძლება აღდგეს მნიშვნელობის მაღაზიიდან Get მეთოდის გამოყენებით და ჩაწეროთ ფაილში Write() მეთოდის გამოყენებით.

თუ TypeValue (შენახვა)<>ჩაწერეთ ("BinaryData") შემდეგ

BinaryData = Storage.Get();

BinaryData = საცავი;

დაასრულე თუ; BinaryData.Write(FileName);

თუ ეს იყო, მაგალითად, Word დოკუმენტი (doc ფაილი, ან სხვა რეგისტრირებული ფაილის ტიპი), მაშინ მისი გახსნა შეიძლება ასე:

LaunchApplication (ფაილის სახელი);

Value Storage ტიპის ველის გასასუფთავებლად, თქვენ უნდა მივანიჭოთ ის განუსაზღვრელი:

PropsStorage = განუსაზღვრელი;

ფაილებთან და სურათებთან მუშაობა ჩაშენებულ ენაზე 1C:Enterprise 8

მიზანი

მართული აპლიკაცია ახორციელებს ფაილებთან მუშაობის ახალ მექანიზმს. ის უზრუნველყოფს ფაილების გაცვლას ინფორმაციის ბაზასა და კლიენტის აპლიკაციას შორის. ამ მექანიზმის თავისებურება ის არის, რომ იგი შექმნილია თხელი კლიენტისა და ვებ კლიენტისთვის გამოსაყენებლად და შექმნილია ვებ ბრაუზერების მიერ დაწესებული ფაილებთან მუშაობის შეზღუდვების გათვალისწინებით.

მექანიზმი არის მეთოდების ერთობლიობა, რომელიც შეიძლება გამოყენებულ იქნას მომხმარებლის კომპიუტერზე ლოკალურად შენახული მონაცემების საინფორმაციო ბაზის დროებით საცავში განთავსებისთვის, ამ ინფორმაციის დროებითი საცავიდან მონაცემთა ბაზაში გადასატანად და მომხმარებლის კომპიუტერში დაბრუნებაში. ამ მექანიზმით მოგვარებული აპლიკაციის ყველაზე გავრცელებული პრობლემებია თანმხლები ინფორმაციის შენახვა, მაგალითად, საქონლის სურათები, კონტრაქტებთან დაკავშირებული დოკუმენტები და ა.შ.

მეთოდის ფარგლები

დროებითი შენახვა

დროებითი შენახვა არის საინფორმაციო ბაზის სპეციალიზებული არეალი, რომელშიც შესაძლებელია ბინარული მონაცემების განთავსება. მთავარი მიზანია ინფორმაციის დროებითი შენახვა კლიენტ-სერვერის ურთიერთქმედების დროს, სანამ ის მონაცემთა ბაზაში გადაიცემა.

დროებითი შენახვის საჭიროება ჩნდება იმის გამო, რომ ვებ ბრაუზერის ოპერაციული მოდელი მოითხოვს მომხმარებლის მიერ არჩეული ფაილის პირდაპირ სერვერზე გადატანას კლიენტზე მისი შენახვის შესაძლებლობის გარეშე. როდესაც ფაილი გადადის, ის მოთავსებულია დროებით საცავში და შემდეგ შეიძლება გამოყენებულ იქნას მონაცემთა ბაზაში ობიექტის ჩაწერისას.

აპლიკაციის ყველაზე ტიპიური ამოცანა, რომელიც გადაჭრილია დროებითი შენახვის საშუალებით, არის ფაილებზე ან სურათებზე წვდომის უზრუნველყოფა, სანამ ობიექტი ჩაიწერება ინფორმაციის ბაზაში, მაგალითად, ელემენტის სახით.

საცავში განთავსებული ფაილი ან ორობითი მონაცემები იდენტიფიცირებულია უნიკალური მისამართით, რომელიც მოგვიანებით შეიძლება გამოყენებულ იქნას ჩაწერის, წაკითხვის ან წაშლის ოპერაციებში. ეს მისამართი მოცემულია ფაილის დროებით შესანახად ჩაწერის მეთოდებით. ჩაშენებულ ენაში ცალკე მეთოდი საშუალებას გაძლევთ განსაზღვროთ არის თუ არა გადაცემული მისამართი მისამართი, რომელიც მიუთითებს მონაცემებზე დროებით საცავში.

საინფორმაციო ბაზა

მექანიზმი გაძლევთ წვდომას Value Storage ტიპის ატრიბუტებში შენახულ ორობით მონაცემებზე.

როგორც დროებითი შენახვის შემთხვევაში, ინფორმაციაზე წვდომა შესაძლებელია სპეციალური მისამართის მეშვეობით. მისი მიღება შეგიძლიათ სპეციალური მეთოდით, ობიექტზე ბმულის ან ინფორმაციის რეესტრის შესვლის გასაღების და ატრიბუტის სახელის გადაცემით. ცხრილის ნაწილის შემთხვევაში დამატებით საჭიროა ტაბულური ნაწილის მწკრივის ინდექსის გადატანა.

ფაილებთან მუშაობის მეთოდებს აქვს შეზღუდვები ინფობაზის დეტალებთან მუშაობისას. მათთვის, დროებითი შენახვისგან განსხვავებით, ხელმისაწვდომია მხოლოდ ინფორმაციის წაკითხვა, მაგრამ არა მისი ჩაწერა ან წაშლა.

ფაილებთან მუშაობის მეთოდების აღწერა

მონაცემების შენახვა დროებით საცავში

ამ მექანიზმის გამოყენების ყველაზე ტიპიური სცენარი მოიცავს მომხმარებლის მონაცემების თავდაპირველ განთავსებას დროებით საცავში. ამისათვის არსებობს ორი მეთოდი: PlaceFile() და PlaceFileInTemporaryStorage().

პირველი მეთოდი, PlaceFile(), ათავსებს ფაილს ადგილობრივი ფაილური სისტემიდან დროებით საცავში. მეთოდს შეუძლია მიიღოს სამიზნე მისამართი საცავში. თუ ის არ არის განსაზღვრული ან არის ცარიელი სტრიქონი, მაშინ შეიქმნება ახალი ფაილი და მეთოდი დააბრუნებს მის მისამართს შესაბამისი პარამეტრის მეშვეობით.

თუ პარამეტრი, რომელიც განსაზღვრავს ოპერაციის ინტერაქტიულ რეჟიმს არის True, მაშინ მეთოდი აჩვენებს სტანდარტული ფაილის შერჩევის დიალოგურ ფანჯარას, რომელშიც შეგიძლიათ აირჩიოთ ფაილი შესანახად. ამ შემთხვევაში, მეთოდი ასევე დააბრუნებს არჩეული ფაილის მისამართს.

შედეგად, მეთოდი აბრუნებს False-ს, თუ მომხმარებელმა ინტერაქტიულად უარი თქვა ოპერაციის შესრულებაზე ფაილის შერჩევის დიალოგში. მეთოდი ხელმისაწვდომია მხოლოდ კლიენტზე.

მეორე მეთოდი, PlaceFileInTemporaryStorage(), წინას მსგავსია, გარდა იმისა, რომ ის ხელმისაწვდომია სერვერზე და დროებით საცავში ჩასაწერი მონაცემები წარმოდგენილია არა როგორც გზა ფაილურ სისტემაში, არამედ როგორც ტიპის ცვლადი. ორობითი მონაცემები. ანალოგიურად, თუ არ არის მითითებული სამიზნე მისამართი, ახალი ფაილი იქმნება საცავში. მისი მისამართი ბრუნდება ფუნქციის შედეგად.

ფაილის აღება დროებითი მეხსიერებიდან

ინფობაზაში ობიექტის ჩაწერისას შეიძლება დაგჭირდეთ მონაცემების ამოღება დროებითი საცავიდან და მოთავსება, მაგალითად, ატრიბუტში. ამისათვის არსებობს სერვერის შესაბამისი მეთოდი - GetFileFromTemporaryStorage(). ეს მეთოდი იღებს მონაცემებს დროებითი საცავიდან და შედეგად აბრუნებს მას. ამისათვის თქვენ უნდა მიუთითოთ მისამართი დროებით საცავში. ეს მისამართი ბრუნდება ზემოთ აღწერილი მეთოდებით PlaceFile() და PlaceFileInTemporaryStorage(), თუ ისინი წარმატებით შესრულდება.

ფაილის წაშლა დროებითი მეხსიერებიდან

მონაცემების დეტალებში შენახვის შემდეგ, დროებით საცავში არსებული ფაილი შეიძლება წაიშალოს. ამ მიზნით, არსებობს მეთოდი DeleteFileFromTemporaryStorage(), რომელიც შლის ფაილს დროებითი საცავიდან. მეთოდი პარამეტრად იღებს დროებით საცავში მყოფი ფაილის მისამართს. ხელმისაწვდომია სერვერზე.

მისამართის შემოწმება დროებითი შენახვისთვის

ფაილის მისამართს შეუძლია მიუთითოს როგორც დროებითი შენახვა, ასევე დეტალები ინფორმაციის ბაზაში. მისი ტიპის შესამოწმებლად, არსებობს მეთოდი This isTemporaryStorageAddress().

ის ამოწმებს, რომ გავლილი მისამართი არის მისამართი, რომელიც მიუთითებს მაღაზიაზე. აბრუნებს True-ს, თუ მისამართი მიუთითებს დროებით შენახვაზე. მეთოდი ხელმისაწვდომია სერვერზე.

რეკვიზიტების მისამართის მიღება

მას შემდეგ, რაც მონაცემები ინფორმაციის ბაზაში დეტალებში განთავსდება, შეიძლება დაგჭირდეთ მასზე წვდომა ფაილის მეთოდების გამოყენებით.

მაგრამ სანამ მიიღებთ მონაცემებს, მაგალითად, საკუთრებიდან, თქვენ უნდა მიიღოთ ამ ქონების მისამართი. ამ მიზნით, არსებობს მეთოდი GetFileAddressInInformationBase().

მისი მიზანია დააბრუნოს ფაილის მისამართი ინფო ბაზაში ორიგინალური პარამეტრების მიხედვით. ამისათვის თქვენ უნდა გადასცეთ ობიექტის გასაღები (ეს შეიძლება იყოს ობიექტის ბმული ან ინფორმაციის რეესტრის შესვლის გასაღები) და ატრიბუტის სახელი. თუ გსურთ მიიღოთ ტაბულური ნაწილის ატრიბუტში შენახული ფაილის მისამართი, ატრიბუტის სახელამდე პარამეტრში, რომელიც მიუთითებს ატრიბუტის სახელზე, თქვენ უნდა დაამატოთ ცხრილის ნაწილის სახელი და წერტილი „.“. მეთოდი ხელმისაწვდომია როგორც კლიენტზე, ასევე სერვერზე.

ფაილის ამოღება ინფობაზიდან

GetFile() მეთოდი იღებს ფაილს ინფობაზიდან და ინახავს მას მომხმარებლის ლოკალურ ფაილურ სისტემაში. პირველი პარამეტრი განსაზღვრავს ფაილის მისამართს რეკვიზიტში ან ფაილის დროებით შენახვაში. მეორე პარამეტრი განსაზღვრავს მიღებული ფაილის დანიშნულების ადგილს. არაინტერაქტიულ რეჟიმში, თქვენ უნდა მიუთითოთ გზა. ინტერაქტიულ რეჟიმში, პარამეტრი არჩევითია.

ნაგულისხმევად, მეთოდი შესრულებულია ინტერაქტიულ რეჟიმში, ანუ ბოლო პარამეტრი არის True. ეს ნიშნავს, რომ გამოჩნდება დიალოგური ფანჯარა, რომელშიც შეგიძლიათ მიუთითოთ მოქმედება მიღებულ ფაილთან: გაუშვით ან შეინახოთ მომხმარებლის მიერ მითითებულ ადგილას. თუ ინტერაქტიული რეჟიმი აქტიურია და Target disk file path პარამეტრი არ არის მითითებული, ფაილის გახსნის ოპერაცია მიუწვდომელია. აბრუნებს ლოგიკურ მნიშვნელობას. False ნიშნავს, რომ მომხმარებელმა აირჩია ოპერაციის გაუქმება ინტერაქტიული ფაილის შენახვის დიალოგურ ფანჯარაში.

ფაილის მეთოდების გამოყენების მაგალითი

// ფაილის მიღება დისკიდან ინტერაქტიულ რეჟიმში // და მისი დროებით საცავში განთავსება &კლიენტის პროცედურაზე SelectDiskFileAndWrite()

ცვლადი SelectedName; VariableTemporaryStorageAddress; თუ PutFile(TemporaryStorageAddress, SelectedName, True) მაშინ Object.FileName = SelectedName; PlaceObjectFile(TemporaryStorageAddress); დაასრულე თუ;

პროცედურის დასასრული

// ფაილის კოპირება დროებითი მეხსიერებიდან დირექტორიაში // ატრიბუტში, ობიექტის ჩაწერა, ფაილის წაშლა დროებითი // შენახვისგან & სერვერის პროცედურაზე მოათავსეთ ობიექტის ფაილი (დროებითი შენახვის მისამართი)

დირექტორიის ელემენტი = Form AttributesValue("ობიექტი"); BinaryData = GetFileFromTemporaryStorage(TemporaryStorageAddress); დირექტორია Element.File Data = NewValueStorage(BinaryData); FilePathOnDisk = ახალი ფაილი (DirectoryItem.FileName); დირექტორია Item.FileName = FilePathOnDisk.Name; დირექტორიის ელემენტი.Write(); მოდიფიცირებული = მცდარი; DeleteFileFromTemporaryStorage(TemporaryStorageAddress); ValueВFormAttributes(Directory Element, "Object");

პროცედურის დასასრული

// ფაილის წაკითხვა პროპიდან და მისი შენახვა // ლოკალურ დისკზე ინტერაქტიულ რეჟიმში &კლიენტის პროცედურაზე ReadFileAndSaveToDisk()

მისამართი = GetFileAddressInInformationBase(Object.Link, "FileData"); GetFile(Address, Object.FileName, True);

პროცედურის დასასრული

მისამართების მხარდაჭერა გამოსახულების ველში

Picture Field კონტროლი მხარს უჭერს სურათის ჩვენებას, რომელიც მითითებულია ფაილის მისამართით დროებით შენახვაში ან მონაცემთა ბაზაში.

ამისათვის თქვენ უნდა დააყენოთ string type ატრიბუტი ფორმის ელემენტის Data თვისებაში. ამ ატრიბუტის მნიშვნელობა განიმარტება როგორც სურათის მისამართი.

მაგალითი // გამოსახულების ველის მიბმა გამოსახულების მისამართთან დროებით // საცავში. AddressPictures აყალიბებს სტრიქონების ტიპის დეტალებს

PlaceFile (PictureAddress, True)

სურათი.მონაცემები = მისამართის სურათები

შეზღუდვები ვებ კლიენტთან მუშაობისას

აღწერილი მექანიზმის მუშაობას ვებ კლიენტის გამოყენებისას აქვს გარკვეული შეზღუდვები. ეს შეზღუდვები დაკავშირებულია ბრაუზერის უსაფრთხოების მოდელთან. მაგალითად, კლიენტს არ შეუძლია დამოუკიდებლად შეინახოს ფაილი ადგილობრივ ფაილურ სისტემაში, ანუ ხელმისაწვდომია მხოლოდ კლიენტის მეთოდების ინტერაქტიული ვერსია PlaceFile() და GetFile(). გამონაკლისი ხდება არაინტერაქტიული რეჟიმის გამოყენების მცდელობისას. დიალოგური ფანჯრები, რომლებიც ინტერაქტიულად გამოჩნდება, სპეციფიკურია თქვენი ბრაუზერის ტიპისთვის.

ფუნქციები კლიენტზე Value Storage-თან მუშაობისას

პრობლემა:

როდესაც დოკუმენტს აქვს Value Storage ტიპის ატრიბუტი ტაბულურ განყოფილებაში, ის ანელებს დოკუმენტის ფორმის გახსნას, თუ ეს ატრიბუტი შეიცავს დიდ მონაცემებს.

სავარაუდო მიზეზი:

შესაძლოა, ფორმის გახსნისას კლიენტს ეგზავნება არა Value Store-ში მდებარე მონაცემების ბმული, არამედ თავად მონაცემები.

გამოსავალი

  • ფორმის ცხრილის ატრიბუტის თვისებებში არის დროშა „ყოველთვის გამოყენება“. თუ ის დაყენებულია, ველის შიგთავსი ყოველთვის გადადის სერვერსა და კლიენტს შორის - მაგალითად, ფორმის გახსნისას. ეს დროშა უნდა იყოს გამორთული, მაგრამ ეს უნდა იყოს გათვალისწინებული კოდში, რადგან ნაგულისხმევად არ იქნება ამ ველის მნიშვნელობა კლიენტზე. მაგალითი შეგიძლიათ იხილოთ 1C:Archive-ში.

მისი გამოყენება კიდევ უკეთესია დროებითი შენახვაფაილების გადასატანად კლიენტსა და სერვერს შორის.

მასალა განახლებულია Drupal 8.7.0+-ის შესატყვისად

Temp მაღაზია(დროებითი შენახვა) - გაძლევთ საშუალებას დროებით შეინახოთ ნებისმიერი მონაცემი. ეს არის ერთგვარი მონაცემთა შენახვა $_SESSION-ში, რადგან ეს საცავი ჩვეულებრივ ასოცირდება გარკვეულ მომხმარებელთან. მაგრამ ის არ იყენებს $_SESSION-ს და ინახავს ყველაფერს სისტემის შიგნით (ბაზაში).

ბირთვს აქვს ორი სერვისი დროებითი შენახვისთვის, tempstore.private და tempstore.shared. ისინი მუშაობენ იდენტურად, მაგრამ პირადი ყოველთვის ინახავს მონაცემებს კონკრეტული მომხმარებლისთვის. ანუ, პირადი საცავიდან ერთი გასაღების გამოძახებით თითოეული მომხმარებლისთვის განსხვავებული მონაცემები იქნება. გაზიარებული ხელმისაწვდომია თითოეული მომხმარებლისგან.

ამ სერვისების გამოყენების სფერო და მათი შენახვა შეიძლება იყოს ძალიან დიდი. მაგალითად, შეინახეთ ფორმების გარკვეული დროებითი მნიშვნელობები და თუ მომხმარებელმა არ შეინახა ისინი, მათი აღდგენა შესაძლებელია ამ საცავიდან, მაგალითად, ზოგიერთი REST ფორმისთვის და თუნდაც შესაფერისია ჩვეულებრივი. ზოგადად, რისთვისაც საკმარისი ფანტაზია ან ამოცანები გაქვთ. მაგალითად, ეს შეიძლება გამოყენებულ იქნას Drupal-ის გარეთ კონტროლირებული ზოგიერთი ფორმისთვის, მაგალითად React-ში ან Vue-ში.

ამ საცავებში მნიშვნელობები ნაგულისხმევად მოქმედებს 604800 წამის განმავლობაში (1 კვირა), რის შემდეგაც ისინი ავტომატურად იშლება.

ამ მნიშვნელობის შესაცვლელად. თქვენ უნდა დააკავშიროთ, მაგალითად, sites/default/services.yml და ხელახლა განსაზღვროთ:

პარამეტრები: # 10 წამი tempstore. ვადა: 10

მაგრამ ეს, კარგი მიზეზის გამო, არ უნდა მოხდეს.

მოდით შევხედოთ თითოეული შენახვის მოწყობილობის შესაძლებლობებს; მიუხედავად იმისა, რომ ისინი მსგავსია, ისინი ოდნავ განსხვავდებიან.

tempstore.private - პირადი საცავი

ეს საცავი პირადია თითოეული მომხმარებლისთვის.

tempstore.shared - საერთო საცავი

ეს მეხსიერება საზიაროა და შეიძლება შეიცავდეს ყველა მომხმარებლისთვის საერთო მონაცემებს.

საცავს აქვს შემდეგი მეთოდები:

  • get($key): ამოიღებს მნიშვნელობას მაღაზიიდან მისი გასაღებით. თუ მონაცემები არ არის, ის დააბრუნებს NULL-ს, თუ არის, დააბრუნებს მნიშვნელობას.
  • getIfOwner($key): იღებს მნიშვნელობას მაღაზიიდან მისი გასაღებით. თუ მონაცემები არ არის ან მონაცემები არ იყო დაწერილი მიმდინარე მომხმარებლის ქვეშ, ის დააბრუნებს NULL-ს, თუ არის და დაიწერა მიმდინარე მომხმარებლის ქვეშ, დააბრუნებს მნიშვნელობას.
  • setIfNotExists($key, $value): წერს მნიშვნელობას $value კლავიშის ქვეშ $key შენახვისთვის მხოლოდ იმ შემთხვევაში, თუ ამჟამად ამ გასაღებისთვის მონაცემები არ არის. აბრუნებს TRUE-ს, თუ ჩაწერილია, FALSE-ს, თუ მონაცემები უკვე ჩაწერილია.
  • setIfOwner($key, $value): წერს $value მნიშვნელობას კლავიშის ქვეშ შენახვისთვის $key მხოლოდ იმ შემთხვევაში, თუ ამჟამად არ არის მონაცემები ან ფაქტობრივი მონაცემების მფლობელი არის მიმდინარე მომხმარებელი.
  • set($key, $value): წერს მნიშვნელობას $value კლავიშის ქვეშ $key შენახვისთვის.
  • getMetadata($key): აბრუნებს მეტამონაცემებს კონკრეტული $key-ისთვის, მონაცემთა გარეშე. ეს არის ობიექტი, რომელიც შეიცავს მფლობელის თვისებას, რომელიც ინახავს მნიშვნელობას, ვინ ფლობს ღირებულებას და განახლებულ თვისებას - Unix დროის შტამპი ამ მნიშვნელობის დაწერის დროის.
  • 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("username", "Drupal"); /** @var SharedTempStoreFactory $shared_tempstore */ $shared_tempstore = \Drupal::service("tempstore.shared"); $my_shared_storage = $shared_tempstore->get("dummy"); $my_shared_storage->set("username", "Drupal");

მაგალითი

მაგალითში ჩვენ შევქმნით ფორმას /temp-store-form გვერდზე ორი ველით, რომელთაგან ერთი შეინახავს შეტყობინებას პირად მეხსიერებაში, ხოლო მეორე საჯაროში.

შექმენით ფორმა:

Src/FormWithTempStore.php

privateTempStore = $private_temp_store->get("dummy"); $this->sharedTempStore = $shared_temp_store->get("dummy"); ) /** * (@inheritdoc) */ საჯარო სტატიკური ფუნქცია create(ContainerInterface $container) ( დააბრუნეთ ახალი static($container->get("tempstore.private"), $container->get("tempstore.shared") ); ) /** * (@inheritdoc) */ საჯარო ფუნქცია getFormId() ( დაბრუნება "form_with_temp_store"; ) /** * (@inheritdoc) */ საჯარო ფუნქცია buildForm(მასივი $form, FormStateInterface $form_state) ( $form ["private_message"] = [ "#type" => "textarea", "#title" => $this->t("პირადი შეტყობინება"), "#required" => TRUE, "#description" => $ this->t("ეს მნიშვნელობა იქნება პირადი თითოეული მომხმარებლისთვის."), "#default_value" => $this->privateTempStore->get("message"), ]; $form["shared_message"] = [ " #type" => "textarea", "#title" => $this->t("გაზიარებული შეტყობინება"), "#required" => TRUE, "#description" => $this->t("ეს მნიშვნელობა გაზიარებული იქნება ყველა მომხმარებლისთვის."), "#default_value" => $this->sharedTempStore->get("message"), ]; $form["actions"] = ["#type" => "მოქმედებები" $form["actions"]["submit"] = [ "#type" => "გაგზავნა", "#value" => $this->t("შენახვა"), ]; დაბრუნება $ფორმა; ) /** * (@inheritdoc) */ საჯარო ფუნქცია submitForm(მასივი &$form, FormStateInterface $form_state) ($this->privateTempStore->set("გზავნილი", $form_state->getValue("პირადი_მესიჯი")); $this->sharedTempStore->set("გზავნილი", $form_state->getValue("shared_message")); ) )

ბეჭდვა (Ctrl+P)

1C: Enterprise-ს აქვს დროებით საცავთან მუშაობის მექანიზმი, რომელიც უზრუნველყოფს სესიასთან დაკავშირებული ზოგიერთი მონაცემების შენახვას.
გარდა ამისა, დანერგილია ფაილებთან მუშაობის მექანიზმი, რომელიც უზრუნველყოფს ფაილების გაცვლას ინფობაზასა და კლიენტის აპლიკაციას შორის. ამ მექანიზმის თავისებურება ის არის, რომ იგი შექმნილია თინ კლიენტსა და ვებ კლიენტში გამოსაყენებლად და შექმნილია ვებ-ბრაუზერების მიერ დაწესებული ფაილებთან მუშაობის შეზღუდვების გათვალისწინებით.

დროებითი შენახვა

ეს არის ინფორმაციის სპეციალიზებული საცავი, რომელშიც შეიძლება განთავსდეს მნიშვნელობა. მთავარი მიზანია ინფორმაციის დროებითი შენახვა კლიენტ-სერვერის ურთიერთქმედების დროს, სანამ ის მონაცემთა ბაზაში გადაიცემა. დროებითი შენახვის მექანიზმი, ფაილების დამუშავების მექანიზმთან ერთად, უზრუნველყოფს კომპლექტს, რომელიც შეიძლება გამოყენებულ იქნას მომხმარებლის კომპიუტერზე ლოკალურად შენახული მონაცემების საინფორმაციო ბაზის დროებით საცავში განთავსებისთვის, ამ ინფორმაციის დროებითი საცავიდან მონაცემთა ბაზაში გადასატანად და მისაღებად. ის დაუბრუნდება მომხმარებლის კომპიუტერს. ამ მექანიზმებით მოგვარებული აპლიკაციის ყველაზე გავრცელებული პრობლემებია თანმხლები ინფორმაციის შენახვა, მაგალითად, საქონლის სურათები, კონტრაქტებთან დაკავშირებული დოკუმენტები და ა.შ. დროებითი შენახვისა და ფაილებთან მუშაობის მექანიზმები ხშირად გამოიყენება ერთად, მაგრამ ასევე შეიძლება გამოყენებულ იქნას ცალკე.
მაგალითად, დროებითი შენახვის საჭიროება ჩნდება იმის გამო, რომ ვებ ბრაუზერის მოდელი მოითხოვს მომხმარებლის მიერ არჩეული ფაილის პირდაპირ სერვერზე გადატანას კლიენტზე მისი შენახვის შესაძლებლობის გარეშე. როდესაც ფაილი გადადის, ის მოთავსებულია დროებით საცავში და შემდეგ შეიძლება გამოყენებულ იქნას მონაცემთა ბაზაში ობიექტის ჩაწერისას.
თქვენ შეგიძლიათ გამოიყენოთ დროებითი მეხსიერება, როგორც უნივერსალური საცავი, კონტროლირებადი მონაცემთა მოქმედებით:

1. თუ მონაცემთა დროებით შენახვაში მოთავსებისას მონაცემები მიბმული იყო გარკვეულ ფორმაზე, მაშინ შენახული მონაცემების სიცოცხლის ხანგრძლივობა დამოკიდებულია იმ ფორმის სიცოცხლის ხანგრძლივობაზე, რომელზედაც მონაცემები მიბმულია. როდესაც თქვენ წაშლით ფორმის ობიექტს, დროებითი მეხსიერება გასუფთავდება მასთან დაკავშირებული ყველა ინფორმაციისგან.

2. თუ მონაცემების დროებით შენახვაში მოთავსებისას ფორმაზე მიბმა არ დასრულებულა, მაშინ დროებითი შენახვის გასუფთავება მოხდება შემდეგ შემთხვევებში:

  • შემდეგ ჯერზე, როცა მოითხოვთ ფორმას.
  • სერვერის შემდეგ ზარზე კლიენტის საერთო მოდულიდან.
  • კონტექსტური და არაკონტექსტური კლიენტის ზარებისთვის ფორმიდან.
  • ბრძანების მოდულიდან სერვერის მხარეს გამოძახებისას. თუ სერვერის გამოძახება განხორციელდა მნიშვნელობის დროებით საცავში განთავსებისთვის, გასუფთავება არ შესრულდება. გასუფთავება ხდება ზარის მუშაობის დასრულების შემდეგ.

ანუ, თქვენ შეგიძლიათ განათავსოთ ერთი ან მეტი მნიშვნელობა დროებით საცავში და გამოიყენოთ ეს მნიშვნელობა შემდეგ ზარში. თუმცა, გამოყენების შემდეგ და სერვერის ზარის დასრულებამდე, განთავსებული მნიშვნელობა ავტომატურად წაიშლება.

აპლიკაციის ყველაზე ტიპიური პრობლემა, რომელიც მოგვარებულია დროებითი შენახვით, არის ფაილებზე ან სურათებზე წვდომის უზრუნველყოფა, სანამ ობიექტი ჩაიწერება საინფორმაციო ბაზაში, მაგალითად, ელემენტის სახით. ასეთი წვდომის ორგანიზებისას, რეკომენდებულია კლიენტის კომპიუტერებიდან მონაცემების სერვერზე გადატანა ზუსტად ფაილების სახით, ტექსტურ დოკუმენტში, ცხრილების დოკუმენტში და 1C: Enterprise სისტემის მსგავს ფორმატებში წინასწარი „კონვერტაციის“ გარეშე. რეკომენდირებულია ფაილის სერვერის მხარეს გადატანა და სერვერის მხრიდან ფაილის მონაცემების ჩატვირთვა სასურველში
1C: Enterprise სისტემის ფორმატი.
საცავში განთავსებული მონაცემები იდენტიფიცირებულია უნიკალური მისამართით, რომელიც მოგვიანებით შეიძლება გამოყენებულ იქნას ჩაწერის, წაკითხვის ან წაშლის ოპერაციებში. ეს მისამართი მოცემულია დროებით საცავში მნიშვნელობის ჩაწერის მეთოდებით. ჩაშენებულ ენაში ცალკე მეთოდი საშუალებას გაძლევთ განსაზღვროთ არის თუ არა გადაცემული მისამართი მისამართი, რომელიც მიუთითებს მონაცემებზე დროებით საცავში.
ერთ სესიაზე შექმნილი დროებითი მეხსიერება მიუწვდომელია სხვა სესიიდან. გამონაკლისი არის ფონური სამუშაოდან მონაცემების გადატანის შესაძლებლობა სესიაზე, რომელმაც დაიწყო ფონური სამუშაო დროებითი შენახვის გამოყენებით.

ბარტი . კარტოფილის, ძირეული ბოსტნეულის და თეთრი კომბოსტოს შესანახად ყველაზე მისაღები გზაა ჩამოსხმა. წყობა არის წაგრძელებული სანაპირო, ორივე მხრიდან დახრილი და ზემოდან დაფარული საიზოლაციო მასალით. მზადდება მოსავლის ერთი სეზონის შესანახად. ბურთები შეიძლება იყოს დაფქული, როდესაც კარტოფილი ასხამენ ბრტყელ ზედაპირზე და ნახევრად დაფქული, როდესაც არაღრმა ორმოებს თხრიან. პოპუნაუტნი (დამარხული) წყობი. ასეთი წყობისთვის ჩრდილოეთიდან სამხრეთის მიმართულებით თხრის ორმო 25 სმ სიღრმეზე.კარტოფილის თესლის ორმოს საუკეთესო სიგანე 170-200 სმ. ჯანსაღი კარტოფილის მოკლევადიანი შენახვისთვის შეგიძლიათ გააკეთოთ. უფრო ფართო სანაპირო (4 მ-მდე). ორმოს სიგრძე შეიძლება იყოს თვითნებური, მაგრამ, მიუხედავად ამისა, უმჯობესია, როდესაც ის არ აღემატება 20-25 მ. წყობის ნაპირის სიმაღლე, მისი სიგანე ძირში 2 მ, შეიძლება იყოს 90-. 100 სმ, როგორც წესი, კარტოფილი ინახება რამდენიმე გროვად ერთ ადგილზე. ბურღვის ადგილი განთავსებულია კარტოფილის მოყვანის უბნებთან ახლოს, წვიმისა და დნობის წყლისგან არ დატბორილ ადგილას, გზიდან არც თუ ისე შორს. ორმოს ცენტრალური ღერძის გასწვრივ 20-25 სმ სიგანისა და სიღრმის სავენტილაციო სადინარია გათხრილი, რომელიც ორმოს მიღმა ვრცელდება და 25 სმ-ით გრძელია, ვიდრე საყელოს ბოლოში არსებული საფარი. არხის ნაწილი, რომელიც ვრცელდება ორმოს საზღვრებს მიღმა, მჭიდროდ არის დაფარული ზემოდან დაფებით ისე, რომ მიწა არ მოხვდეს ორმოში და არხში. გრუნტის საყელოებში სავენტილაციო სადინარი მოთავსებულია უშუალოდ მიწის ზედაპირზე და მზადდება გისოსიანი კარვის სახით, რომელიც შედგება ცალკე ერთნახევარი მეტრიანი მონაკვეთებისგან. ჩალისა და მიწის სავენტილაციო სადინარში მოხვედრის თავიდან ასაცილებლად, მისი ბოლოები კეთდება ხარვეზების გარეშე. სავენტილაციო არხების გადასაფარებლად წინასწარ ამზადებენ გისოსებს 1,5 მ სიგრძისა და 0,5 მ სიგანის, განყოფილება შედგება 2-3 სმ სიგანის შლაპებისაგან და მათ შორის 2-2,5 სმ უფსკრულისაგან, სექციები იდება სავენტილაციო სადინარზე და მაგრდება. ერთმანეთი. შედეგად მიღებული უწყვეტი ვენტილაციის ცხაური ფარავს არხის ნაწილს, რომელიც მდებარეობს პროდუქტის ქვეშ. კარტოფილის ან სხვა პროდუქტების ბორცვის ფორმირებისას შიგ ათავსებენ საყელოს თერმომეტრს ან სპეციალურად დამზადებულ ოთხკუთხედ მილაკებს 3x3 სმ შიდა კვეთით, რომლებშიც ღეროს ბოლოში ჩასმულია თერმომეტრები. საყელოები ვენტილირებულია ქედისა და სავენტილაციო სადინარის მეშვეობით. გროვები დაფარულია ჩალითა და მიწით. სრული სისქის ჩალა იდება მკვრივი ფენით ქვემოდან ზემოდან ისე, რომ წყობის ქერქი გადახურულია. ამის შემდეგ წყობას გვერდებზე ასხამენ მიწის თხელი ფენით. წყობის ქედი პირველ ყინვამდე რჩება ჩალის საფარის ქვეშ. წვიმიან ამინდში ის დროებით დაფარულია გადახურვის თექით ან პლასტმასის ფირით. სტაბილური ყინვების დაწყებამდე კარტოფილის +4°C-მდე გაციებისას სავენტილაციო არხები მჭიდროდ იფარება ჩალით, გროვა კი მთლიანად მიწით. თუ წყობებში ტემპერატურა +1°C-ზე დაბლა დაეცემა, გროვა დამატებით იფარება თბოსაიზოლაციო მასალებით - ტორფი, ჩალა, ჩალის სასუქი ან თოვლი. დიდთოვლობის შემთხვევაში, რაც იწვევს გროვების გადაჭარბებულ დაფარვას, პერიოდულად ხდება მათი თოვლისგან გაწმენდა.

თხრილის საცავი . შენახვის ეს მეთოდი მოითხოვს 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)

ეს განყოფილება აღწერს მექანიზმის ყველაზე გავრცელებულ გამოყენებას დროებით საცავებთან და ფაილებთან მუშაობისთვის.

ფაილიდან მონაცემების დროებით საცავში შენახვა

ერთი ფაილის განთავსება

PlaceFile() მეთოდი ათავსებს ფაილს ადგილობრივი ფაილური სისტემიდან დროებით საცავში. მეთოდს შეუძლია მიიღოს მისამართი დროებით საცავში, სადაც ფაილი უნდა იყოს შენახული. თუ მისამართი არ არის განსაზღვრული ან არის ცარიელი სტრიქონი, მაშინ შეიქმნება ახალი მისამართი და მეთოდი დააბრუნებს მას სპეციალური პარამეტრის მეშვეობით.
Შენიშვნა. კლიენტსა და სერვერს შორის გადაადგილებული მონაცემების რაოდენობა PutFile() მეთოდის ერთი ზარით
თუ პარამეტრი, რომელიც განსაზღვრავს ოპერაციის ინტერაქტიულ რეჟიმს არის True, მაშინ მეთოდი აჩვენებს სტანდარტული ფაილის შერჩევის დიალოგურ ფანჯარას, რომელშიც შეგიძლიათ აირჩიოთ ფაილი შესანახად. ამ შემთხვევაში, მეთოდი ასევე დააბრუნებს არჩეული ფაილის მისამართს.
შედეგად, მეთოდი აბრუნებს False-ს, თუ მომხმარებელმა ინტერაქტიულად უარი თქვა ოპერაციის შესრულებაზე ფაილის შერჩევის დიალოგში.

ფაილების ნაკრების განთავსება

მეთოდი PlaceFiles ()ათავსებს რამდენიმე ფაილს დროებით საცავში ერთი ზარის დროს. ამ მეთოდის გამოყენების რამდენიმე განსხვავებული გზა არსებობს:
● წინასწარ შექმენით დასამატებელი ფაილების სია, მაგალითად, როცა ადრე შეარჩიეთ ფაილები, რომლებიც უნდა განთავსდეს საინფორმაციო ბაზაში;
● გადასცეთ ფაილის ძიების ნიღაბი მეთოდს, მაგალითად, როდესაც გსურთ გარკვეული ტიპის ყველა ფაილი, მაგალითად, ყველა სურათი, განათავსოთ ინფორმაციის ბაზაში;
● მეთოდისთვის წინასწარ მომზადებული ობიექტის გადაცემა ფაილის შერჩევის დიალოგიფაილის გახსნის რეჟიმში.
მუშაობის დასრულების შემდეგ მეთოდს შეუძლია დააბრუნოს რეალურად დამატებული ფაილების სია.

// FileList – ValueList ტიპის ფორმის ატრიბუტი,
// შეიცავს დამატებული ფაილების სიას
FileArray = ახალი მასივი;
სიის თითოეული ელემენტისთვის ფაილების ციკლიდან
FileArray.Add(NewDescriptionofTransferFile(ListElement,));
საბოლოო ციკლი;
PlacedFiles= ახალი მასივი;
შედეგი = PlaceFiles(ArrayFiles, PlacedFiles, False, UniqueIdentifier);

შენიშვნა 1: გამოიყენეთ მეთოდი PlaceFiles ()ვებ კლიენტი მოითხოვს ფაილის დამუშავების გაფართოების კავშირს.
შენიშვნა 2: კლიენტსა და სერვერს შორის გადაადგილებული მონაცემების რაოდენობა მეთოდის ზარზე PlaceFiles (), არ უნდა აღემატებოდეს 4 გბ (სერიულ ფორმაში).

მონაცემთა დროებით საცავში განთავსება

მეთოდი ჰგავს PlaceFile() მეთოდს, გარდა იმისა, რომ მონაცემები უნდა ჩაიწეროს დროებით საცავში
წარმოდგენილია არა როგორც გზა ფაილურ სისტემაში, არამედ როგორც მნიშვნელობა. ანალოგიურად, თუ დროებით საცავში არ არის მითითებული არსებული მისამართი, იქმნება ახალი მისამართი. მისამართი ბრუნდება ფუნქციის შედეგად. ფაილების მსგავსად, გამოქვეყნებული მონაცემები უნდა ეკუთვნოდეს რომელიმე ფორმას და წაშლის შემდეგ ავტომატურად იშლება.
Შენიშვნა.კლიენტსა და სერვერს შორის გადატანილი მონაცემების რაოდენობა მეთოდის ზარზე PlaceInTemporaryStorage(), არ უნდა აღემატებოდეს 4 გბ (სერიულ ფორმაში).
ყურადღება!დროებით შენახვაში მოთავსებისას მნიშვნელობა რეალურად არ არის სერიული. მნიშვნელობის მითითება მოთავსებულია და ინახება ქეშში 20 წუთის განმავლობაში. ამ პერიოდის შემდეგ, მნიშვნელობა ხდება სერიული, ჩაწერილი დისკზე (სესიის მონაცემების შენახვა) და ამოღებულია ქეშიდან.

დროებითი საცავიდან მონაცემების მოძიება

ობიექტის ინფობაზაში ჩაწერისას შეიძლება დაგჭირდეთ მონაცემების ამოღება დროებითი საცავიდან და განთავსება, მაგალითად, ინფობაზის ობიექტის ატრიბუტში. ამისათვის არსებობს სპეციალური მეთოდი - GetFromTemporaryStorage(). ეს მეთოდი იბრუნებს მონაცემებს დროებითი საცავიდან და აბრუნებს როგორც შესრულების შედეგს. მონაცემების მისაღებად დროებით უნდა მიუთითოთ მისამართი
შენახვა. ეს მისამართი ბრუნდება მონაცემთა დროებით საცავში განთავსების მეთოდებით, თუ ისინი წარმატებულია (იხილეთ წინა სექციები).
ყურადღება!სერვერზე დროებითი მეხსიერებიდან მნიშვნელობის მიღებისას უნდა გაითვალისწინოთ, რომ იგი მიიღება მითითებით. სინამდვილეში, ეს ბმული მიუთითებს მნიშვნელობაზე, რომელიც ინახება ქეშში. 20 წუთის განმავლობაში, საცავში განთავსების მომენტიდან ან ბოლო წვდომის მომენტიდან, მნიშვნელობა შეინახება ქეშში, შემდეგ ჩაიწერება დისკზე და წაიშლება ქეშიდან. მნიშვნელობის შემდეგ წვდომისას, ის იტვირთება დისკიდან და კვლავ განთავსდება ქეშში.
დესერიალიზაციისა და დროებითი შენახვის მნიშვნელობების აღდგენის შემდეგ, მითითებები არ აღდგება. ქეშის მნიშვნელობა აღდგენილია დისკიდან. მაგრამ სერიალიზაციის/დესერიალიზაციის შემდეგ შეუძლებელია მნიშვნელობის შიგნით სხვა ობიექტების მიმართების აღდგენა.

მონაცემების წაშლა დროებითი მეხსიერებიდან

მას შემდეგ, რაც მონაცემები შეინახება infobase ობიექტის ატრიბუტში, დროებით საცავში არსებული მონაცემები შეიძლება წაიშალოს. ამისთვის არსებობს მეთოდი
RemoveFromTemporaryStorage(),რომელიც ახორციელებს მოცილებას. მეთოდი პარამეტრად იღებს მისამართს დროებით საცავში.

მისამართის შემოწმება დროებითი შენახვისთვის

მისამართს შეუძლია მიუთითოს როგორც დროებითი შენახვა, ასევე დეტალები საინფორმაციო ბაზაში. არსებობს მეთოდი მისი ტიპის შესამოწმებლად
ეს არისTemporaryStorageAddress().ის ამოწმებს, რომ გავლილი მისამართი არის მისამართი, რომელიც მიუთითებს მაღაზიაზე. აბრუნებს True-ს, თუ მისამართი მიუთითებს დროებით შენახვაზე.

რეკვიზიტების მისამართის მიღება

მას შემდეგ, რაც მონაცემები განთავსდება infobase ობიექტის ატრიბუტში, შეიძლება დაგჭირდეთ მასზე წვდომა ფაილის მეთოდების გამოყენებით.
მაგრამ სანამ მიიღებთ მონაცემებს, მაგალითად, საკუთრებიდან, თქვენ უნდა მიიღოთ ამ ქონების მისამართი. ამისთვის არსებობს მეთოდი GetNavigationLink().

მას შეუძლია დააბრუნოს მნიშვნელობის მისამართი ინფო ბაზაში ორიგინალური პარამეტრების საფუძველზე. ამისათვის თქვენ უნდა გაიაროთ ობიექტის გასაღები (ეს შეიძლება იყოს
როგორც ობიექტის ბმული, ასევე ინფორმაციის რეესტრის შესვლის გასაღები) და ატრიბუტის სახელწოდება. თუ გჭირდებათ ატრიბუტში შენახული მნიშვნელობის მისამართის მიღება
ტაბულური ნაწილი, შემდეგ ატრიბუტის სახელს ატრიბუტის სახელის მითითების პარამეტრში, თქვენ უნდა დაამატოთ ცხრილის ნაწილის სახელი და წერტილი „.“. Მაგალითად: პროდუქტები.იმიჯი

ფაილის ამოღება ინფობაზიდან

ერთი ფაილის მიღება

GetFile() მეთოდი იღებს ფაილს ინფობაზიდან და ინახავს მას მომხმარებლის ლოკალურ ფაილურ სისტემაში. პირველი პარამეტრი განსაზღვრავს ფაილის მისამართს infobase ობიექტის ატრიბუტში ან ფაილის დროებით საცავში. შენახვა არ მოხდება, თუ მომხმარებელს, რომლის სახელითაც შესრულებულია ოპერაცია, არ აქვს ხედვის უფლება ინფობაზის ობიექტის დეტალებზე. მეორე პარამეტრი განსაზღვრავს ადგილს, სადაც მიღებული ფაილი ინახება. არაინტერაქტიულ რეჟიმში, თქვენ უნდა მიუთითოთ გზა. ინტერაქტიულ რეჟიმში პარამეტრი არის
სურვილისამებრ.
ნაგულისხმევად, მეთოდი შესრულებულია ინტერაქტიულად. ეს ნიშნავს, რომ გენერირებული იქნება დიალოგური ფანჯარა, რომელშიც შეგიძლიათ მიუთითოთ მოქმედება მიღებულ ფაილთან: გაუშვით ან შეინახოთ ფაილური სისტემის მომხმარებლის მიერ მითითებულ ადგილას. თუ არჩეულია ინტერაქტიული რეჟიმი და ფაილის სახელი არ არის მითითებული, ფაილის გახსნის ოპერაცია მიუწვდომელია. მეთოდი აბრუნებს ლოგიკურ მნიშვნელობას. False ნიშნავს, რომ მომხმარებელმა აირჩია ოპერაციის გაუქმება ინტერაქტიული ფაილის შენახვის დიალოგურ ფანჯარაში.

ფაილების ნაკრების მიღება

GetFiles() მეთოდი საშუალებას გაძლევთ მიიღოთ და შეინახოთ რამდენიმე ფაილი, რომლებიც ინახება ინფორმაციის ბაზაში მომხმარებლის ლოკალურ ფაილურ სისტემაში. ატვირთული ფაილების სია გადაეცემა პარამეტრად.

// FileList - ელემენტების ბმულების შემცველი მნიშვნელობების სია
// დირექტორია, რომელშიც განთავსებულია ატვირთული ფაილები
// მნიშვნელობების წარმოდგენის სია არის ატვირთული ფაილის სახელი
FileArray = ახალი მასივი;
სიის თითოეული ელემენტისთვის ფაილების ციკლიდან
ფაილი = ახალი ფაილი (სტრიქონი (ListElement.Value));
ReceiveFile = ახალი გადაცემული ფაილის აღწერა;
ReceiveFile.Name = ListElement.View;
ReceiveFile.Storage= პ getNavigationLink(ListItem.Value, „მონაცემები“);
FileArray.Add(ReceivingFile);
საბოლოო ციკლი;
მიღებული ფაილები= ახალი მასივი;
შედეგი = ReceiveFiles (FilesArray, ReceivedFiles, UploadedFilesPath, False);
თუ შედეგი არ არის, მაშინ
შეტყობინება = ახალი შეტყობინება მომხმარებელს;
შეტყობინება.ტექსტი = "შეცდომა ფაილების მიღებისას!";
Message.Message();
Დაასრულე თუ ;

დასრულების შემდეგ, მეთოდს შეუძლია დააბრუნოს რეალურად გადმოწერილი ფაილების სია, თითოეული შენახული ფაილის სრული სახელის მითითებით.
ᲨᲔᲜᲘᲨᲕᲜᲐ. ვებ კლიენტში GetFiles() მეთოდის გამოსაყენებლად, თქვენ უნდა დააკავშიროთ ფაილის გაფართოება. თუ ქონების ობიექტის სახელი გადაცემული ფაილის აღწერაშეიცავს ფაილის აბსოლუტურ გზას, ფაილი შეინახება ამ გზაზე, პარამეტრის მიუხედავად ფაილის ადგილმდებარეობა.
ფაილის მდებარეობის პარამეტრი შეიძლება იყოს ბილიკი ლოკალურ ფაილურ სისტემაში ან ფაილის შერჩევის დიალოგის ობიექტი დირექტორიაში შერჩევის ან ფაილების შენახვის რეჟიმში. თუ პარამეტრის მნიშვნელობა ფაილის ადგილმდებარეობამითითებული ობიექტი ფაილის შერჩევის დიალოგირეჟიმში
ფაილების შენახვა, შემდეგ:

● დიალოგი გამოიძახება თითოეული გადატანილი ფაილისთვის, გარდა იმ ფაილებისა, რომლებისთვისაც Transmitted File Description ობიექტის სახელი თვისება შეიცავს აბსოლუტურ გზას;
● ობიექტის მნიშვნელობა Name of Description of Transmitted File თვისება გამოყენებული იქნება ფაილის საწყის სახელად დიალოგში;
● თუ შენახვაზე უარი არჩეულია რომელიმე ფაილისთვის, მაშინ ობიექტის სახელი აღწერა Transferred File თვისება შეიცავს ცარიელ სტრიქონს;
● GetFiles() მეთოდი დააბრუნებს მნიშვნელობას True, თუ მინიმუმ ერთი ფაილი წარმატებით იქნა მიღებული;
● გასათვალისწინებელია, რომ ფაილები რეალურად მიიღება მას შემდეგ, რაც მომხმარებელი უპასუხებს კითხვებს სახელისა და გზის მითითების შესახებ
ყველა მიღებული ფაილი;
● თუ მომხმარებელს, რომლის სახელითაც შესრულებულია GetFile() მეთოდი, არ აქვს ხედვის უფლება ინფობაზის ობიექტის მინიმუმ ერთ ატრიბუტზე, საიდანაც ხდება ფაილების მოძიება, მთელი ოპერაცია ჩაიშლება.
მაგალითი:

TransferredFiles = ახალი მასივი;
აღწერა = ახალი გადაცემული ფაილის აღწერა(“აღწერა”, FileAddress);
გადატანილი ფაილები.დამატება(აღწერილობა);
FileSelect = ახალი FileSelectionDialog(FileSelectionDialogMode.Save);
FileSelect.Header= „არქივის შენახვა“;
ფაილის შერჩევა. გაფართოება= "zip";
FileSelect.Filter= "არქივი(*.zip)|*.zip|ყველა ფაილი|*.*";
FileSelect.FilterIndex = 0;
ReceiveFiles (TransferFiles, SelectFile, False);

თუ არჩეულია ფაილების შენახვის დირექტორიას არჩევის ინტერაქტიული რეჟიმი, ვებ კლიენტი დამატებით ითხოვს ნებართვას შეინახოს ფაილები, რომლებიც მითითებულია აბსოლუტური ბილიკებით. არაინტერაქტიული შენახვის შემთხვევაში (საქაღალდისკენ მიმავალი გზა მითითებულია შესაბამის პარამეტრში), მოთხოვნა შესრულდება შენახული ფაილების მთელი სიისთვის.

ფაილის მეთოდების გამოყენების მაგალითი

// დისკიდან ფაილის ინტერაქტიულად ამოღება
// და დროებით საცავში მოთავსება.
&OnClient
Პროცედურა SelectDiskFileIWrite()
ცვლადი SelectedName;
პერემი TemporaryStorageAddress;
NewObject = Object.Link.Empty();
თუ PlaceFile (TemporaryStorageAddress, “”, SelectedName, True)მერე
Object.FileName = SelectedName;
PlaceObjectFile(TemporaryStorageAddress);
დაასრულე თუ;
პროცედურის დასასრული
// ფაილის კოპირება დროებითი საცავიდან რეკვიზიტში
// დირექტორია, ობიექტის დაწერა, ფაილის წაშლა დროებით
// შენახვა.
&სერვერზე
Პროცედურა PlaceObjectFile (დროებითი შენახვის მისამართი)
დირექტორია ელემენტი = Form AttributesValue („ობიექტი“);
BinaryData = GetFromTemporaryStorage(TemporaryStorageAddress);
Directory Element.File Data= ახალი StorageValues ​​(ორობითი მონაცემები, NewDataCompression());
ფაილი = ახალი ფაილი (Directory Item.FileName);
დირექტორია Item.FileName = File.Name;
დირექტორიის ელემენტი.Write();
მოდიფიცირებული = მცდარი;
DeleteFromTemporaryStorage(TemporaryStorageAddress);
ValueВFormAttributes(Directory Element, “Object”);
პროცედურის დასასრული
// წაიკითხეთ ფაილი რეკვიზიტებიდან და შეინახეთ იგი
// ლოკალურ დისკზე ინტერაქტიულ რეჟიმში.
&OnClient
Პროცედურა ReadFileAndSaveToDisk()
მისამართი = GetNavigationLink(Object.Link"FileData");
GetFile(Address, Object.FileName, True);
პროცედურის დასასრული

ფაილის ოპერაციების ჯგუფის შესრულების ნებართვა

ვებ კლიენტში ზოგიერთი ოპერაციების შესრულებისას შეიძლება დაგჭირდეთ ნებართვის მიღება მრავალი ფაილის ოპერაციებისთვის.
მაგალითად, თქვენ უნდა აიღოთ დოკუმენტი ინფობაზიდან და შემდეგ გახსნათ შენახული დოკუმენტი ასოცირებული აპლიკაციის გამოყენებით.
ამ ოპერაციის შესასრულებლად, თქვენ უნდა უპასუხოთ კითხვას დოკუმენტის შენახვის შესახებ და კითხვაზე მისი გაშვების აუცილებლობის შესახებ. თუ მეტი ოპერაციაა, მომხმარებელს ასევე ექნება მეტი შეკითხვა.
კითხვების რაოდენობის შესამცირებლად შეგიძლიათ გამოიყენოთ მეთოდი. ამ მეთოდის გამოყენებისას
მომხმარებელს ეჩვენება ყველა იმ ოპერაციების სია, რომელთა შესრულებაც იგეგმება და სთხოვენ დაუშვას ოპერაციების ჯგუფის შესრულება. თუ მომხმარებელმა დაუშვა შესრულება, მაშინ მოთხოვნილი ოპერაციები შესრულდება მომხმარებლისთვის დამატებითი მოთხოვნის გარეშე. თუ ნებართვა არ გაიცემა, ოპერაციები გაგრძელდება ჩვეულ რეჟიმში: ერთი მოთხოვნა თითო ოპერაციაზე.
ᲨᲔᲜᲘᲨᲕᲜᲐ. მეთოდის გამოსაყენებლად RequestUserPermission()ვებ კლიენტში თქვენ უნდა ჩართოთ ფაილის მართვის გაფართოება.
მოდით შევხედოთ მეთოდის გამოყენების მაგალითს:

თუ ConnectExtension მუშაობა ფაილებთან ()მერე
ბმული = GetNavigationLink (Object.Link, „FileData“);
// გადაცემული ფაილების აღწერის ფორმირება (ამ შემთხვევაში არის მხოლოდ ერთი ფაილი)
გადატანილი ფაილები= ახალი მასივი;
აღწერა = გადატანილი ფაილის ახალი აღწერა (Object. FileName, Link);
TransferredFiles.Add(Description);
// ობიექტის მომზადება მიღებული ფაილების შესახებ ინფორმაციის მისაღებად
გადატანილი ფაილები= ახალი მასივი;

// სხვა მეთოდის პარამეტრების განსაზღვრა
DirectorySave= "c:\temp";
ინტერაქტიული = მცდარი ;
გადაცემული ფაილის სახელი = დირექტორია + “\” + Object.FileName-ის შენახვა;
// ნებართვების მიღების მეთოდების აღწერილობის მომზადება
მეთოდები = ახალი მასივი;

Methods.Add(“GetFiles”);
Methods.Add(TransferFiles);
Methods.Add(TransferredFiles);
Methods.Add(SaveDirectory);
მეთოდები.დამატება(ინტერაქტიული);
Methods.Add(New Array);
Methods.Add(“RunApplication”);
Methods.Add(TransferredFileName);
Თუ არა RequestUserPermission (მეთოდები)მერე
გაფრთხილება ("მომხმარებელმა უარყო ნებართვა.");
Დაბრუნების;
დაასრულე თუ;
GetFiles (TransferFiles, TransmittedFiles, SavingDirectory, Interactive);
RunApplication(TransferredFileName);
წინააღმდეგ შემთხვევაში
გაფრთხილება ("შესრულება არ არის მხარდაჭერილი. ფაილის გაფართოება არ არის დაინსტალირებული.");
დაასრულე თუ;

უნდა აღინიშნოს მეთოდის რამდენიმე მახასიათებელი RequestUserPermission().

1. ნებართვა მოითხოვება მხოლოდ შემდეგ მეთოდებზე:

GetFiles()/StartGettingFiles(),
● PlaceFiles()/StartPlaceFiles(),
● FindFiles()/StartSearchFiles(),
● CopyFile()/StartCopyFile(),
● MoveFile()/StartMovingFile(),
●DeleteFiles()/StartDeleteFiles(),
● CreateDirectory()/StartCreatingDirectory(),
● LaunchApplication()/StartRunApplication().

2. ნებართვა მოთხოვნილია მეთოდის პარამეტრების კონკრეტული ნაკრებისთვის. თუ ფაილის მანიპულირების მეთოდის ფაქტობრივი შესრულების დროს, პარამეტრის მნიშვნელობები განსხვავდება იმ მნიშვნელობებისაგან, რომლებზეც ნებართვა იქნა მიღებული, ეს ნებართვა არ იქნება მოქმედი და მომხმარებელი მიიღებს ცალკე მოთხოვნას ოპერაციის დასადასტურებლად.

3. თუ თქვენ გჭირდებათ ორი (ან მეტი) იდენტური ოპერაციის შესრულება ფაილებთან (თუნდაც იგივე პარამეტრების ნაკრებით), თქვენ უნდა მიუთითოთ ელემენტების შესაბამისი რაოდენობა მეთოდის პარამეტრების მასივში. RequestUserPermission(). მაგალითად, თუ თქვენ გჭირდებათ ერთი და იგივე ფაილის მიღება ინფობაზიდან ორჯერ და განათავსოთ იგი ფაილურ სისტემაში ფიქსირებულ ადგილას, უნდა მოითხოვოთ ნებართვა.
ორი ოპერაციისთვის.

4. თუ ნებართვა მოითხოვება ოპერაციაზე, რომელიც ასრულებს ინტერაქტიულ ოპერაციას (მაგალითად, ფუნქცია GetFiles(), ობიექტი გადაეცემა პარამეტრად ფაილის შერჩევის დიალოგი), მაშინ ასეთი ოპერაცია გამორიცხულია მოთხოვნიდან.

მინიჭებული ნებართვები შენარჩუნებულია მანამ, სანამ ავტორიზებული ზარი არ შესრულდება, ან სანამ ჩაშენებული ენა არ დაასრულებს შესრულებას.
ᲨᲔᲜᲘᲨᲕᲜᲐ. სქელ და გამხდარ კლიენტებში RequestUserPermission()მეთოდი ყოველთვის აბრუნებს True-ს, მომხმარებლის ურთიერთქმედების გარეშე.

მუშაობა დროებით საცავთან ფონურ სამუშაოში

დროებით საცავთან მუშაობის მექანიზმს აქვს შესაძლებლობა გადაიტანოს მონაცემები ფონური სამუშაოდან სესიაზე, რომელმაც დაიწყო ფონური სამუშაო.
ასეთი გადაცემისთვის, თქვენ უნდა მოათავსოთ ცარიელი მნიშვნელობა დროებით საცავში მშობლის სესიაში (მეთოდის გამოყენებით PlaceInTemporaryStorage()), რომელშიც მითითებულია შექმნილი დროებითი შენახვის ნებისმიერი იდენტიფიკატორი (მისამართის პარამეტრი). შემდეგ მიღებული მისამართი გადაეცით ფონურ სამუშაოს ფონური სამუშაოს პარამეტრების მეშვეობით. გარდა ამისა, თუ ფონურ სამუშაოში ეს მისამართი გამოიყენება მეთოდის მისამართის პარამეტრის მნიშვნელობად PlaceInTemporaryStorage(), შემდეგ შედეგი დაკოპირდება სესიაზე, საიდანაც დაიწყო ფონური სამუშაო.
ფონური სამუშაოს დროებით საცავში განთავსებული მონაცემები მიუწვდომელი იქნება მშობლის სესიიდან, სანამ ფონური დავალება არ დასრულდება.

მისამართების მხარდაჭერა გამოსახულების ველში

View Field ფორმის ელემენტი Picture ველი მხარს უჭერს სურათის ჩვენებას, რომელიც მითითებულია მნიშვნელობის მისამართით (რომელიც შეიძლება იყოს სურათი ან ორობითი მონაცემები) დროებით საცავში ან მონაცემთა ბაზაში.
ამისათვის თქვენ უნდა დააყენოთ string type ატრიბუტი ფორმის ელემენტის Data თვისებაში. ამ ატრიბუტის მნიშვნელობა განიმარტება როგორც სურათის მისამართი.

// მაგალითი 1
// სურათის ველის მიბმა გამოსახულების მისამართთან დროებით
// შენახვა. AddressPictures – სტრიქონის ტიპის ფორმის დეტალები
PlaceFile(ImageAddress, InitialName, SelectedName, True, UniqueIdentifier);
// მაგალითი 2
// ობიექტის ატრიბუტიდან გამოსახულების მისამართის მიღება
// საინფორმაციო ბაზა
FilePictures = Object.FilePictures;
თუ არ არის PictureFile.Empty() მაშინ
ImageAddress = GetNavigationLink (ImageFile, „FileData“);
წინააღმდეგ შემთხვევაში
ImageAddress = „“;
დაუსრულებელი;

სტანდარტული დირექტორიების წვდომა

სისტემის გამოყენებისას, ფაილურ სისტემაში საჭიროა გარკვეული ადგილი, სადაც შესაძლებელია სხვადასხვა ფაილის მონაცემების შენახვა, რომელიც, ერთის მხრივ, დროებითია, მეორე მხრივ კი საკმაოდ დიდი ხნის განმავლობაში უნდა იყოს შენახული. ასეთი ფაილები მოიცავს დოკუმენტების მართვის სისტემების მონახაზებს, კლიენტის კომპიუტერის მხარეს გაშვებულ გარე კომპონენტებს და ა.შ.
ასეთი ფაილების შესანახად განკუთვნილია სპეციალური დირექტორია, რომელიც მიბმულია კონკრეტული საინფორმაციო ბაზის კონკრეტულ მომხმარებელს.
იმავე მომხმარებელს, რომელიც მუშაობს ორ ინფობაზთან, ექნება წვდომა ორ განსხვავებულ დირექტორიაზე მომხმარებლის მონაცემების შესანახად. ამ დირექტორიას ადგილმდებარეობა განისაზღვრება მეთოდის გამოყენებით WorkUserDataDirectory (). თუ დირექტორია არ არსებობს, ის იქმნება პირველად მასზე წვდომისას. თუ დირექტორია ვერ შეიქმნა, სისტემა გამონაკლისს აგდებს.
ᲨᲔᲜᲘᲨᲕᲜᲐ. UserDataWorkDirectory() მეთოდი არ არის ხელმისაწვდომი სერვერის მხარეს.
ოპერაციულ სისტემას აქვს სპეციალური დირექტორია, რომელიც გამოყოფილია მომხმარებლის მონაცემების მუდმივი შენახვისთვის. ეს შეიძლება იყოს რამდენიმე
ანგარიშები, დოკუმენტების დაბეჭდილი ფორმები და ა.შ. მონაცემები მოთავსებულია ამ დირექტორიაში, რომელიც მოგვიანებით შეიძლება გაიგზავნოს გარედან
მომხმარებლებისთვის. ამ დირექტორიაში წვდომისთვის გამოიყენება DocumentDirectory() მეთოდი. დირექტორიას ფიზიკური მდებარეობა განსხვავდება ოპერაციული სისტემის მიხედვით.
სისტემა, სადაც აპლიკაცია შესრულებულია და ჩამოთვლილია სინტაქსის ასისტენტში.