Merr të dhëna nga ruajtja e vlerave 1s 8.3. Kufizimet kur punoni me klientin në ueb

Pothuajse çdo informacion mund të ruhet në një dyqan vlerash, p.sh.

... foto (foto):

CurrentImage.Object = SprFabric.Link; CurrentImage.DataType = Enumerations.Llojet e Informacionit Shtesë të Objekteve.Image; Storage = NewValueStorage(NewPicture, NewDataCompression()); CurrentImage.Storage = Storage.Get();

// në këtë vend shfaq gjithçka... Form Elements.PictureField1.Picture = Storage.Get(); CurrentImage.Write();

...dokumenti i fletëllogaritjes:

TabDoc=Dokument i ri Tabular; TabDoc.Output(FormElements.TabularDocumentField1); Storage=NewValueStorage(TabDoc); Shkruaj();

Fundi i procedurës

Procedura RestoreFromStoragePress(Element)

TabDoc=Storage.Get(); Nëse TabDoc<>Të padefinuara ThenFormElements.TabularDocumentField1.Output(TabDoc); fundNëse;

Fundi i procedurës

...skedarët arbitrarë (të dhënat binare):

XZ = NewValueStorage(NewBinaryData(skedar));

Tetë mbështet kompresimin e të dhënave të vendosura në ruajtje:

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

... përpunimi dhe raportimi i jashtëm:

Procedura LoadProcessingIntoStorage (PropsStorageType)

Shkalla e Kompresimit = Kompresimi i të Dhënave të Re (9); //9 maksimumi PropsStorageType = New StorageValues(New BinaryData("c:\reports\report.epf", Shkalla e Kompresimit));

Fundi i procedurës

Procedura StartProcessingFromStorage(PropsStorageType)

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

Fundi i procedurës

Puna me ruajtjen

Nëse ishin të dhëna binare, atëherë ato mund të rikthehen nga ruajtja e vlerave duke përdorur metodën Get dhe të shkruhet në një skedar duke përdorur metodën Write().

Nëse TypeValue (Storage)<>Shkruani ("BinaryData") Pastaj

BinaryData = Storage.Get();

BinaryData = Magazinimi;

fundNëse; BinaryData.Write(Emri i skedarit);

Nëse ishte, për shembull, një dokument Word (skedar doc ose një lloj skedari tjetër i regjistruar), atëherë ai mund të hapet si kjo:

LaunchApplication (Emri i skedarit);

Për të pastruar një fushë të tipit Value Storage, duhet ta caktoni atë të Padefinuar:

PropsStorage = I papërcaktuar;

Puna me skedarë dhe fotografi në gjuhën e integruar 1C: Enterprise 8

Qëllimi

Aplikacioni i menaxhuar zbaton një mekanizëm të ri për të punuar me skedarë. Ai siguron shkëmbimin e skedarëve midis infobazës dhe aplikacionit të klientit. E veçanta e këtij mekanizmi është se ai është krijuar për t'u përdorur në një klient të hollë dhe një klient Web dhe është krijuar duke marrë parasysh kufizimet në punën me skedarët e vendosur nga shfletuesit e uebit.

Mekanizmi është një grup metodash që mund të përdoren për të vendosur të dhënat e ruajtura në nivel lokal në kompjuterin e përdoruesit në një ruajtje të përkohshme të bazës së informacionit, për ta transferuar këtë informacion nga ruajtja e përkohshme në bazën e të dhënave dhe për t'i marrë ato përsëri në kompjuterin e përdoruesit. Problemet më të zakonshme të aplikimit të zgjidhura nga ky mekanizëm janë ruajtja e informacionit shoqërues, për shembull, imazhet e mallrave, dokumentet që lidhen me kontratat, etj.

Qëllimi i metodës

Ruajtja e përkohshme

Ruajtja e përkohshme është një zonë e specializuar e bazës së informacionit në të cilën mund të vendosen të dhënat binare. Qëllimi kryesor është ruajtja e përkohshme e informacionit gjatë ndërveprimit klient-server përpara se të transferohet në bazën e të dhënave.

Nevoja për ruajtje të përkohshme lind sepse modeli i funksionimit të shfletuesit të internetit kërkon që skedari i zgjedhur nga përdoruesi të transferohet drejtpërdrejt në server pa mundësinë e ruajtjes së tij në klient. Kur një skedar transferohet, ai vendoset në ruajtje të përkohshme dhe më pas mund të përdoret kur shkruani një objekt në bazën e të dhënave.

Detyra më tipike e aplikimit e zgjidhur nga ruajtja e përkohshme është sigurimi i aksesit në skedarë ose fotografi përpara se objekti të regjistrohet në bazën e informacionit, për shembull, në formën e një elementi.

Një skedar ose të dhëna binare të vendosura në ruajtje identifikohen nga një adresë unike, e cila më vonë mund të përdoret në operacionet e shkrimit, leximit ose fshirjes. Kjo adresë jepet me metoda për të shkruar një skedar në ruajtje të përkohshme. Një metodë e veçantë në gjuhën e integruar ju lejon të përcaktoni nëse adresa e kaluar është një adresë që tregon të dhënat në ruajtje të përkohshme.

Baza e informacionit

Mekanizmi ju lejon të aksesoni të dhënat binare të ruajtura në atributet e tipit Value Storage.

Ashtu si në rastin e ruajtjes së përkohshme, qasja në informacion është e mundur përmes një adrese të veçantë. Ju mund ta merrni atë përmes një metode të veçantë duke kaluar një lidhje me një objekt ose një çelës regjistrimi të informacionit dhe emrin e atributit. Në rastin e një pjese tabelare, kërkohet gjithashtu transferimi i indeksit të rreshtit të pjesës tabelare.

Metodat për të punuar me skedarë kanë kufizime kur punoni me detajet e bazës së informacionit. Për ta, ndryshe nga ruajtja e përkohshme, disponohet vetëm leximi i informacionit, por jo shkrimi ose fshirja e tij.

Përshkrimi i metodave për të punuar me skedarë

Ruajtja e të dhënave në ruajtje të përkohshme

Skenari më tipik për përdorimin e këtij mekanizmi përfshin fillimisht vendosjen e të dhënave të përdoruesit në ruajtje të përkohshme. Ekzistojnë dy metoda për këtë: PlaceFile() dhe PlaceFileInTemporaryStorage().

Metoda e parë, PlaceFile(), vendos një skedar nga sistemi lokal i skedarëve në ruajtje të përkohshme. Metoda mund të pranojë një adresë të synuar në ruajtje. Nëse nuk është i përcaktuar ose është një varg bosh, atëherë do të krijohet një skedar i ri dhe metoda do të kthejë adresën e saj përmes parametrit përkatës.

Nëse parametri që përcakton mënyrën ndërvepruese të funksionimit është i vërtetë, atëherë metoda do të shfaqë një kuti dialogu të përzgjedhjes standarde të skedarit në të cilën mund të zgjidhni një skedar për ta vendosur në ruajtje. Në këtë rast, metoda do të kthejë gjithashtu adresën e skedarit të zgjedhur.

Si rezultat, metoda kthen False nëse përdoruesi refuzon në mënyrë interaktive të kryejë një operacion në dialogun e përzgjedhjes së skedarit. Metoda është e disponueshme vetëm për klientin.

Metoda e dytë, PlaceFileInTemporaryStorage(), është e ngjashme me atë të mëparshmen, me përjashtim të faktit se është e disponueshme në server dhe të dhënat që do të shkruhen në ruajtje të përkohshme nuk përfaqësohen si një shteg në sistemin e skedarëve, por si një variabël i llojit. Të dhënat binare. Po kështu, nëse nuk specifikohet adresa e synuar, krijohet një skedar i ri në ruajtje. Adresa e tij kthehet si rezultat i funksionit.

Marrja e një skedari nga ruajtja e përkohshme

Kur shkruani një objekt në bazën e informacionit, mund t'ju duhet të nxirrni të dhëna nga ruajtja e përkohshme dhe t'i vendosni ato, për shembull, në një atribut. Ekziston një metodë përkatëse e serverit për këtë - GetFileFromTemporaryStorage(). Kjo metodë merr të dhëna nga ruajtja e përkohshme dhe si rezultat i kthen ato. Për ta bërë këtë, duhet të specifikoni adresën në ruajtje të përkohshme. Kjo adresë kthehet nga metodat e përshkruara më sipër PlaceFile() dhe PlaceFileInTemporaryStorage() nëse ato ekzekutohen me sukses.

Fshirja e një skedari nga ruajtja e përkohshme

Pasi të dhënat të ruhen në detaje, skedari në ruajtje të përkohshme mund të fshihet. Për këtë qëllim, ekziston një metodë DeleteFileFromTemporaryStorage(), e cila fshin një skedar nga ruajtja e përkohshme. Metoda merr si parametër adresën e një skedari në ruajtje të përkohshme. E disponueshme në server.

Po kontrollon adresën për ruajtje të përkohshme

Adresa e skedarit mund të tregojë si ruajtjen e përkohshme ashtu edhe detajet në bazën e informacionit. Për të kontrolluar llojin e tij, ekziston një metodë This isTemporaryStorageAddress().

Kontrollon që adresa e kaluar është një adresë që tregon dyqanin. Kthen True nëse adresa tregon për ruajtjen e përkohshme. Metoda është e disponueshme në server.

Marrja e adresës së rekuizitës

Pasi të dhënat vendosen në detaje në bazën e informacionit, mund t'ju duhet t'i qaseni duke përdorur metodat e skedarit.

Por përpara se të merrni të dhëna, për shembull nga një pronë, duhet të merrni adresën e kësaj prone. Për këtë qëllim, ekziston një metodë GetFileAddressInInformationBase().

Qëllimi i tij është të kthejë adresën e skedarit në infobazë sipas parametrave origjinalë. Për ta bërë këtë, duhet të kaloni çelësin e objektit (kjo mund të jetë ose një lidhje me objektin ose një çelës i hyrjes së regjistrit të informacionit) dhe emrin e atributit. Nëse ju duhet të merrni adresën e një skedari të ruajtur në një atribut të pjesës tabelare, përpara emrit të atributit në parametrin që specifikon emrin e atributit, duhet të shtoni emrin e pjesës tabelare dhe një pikë ".". Metoda është e disponueshme si në klient ashtu edhe në server.

Po merr një skedar nga baza e informacionit

Metoda GetFile() merr një skedar nga infobaza dhe e ruan atë në sistemin lokal të skedarëve të përdoruesit. Parametri i parë specifikon adresën e skedarit në bazën ose ruajtjen e përkohshme të skedarit. Parametri i dytë specifikon vendndodhjen e destinacionit të skedarit që rezulton. Në modalitetin jo-interaktiv, duhet të specifikoni shtegun. Në modalitetin interaktiv, parametri është opsional.

Si parazgjedhje, metoda ekzekutohet në modalitetin interaktiv, domethënë, parametri i fundit është i vërtetë. Kjo do të thotë që shfaqet një kuti dialogu në të cilën mund të specifikoni një veprim me skedarin e marrë: ekzekutoni ose ruani në një vendndodhje të caktuar nga përdoruesi. Nëse modaliteti ndërveprues është aktiv dhe parametri i shtegut të skedarit të diskut të synuar nuk është specifikuar, operacioni i hapjes së skedarit nuk është i disponueshëm. Kthen një vlerë boolean. False do të thotë që përdoruesi zgjodhi të anulojë operacionin në kutinë e dialogut interaktiv të ruajtjes së skedarit.

Shembull i përdorimit të metodave të skedarëve

// Marrja e një skedari nga disku në modalitetin interaktiv // dhe vendosja e tij në ruajtje të përkohshme &Në procedurën e klientit ZgjidhniDiskFileAndWrite()

Variabli SelectedName; Adresa VariableTemporaryStorage; Nëse PutFile(TemporaryStorageAddress, SelectedName, True) Atëherë Object.FileName = SelectedName; PlaceObjectFile(TemporaryStorageAddress); fundNëse;

Fundi i procedurës

// Kopjimi i një skedari nga ruajtja e përkohshme në një atribut //, regjistrimi i një objekti, fshirja e një skedari nga ruajtja e përkohshme // &Në procedurën e serverit Vendi skedarin e objektit (Adresa e ruajtjes së përkohshme)

Elementi i Drejtorisë = Form AttributesValue("Objekt"); BinaryData = GetFileFromTemporaryStorage(TemporaryStorageAddress); Elementi i drejtorisë.Të dhënat e skedarit = NewValueStorage(BinaryData); FilePathOnDisk = Skedari i ri (DirectoryItem.FileName); Direktoria Item.FileName = FilePathOnDisk.Name; Elementi i drejtorisë.Write(); Modifikuar = E gabuar; DeleteFileFromTemporaryStorage(TemporaryStorageAddress); ValueВFormAttributes (Elementi i drejtorisë, "Objekt");

Fundi i procedurës

// Leximi i një skedari nga mbështetësit dhe ruajtja e tij // në diskun lokal në modalitetin interaktiv &Në procedurën e klientit ReadFileAndSaveToDisk()

Adresa = GetFileAddressInInformationBase(Object.Link, "FileData"); GetFile (Adresa, Object.FileEmri, True);

Fundi i procedurës

Mbështetje për adresat në fushën e imazhit

Kontrolli i fushës së figurës mbështet shfaqjen e një fotografie të specifikuar nga adresa e një skedari në ruajtje të përkohshme ose në një bazë të dhënash.

Për ta bërë këtë, duhet të vendosni një atribut tip vargu në vetinë Data e elementit të formës. Vlera e këtij atributi do të interpretohet si adresa e figurës.

Shembull // Lidhja e fushës së imazhit me adresën e imazhit në ruajtje të përkohshme //. AdresaPictures formojnë detaje të llojit të vargut

PlaceFile (Adresa e figurës, e vërtetë)

Foto.Të dhënat = AdresaPictures

Kufizimet kur punoni me klientin në ueb

Funksionimi i mekanizmit të përshkruar gjatë përdorimit të klientit në ueb ka disa kufizime. Këto kufizime lidhen me modelin e sigurisë së shfletuesit. Kështu, për shembull, klienti nuk mund të ruajë në mënyrë të pavarur një skedar në sistemin lokal të skedarëve, domethënë është i disponueshëm vetëm versioni interaktiv i metodave të klientit PlaceFile () dhe GetFile (). Një përjashtim bëhet kur përpiqeni të përdorni modalitetin jo-interaktiv. Kutitë e dialogut që shfaqen në mënyrë interaktive janë specifike për llojin e shfletuesit tuaj.

Veçoritë kur punoni me Value Storage te klienti

Problemi:

Kur një Dokument ka një atribut të tipit Value Storage në seksionin tabelor, ai ngadalëson hapjen e formularit të dokumentit nëse ky atribut përmban të dhëna të mëdha.

Arsyeja e supozuar:

Ndoshta, kur hapni një formular, klientit nuk i dërgohet lidhja me të dhënat e vendosura në Value Store, por vetë të dhënat.

Zgjidhje

  • Në vetitë e atributit të tabelës së formularit ekziston një flamur "Përdor gjithmonë". Nëse është vendosur, përmbajtja e fushës transferohet gjithmonë midis serverit dhe klientit - për shembull, kur hapni një formular. Ky flamur duhet të çaktivizohet, por kjo duhet të merret parasysh në kod, pasi si parazgjedhje nuk do të ketë asnjë vlerë për këtë fushë në klient. Një shembull mund të gjendet në 1C:Archive.

Është edhe më mirë të përdoret ruajtje e përkohshme për të transferuar skedarë midis klientit dhe serverit.

Ne kemi një drejtori "Produkte", në atributin "Të dhënat", informacioni i të cilit ruhet në formën e të dhënave binare. Vetë atributi ka llojin e vlerës "Value Storage". Pamja e mëposhtme e ekranit tregon strukturën e meta të dhënave të drejtorisë.

Për të bashkangjitur një skedar arbitrar nga disku në formën e një elementi, është zbatuar komanda "AttachFile". Kodi i tij i programit është paraqitur në listën e mëposhtme:

& Në procedurën e klientit AttachFile (Komanda) // Trajtuesi i komandës në klient. Zgjedhja e skedarit // Dialog për zgjedhjen e një skedari nga disku Mode = FileSelectionDialogMode. Hapja; OpenFileDialog = NewFileSelectDialog(Mode); Dialogu i OpenFile. FullFileName = " " ; Dialogu i OpenFile. MultipleSelect = False; Dialogu i OpenFile. Title = "Zgjidh skedarët" ; Nëse FileOpenDialog. Zgjidhni() Pastaj FilePath = FileOpenDialog. Emri i skedarit të plotë; // Merr të dhënat e skedarit binar BinaryData = BinaryData e re (PathToFile) ; // Transferoni të dhënat binare në server AttachFileServer(BinaryData) ; Përndryshe Teksti = "ru = "" Skedari (s) nuk është zgjedhur!" " ; en ="" Skedari (s) nuk është zgjedhur!" " " ; Paralajmërim(NStr(Tekst) ) ; EndIf ; EndProcedure & Procedura OnServer AttachFileServer(BinaryData) // Trajtues në server për regjistrimin e një skedari në sigurinë e informacionit // Shndërroni objektin e formës në një objekt referimi ObjectCurrent = FormAttributesValue("Objekt"); // Cakto një vlerë të re për atributin "Data". ObjectRurrent. Data = NewValueStorage(Data binare); // Ruaj ndryshimet ObjectRurrent. Shkruaj() ; Fundi i procedurës

Nëse e përshkruajmë algoritmin në terma të përgjithshëm, atëherë së pari zgjidhet një skedar nga disku në klient. Të dhënat e skedarit binar që rezultojnë dërgohen në server, ku regjistrohen në bazën e informacionit, përkatësisht në atributin "Data" të elementit aktual të drejtorisë.

Në parim, gjithçka funksionon. Kur hapim një element, ne mund t'i lexojmë këto të dhëna sipas nevojës. Nëse, për shembull, një imazh ruhet në mbështetëse, atëherë ne mund ta marrim atë dhe ta shfaqim në fushën e formës. Kjo zgjidhje ka një vend, por në shumicën e detyrave nuk është optimale të përdoren atributet me llojin e vlerës "Value Storage" në drejtori dhe dokumente. Dhe kjo është arsyeja pse ...

Ndikimi i performancës

Le të bëjmë disa teste të performancës. Testet do të përdorin dy elementë të drejtorisë "Produkte", me dhe pa skedar të bashkangjitur. Madhësia e skedarit të bashkangjitur është 5 megabajt.

Të gjitha testet kryhen duke përdorur përpunimin "GetElement" në konfigurimin e testit. Ju mund ta shkarkoni këtë konfigurim nga lidhja në fund të artikullit.

Le të matim kohën që duhet për të hapur artikujt në drejtorinë "Produkte". Për të hapur një element, përdoret metoda e kontekstit global "OpenValue()", së cilës i jepet një referencë elementit si parametër. Le të matim kohën e hapjes duke përdorur një mjet standard të matjes së performancës. Rezultatet janë paraqitur në pamjen e mëposhtme të ekranit:

Siç mund ta shohim, koha që duhet për të hapur një element me një skedar të bashkangjitur është 10 herë më e gjatë! Le të bëjmë një provë tjetër. Le të ekzekutojmë metodën "GetObject()" për të referuar elementin e katalogut të produkteve. Ju mund të shihni rezultatin e testit në pamjen e mëposhtme të ekranit.

Dallimi është mjaft domethënës. Marrja e një elementi pa skedar të bashkangjitur është 194 herë më shpejt!

Kjo ndodh sepse metoda "GetObject()" merr të gjitha të dhënat nga detajet e elementit të drejtorisë me referencë. Prandaj, metoda merr vlerat jo vetëm të atributeve "Kodi" dhe "Emri", por edhe vlerën e atributit "Të dhënat". Nëse ruan të dhëna binare me madhësi 5 megabajt (si në shembullin tonë), atëherë kur të merret objekti, këto të dhëna vendosen në RAM (si detajet e tjera) dhe më pas transferohen në anën e klientit. Është marrja e të dhënave nga ky atribut që rrit kohën për marrjen e objektit të elementit. Nëse përdoret një kanal i hollë komunikimi, atëherë koha e hapjes do të rritet edhe më shumë për shkak të transferimit të një sasie të madhe informacioni në rrjet.

Shënim: gjatë ekzekutimit të metodës "OpenValue()", gjithashtu fillimisht merret objekti i elementit të drejtorisë, dhe më pas shndërrohet në një objekt formulari dhe i kalohet klientit (për format e menaxhuara). Kjo do të thotë, kur një element hapet me referencë, objekti gjithashtu merret.

Le të bëjmë një test përfundimtar për kohën që duhet për të hapur dhe shkruar një artikull drejtorie me dhe pa një skedar të bashkangjitur. Rezultati tregohet në pamjen e mëposhtme të ekranit.

Rezultat natyral. Koha për të marrë dhe më pas për të shkruar për një artikull drejtorie me një skedar të bashkangjitur doli të ishte ~19 herë më e gjatë. Siç u përmend më lart, kur merrni një objekt, merren vlerat e të gjitha detajeve të tij, duke përfshirë atributin "Data" në të cilin ruhen 5 megabajt informacion. Kur shkruhet një element, kjo sasi e të dhënave shkruhet përsëri në infobazë. Rrjedhimisht, ruajtja e të dhënave në një atribut (ose dokument) direktoriumi me llojin "Vlera e ruajtjes" ndikon negativisht në performancën si gjatë marrjes së një objekti ashtu edhe gjatë vendosjes së tij në bazën informative.

Cila është mënyra më e saktë për të zgjidhur problemin e ruajtjes së të dhënave për objektet e bazës së informacionit?

Zgjidhja e duhur

Nëse shikojmë zbatimin e këtij mekanizmi në konfigurime tipike, do të shohim se për objektet informacione shtesë ruhen në një tabelë të veçantë të regjistrit të informacionit. Kështu duket, për shembull, mekanizmi i skedarit të bashkëngjitjes në një konfigurim standard të versionit 11 të "Menaxhimit të Tregtisë".

Drejtoria "Nomenklature" është pronari i drejtorisë "NomenclatureAttachedFiles". Kjo, nga ana tjetër, shoqërohet me regjistrin e informacionit AttachedFiles, dimensioni AttachedFile i të cilit i referohet elementit të tij. Kështu, të dhënat e bashkangjitura në objektet e bazës së informacionit ruhen në të vërtetë në tabelën e regjistrit të informacionit, funksionimi i së cilës praktikisht nuk ndikohet nga sasia e të dhënave të ruajtura në burim. Drejtoria e ndërmjetme "Nomenklatura e skedarëve të bashkangjitur" është e nevojshme për të ruajtur informacione shtesë për skedarin e bashkangjitur, si dhe për të mbështetur aksesin në skedarin e bashkangjitur me referencë.

Të gjitha sa më sipër konfirmojnë edhe një herë ndikimin e jashtëzakonshëm të performancës së një strukture të meta të dhënave të konfigurimit të projektuar siç duhet.

Testoni konfigurimin me një shembull nga artikulli: LIDHJE .

Platforma 1C: Ndërmarrja ofron shumë mundësi për ruajtjen e të dhënave të llojeve të ndryshme.

Por shpesh këto mundësi nuk janë të mjaftueshme. Dhe pastaj një objekt i veçantë na vjen në ndihmë - Vlerat e ruajtjes. Ky objekt ju lejon të ruani në një format të veçantë si objektet standarde 1C: Enterprise, për shembull, një tabelë vlerash, dhe ato jo standarde për të cilat një lloj nuk ofrohet në platformë. Llojet jo standarde mund të përfshijnë skedarë. Për shembull, duke përdorur një dyqan vlerash në një bazë të dhënash 1C, mund të ruani fotografi të punonjësve, skanime dokumentesh, përpunim të jashtëm, etj. Avantazhi këtu është se të gjitha këto objekte ruhen në vetë bazën e të dhënave. Prandaj, kur vendosni një bazë të dhënash të re nga një kopje rezervë, të gjitha këto objekte do të jenë gjithashtu të pranishme në bazën e re të të dhënave. Nga ana tjetër, nëse ruani skedarë të mëdhenj në bazën e të dhënave, kjo mund të rrisë ndjeshëm vëllimin e saj dhe të ndikojë negativisht në performancën e saj. Prandaj, këtu duhet të ruhet një ekuilibër i arsyeshëm.

Le të shohim punën me një dyqan vlerash duke përdorur një shembull. Le të krijojmë një drejtori të veçantë në konfigurues - le ta quajmë atë Objektet e jashtme, dhe nga ana tjetër ne do të krijojmë kushtet për drejtorinë Nje objekt me llojin Vlerat e ruajtjes

Dhe tani ne mund të krijojmë elementë në këtë direktori, dhe në mbështetëse Nje objektÇdo element është shkruar në një skedar.

Të punosh me një dyqan me vlerë është shumë e thjeshtë. Nëse shikojmë ndihmësin e sintaksës, do të shohim se ky objekt ka vetëm një metodë dhe një konstruktor.

Tani, për demonstrim, le të shkruajmë kodin më të thjeshtë që do të shkruajë një skedar në mbështetëse Nje objekt një element drejtorie të krijuar më parë, dhe më pas lexoni këtë skedar nga mbështetësit dhe shkruajeni në disk, por me një emër tjetër.

&Në procedurën e serverit LoadUnloadFile(Elementi i drejtorisë)Objekti i drejtorisë =Elementi i drejtorisë. GetObject(); //Vendosni imazhin në ruajtjen e vlerave LabelDownload = Imazhi i ri ("g:\musor\favicon.ico" ) NewValueStorage; //Shkruani një element drejtorie Objekti i drejtorisë. Objekt DirectoryObject. Shkruaj() ; //Ngarko imazhin nga ruajtja e vlerave në një skedar Emri i skedarit = "g:\musor\favicon_1.ico" ; LabelUpload = Objekti i drejtorisë. Nje objekt. Marr() ; LabelNgarko. Shkruani (Emri i skedarit) ; Fundi i procedurës

Dhe disa shpjegime për kodin.

  • Objekti vendoset në dyqan direkt kur dyqani krijohet duke përdorur konstruktorin.

Për të ruajtur lloje të tjera skedarësh përveç imazheve në ruajtje, mund të përdorni objektin Të dhënat binare. Thjesht teorikisht, mund të ruani edhe elementë të drejtorisë, dokumente, etj. në ruajtjen e vlerave. Por në praktikë kjo nuk ka kuptim. Por ndonjëherë është e mundur të përdoret një dyqan vlerash për të ruajtur një tabelë vlerash, një pemë vlerash dhe koleksione të tjera universale.