1c imbakan ng data pansamantalang imbakan. Pansamantalang imbakan. Paano sila tinawag?

Halos anumang impormasyon ay maaaring maimbak sa isang value store, hal.

... mga larawan (mga larawan):

CurrentImage.Object = SprFabric.Link; CurrentImage.DataType = Enumerations.Types ng Karagdagang Impormasyon ng Objects.Image; Storage = NewValueStorage(NewPicture, NewDataCompression()); CurrentImage.Storage = Storage.Get();

// sa lugar na ito ipinapakita nito ang lahat... Form Elements.PictureField1.Picture = Storage.Get(); CurrentImage.Write();

...dokumento ng spreadsheet:

TabDoc=Bagong TabularDocument; TabDoc.Output(FormElements.TabularDocumentField1); Storage=NewValueStorage(TabDoc); Sumulat ();

Katapusan ng Pamamaraan

Pamamaraan RestoreFromStoragePress(Element)

TabDoc=Storage.Get(); Kung ang TabDoc<>Undefined ThenFormElements.TabularDocumentField1.Output(TabDoc); tapusin kung;

Katapusan ng Pamamaraan

...arbitrary na mga file (binary data):

XZ = NewValueStorage(NewBinaryData(file));

Sinusuportahan ng walo ang compression ng data na inilagay sa storage:

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

... panlabas na pagproseso at pag-uulat:

Pamamaraan LoadProcessingIntoStorage(PropsStorageType)

CompressionRate = NewDataCompression(9); //9 maximum PropsStorageType = Bagong StorageValues(Bagong BinaryData("c:\reports\report.epf", Compression Rate));

Katapusan ng Pamamaraan

Pamamaraan StartProcessingFromStorage(PropsStorageType)

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

Katapusan ng Pamamaraan

Paggawa gamit ang imbakan

Kung ito ay Binary Data, maaari itong maibalik mula sa value store gamit ang Get method at isulat sa isang file gamit ang Write() method.

Kung TypeValue(Storage)<>I-type ang("BinaryData") Pagkatapos

BinaryData = Storage.Get();

BinaryData = Imbakan;

tapusin kung; BinaryData.Write(FileName);

Kung ito ay, halimbawa, isang dokumento ng Word (doc file, o iba pang nakarehistrong uri ng file), maaari itong buksan tulad nito:

LaunchApplication(FileName);

Upang i-clear ang isang field ng uri ng Value Storage, kailangan mong italaga ito na Hindi Natukoy:

PropsStorage = Hindi Natukoy;

Paggawa gamit ang mga file at larawan sa built-in na wika 1C:Enterprise 8

Layunin

Ang pinamamahalaang application ay nagpapatupad ng isang bagong mekanismo para sa pagtatrabaho sa mga file. Nagbibigay ito ng pagpapalitan ng file sa pagitan ng infobase at application ng kliyente. Ang kakaiba ng mekanismong ito ay na ito ay dinisenyo para sa paggamit sa isang manipis na kliyente at isang Web client at idinisenyo na isinasaalang-alang ang mga paghihigpit sa pagtatrabaho sa mga file na ipinataw ng mga Web browser.

Ang mekanismo ay isang hanay ng mga pamamaraan na maaaring magamit upang ilagay ang data na lokal na nakaimbak sa computer ng user sa isang pansamantalang imbakan ng base ng impormasyon, ilipat ang impormasyong ito mula sa pansamantalang imbakan patungo sa database, at matanggap ito pabalik sa computer ng user. Ang pinakakaraniwang mga problema sa aplikasyon na nalutas ng mekanismong ito ay ang pag-iimbak ng kasamang impormasyon, halimbawa, mga larawan ng mga kalakal, mga dokumentong nauugnay sa mga kontrata, atbp.

Saklaw ng Pamamaraan

Pansamantalang imbakan

Ang pansamantalang imbakan ay isang espesyal na lugar ng base ng impormasyon kung saan maaaring ilagay ang binary data. Ang pangunahing layunin ay ang pansamantalang pag-iimbak ng impormasyon sa panahon ng pakikipag-ugnayan ng client-server bago ito mailipat sa database.

Ang pangangailangan para sa pansamantalang imbakan ay lumitaw dahil ang modelo ng pagpapatakbo ng web browser ay nangangailangan na ang pinili ng user na file ay direktang ilipat sa server nang walang posibilidad na iimbak ito sa kliyente. Kapag ang isang file ay inilipat, ito ay inilalagay sa pansamantalang imbakan at pagkatapos ay magagamit kapag nagsusulat ng isang bagay sa database.

Ang pinakakaraniwang gawain ng application na nalutas sa pamamagitan ng pansamantalang imbakan ay ang pagbibigay ng access sa mga file o mga larawan bago ang bagay ay naitala sa base ng impormasyon, halimbawa, sa anyo ng isang elemento.

Ang isang file o binary na data na inilagay sa imbakan ay kinikilala ng isang natatanging address, na maaaring magamit sa ibang pagkakataon sa pagsulat, pagbabasa, o pagtanggal ng mga operasyon. Ang address na ito ay ibinibigay sa pamamagitan ng mga pamamaraan para sa pagsulat ng isang file sa pansamantalang imbakan. Ang isang hiwalay na paraan sa built-in na wika ay nagbibigay-daan sa iyo upang matukoy kung ang ipinasa na address ay isang address na tumuturo sa data sa pansamantalang imbakan.

Batayan ng impormasyon

Ang mekanismo ay nagbibigay-daan sa iyo upang ma-access ang binary data na nakaimbak sa mga katangian ng uri ng Value Storage.

Tulad ng kaso ng pansamantalang imbakan, ang pag-access sa impormasyon ay posible sa pamamagitan ng isang espesyal na address. Makukuha mo ito sa pamamagitan ng isang espesyal na paraan sa pamamagitan ng pagpasa ng link sa isang object o isang information register entry key, at ang pangalan ng attribute. Sa kaso ng isang tabular na bahagi, kinakailangan din na ilipat ang row index ng tabular na bahagi.

Ang mga pamamaraan para sa pagtatrabaho sa mga file ay may mga limitasyon kapag nagtatrabaho sa mga detalye ng infobase. Para sa kanila, hindi tulad ng pansamantalang pag-iimbak, tanging pagbabasa ng impormasyon ang magagamit, ngunit hindi pagsusulat o pagtanggal nito.

Paglalarawan ng mga pamamaraan para sa pagtatrabaho sa mga file

Pag-save ng data sa pansamantalang imbakan

Ang pinakakaraniwang senaryo para sa paggamit ng mekanismong ito ay kinabibilangan ng paunang paglalagay ng data ng user sa pansamantalang imbakan. Mayroong dalawang paraan para dito: PlaceFile() at PlaceFileInTemporaryStorage().

Ang unang paraan, PlaceFile(), ay naglalagay ng file mula sa lokal na file system sa pansamantalang imbakan. Ang pamamaraan ay maaaring tumanggap ng isang target na address sa imbakan. Kung hindi ito tinukoy o isang walang laman na string, isang bagong file ang gagawin at ibabalik ng pamamaraan ang address nito sa pamamagitan ng kaukulang parameter.

Kung True ang parameter na tumutukoy sa interactive na mode ng pagpapatakbo, magpapakita ang paraan ng karaniwang dialog box ng pagpili ng file kung saan maaari kang pumili ng file na ilalagay sa storage. Sa kasong ito, ibabalik din ng pamamaraan ang address ng napiling file.

Bilang resulta, ang pamamaraan ay nagbabalik ng False kung interactive na tumanggi ang user na magsagawa ng operasyon sa dialog ng pagpili ng file. Ang pamamaraan ay magagamit lamang sa kliyente.

Ang pangalawang paraan, PlaceFileInTemporaryStorage(), ay katulad ng nauna, maliban na ito ay magagamit sa server, at ang data na isusulat sa pansamantalang imbakan ay kinakatawan hindi bilang isang landas sa file system, ngunit bilang isang variable ng uri BinaryData. Gayundin, kung walang tinukoy na target na address, isang bagong file ang gagawin sa storage. Ibinalik ang address nito bilang resulta ng function.

Pagkuha ng file mula sa pansamantalang imbakan

Kapag nagsusulat ng isang bagay sa infobase, maaaring kailanganin mong kunin ang data mula sa pansamantalang imbakan at ilagay ito, halimbawa, sa isang katangian. Mayroong katumbas na paraan ng server para dito - GetFileFromTemporaryStorage(). Kinukuha ng paraang ito ang data mula sa pansamantalang imbakan at ibinabalik ito bilang resulta. Upang gawin ito, kailangan mong tukuyin ang address sa pansamantalang imbakan. Ibinabalik ang address na ito ng mga pamamaraang inilarawan sa itaas na PlaceFile() at PlaceFileInTemporaryStorage() kung matagumpay na naisakatuparan ang mga ito.

Pagtanggal ng file mula sa pansamantalang imbakan

Matapos ma-save ang data sa mga detalye, maaaring tanggalin ang file sa pansamantalang imbakan. Para sa layuning ito, mayroong isang paraan na DeleteFileFromTemporaryStorage(), na nagtatanggal ng isang file mula sa pansamantalang imbakan. Kinukuha ng pamamaraan bilang parameter ang address ng isang file sa pansamantalang imbakan. Available sa server.

Sinusuri ang address para sa pansamantalang imbakan

Ang file address ay maaaring magpahiwatig ng parehong pansamantalang imbakan at mga detalye sa infobase. Upang suriin ang uri nito, mayroong isang paraan na This isTemporaryStorageAddress().

Tinitingnan nito na ang ipinasang address ay isang address na tumuturo sa tindahan. Nagbabalik ng True kung tumuturo ang address sa pansamantalang storage. Ang pamamaraan ay magagamit sa server.

Pagtanggap ng props address

Pagkatapos mailagay ang data sa mga detalye sa infobase, maaaring kailanganin mong i-access ito gamit ang mga paraan ng file.

Ngunit bago ka makatanggap ng data, halimbawa mula sa isang property, kailangan mong makuha ang address ng property na ito. Para sa layuning ito, mayroong isang paraan na GetFileAddressInInformationBase().

Ang layunin nito ay ibalik ang file address sa infobase ayon sa orihinal na mga parameter. Upang gawin ito, kailangan mong ipasa ang object key (maaaring ito ay isang link sa object o isang information register entry key) at ang pangalan ng attribute. Kung kailangan mong makuha ang address ng isang file na naka-imbak sa isang tabular na bahagi na katangian, bago ang pangalan ng katangian sa parameter na tumutukoy sa pangalan ng katangian, kailangan mong idagdag ang pangalan ng tabular na bahagi at isang tuldok na ".". Ang pamamaraan ay magagamit sa parehong kliyente at sa server.

Pagkuha ng file mula sa infobase

Ang GetFile() na paraan ay tumatanggap ng file mula sa infobase at ini-save ito sa lokal na file system ng user. Tinutukoy ng unang parameter ang address ng file sa props o pansamantalang imbakan ng file. Tinutukoy ng pangalawang parameter ang patutunguhang lokasyon ng resultang file. Sa non-interactive na mode, dapat mong tukuyin ang path. Sa interactive na mode, opsyonal ang parameter.

Bilang default, ang pamamaraan ay isinasagawa sa interactive na mode, iyon ay, ang huling parameter ay True. Nangangahulugan ito na ang isang dialog box ay ipinapakita kung saan maaari mong tukuyin ang isang aksyon sa natanggap na file: patakbuhin ito o i-save ito sa isang lokasyon na tinukoy ng user. Kung aktibo ang interactive na mode at hindi tinukoy ang parameter ng Target na disk file path, hindi available ang file open operation. Nagbabalik ng boolean value. Ang ibig sabihin ng False ay pinili ng user na kanselahin ang operasyon sa dialog box ng interactive na save file.

Halimbawa ng paggamit ng mga pamamaraan ng file

// Pagtanggap ng file mula sa disk sa interactive na mode // at paglalagay nito sa pansamantalang storage &Sa Pamamaraan ng Kliyente SelectDiskFileAndWrite()

Variable SelectedName; VariableTemporaryStorageAddress; Kung PutFile(TemporaryStorageAddress, SelectedName, True) Pagkatapos Object.FileName = SelectedName; PlaceObjectFile(TemporaryStorageAddress); tapusin kung;

Katapusan ng Pamamaraan

// Pagkopya ng file mula sa pansamantalang imbakan patungo sa isang direktoryo // attribute, pagtatala ng isang bagay, pagtanggal ng file mula sa pansamantalang // storage &Sa Server Procedure Place Object File (Temporary Storage Address)

Elemento ng Direktoryo = Form AttributesValue("Object"); BinaryData = GetFileFromTemporaryStorage(TemporaryStorageAddress); Directory Element.File Data = NewValueStorage(BinaryData); FilePathOnDisk = Bagong File(DirectoryItem.FileName); Directory Item.FileName = FilePathOnDisk.Name; Directory element.Write(); Binago = Mali; DeleteFileFromTemporaryStorage(TemporaryStorageAddress); ValueВFormAttributes(Directory Element, "Object");

Katapusan ng Pamamaraan

// Pagbabasa ng file mula sa props at pag-save nito // sa lokal na disk sa interactive na mode &Sa Pamamaraan ng Kliyente ReadFileAndSaveToDisk()

Address = GetFileAddressInInformationBase(Object.Link, "FileData"); GetFile(Address, Object.FileName, True);

Katapusan ng Pamamaraan

Suporta para sa mga address sa field ng larawan

Sinusuportahan ng kontrol ng Picture Field ang pagpapakita ng larawan na tinukoy ng address ng isang file sa pansamantalang imbakan o sa isang database.

Upang gawin ito, dapat kang magtakda ng katangian ng uri ng string sa property ng Data ng elemento ng form. Ang halaga ng katangiang ito ay bibigyang-kahulugan bilang ang address ng larawan.

Halimbawa // Pagbubuklod ng field ng imahe sa address ng imahe sa pansamantalang // storage. Mga detalye ng AddressPictures ng uri ng string

PlaceFile(PictureAddress,True)

Larawan.Data = AddressPictures

Mga limitasyon kapag nagtatrabaho sa Web client

Ang pagpapatakbo ng inilarawang mekanismo kapag gumagamit ng Web client ay may ilang mga limitasyon. Ang mga paghihigpit na ito ay nauugnay sa modelo ng seguridad ng browser. Kaya, halimbawa, ang kliyente ay hindi maaaring independiyenteng mag-save ng isang file sa lokal na file system, iyon ay, tanging ang interactive na bersyon ng mga pamamaraan ng kliyente na PlaceFile() at GetFile() ang available. Ang isang pagbubukod ay itinapon kapag sinusubukang gumamit ng non-interactive na mode. Ang mga dialog box na lumilitaw nang interactive ay partikular sa uri ng iyong browser.

Mga tampok kapag nagtatrabaho sa Value Storage sa Client

Problema:

Kapag ang isang Dokumento ay may katangian ng uri ng Value Storage sa tabular na seksyon, pinapabagal nito ang pagbubukas ng form ng dokumento kung ang attribute na ito ay naglalaman ng malaking data.

Ipinapalagay na dahilan:

Marahil, kapag binubuksan ang isang form, hindi ang link sa data na matatagpuan sa Value Store ang ipinadala sa kliyente, ngunit ang data mismo.

Solusyon

  • Sa mga katangian ng katangian ng talahanayan ng form mayroong isang flag na "Palaging gamitin". Kung ito ay nakatakda, ang mga nilalaman ng field ay palaging inililipat sa pagitan ng server at ng kliyente - halimbawa, kapag nagbubukas ng isang form. Dapat na hindi pinagana ang flag na ito, ngunit dapat itong isaalang-alang sa code, dahil bilang default ay walang halaga para sa field na ito sa kliyente. Ang isang halimbawa ay makikita sa 1C:Archive.

Mas maganda pang gamitin pansamantalang imbakan para maglipat ng mga file sa pagitan ng client at server.

Na-update ang materyal upang tumugma sa Drupal 8.7.0+

Tindahan ng temp(pansamantalang imbakan) - nagbibigay-daan sa iyong pansamantalang mag-imbak ng anumang data. Isa itong uri ng pag-iimbak ng data sa $_SESSION, dahil karaniwang nauugnay ang storage na ito sa isang partikular na user. Ngunit hindi ito gumagamit ng $_SESSION at iniimbak ang lahat sa loob ng system (sa database).

Ang core ay may dalawang serbisyo para sa pansamantalang storage, tempstore.private at tempstore.shared. Pareho silang gumagana, ngunit ang pribado ay palaging nag-iimbak ng data para sa isang partikular na user. Ibig sabihin, ang pagtawag sa isang key mula sa isang pribadong storage ay magbabalik ng iba't ibang data para sa bawat user. Naa-access ang Shared mula sa bawat user.

Ang saklaw ng aplikasyon ng mga serbisyong ito at ang kanilang imbakan ay maaaring napakalawak. Halimbawa, mag-imbak ng ilang pansamantalang halaga ng mga form, at kung hindi pa nai-save ng user ang mga ito, maaari silang maibalik mula sa storage na ito, halimbawa, para sa ilang REST form, at maging angkop para sa mga regular. Sa pangkalahatan, kung ano ang mayroon kang sapat na imahinasyon o mga gawain para sa. Halimbawa, maaari itong gamitin para sa ilang mga form na kinokontrol sa labas ng Drupal, halimbawa sa React o Vue.

Ang mga value sa mga storage na ito ay live bilang default sa loob ng 604800 segundo (1 linggo), pagkatapos nito ay awtomatikong tatanggalin ang mga ito.

Upang baguhin ang halagang ito. Kakailanganin mong kumonekta, halimbawa, sites/default/services.yml at muling tukuyin ito:

Mga Parameter: # 10 segundo tempstore.expire: 10

Ngunit ito, sa mabuting dahilan, ay hindi dapat mangyari.

Tingnan natin ang mga kakayahan ng bawat storage device; bagama't magkapareho sila, bahagyang naiiba ang mga ito.

tempstore.private - pribadong imbakan

Pribado ang storage na ito para sa bawat user.

tempstore.shared - nakabahaging storage

Ibinabahagi ang storage na ito at maaaring naglalaman ng data na karaniwan sa lahat ng user.

Ang imbakan ay may mga sumusunod na pamamaraan:

  • get($key): Kinukuha ang isang halaga mula sa tindahan sa pamamagitan ng susi nito. Kung walang data, magbabalik ito ng NULL, kung mayroon, magbabalik ito ng isang halaga.
  • getIfOwner($key): Kinukuha ang isang value mula sa store sa pamamagitan ng key nito. Kung walang data o ang data ay hindi isinulat sa ilalim ng kasalukuyang gumagamit, ito ay magbabalik ng NULL, kung mayroon at nakasulat sa ilalim ng kasalukuyang gumagamit, ibabalik nito ang halaga.
  • setIfNotExists($key, $value) : Isinulat ang value na $value sa ilalim ng key na $key sa storage lamang kung kasalukuyang walang data para sa key na iyon. Ibinabalik ang TRUE kung naitala, FALSE kung ang data ay naitala na.
  • setIfOwner($key, $value): Isinulat ang value na $value sa ilalim ng key na $key sa storage lamang kung kasalukuyang walang data o ang may-ari ng aktwal na data ay ang kasalukuyang user.
  • set($key, $value): Isinulat ang value na $value sa ilalim ng key na $key sa storage.
  • getMetadata($key) : Nagbabalik ng metadata para sa isang partikular na $key , nang walang data. Ito ay isang bagay na naglalaman ng ari-arian ng may-ari, na nag-iimbak ng halaga, kung sino ang nagmamay-ari ng halaga, at ang na-update na ari-arian - ang time stamp ng Unix sa oras na isinulat ang halagang ito.
  • delete($key): Tinatanggal ang data na nauugnay sa ibinigay na $key mula sa storage.
  • deleteIfOwner($key): Tinatanggal ang data na nauugnay sa ibinigay na $key mula sa storage, kung ang data ay pagmamay-ari ng kasalukuyang user.

Paano sila tinawag?

Maliit na mga halimbawa kung paano tawagan ang mga ito.

Ang unang hakbang ay upang makuha ang tempstore ng kinakailangang imbakan, pagkatapos ay mula sa imbakan ay nakuha ang isang "koleksyon", kung saan ang data ay nakaimbak na sa ilalim ng mga kinakailangang susi. Bilang isang tuntunin, ang pangalan ng "koleksyon" ay katumbas ng pangalan ng module.

Gumamit ng Drupal\Core\TempStore\PrivateTempStoreFactory; gumamit ng 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");

Halimbawa

Sa halimbawa, gagawa kami ng form sa /temp-store-form page na may dalawang field, ang isa ay mag-iimbak ng mensahe sa pribadong storage, at ang isa pa sa publiko.

Lumikha ng isang form:

Src/FormWithTempStore.php

privateTempStore = $private_temp_store->get("dummy"); $this->sharedTempStore = $shared_temp_store->get("dummy"); ) /** * (@inheritdoc) */ gumawa ng public static function(ContainerInterface $container) ( return new static($container->get("tempstore.private"), $container->get("tempstore.shared") ); ) /** * (@inheritdoc) */ public function getFormId() ( ibalik ang "form_with_temp_store"; ) /** * (@inheritdoc) */ public function buildForm(array $form, FormStateInterface $form_state) ( $form ["private_message"] = [ "#type" => "textarea", "#title" => $this->t("Private message"), "#required" => TRUE, "#description" => $ this->t("Magiging pribado ang value na ito para sa bawat user."), "#default_value" => $this->privateTempStore->get("message"), ]; $form["shared_message"] = [ " #type" => "textarea", "#title" => $this->t("Shared message"), "#required" => TRUE, "#description" => $this->t("This value ibabahagi para sa lahat ng user."), "#default_value" => $this->sharedTempStore->get("message"), ]; $form["actions"] = ["#type" => "actions" $form["actions"]["submit"] = [ "#type" => "submit", "#value" => $this->t("Save"), ]; ibalik ang $form; ) /** * (@inheritdoc) */ public function submitForm(array &$form, FormStateInterface $form_state) ( $this->privateTempStore->set("message", $form_state->getValue("private_message")); $this->sharedTempStore->set("message", $form_state->getValue("shared_message")); ) )

I-print (Ctrl+P)

Ang 1C:Enterprise ay may mekanismo para sa pagtatrabaho sa pansamantalang storage na nagbibigay ng storage ng ilang data na nauugnay sa session.
Bilang karagdagan, ang isang mekanismo para sa pagtatrabaho sa mga file ay ipinatupad, na nagsisiguro sa pagpapalitan ng mga file sa pagitan ng infobase at application ng kliyente. Ang kakaiba ng mekanismong ito ay na ito ay dinisenyo para sa paggamit sa isang manipis na kliyente at isang web client at idinisenyo na isinasaalang-alang ang mga paghihigpit sa pagtatrabaho sa mga file na ipinataw ng mga web browser.

Pansamantalang imbakan

Ito ay isang espesyal na tindahan ng impormasyon kung saan maaaring ilagay ang isang halaga. Ang pangunahing layunin ay ang pansamantalang pag-iimbak ng impormasyon sa panahon ng pakikipag-ugnayan ng client-server bago ito mailipat sa database. Ang mekanismo ng pansamantalang imbakan, kasama ang mekanismo ng paghawak ng file, ay nagbibigay ng isang set na maaaring magamit upang ilagay ang data na lokal na nakaimbak sa computer ng gumagamit sa pansamantalang imbakan ng base ng impormasyon, ilipat ang impormasyong ito mula sa pansamantalang imbakan patungo sa database, at makakuha ng pabalik ito sa computer ng gumagamit. Ang pinakakaraniwang mga problema sa aplikasyon na nalutas ng mga mekanismong ito ay ang pag-iimbak ng kasamang impormasyon, halimbawa, mga larawan ng mga kalakal, mga dokumento na may kaugnayan sa mga kontrata, atbp. Ang mga mekanismo para sa pansamantalang pag-iimbak at pagtatrabaho sa mga file ay kadalasang ginagamit nang magkasama, ngunit maaari ding gamitin nang hiwalay.
Ang pangangailangan para sa pansamantalang imbakan ay lumitaw, halimbawa, dahil ang modelo ng web browser ay nangangailangan na ang isang pinili ng user na file ay direktang ilipat sa server nang walang kakayahang iimbak ito sa kliyente. Kapag ang isang file ay inilipat, ito ay inilalagay sa pansamantalang imbakan at pagkatapos ay magagamit kapag nagsusulat ng isang bagay sa database.
Maaari mong gamitin ang pansamantalang storage bilang isang unibersal na storage na may kontroladong buhay ng data:

1. Kung, kapag naglalagay ng data sa pansamantalang imbakan, ang data ay nakatali sa isang tiyak na anyo, kung gayon ang buhay ng nakaimbak na data ay nakasalalay sa pag-asa sa buhay ng form kung saan nakatali ang data. Kapag nagtanggal ka ng isang form object, ang pansamantalang storage ay iki-clear ng lahat ng impormasyong nauugnay dito.

2. Kung, kapag naglalagay ng data sa pansamantalang imbakan, ang pagbubuklod sa form ay hindi nakumpleto, ang pansamantalang imbakan ay iki-clear sa mga sumusunod na kaso:

  • Sa susunod na hihilingin mo ang form.
  • Sa susunod na tawag ng server mula sa karaniwang module ng kliyente.
  • Para sa contextual at non-contextual client na tawag mula sa form.
  • Kapag tinawag na server-side mula sa isang command module. Kung ang isang tawag sa server ay ginawa upang maglagay ng halaga sa pansamantalang imbakan, walang paglilinis na isinasagawa. Nagaganap ang paglilinis pagkatapos makumpleto ng tawag ang gawain nito.

Iyon ay, maaari kang maglagay ng isa o higit pang mga halaga sa pansamantalang imbakan, at gamitin ang halagang ito sa susunod na tawag. Gayunpaman, pagkatapos gamitin at bago makumpleto ang tawag sa server, awtomatikong aalisin ang inilagay na halaga.

Ang pinakakaraniwang problema sa application na nalutas sa pamamagitan ng pansamantalang imbakan ay ang pagbibigay ng access sa mga file o larawan bago maitala ang bagay sa base ng impormasyon, halimbawa, sa anyo ng isang elemento. Kapag nag-aayos ng naturang pag-access, inirerekumenda na ilipat ang data mula sa mga computer ng kliyente patungo sa server nang eksakto tulad ng mga file, nang walang paunang "conversion" sa isang dokumento ng teksto, dokumento ng spreadsheet at mga katulad na format ng 1C:Enterprise system. Inirerekomenda na ilipat ang file sa gilid ng server at, sa gilid ng server, i-load ang data ng file sa nais
format ng 1C:Enterprise system.
Ang data na inilagay sa imbakan ay nakikilala sa pamamagitan ng isang natatanging address, na maaaring magamit sa ibang pagkakataon sa pagsulat, pagbabasa o pagtanggal ng mga operasyon. Ang address na ito ay ibinibigay sa pamamagitan ng mga pamamaraan para sa pagsulat ng isang halaga sa pansamantalang imbakan. Ang isang hiwalay na paraan sa built-in na wika ay nagbibigay-daan sa iyo upang matukoy kung ang ipinasa na address ay isang address na tumuturo sa data sa pansamantalang imbakan.
Ang pansamantalang storage na ginawa sa isang session ay hindi naa-access mula sa isa pang session. Ang isang pagbubukod ay ang kakayahang maglipat ng data mula sa isang background na trabaho sa session na nagpasimula ng background na trabaho gamit ang pansamantalang storage.

Burty . Ang pinaka-katanggap-tanggap na paraan upang mag-imbak ng patatas, ugat na gulay at puting repolyo ay bottling. Ang pile ay isang pahaba na pilapil, na nakahilig sa magkabilang panig, at natatakpan ng insulating material sa itaas. Ito ay ginawa upang iimbak ang ani para sa isang panahon. Ang mga burts ay maaaring giling, kapag ang mga patatas ay ibinuhos sa isang patag na ibabaw, at semi-ground, kapag ang mga mababaw na hukay ay hinukay. Popunautny (nalibing) pile. Para sa naturang tumpok, ang isang hukay na may lalim na 25 cm ay hinuhukay sa direksyon mula hilaga hanggang timog. Ang pinakamainam na lapad ng hukay para sa mga buto ng patatas ay 170-200 cm. Para sa panandaliang pag-iimbak ng malusog na patatas, maaari kang gumawa isang mas malawak na pilapil (hanggang 4 m). Ang haba ng hukay ay maaaring maging di-makatwiran, ngunit, gayunpaman, ito ay mas mahusay kapag ito ay hindi hihigit sa 20-25 m Ang taas ng dike ng pile, na may lapad nito sa base na 2 m, ay maaaring 90- 100 cm Karaniwan, ang mga patatas ay iniimbak sa ilang mga tambak sa isang site. Ang lugar ng pagbabarena ay inilalagay malapit sa mga lugar na nagtatanim ng patatas sa isang lugar na hindi binabaha ng ulan at natutunaw na tubig, hindi kalayuan sa kalsada. Ang isang ventilation duct na 20-25 cm ang lapad at malalim ay hinuhukay sa kahabaan ng gitnang axis ng hukay. Ito ay umaabot sa kabila ng hukay at 25 cm ang haba kaysa sa takip sa dulo ng kwelyo. Ang bahagi ng channel na lumalampas sa mga hangganan ng hukay ay mahigpit na natatakpan ng mga tabla sa itaas upang walang lupa na makapasok sa hukay at sa channel. Sa ground collars, ang ventilation duct ay direktang inilalagay sa ibabaw ng lupa at ginawa sa anyo ng isang sala-sala na tolda na binubuo ng hiwalay na isa at kalahating metrong seksyon. Upang maiwasan ang dayami at lupa na makapasok sa duct ng bentilasyon, ang mga dulo nito ay ginawa nang walang mga puwang. Upang masakop ang mga duct ng bentilasyon, ang mga seksyon ng sala-sala na 1.5 m ang haba at 0.5 m ang lapad ay inihanda nang maaga. Ang seksyon ay binubuo ng mga slats na 2-3 cm ang lapad at mga puwang sa pagitan ng mga ito 2-2.5 cm. Ang mga seksyon ay inilalagay sa ventilation duct at ikinakabit sa isa't isa. Ang nagreresultang tuluy-tuloy na ventilation grille ay sumasakop sa bahagi ng channel na matatagpuan sa ilalim ng produkto. Sa panahon ng pagbuo ng isang tambak ng patatas o iba pang mga produkto, isang collar thermometer o espesyal na ginawang tetrahedral tube-cases na may panloob na cross-section na 3x3 cm ay inilalagay sa loob, kung saan ang mga thermometer ay ipinasok sa dulo ng baras. Ang mga kwelyo ay maaliwalas sa pamamagitan ng isang tagaytay at isang tubo ng bentilasyon. Ang mga tambak ay natatakpan ng dayami at lupa. Ang full-thickness na dayami ay inilalagay sa isang siksik na layer mula sa ibaba hanggang sa itaas upang ang tuktok ng tumpok ay magkakapatong. Pagkatapos nito, ang pile ay iwiwisik ng isang manipis na layer ng lupa sa mga gilid. Ang tagaytay ng tumpok ay nananatili sa ilalim ng dayami na takip hanggang sa unang hamog na nagyelo. Sa tag-ulan, ito ay pansamantalang natatakpan ng bubong na nadama o plastic film. Kapag pinalamig ang mga patatas sa +4 ° C bago ang simula ng matatag na frosts, ang mga duct ng bentilasyon ay mahigpit na natatakpan ng dayami, at ang tumpok ay ganap na natatakpan ng lupa. Kung ang temperatura sa mga tambak ay bumaba sa ibaba +1°C, ang mga tambak ay karagdagang natatakpan ng mga materyales sa init-insulating - pit, dayami, dayami na pataba o niyebe. Sa kaso ng malakas na pag-ulan ng niyebe, na humahantong sa labis na takip ng mga tambak, sila ay pana-panahong inaalis ng niyebe.

Imbakan ng trench . Ang paraan ng pag-iimbak na ito ay nangangailangan ng 2 beses na mas kaunting dayami o iba pang materyales na nakakapag-init ng init kaysa kapag iniimbak sa mga tambak. Ginagamit ang mga kanal kapag malalim ang tubig sa lupa. Ang lalim at lapad ng trench ay mula 60-80 cm (sa timog na mga rehiyon) hanggang 1.5-2 m (sa Siberia). Ang mga trenches ay natatakpan ng isang layer ng dayami sa itaas: sa gitnang mga rehiyon ito ay 30-40 cm, sa Siberia - hanggang sa 70 cm Pagkatapos ay ibuhos ang isang layer ng lupa (mula 40 hanggang 70 cm depende sa zone). Karaniwan, ang iba't ibang uri ng trenches ay ginagamit: mababaw, malalim na may mga duct ng bentilasyon, na may isang layer ng lupa at walang isang layer, at ordinaryong. Ang mga trench at tambak ay nilagyan ng (natural) simpleng bentilasyon. Ang pangunahing layunin nito ay paglamig ng patatas at gulay sa taglagas. Ang prinsipyo ng pagpapatakbo ng supply at exhaust ventilation ay batay sa pagkakaiba sa presyon ng hangin, i.e. sa draft ng paggalaw ng hangin paitaas dahil sa pagkakaiba sa temperatura sa stack ng mga produkto at sa labas. Ang mainit na hangin, na mas magaan, ay umaalis sa tambutso, at ang malamig na hangin ay pumapasok sa pamamagitan ng supply duct. Ang sistema ng bentilasyon ay binubuo ng mga supply at exhaust duct. Ang inlet channel ay tumatakbo sa gitna ng base ng collar; may mga labasan sa labas sa mga dulo ng dulo. Sa mga tambak na may patatas at ugat na gulay, gumawa sila ng isang uka na may cross-section na 20x20 cm o 30x30 cm, na natatakpan ng mga lattice board, transverse slats o brushwood, upang ang mga indibidwal na kopya ng produkto ay hindi mahulog. Sa pamamagitan ng channel na ito, ang mas malamig na hangin sa labas ay dumadaloy sa stack sa pamamagitan ng gravity. Ang pinainit na hangin mula sa stack ay inalis sa pamamagitan ng mga duct ng tambutso (mga tubo). Ang mga ito ay mga tetrahedral box na gawa sa mga board na may cross-section na 20x20 cm o 15x15 cm.Sa ibabang bahagi, na dumadaan sa layer ng mga gulay, sila ay ginawang sala-sala, at sa itaas na bahagi, na dumadaan sa kanlungan, sila ay solid. upang ang lupa ay hindi mahulog sa kanila. Ang isang canopy ay naka-install sa ibabaw ng mga ito upang maprotektahan ang mga produkto mula sa tubig-ulan. Ang mga tubo ng tambutso, depende sa mga katangian at kalidad ng mga gulay na nakaimbak para sa imbakan, ay naka-install bawat 2-4 m kasama ang haba ng pile. Ang isa sa mga disadvantages ng vertical exhaust pipe ay ang mainit at mahalumigmig na hangin ay inalis lamang mula sa mga katabing lugar ng stack, at ang mga malalayong lugar ay halos hindi pinalamig. Ang tubig ay dumadaloy malapit sa mga tubo ng tambutso, pinapawisan at nagyeyelo ang mga produkto, dahil dito ang kanlungan ay hindi gaanong siksik at maaasahan. Samakatuwid, ginagamit ang ridge exhaust ventilation. Kapag nag-iimbak ng mga gulay sa tuyo, malamig na panahon, ang tuktok ng trench ay natatakpan lamang ng dayami, kung saan inaalis ang mainit na hangin. Gayunpaman, ang mga ganitong kondisyon ay bihira; ang panahon ay madalas na maulan sa taglagas. Sa ganitong mga kaso, ang isang pahalang na exhaust duct ay naka-install - ang mga board ay pinagsama sa isang anggulo ng 90 °, na inilalagay sa isang stack ng mga gulay na may isang exit sa mga dulo sa labas. Sa kasong ito, ang trench sa kahabaan ng tagaytay ay maaaring agad na sakop ng dayami at lupa, nang walang takot na mabasa ang dayami at ang produkto ay nagyeyelo. Kailangan mo lamang isara ang mga butas sa dulo sa oras. Ang bentahe ng isang pahalang na ridge exhaust duct sa mga vertical exhaust ventilation pipe ay din na sa kasong ito ang mainit at basa-basa na hangin ay inalis nang pantay-pantay mula sa buong stack ng mga produkto.

Pit. Ang pinakasimpleng imbakan ay isang earthen pit - inilaan para sa pag-iimbak, kadalasan, isang maliit na batch ng patatas, at paminsan-minsan ang mga pananim na ugat. Ito ay hinuhukay sa isang matataas na lugar na may mababang antas ng tubig sa lupa. Depende sa density ng lupa, ito ay hinukay na may tuwid o hilig na mga dingding. Ang pinaka-katanggap-tanggap na hugis ng hukay ay bilog, gayunpaman, kung minsan sila ay ginawang hugis-parihaba. Ang isang butas ay hinuhukay sa siksik na luad na lupa, na hugis tulad ng isang pitsel. Hindi inirerekomenda na gawin ito sa mabuhangin na lupa, dahil ito ay babagsak. Naghukay sila ng isang butas tulad ng sumusunod: gumuhit ng isang bilog na may diameter na 1 m at humukay sa leeg ng pitsel, pagkatapos, paghuhukay ng mas malalim, unti-unting palawakin ang butas sa lapad na 2-2.5 m ang lapad. Ang lalim ng pit-jug ay dapat na 1.5-2 m. Upang maiwasan ang matunaw na tubig mula sa pagpasok sa hukay, isang roller ng inalis na luad ay inilatag sa paligid ng pagbubukas ng leeg. Ang nasabing pasilidad ng pag-iimbak ay natatakpan ng isang takip na inilagay sa isang dalisdis upang payagan ang tubig-ulan na gumulong. Ang isang mahusay na ginawa na pit jug ay tumatagal ng 30-40 taon nang hindi naayos. Sa taglamig, ito ay magpapanatili ng isang mas pare-pareho ang temperatura at halumigmig kaysa sa isang regular na basement. Ang mga patatas sa naturang hukay ay hindi pawis at hindi tumubo nang mahabang panahon. Ang mga patatas ay nakaimbak sa maliliit na hukay na walang bentilasyon. Sa mga malalaki, ang isang tubo ng bentilasyon ay naka-install mula sa mga board o apat na stake na itinutulak sa ilalim ng hukay at nakabalot ng isang straw cord. Ang mga patatas ay ibinababa sa butas gamit ang isang balde. Dalawang lubid ang nakatali sa balde: ang isa sa hawakan, at ang isa sa ibaba. Matapos maabot ng balde ang sahig, hilahin ang lubid na nakakabit sa ilalim. Kasabay nito, ang mga tip sa balde at ang mga patatas ay tumalsik. Ang mga tuber ay hindi nasaktan sa ganitong paraan ng backfilling. Matapos punan ang pit-jug ng patatas, ang leeg ay sarado na may dayami at isang takip. Sa unang dalawang linggo, ang mga patatas ay naglalabas ng maraming kahalumigmigan kapag sila ay huminga, kaya ang layer ng dayami ay hindi dapat maging makapal. Mamaya, ang layer ay nababagay sa 50-70 cm, depende sa mga lokal na kondisyon ng taglamig.

I-print (Ctrl+P)

Inilalarawan ng seksyong ito ang pinakakaraniwang paggamit ng mekanismo para sa pagtatrabaho sa pansamantalang imbakan at mga file.

Pag-save ng data mula sa isang file patungo sa pansamantalang imbakan

Paglalagay ng isang file

Ang paraan ng PlaceFile() ay naglalagay ng file mula sa lokal na file system sa pansamantalang imbakan. Ang pamamaraan ay maaaring tumanggap ng isang address sa pansamantalang imbakan kung saan dapat i-save ang file. Kung ang address ay hindi tinukoy o isang walang laman na string, pagkatapos ay isang bagong address ay gagawin at ang pamamaraan ay ibabalik ito sa pamamagitan ng isang espesyal na parameter.
Tandaan. Ang dami ng data na inilipat sa pagitan ng kliyente at server sa isang tawag sa paraan ng PutFile().
Kung True ang parameter na tumutukoy sa interactive na mode ng pagpapatakbo, magpapakita ang paraan ng karaniwang dialog box ng pagpili ng file kung saan maaari kang pumili ng file na ilalagay sa storage. Sa kasong ito, ibabalik din ng pamamaraan ang address ng napiling file.
Bilang resulta, ang pamamaraan ay nagbabalik ng False kung interactive na tumanggi ang user na magsagawa ng operasyon sa dialog ng pagpili ng file.

Paglalagay ng isang hanay ng mga file

Pamamaraan PlaceFiles() naglalagay ng maraming file sa pansamantalang imbakan sa isang tawag. Mayroong ilang iba't ibang paraan upang gamitin ang pamamaraang ito:
● pre-bumuo ng listahan ng mga file na idaragdag, halimbawa, kapag pinili mo dati ang mga file na kailangang ilagay sa base ng impormasyon;
● ipasa ang isang file search mask sa paraan, halimbawa, kapag nais mong ilagay ang lahat ng mga file ng isang tiyak na uri, halimbawa, lahat ng mga larawan, sa database ng impormasyon;
● ipasa ang dati nang inihanda na bagay sa pamamaraan Dialog ng Pagpili ng File sa file opening mode.
Matapos tapusin ang trabaho nito, maaaring ibalik ng pamamaraan ang isang listahan ng mga aktwal na idinagdag na file.

// FileList – katangian ng anyo ng uri ng ValueList,
// na naglalaman ng listahan ng mga idinagdag na file
FileArray = Bagong Array;
Para sa bawat Elemento ng Listahan mula sa Ikot ng Listahan ng mga File
FileArray.Add(NewDescriptionofTransferFile(ListElement,));
EndCycle;
PlacedFiles= Bagong Array;
Resulta = PlaceFiles(ArrayFiles, PlacedFiles, False, UniqueIdentifier);

Tandaan 1: Upang gamitin ang pamamaraan PlaceFiles() Ang web client ay nangangailangan ng koneksyon ng isang file processing extension.
Tandaan 2: Dami ng data na inilipat sa pagitan ng client at server sa bawat method call PlaceFiles(), hindi dapat lumampas sa 4 Gb (sa serialized form).

Paglalagay ng data sa pansamantalang imbakan

Ang pamamaraan ay katulad ng PlaceFile() na paraan, maliban na ang data na isusulat sa pansamantalang imbakan
ay hindi kinakatawan bilang isang landas sa file system, ngunit bilang isang halaga. Gayundin, kung walang kasalukuyang address na tinukoy sa pansamantalang imbakan, isang bagong address ang gagawin. Ibinalik ang address bilang resulta ng function. Tulad ng sa mga file, ang naka-post na data ay dapat na kabilang sa ilang form at awtomatikong tatanggalin pagkatapos itong matanggal.
Tandaan. Dami ng data na inilipat sa pagitan ng client at server sa bawat method call PlaceInTemporaryStorage(), hindi dapat lumampas sa 4 Gb (sa serialized form).
Pansin! Kapag inilagay sa pansamantalang imbakan, ang halaga ay hindi aktwal na serialized. Ang isang reference sa halaga ay inilalagay at naka-imbak sa cache sa loob ng 20 minuto. Pagkatapos ng panahong ito, ang value ay serialized, nakasulat sa disk (session data storage), at inalis mula sa cache.

Pagkuha ng data mula sa pansamantalang imbakan

Kapag nagsusulat ng isang bagay sa isang infobase, maaaring kailanganin mong kunin ang data mula sa pansamantalang imbakan at ilagay ito, halimbawa, sa isang katangian ng bagay na infobase. Mayroong isang espesyal na paraan para dito - GetFromTemporaryStorage(). Kinukuha ng pamamaraang ito ang data mula sa pansamantalang imbakan at ibinabalik ito bilang resulta ng pagpapatupad. Upang makatanggap ng data, dapat mong ipahiwatig ang address sa pansamantala
imbakan. Ibinabalik ang address na ito sa pamamagitan ng mga pamamaraan para sa paglalagay ng data sa pansamantalang imbakan kung matagumpay ang mga ito (tingnan ang mga nakaraang seksyon).
Pansin! Kapag kumukuha ng halaga mula sa pansamantalang imbakan sa server, dapat mong isaalang-alang na ito ay nakuha sa pamamagitan ng sanggunian. Sa katotohanan, ang link na ito ay tumuturo sa isang halaga na nakaimbak sa cache. Sa loob ng 20 minuto, mula sa sandaling ito ay inilagay sa imbakan o mula sa sandaling ito ay huling na-access, ang halaga ay maiimbak sa cache, at pagkatapos ay isusulat sa disk at tatanggalin mula sa cache. Sa susunod na ma-access ang halaga, ito ay na-load mula sa disk at ibinalik sa cache.
Pagkatapos ng deserialization at pagpapanumbalik ng mga halaga mula sa pansamantalang imbakan, ang mga sanggunian ay hindi naibalik. Ang halaga ng cache ay naibalik mula sa disk. Ngunit pagkatapos ng serialization/deserialization, imposibleng maibalik ang mga sanggunian sa iba pang mga bagay sa loob ng halaga.

Pagtanggal ng data mula sa pansamantalang imbakan

Pagkatapos ma-save ang data sa attribute ng infobase object, maaaring tanggalin ang data sa pansamantalang storage. May paraan para dito
RemoveFromTemporaryStorage(), na nagsasagawa ng pagtanggal. Ang pamamaraan ay tumatagal ng isang address sa pansamantalang imbakan bilang isang parameter.

Sinusuri ang address para sa pansamantalang imbakan

Maaaring ipahiwatig ng address ang parehong pansamantalang imbakan at mga detalye sa base ng impormasyon. Mayroong isang paraan upang suriin ang uri nito
Ito ayTemporaryStorageAddress(). Tinitingnan nito na ang ipinasang address ay isang address na tumuturo sa tindahan. Nagbabalik ng True kung tumuturo ang address sa pansamantalang storage.

Pagtanggap ng props address

Pagkatapos mailagay ang data sa attribute ng infobase object, maaaring kailanganin mong i-access ito gamit ang mga paraan ng file.
Ngunit bago ka makatanggap ng data, halimbawa mula sa isang property, kailangan mong makuha ang address ng property na ito. May paraan para dito GetNavigationLink().

Maaari nitong ibalik ang address ng value sa infobase batay sa orihinal na mga parameter. Upang gawin ito, kailangan mong ipasa ang object key (maaaring ito ay
parehong link sa object at entry key ng information register) at ang pangalan ng attribute. Kung kailangan mong makuha ang address ng value na nakaimbak sa attribute
tabular na bahagi, pagkatapos ay sa pangalan ng katangian sa parameter na tumutukoy sa pangalan ng katangian, dapat mong idagdag ang pangalan ng tabular na bahagi at isang tuldok na ".". Halimbawa: Mga Produkto.Larawan

Pagkuha ng file mula sa infobase

Pagtanggap ng isang file

Ang GetFile() na paraan ay tumatanggap ng file mula sa infobase at ini-save ito sa lokal na file system ng user. Ang unang parameter ay tumutukoy sa file address sa infobase object attribute o sa pansamantalang imbakan ng file. Hindi magaganap ang pag-save kung walang karapatan ang View sa mga detalye ng object ng infobase ang user kung kanino ginawa ang operasyon. Tinutukoy ng pangalawang parameter ang lokasyon kung saan nai-save ang resultang file. Sa non-interactive na mode, dapat mong tukuyin ang path. Sa interactive na mode ang parameter ay
opsyonal.
Bilang default, ang pamamaraan ay interactive na isinasagawa. Nangangahulugan ito na bubuo ang isang dialog box kung saan maaari mong tukuyin ang isang aksyon kasama ang natanggap na file: patakbuhin ito o i-save ito sa isang lokasyon na tinukoy ng user sa file system. Kung napili ang interactive na mode at hindi tinukoy ang opsyon sa Pangalan ng file, hindi available ang operasyon ng pagbukas ng file. Ang pamamaraan ay nagbabalik ng isang Boolean na halaga. Ang ibig sabihin ng False ay pinili ng user na kanselahin ang operasyon sa dialog box ng interactive na save file.

Pagtanggap ng isang hanay ng mga file

Ang GetFiles() method ay nagbibigay-daan sa iyo na makatanggap at mag-save ng ilang file na nakaimbak sa infobase sa lokal na file system ng user. Ang listahan ng mga na-upload na file ay ipinasa bilang isang parameter.

// FileList – isang listahan ng mga halaga na naglalaman ng mga link sa mga elemento
// direktoryo kung saan matatagpuan ang mga na-upload na file
// Ang listahan ng mga value na representasyon ay ang pangalan ng file na ina-upload
FileArray = Bagong Array;
Para sa bawat Elemento ng Listahan mula sa Ikot ng Listahan ng mga File
File = Bago File(String(ListElement.Value));
ReceiveFile = Bago Paglalarawan ng ipinadala na file;
ReceiveFile.Name = ListElement.View;
ReceiveFile.Storage= P getNavigationLink(ListItem.Value, “Data”);
FileArray.Add(ReceivingFile);
EndCycle;
Mga Natanggap na File= Bagong Array;
Resulta = ReceiveFiles(FilesArray, ReceivedFiles, UploadedFilesPath, False);
Kung HINDI Resulta Pagkatapos
Mensahe = Bago Mensahe sa User;
Mensahe.Text = “Error sa pagtanggap ng mga file!”;
Message.Message();
Tapusin kung ;

Pagkatapos ng pagtatapos, ang pamamaraan ay maaaring magbalik ng isang listahan ng aktwal na na-download na mga file, na nagpapahiwatig ng buong pangalan ng bawat naka-save na file.
TANDAAN. Upang magamit ang pamamaraang GetFiles() sa web client, kailangan mong ikonekta ang extension ng file. Kung ang property Object name Paglalarawan ng ipinadalang file naglalaman ng ganap na landas sa file, ang file ay ise-save sa path na ito, anuman ang parameter Lokasyon ng File.
Ang parameter ng Lokasyon ng File ay maaaring alinman sa isang path sa lokal na file system o isang object ng File Selection Dialog sa mode ng pagpili ng isang direktoryo o pag-save ng mga file. Kung ang halaga ng parameter Lokasyon ng File bagay na tinukoy Dialog ng Pagpili ng File nasa mode
nagse-save ng mga file, pagkatapos ay:

● tatawagin ang dialog para sa bawat nailipat na file, maliban sa mga file na iyon kung saan ang katangian ng pangalan ng object name na Ipinadala ng File ay naglalaman ng ganap na landas;
● ang halaga ng bagay na Pangalan ng Paglalarawan ng katangian ng Ipinadalang File ay gagamitin bilang paunang pangalan ng file sa dialog;
● kung ang pagtanggi sa pag-save ay pinili para sa anumang file, kung gayon ang Pangalan ng bagay na Paglalarawan ng katangian ng Inilipat na File ay maglalaman ng walang laman na string;
● ang GetFiles() method ay magbabalik ng value na True kung kahit isang file ay matagumpay na natanggap;
● dapat itong isaalang-alang na ang mga file ay aktwal na natanggap pagkatapos sagutin ng user ang mga tanong tungkol sa pagtukoy ng pangalan at landas
lahat ng natanggap na mga file;
● kung ang user sa ngalan kung saan ang GetFile() na paraan ay pinaandar ay walang karapatan sa View sa kahit isang attribute ng infobase object kung saan kinukuha ang mga file, ang buong operasyon ay mabibigo.
Halimbawa:

TransferredFiles = Bagong Array;
Paglalarawan = Bago Paglalarawan ng ipinadalang file(“Paglalarawan”, FileAddress);
Mga Inilipat na File.Idagdag(Paglalarawan );
FileSelect = Bago FileSelectionDialog(FileSelectionDialogMode.Save);
FileSelect.Header= "I-save ang archive";
Pagpili ng File. Extension= "zip";
FileSelect.Filter= “Archive(*.zip)|*.zip|Lahat ng file|*.*”;
FileSelect.FilterIndex = 0;
ReceiveFiles(TransferFiles, SelectFile, False);

Kung ang interactive na mode para sa pagpili ng direktoryo para sa pag-save ng mga file ay napili, ang web client ay hihingi din ng pahintulot na mag-save ng mga file na tinukoy na may ganap na mga landas. Sa kaso ng hindi interactive na pag-save (ang path sa direktoryo ay tinukoy sa kaukulang parameter), ang kahilingan ay isasagawa para sa buong listahan ng mga naka-save na file.

Halimbawa ng paggamit ng mga pamamaraan ng file

// Pagkuha ng file mula sa disk nang interactive
// at ilagay ito sa pansamantalang imbakan.
&OnClient
Pamamaraan SelectDiskFileIWrite()
Variable SelectedName;
Perem TemporaryStorageAddress;
NewObject = Object.Link.Empty();
Kung PlaceFile(TemporaryStorageAddress, "", SelectedName, True) Pagkatapos
Object.FileName = SelectedName;
PlaceObjectFile(TemporaryStorageAddress);
tapusin kung;
Katapusan ng Pamamaraan
// Pagkopya ng file mula sa pansamantalang imbakan patungo sa props
// direktoryo, pagsulat ng isang bagay, pagtanggal ng isang file mula sa pansamantalang
// imbakan.
&Sa server
Pamamaraan PlaceObjectFile(TemporaryStorageAddress)
Elemento ng Direktoryo = Form AttributesValue("Object");
BinaryData = GetFromTemporaryStorage(TemporaryStorageAddress);
Elemento ng Direktoryo.Data ng File= Bago StorageValues(BinaryData, NewDataCompression());
File = Bago File(Item ng Direktoryo.FileName);
Directory Item.FileName = File.Name;
Directory element.Write();
Binago = Mali;
DeleteFromTemporaryStorage(TemporaryStorageAddress);
ValueВFormAttributes(Directory Element, “Object”);
Katapusan ng Pamamaraan
// Basahin ang file mula sa props at i-save ito
// sa lokal na disk sa interactive na mode.
&OnClient
Pamamaraan ReadFileAndSaveToDisk()
Address = GetNavigationLink(Object.Link,"FileData");
GetFile(Address, Object.FileName, True);
Katapusan ng Pamamaraan

Pahintulot na magsagawa ng pangkat ng mga pagpapatakbo ng file

Kapag nagsasagawa ng ilang operasyon sa web client, maaaring kailanganin mong kumuha ng pahintulot para sa maramihang pagpapatakbo ng file.
Halimbawa, kailangan mong kumuha ng dokumento mula sa isang infobase at pagkatapos ay buksan ang naka-save na dokumento gamit ang nauugnay na application.
Upang maisagawa ang operasyong ito, kakailanganin mong sagutin ang tanong tungkol sa pag-save ng dokumento at ang tanong tungkol sa pangangailangang patakbuhin ito. Kung mayroong higit pang mga operasyon, ang gumagamit ay magkakaroon din ng higit pang mga katanungan.
Upang bawasan ang bilang ng mga tanong, maaari mong gamitin ang pamamaraan. Kapag ginagamit ang pamamaraang ito
Ang user ay ipinapakita ng isang listahan ng lahat ng mga operasyon na binalak na isagawa at hinihiling na payagan ang pangkat ng mga operasyon na maisagawa. Kung pinahintulutan ng user ang pagpapatupad, ang mga hiniling na operasyon ay isasagawa nang walang karagdagang mga kahilingan sa user. Kung hindi ibinigay ang pahintulot, magpapatuloy ang mga operasyon gaya ng normal: isang kahilingan sa bawat operasyon.
TANDAAN. Upang gamitin ang pamamaraan RequestUserPermission() Sa web client kailangan mong paganahin ang file management extension.
Tingnan natin ang isang halimbawa ng paggamit ng pamamaraan:

Kung ConnectExtensionWorking With Files() Pagkatapos
Link = GetNavigationLink(Object.Link, “FileData”);
// Pagbubuo ng isang paglalarawan ng mga inilipat na file (sa kasong ito mayroon lamang isang file)
Mga Inilipat na File= Bagong Array;
Paglalarawan = Bagong Paglalarawan ng Inilipat na File (Object. FileName, Link);
TransferredFiles.Add(Description);
// Maghanda ng isang bagay upang makatanggap ng impormasyon tungkol sa mga natanggap na file
Mga Inilipat na File= Bagong Array;

// Tukuyin ang iba pang mga parameter ng pamamaraan
DirectorySave= “c:\temp”;
Interactive = Mali ;
Ipinadala ang FileName = Pag-save ng Direktoryo + "\" + Object.FileName;
// Maghanda ng paglalarawan ng mga pamamaraan para sa pagkuha ng mga pahintulot
Paraan = Bagong Array;

Methods.Add("GetFiles");
Methods.Add(TransferFiles);
Methods.Add(TransferredFiles);
Methods.Add(SaveDirectory);
Methods.Add(Interactive);
Methods.Add(Bagong Array);
Methods.Add("RunApplication");
Methods.Add(TransferredFileName);
Kung hindi RequestUserPermission(Mga Paraan) Pagkatapos
Babala("Ang gumagamit ay tinanggihan ang pahintulot.");
Bumalik;
tapusin kung;
GetFiles(TransferFiles, TransmittedFiles, SavingDirectory, Interactive);
RunApplication(TransferredFileName);
Kung hindi
Babala("Hindi suportado ang pagpapatupad. Hindi naka-install ang extension ng file.");
tapusin kung;

Ang ilang mga tampok ng pamamaraan ay dapat tandaan RequestUserPermission().

1. Ang pahintulot ay hinihiling lamang para sa mga sumusunod na pamamaraan:

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

2. Hinihiling ang pahintulot para sa isang partikular na hanay ng mga parameter ng pamamaraan. Kung, sa panahon ng aktwal na pagpapatupad ng isang paraan ng pagmamanipula ng file, ang mga halaga ng parameter ay naiiba mula sa kung saan nakuha ang pahintulot, ang pahintulot na ito ay hindi magiging wasto at ang user ay makakatanggap ng isang hiwalay na kahilingan upang kumpirmahin ang operasyon.

3. Kung kailangan mong magsagawa ng dalawa (o higit pa) magkaparehong operasyon sa mga file (kahit na may parehong hanay ng mga parameter), dapat mong tukuyin ang naaangkop na bilang ng mga elemento sa array ng mga parameter ng pamamaraan RequestUserPermission(). Halimbawa, kung kailangan mong kunin ang parehong file mula sa infobase nang dalawang beses at ilagay ito sa isang nakapirming lokasyon sa file system, dapat kang humiling ng pahintulot
para sa dalawang operasyon.

4. Kung humiling ng pahintulot para sa isang operasyon na nagsasagawa ng interactive na operasyon (halimbawa, ang GetFiles() function, ang isang bagay ay ipinapasa bilang isang parameter Dialog ng Pagpili ng File), kung gayon ang naturang operasyon ay hindi kasama sa kahilingan.

Ang mga binigay na pahintulot ay pananatilihin hanggang sa maisakatuparan ang awtorisadong tawag o hanggang sa matapos ang built-in na wika sa pagpapatupad.
TANDAAN. Sa makapal at manipis na mga kliyente RequestUserPermission() Ang pamamaraan ay palaging nagbabalik ng True, nang walang pakikipag-ugnayan ng user.

Paggawa gamit ang pansamantalang storage sa isang background na trabaho

Ang mekanismo para sa pagtatrabaho sa pansamantalang storage ay may kakayahang maglipat ng data mula sa isang background na trabaho patungo sa session na nagpasimula ng background na trabaho.
Para sa naturang paglipat, dapat kang maglagay ng walang laman na halaga sa pansamantalang imbakan sa parent session (gamit ang pamamaraan PlaceInTemporaryStorage()), na tumutukoy sa anumang identifier ng pansamantalang storage na ginagawa (Address parameter). Pagkatapos ay ipasa ang natanggap na address sa trabaho sa background sa pamamagitan ng mga parameter ng trabaho sa background. Dagdag pa, kung sa isang background na trabaho ang address na ito ay ginagamit bilang ang halaga ng Paraan ng Address parameter PlaceInTemporaryStorage(), pagkatapos ay makokopya ang resulta sa session kung saan inilunsad ang background na trabaho.
Ang data na inilagay sa pansamantalang storage sa isang background na trabaho ay hindi maa-access mula sa parent session hanggang sa makumpleto ang background na trabaho.

Suporta para sa mga address sa field ng larawan

Ang elemento ng form na View Field Sinusuportahan ng Picture field ang pagpapakita ng larawang tinukoy ng address ng isang value (na maaaring larawan o binary data) sa pansamantalang storage o database.
Upang gawin ito, dapat kang magtakda ng katangian ng uri ng string sa property ng Data ng elemento ng form. Ang halaga ng katangiang ito ay bibigyang-kahulugan bilang ang address ng larawan.

// Halimbawa 1
// Pagbubuklod ng field ng imahe sa address ng imahe sa pansamantala
// imbakan. AddressPictures – mga detalye ng form ng uri ng string
PlaceFile(ImageAddress, InitialName, SelectedName, True, UniqueIdentifier);
// Halimbawa 2
// Pagkuha ng address ng imahe mula sa object attribute
// base ng impormasyon
FilePictures = Object.FilePictures;
Kung Hindi PictureFile.Empty() Pagkatapos
ImageAddress = GetNavigationLink(ImageFile, “FileData”);
Kung hindi
ImageAddress = “”;
Walang katapusang;

Pag-access sa mga karaniwang direktoryo

Kapag ginagamit ang system, ang ilang espasyo ay kinakailangan sa file system kung saan maaaring maimbak ang iba't ibang data ng file, na, sa isang banda, ay pansamantala, at sa kabilang banda, ay dapat na nakaimbak nang medyo mahabang panahon. Kasama sa mga nasabing file ang mga draft para sa mga sistema ng pamamahala ng dokumento, mga panlabas na bahagi na tumatakbo sa gilid ng computer ng kliyente, atbp.
Ang isang espesyal na direktoryo ay inilaan para sa pag-iimbak ng mga naturang file, na nakatali sa isang tiyak na gumagamit ng isang tiyak na base ng impormasyon.
Ang parehong user na nagtatrabaho sa dalawang infobase ay magkakaroon ng access sa dalawang magkaibang direktoryo para sa pag-iimbak ng data ng user. Ang lokasyon ng direktoryo na ito ay tinutukoy gamit ang pamamaraan WorkUserDataDirectory(). Kung ang direktoryo ay hindi umiiral, ito ay nilikha sa unang pagkakataon na ito ay na-access. Kung ang direktoryo ay hindi malikha, ang system ay magtapon ng isang pagbubukod.
TANDAAN. Ang UserDataWorkDirectory() method ay hindi available sa server side.
Ang operating system ay may espesyal na direktoryo na inilaan para sa permanenteng pag-iimbak ng data ng user. Maaaring ito ay ilan
mga ulat, naka-print na anyo ng mga dokumento, atbp. Inilalagay ang data sa direktoryong ito, na maaaring ipadala sa ibang pagkakataon sa external
sa mga mamimili. Ginagamit ang DocumentDirectory() para ma-access ang direktoryo na ito. Ang pisikal na lokasyon ng direktoryo ay nag-iiba depende sa operating system.
system kung saan ang application ay pinaandar at nakalista sa syntax assistant.