1c ma'lumotlarni saqlash vaqtinchalik saqlash. Vaqtinchalik saqlash. Ular qanday nomlanadi?

Deyarli har qanday ma'lumot qiymat do'konida saqlanishi mumkin, masalan.

... rasmlar (fotosuratlar):

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

// bu joyda u hamma narsani ko'rsatadi... Form Elements.PictureField1.Picture = Storage.Get(); CurrentImage.Write();

... elektron jadval hujjati:

TabDoc=Yangi jadval hujjati; TabDoc.Output(FormElements.TabularDocumentField1); Storage=NewValueStorage(TabDoc); Write();

Jarayonning oxiri

StorageFromStoragePress(element)ni tiklash tartibi

TabDoc=Storage.Get(); Agar TabDoc<>Undefined ThenFormElements.TabularDocumentField1.Output(TabDoc); endIf;

Jarayonning oxiri

...ixtiyoriy fayllar (ikkilik ma'lumotlar):

XZ = NewValueStorage(NewBinaryData(fayl));

Sakkizta saqlashga joylashtirilgan ma'lumotlarni siqishni qo'llab-quvvatlaydi:

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

... tashqi ishlov berish va hisobot berish:

LoadProcessingIntoStorage(PropsStorageType) protsedurasi

CompressionRate = NewDataCompression(9); //9 maksimal PropsStorageType = Yangi StorageValues(New BinaryData("c:\reports\report.epf", Siqish tezligi));

Jarayonning oxiri

Protsedura ProcessingFromStorage(PropsStorageType)

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

Jarayonning oxiri

Saqlash bilan ishlash

Agar bu Binary Data bo'lsa, uni Get usuli yordamida qiymatlar do'konidan tiklash va Write() usuli yordamida faylga yozish mumkin.

Agar TypeValue (Saqlash)<>Keyin ("BinaryData") yozing

BinaryData = Storage.Get();

BinaryData = Saqlash;

endIf; BinaryData.Write(Fayl nomi);

Agar u, masalan, Word hujjati (doc fayli yoki boshqa ro'yxatdan o'tgan fayl turi) bo'lsa, uni quyidagicha ochish mumkin:

LaunchApplication(FileName);

Value Storage turidagi maydonni tozalash uchun uni Aniqlanmagan qilib belgilashingiz kerak:

PropsStorage = Aniqlanmagan;

O'rnatilgan 1C: Enterprise 8 tilida fayllar va rasmlar bilan ishlash

Maqsad

Boshqariladigan dastur fayllar bilan ishlashning yangi mexanizmini amalga oshiradi. U ma'lumotlar bazasi va mijoz ilovasi o'rtasida fayl almashinuvini ta'minlaydi. Ushbu mexanizmning o'ziga xosligi shundaki, u nozik mijoz va veb-mijozda foydalanish uchun mo'ljallangan va veb-brauzerlar tomonidan qo'yilgan fayllar bilan ishlash cheklovlarini hisobga olgan holda ishlab chiqilgan.

Mexanizm - bu foydalanuvchi kompyuterida lokal ravishda saqlangan ma'lumotlarni axborot bazasining vaqtinchalik saqlash joyiga joylashtirish, ushbu ma'lumotlarni vaqtinchalik xotiradan ma'lumotlar bazasiga o'tkazish va foydalanuvchi kompyuteriga qaytarib olish uchun ishlatilishi mumkin bo'lgan usullar to'plami. Ushbu mexanizm tomonidan hal qilinadigan eng keng tarqalgan dastur muammolari qo'shimcha ma'lumotlarni saqlashdir, masalan, tovarlar tasvirlari, shartnomalar bilan bog'liq hujjatlar va boshqalar.

Usul doirasi

Vaqtinchalik saqlash

Vaqtinchalik saqlash - bu ikkilik ma'lumotlarni joylashtirish mumkin bo'lgan ma'lumotlar bazasining ixtisoslashgan sohasi. Asosiy maqsad - ma'lumotlar bazasiga o'tkazilgunga qadar mijoz-server o'zaro aloqasi vaqtida ma'lumotlarni vaqtincha saqlash.

Vaqtinchalik saqlashga ehtiyoj paydo bo'ladi, chunki veb-brauzerning operatsion modeli foydalanuvchi tomonidan tanlangan faylni mijozda saqlash imkoniyatisiz to'g'ridan-to'g'ri serverga o'tkazilishini talab qiladi. Fayl uzatilganda, u vaqtinchalik xotiraga joylashtiriladi va keyinchalik ma'lumotlar bazasiga ob'ekt yozishda foydalanish mumkin.

Vaqtinchalik saqlash orqali hal qilinadigan eng tipik amaliy vazifa ob'ekt axborot bazasida, masalan, element shaklida yozilgunga qadar fayllar yoki rasmlarga kirishni ta'minlashdir.

Saqlashda joylashtirilgan fayl yoki ikkilik ma'lumotlar keyinchalik yozish, o'qish yoki o'chirish operatsiyalarida ishlatilishi mumkin bo'lgan noyob manzil bilan aniqlanadi. Bu manzil faylni vaqtincha saqlashga yozish usullari bilan beriladi. O'rnatilgan tildagi alohida usul sizga uzatilgan manzil vaqtinchalik saqlashdagi ma'lumotlarga ishora qiluvchi manzil ekanligini aniqlash imkonini beradi.

Axborot bazasi

Mexanizm sizga Value Storage tipidagi atributlarda saqlangan ikkilik ma'lumotlarga kirish imkonini beradi.

Vaqtinchalik saqlash holatida bo'lgani kabi, ma'lumotlarga kirish maxsus manzil orqali mumkin. Siz uni ob'ektga havola yoki axborot registrini kiritish kaliti va atribut nomini o'tkazish orqali maxsus usul orqali olishingiz mumkin. Jadval qismi bo'lsa, jadval qismining qator indeksini o'tkazish qo'shimcha ravishda talab qilinadi.

Fayllar bilan ishlash usullari ma'lumotlar bazasi tafsilotlari bilan ishlashda cheklovlarga ega. Ular uchun vaqtinchalik saqlashdan farqli o'laroq, faqat o'qish ma'lumotlari mavjud, lekin uni yozish yoki o'chirish mumkin emas.

Fayllar bilan ishlash usullari tavsifi

Ma'lumotlarni vaqtincha saqlashga saqlash

Ushbu mexanizmdan foydalanishning eng odatiy stsenariysi dastlab foydalanuvchi ma'lumotlarini vaqtincha saqlashga joylashtirishni o'z ichiga oladi. Buning uchun ikkita usul mavjud: PlaceFile() va PlaceFileInTemporaryStorage().

Birinchi usul, PlaceFile(), mahalliy fayl tizimidagi faylni vaqtinchalik xotiraga joylashtiradi. Usul saqlashda maqsadli manzilni qabul qilishi mumkin. Agar u aniqlanmagan yoki bo'sh satr bo'lsa, u holda yangi fayl yaratiladi va usul mos keladigan parametr orqali o'z manzilini qaytaradi.

Agar interaktiv ish rejimini belgilovchi parametr True bo'lsa, u holda usul standart fayl tanlash dialog oynasini ko'rsatadi, unda siz saqlashga joylashtirish uchun faylni tanlashingiz mumkin. Bunday holda, usul tanlangan faylning manzilini ham qaytaradi.

Natijada, agar foydalanuvchi interaktiv ravishda fayl tanlash dialogida operatsiyani bajarishdan bosh tortsa, usul False qiymatini qaytaradi. Usul faqat mijozda mavjud.

Ikkinchi usul, PlaceFileInTemporaryStorage() avvalgisiga o'xshaydi, faqat u serverda mavjud va vaqtinchalik saqlashga yoziladigan ma'lumotlar fayl tizimidagi yo'l sifatida emas, balki turdagi o'zgaruvchi sifatida taqdim etiladi. BinaryData. Xuddi shunday, agar maqsadli manzil ko'rsatilmagan bo'lsa, xotirada yangi fayl yaratiladi. Funktsiya natijasi sifatida uning manzili qaytariladi.

Vaqtinchalik xotiradan fayl olinmoqda

Ma'lumot bazasiga ob'ekt yozishda siz vaqtinchalik xotiradan ma'lumotlarni ajratib olishingiz va uni, masalan, atributga joylashtirishingiz kerak bo'lishi mumkin. Buning uchun mos keladigan server usuli mavjud - GetFileFromTemporaryStorage(). Bu usul vaqtinchalik xotiradan ma'lumotlarni oladi va natijada uni qaytaradi. Buni amalga oshirish uchun vaqtinchalik saqlash joyidagi manzilni ko'rsatishingiz kerak. Bu manzil yuqorida tavsiflangan PlaceFile() va PlaceFileInTemporaryStorage() usullari bilan qaytariladi, agar ular muvaffaqiyatli bajarilsa.

Faylni vaqtinchalik xotiradan o'chirish

Ma'lumotlar tafsilotlarda saqlanganidan so'ng, vaqtinchalik xotiradagi fayl o'chirilishi mumkin. Shu maqsadda faylni vaqtinchalik xotiradan o'chirib tashlaydigan DeleteFileFromTemporaryStorage() usuli mavjud. Usul vaqtinchalik xotiradagi fayl manzilini parametr sifatida oladi. Serverda mavjud.

Vaqtinchalik saqlash uchun manzilni tekshirish

Fayl manzili ma'lumotlar bazasida vaqtinchalik saqlashni ham, tafsilotlarni ham ko'rsatishi mumkin. Uning turini tekshirish uchun This isTemporaryStorageAddress() usuli mavjud.

U uzatilgan manzil do'konga ishora qiluvchi manzil ekanligini tekshiradi. Agar manzil vaqtinchalik xotiraga ishora qilsa, True qiymatini qaytaradi. Usul serverda mavjud.

Takliflar manzilini olish

Ma'lumotlar ma'lumotlar bazasidagi tafsilotlarga joylashtirilgandan so'ng, sizga fayl usullaridan foydalangan holda kirishingiz kerak bo'lishi mumkin.

Ammo, masalan, mulkdan ma'lumot olishdan oldin, siz ushbu mulkning manzilini olishingiz kerak. Shu maqsadda GetFileAddressInInformationBase() usuli mavjud.

Uning maqsadi infobazadagi fayl manzilini asl parametrlarga muvofiq qaytarishdir. Buning uchun ob'ekt kalitini (bu ob'ektga havola yoki axborot registrini kiritish kaliti bo'lishi mumkin) va atribut nomini o'tkazish kerak. Agar siz jadval qismi atributida saqlangan fayl manzilini olishingiz kerak bo'lsa, atribut nomini ko'rsatuvchi parametrdagi atribut nomidan oldin jadval qismi nomini va "." nuqtasini qo'shishingiz kerak. Usul mijozda ham, serverda ham mavjud.

Ma'lumot bazasidan fayl olinmoqda

GetFile() usuli ma'lumotlar bazasidan faylni oladi va uni foydalanuvchining mahalliy fayl tizimiga saqlaydi. Birinchi parametr rekvizit yoki vaqtinchalik fayl saqlash joyidagi fayl manzilini belgilaydi. Ikkinchi parametr natijada olingan faylning maqsad manzilini belgilaydi. Interaktiv bo'lmagan rejimda siz yo'lni belgilashingiz kerak. Interaktiv rejimda parametr ixtiyoriy.

Odatiy bo'lib, usul interaktiv rejimda bajariladi, ya'ni oxirgi parametr True. Bu degani, siz qabul qilingan fayl bilan amalni belgilashingiz mumkin bo'lgan dialog oynasi ko'rsatiladi: uni ishga tushiring yoki foydalanuvchi tomonidan belgilangan joyga saqlang. Agar interaktiv rejim faol bo'lsa va maqsadli disk fayl yo'li parametri ko'rsatilmagan bo'lsa, faylni ochish operatsiyasi mavjud emas. Boolean qiymatni qaytaradi. Noto'g'ri foydalanuvchi interaktiv faylni saqlash dialog oynasida operatsiyani bekor qilishni tanlaganligini bildiradi.

Fayl usullaridan foydalanishga misol

// Diskdan interfaol rejimda faylni qabul qilish // va uni vaqtinchalik saqlashga joylashtirish &Mijoz protsedurasida SelectDiskFileAndWrite()

o'zgaruvchining tanlangan nomi; VariableTemporaryStorageAddress; Agar PutFile(TemporaryStorageAddress, SelectedName, True) bo'lsa, Object.FileName = SelectedName; PlaceObjectFile(TemporaryStorageAddress); endIf;

Jarayonning oxiri

// Faylni vaqtinchalik xotiradan katalogga nusxalash // atribut, ob'ektni yozib olish, vaqtinchalik // saqlashdan faylni o'chirish &Server protsedurasida obyekt faylini joylashtirish (Vaqtinchalik saqlash manzili)

Katalog elementi = Form AttributesValue("Ob'ekt"); BinaryData = GetFileFromTemporaryStorage(TemporaryStorageAddress); Directory Element.File Data = NewValueStorage(BinaryData); FilePathOnDisk = Yangi fayl(DirectoryItem.FileName); Directory Item.FileName = FilePathOnDisk.Name; Katalog elementi.Write(); O'zgartirilgan = noto'g'ri; Faylni vaqtinchalik xotiradan o'chirish(Vaqtinchalik saqlash manzili); ValueVFormAttributes(Katalog elementi, "Ob'ekt");

Jarayonning oxiri

// Faylni rekvizitlardan o'qish va uni saqlash // interaktiv rejimda mahalliy diskda &Mijoz protsedurasida ReadFileAndSaveToDisk()

Manzil = GetFileAddressInformationBase(Object.Link, "FileData"); GetFile(Manzil, Object.FileName, True);

Jarayonning oxiri

Rasm maydonidagi manzillarni qo'llab-quvvatlash

Rasm maydoni boshqaruvi vaqtinchalik xotiradagi yoki ma'lumotlar bazasidagi fayl manzili bilan belgilangan rasmni ko'rsatishni qo'llab-quvvatlaydi.

Buning uchun forma elementining Data xossasida string tipi atributini o‘rnatish kerak. Ushbu atributning qiymati rasmning manzili sifatida talqin qilinadi.

Misol // Tasvir maydonini vaqtinchalik // saqlashdagi rasm manziliga bog'lash. AddressPictures satr turi tafsilotlarini shakllantiradi

PlaceFile(Rasm manzili, rost)

Rasm.Ma'lumotlar = Manzil rasmlari

Veb-mijoz bilan ishlashda cheklovlar

Veb-mijozdan foydalanishda tavsiflangan mexanizmning ishlashi ba'zi cheklovlarga ega. Ushbu cheklovlar brauzerning xavfsizlik modeli bilan bog'liq. Shunday qilib, masalan, mijoz faylni mahalliy fayl tizimiga mustaqil ravishda saqlay olmaydi, ya'ni faqat PlaceFile() va GetFile() mijoz usullarining interaktiv versiyasi mavjud. Interaktiv bo'lmagan rejimdan foydalanishga urinayotganda istisno qilinadi. Interaktiv ravishda paydo bo'ladigan dialog oynalari brauzer turiga xosdir.

Mijozda Value Storage bilan ishlash xususiyatlari

Muammo:

Hujjat jadval bo'limida qiymatni saqlash turining atributiga ega bo'lsa, agar bu atribut katta ma'lumotlarni o'z ichiga olsa, u hujjat shaklini ochishni sekinlashtiradi.

Taxmin qilingan sabab:

Ehtimol, formani ochishda mijozga Value Store-da joylashgan ma'lumotlarga havola emas, balki ma'lumotlarning o'zi yuboriladi.

Yechim

  • Formaning jadval atributi xossalarida “Har doim foydalanish” belgisi mavjud. Agar u o'rnatilgan bo'lsa, maydonning mazmuni har doim server va mijoz o'rtasida uzatiladi - masalan, forma ochilganda. Bu bayroq o'chirilgan bo'lishi kerak, lekin bu kodda hisobga olinishi kerak, chunki sukut bo'yicha mijozda bu maydon uchun hech qanday qiymat bo'lmaydi. Misolni 1C: Arxivda topish mumkin.

Bundan ham foydalanish yaxshiroqdir vaqtincha saqlash mijoz va server o'rtasida fayllarni uzatish uchun.

Material Drupal 8.7.0+ versiyasiga mos kelishi uchun yangilandi

Vaqtinchalik do'kon(vaqtinchalik saqlash) - har qanday ma'lumotlarni vaqtincha saqlash imkonini beradi. Bu $_SESSION da ma'lumotlarni saqlashning bir turi, chunki bu xotira odatda ma'lum bir foydalanuvchi bilan bog'langan. Lekin u $_SESSION dan foydalanmaydi va hamma narsani tizim ichida (ma'lumotlar bazasida) saqlaydi.

Yadroda vaqtincha saqlash uchun ikkita xizmat mavjud, tempstore.private va tempstore.shared. Ular bir xil ishlaydi, lekin shaxsiy har doim ma'lum bir foydalanuvchi uchun ma'lumotlarni saqlaydi. Ya'ni, shaxsiy xotiradan bitta kalitni chaqirish har bir foydalanuvchi uchun turli xil ma'lumotlarni qaytaradi. Birgalikda foydalanishga har bir foydalanuvchi kirishi mumkin.

Ushbu xizmatlarni qo'llash doirasi va ularni saqlash juda keng bo'lishi mumkin. Masalan, shakllarning ba'zi vaqtinchalik qiymatlarini saqlang va agar foydalanuvchi ularni saqlamagan bo'lsa, ularni ushbu xotiradan tiklash mumkin, masalan, ba'zi REST shakllari uchun va hatto oddiylar uchun ham mos keladi. Umuman olganda, sizda etarli tasavvur yoki vazifalar bor. Masalan, bu Drupal'dan tashqari boshqariladigan ba'zi shakllar uchun ishlatilishi mumkin, masalan, React yoki Vue.

Ushbu omborlardagi qiymatlar sukut bo'yicha 604800 soniya (1 hafta) davomida yashaydi, shundan so'ng ular avtomatik ravishda o'chiriladi.

Ushbu qiymatni o'zgartirish uchun. Siz, masalan, sites/default/services.yml ga ulanishingiz va uni qayta belgilashingiz kerak bo'ladi:

Parametrlar: # 10 soniya tempstore.expire: 10

Ammo bu yaxshi sabablarga ko'ra sodir bo'lmasligi kerak.

Keling, har bir saqlash qurilmasining imkoniyatlarini ko'rib chiqaylik; ular o'xshash bo'lsa-da, ular bir oz farq qiladi.

tempstore.private - shaxsiy saqlash

Bu saqlash har bir foydalanuvchi uchun shaxsiydir.

tempstore.shared - umumiy xotira

Bu xotira umumiy va barcha foydalanuvchilar uchun umumiy maʼlumotlarni oʻz ichiga olishi mumkin.

Repozitariyda quyidagi usullar mavjud:

  • get($key) : kaliti orqali doʻkondan qiymatni oladi. Agar ma'lumot bo'lmasa, u NULLni qaytaradi, agar mavjud bo'lsa, qiymatni qaytaradi.
  • getIfOwner($key) : Doʻkondan kalit orqali qiymatni oladi. Agar ma'lumotlar mavjud bo'lmasa yoki ma'lumotlar joriy foydalanuvchi ostida yozilmagan bo'lsa, u NULLni qaytaradi, agar mavjud bo'lsa va joriy foydalanuvchi ostida yozilgan bo'lsa, u qiymatni qaytaradi.
  • setIfNotExists($key, $value) : $value qiymatini $kalit kaliti ostida faqat shu kalit uchun hozircha maʼlumot boʻlmasa saqlash uchun yozadi. Agar yozib olingan bo'lsa TRUE, agar ma'lumotlar allaqachon yozib olingan bo'lsa FALSE qaytaradi.
  • setIfOwner($key, $value) : Agar hozirda hech qanday maʼlumot boʻlmasa yoki haqiqiy maʼlumotlar egasi joriy foydalanuvchi boʻlsa, saqlash uchun $key tugmasi ostidagi $qiymat qiymatini yozadi.
  • set($key, $value): Saqlash uchun $kalit tugmasi ostida $value qiymatini yozadi.
  • getMetadata($key) : ma'lum bir $kalit uchun metama'lumotni ma'lumotsiz qaytaradi. Bu qiymatni saqlaydigan, qiymatga egalik qiluvchi egasi xususiyatini va yangilangan xususiyatni - bu qiymat yozilgan vaqtning Unix vaqt tamg'asini o'z ichiga olgan ob'ekt.
  • Delete($key): Berilgan $kalit bilan bogʻliq maʼlumotlarni xotiradan oʻchirib tashlaydi.
  • deleteIfOwner($key) : Berilgan $kalit bilan bogʻliq maʼlumotlarni saqlashdan oʻchirib tashlaydi, faqat maʼlumotlar joriy foydalanuvchiga tegishli boʻlsa.

Ular qanday nomlanadi?

Ularni qanday chaqirish haqida kichik misollar.

Birinchi qadam - kerakli xotiraning tempstore'ini olish, keyin saqlashdan "to'plam" olinadi, bu erda ma'lumotlar allaqachon kerakli tugmalar ostida saqlanadi. Qoidaga ko'ra, "to'plam" nomi modul nomiga teng.

Drupal\Core\TempStore\PrivateTempStoreFactory-dan foydalaning; Drupal\Core\TempStore\SharedTempStoreFactory-dan foydalaning; /** @var PrivateTempStoreFactory $private_tempstore */ $private_tempstore = \Drupal::service("tempstore.private"); $my_private_storage = $private_tempstore->get("qo'g'irchoq"); $my_private_storage->set("foydalanuvchi nomi", "Drupal"); /** @var SharedTempStoreFactory $shared_tempstore */ $shared_tempstore = \Drupal::service("tempstore.shared"); $my_shared_storage = $shared_tempstore->get("qo'g'irchoq"); $my_shared_storage->set("foydalanuvchi nomi", "Drupal");

Misol

Misolda, biz / temp-store-form sahifasida ikkita maydonga ega bo'lgan shakl yaratamiz, ulardan biri xabarni shaxsiy xotirada, ikkinchisi esa umumiy holda saqlaydi.

Shakl yarating:

Src/FormWithTempStore.php

privateTempStore = $private_temp_store->get("qo'g'irchoq"); $this->sharedTempStore = $shared_temp_store->get("qo'g'irchoq"); ) /** * (@inheritdoc) */ umumiy statik funksiya yaratish(ContainerInterface $container) ( yangi statikni qaytaring($container->get("tempstore.private"), $container->get("tempstore.shared") ); ) /** * (@inheritdoc) */ umumiy funksiya getFormId() ( "form_with_temp_store"ni qaytarish; ) /** * (@inheritdoc) */ umumiy funktsiya buildForm(massiv $form, FormStateInterface $form_state) ( $form ["private_message"] = [ "#type" => "textarea", "#title" => $this->t("Shaxsiy xabar"), "#required" => TRUE, "#description" => $ this->t("Bu qiymat har bir foydalanuvchi uchun shaxsiy bo'ladi."), "#default_value" => $this->privateTempStore->get("message"), ]; $form["shared_message"] = [ " #type" => "textarea", "#title" => $this->t("Umumiy xabar"), "#required" => TRUE, "#description" => $this->t("Bu qiymat barcha foydalanuvchilar uchun baham ko'riladi."), "#default_value" => $this->sharedTempStore->get("message"), ]; $form["actions"] = ["#type" => "actions" $form["actions"]["submit"] = [ "#type" => "yuborish", "#value" => $this->t("Saqlash"), ]; $formani qaytarish; ) /** * (@inheritdoc) */ umumiy funksiya submitForm(massiv &$form, FormStateInterface $form_state) ( $this->privateTempStore->set("xabar", $form_state->getValue("private_message")); $this->sharedTempStore->set("xabar", $form_state->getValue("shared_message")); ))

Chop etish (Ctrl+P)

1C: Enterprise seans bilan bog'liq ba'zi ma'lumotlarni saqlashni ta'minlaydigan vaqtinchalik saqlash bilan ishlash mexanizmiga ega.
Bundan tashqari, ma'lumotlar bazasi va mijoz ilovasi o'rtasida fayllar almashinuvini ta'minlaydigan fayllar bilan ishlash mexanizmi amalga oshirildi. Ushbu mexanizmning o'ziga xosligi shundaki, u nozik mijoz va veb-mijozda foydalanish uchun mo'ljallangan va veb-brauzerlar tomonidan qo'yilgan fayllar bilan ishlash cheklovlarini hisobga olgan holda ishlab chiqilgan.

Vaqtinchalik saqlash

Bu qiymatni joylashtirish mumkin bo'lgan ma'lumotlarning ixtisoslashgan do'koni. Asosiy maqsad - ma'lumotlar bazasiga o'tkazilgunga qadar mijoz-server o'zaro aloqasi vaqtida ma'lumotlarni vaqtincha saqlash. Vaqtinchalik saqlash mexanizmi fayllarni qayta ishlash mexanizmi bilan birgalikda foydalanuvchi kompyuterida lokal ravishda saqlangan ma'lumotlarni axborot bazasini vaqtincha saqlashga joylashtirish, ushbu ma'lumotlarni vaqtinchalik saqlashdan ma'lumotlar bazasiga o'tkazish va olish uchun ishlatilishi mumkin bo'lgan to'plamni ta'minlaydi. uni foydalanuvchining kompyuteriga qaytaradi. Ushbu mexanizmlar tomonidan hal qilinadigan eng keng tarqalgan dastur muammolari qo'shimcha ma'lumotlarni saqlashdir, masalan, tovarlar tasvirlari, shartnomalar bilan bog'liq hujjatlar va boshqalar. Vaqtinchalik saqlash va fayllar bilan ishlash mexanizmlari ko'pincha birgalikda ishlatiladi, lekin alohida foydalanish ham mumkin.
Vaqtinchalik saqlashga bo'lgan ehtiyoj, masalan, veb-brauzer modeli foydalanuvchi tomonidan tanlangan faylni mijozda saqlash imkoniyatisiz to'g'ridan-to'g'ri serverga o'tkazilishini talab qilganligi sababli paydo bo'ladi. Fayl uzatilganda, u vaqtinchalik xotiraga joylashtiriladi va keyinchalik ma'lumotlar bazasiga ob'ekt yozishda foydalanish mumkin.
Vaqtinchalik xotiradan maʼlumotlarning ishlash muddati boshqariladigan universal xotira sifatida foydalanishingiz mumkin:

1. Agar ma'lumotlarni vaqtincha saqlashga joylashtirishda ma'lumotlar ma'lum bir shaklga bog'langan bo'lsa, u holda saqlangan ma'lumotlarning ishlash muddati ma'lumotlar bog'langan shaklning umr ko'rish davomiyligiga bog'liq. Shakl ob'ektini o'chirsangiz, vaqtinchalik xotira u bilan bog'liq barcha ma'lumotlardan tozalanadi.

2. Agar ma'lumotlarni vaqtincha saqlashga joylashtirishda shaklga bog'lash tugallanmagan bo'lsa, vaqtincha saqlash quyidagi hollarda tozalanadi:

  • Keyingi safar ariza so'raganingizda.
  • Keyingi serverda mijoz umumiy moduldan qo'ng'iroq qiladi.
  • Shakldan kontekstli va kontekstli bo'lmagan mijoz qo'ng'iroqlari uchun.
  • Buyruqlar modulidan server tomoni chaqirilganda. Vaqtinchalik saqlashga qiymat qo'yish uchun server chaqiruvi amalga oshirilsa, hech qanday tozalash amalga oshirilmaydi. Tozalash qo'ng'iroq o'z ishini tugatgandan so'ng sodir bo'ladi.

Ya'ni, siz bir yoki bir nechta qiymatlarni vaqtincha saqlashga qo'yishingiz va keyingi qo'ng'iroqda ushbu qiymatdan foydalanishingiz mumkin. Biroq, foydalanishdan keyin va server qo'ng'irog'i tugashidan oldin, joylashtirilgan qiymat avtomatik ravishda o'chiriladi.

Vaqtinchalik saqlash orqali hal qilinadigan eng tipik dastur muammosi ob'ekt axborot bazasida, masalan, element shaklida yozilgunga qadar fayllar yoki rasmlarga kirishni ta'minlashdir. Bunday kirishni tashkil qilishda mijoz kompyuterlaridan serverga ma'lumotlarni matnli hujjatga, elektron jadval hujjatiga va 1C: Enterprise tizimining shunga o'xshash formatlariga oldindan "aylantirmasdan" aynan fayllar sifatida o'tkazish tavsiya etiladi. Faylni server tomoniga o'tkazish va server tomonida fayl ma'lumotlarini kerakli joyga yuklash tavsiya etiladi
1C: Enterprise tizimining formati.
Saqlashda joylashtirilgan ma'lumotlar keyinchalik yozish, o'qish yoki o'chirish operatsiyalarida ishlatilishi mumkin bo'lgan noyob manzil bilan aniqlanadi. Bu manzil vaqtinchalik saqlashga qiymat yozish usullari bilan beriladi. O'rnatilgan tildagi alohida usul sizga uzatilgan manzil vaqtinchalik saqlashdagi ma'lumotlarga ishora qiluvchi manzil ekanligini aniqlash imkonini beradi.
Bir seansda yaratilgan vaqtinchalik xotiraga boshqa seansdan kirish mumkin emas. Istisno - bu vaqtinchalik saqlashdan foydalanib, ma'lumotlarni fon ishidan fon ishini boshlagan seansga o'tkazish imkoniyati.

Burty . Kartoshka, ildiz sabzavotlari va oq karamni saqlashning eng maqbul usuli shishadir. Qoziq - cho'zinchoq qirg'oq bo'lib, ikki tomondan eğimli va tepasida izolyatsion material bilan qoplangan. U hosilni bir mavsum saqlash uchun qilingan. Burts kartoshka tekis yuzaga quyilganda maydalangan va sayoz chuqurlar qazilganda yarim maydalangan bo'lishi mumkin. Popunautny (ko'milgan) qoziq. Bunday qoziq uchun shimoldan janubga yo'nalishda 25 sm chuqurlikdagi chuqur qaziladi.Urug'lik kartoshka uchun chuqurning eng yaxshi kengligi 170-200 sm.Sog'lom kartoshkani qisqa muddatli saqlash uchun siz qilishingiz mumkin. kengroq qirg'oq (4 m gacha). Chuqurning uzunligi o'zboshimchalik bilan bo'lishi mumkin, ammo shunga qaramay, u 20-25 m dan oshmasa yaxshi bo'ladi. Qoziqning qirg'og'ining balandligi, uning tagida 2 m kengligida, 90- bo'lishi mumkin. 100 sm Odatda, kartoshka bir saytda bir nechta qoziqlarda saqlanadi. Burg'ulash maydonchasi kartoshka etishtiriladigan maydonlar yaqinida, yomg'ir va erigan suv bilan to'ldirilmagan joyda, yo'ldan unchalik uzoq bo'lmagan joyda joylashtiriladi. Chuqurning markaziy o'qi bo'ylab 20-25 sm kenglikdagi va chuqurlikdagi shamollatish kanali qazilgan, u chuqurdan tashqariga chiqadi va yoqaning oxiridagi qoplamadan 25 sm uzunroqdir. Kanalning chuqurning chegarasidan tashqariga chiqadigan qismi chuqurga va kanalga tuproq tushmasligi uchun tepada taxtalar bilan mahkam qoplangan. Tuproqli bo'yinbog'larda shamollatish kanali to'g'ridan-to'g'ri er yuzasiga joylashtiriladi va alohida bir yarim metrli uchastkalardan tashkil topgan panjara chodiri shaklida amalga oshiriladi. Somon va tuproqning shamollatish kanaliga tushishiga yo'l qo'ymaslik uchun uning uchlari bo'shliqlarsiz amalga oshiriladi. Shamollatish kanallarini yopish uchun oldindan uzunligi 1,5 m va eni 0,5 m bo'lgan panjarali bo'laklar tayyorlanadi.Bo'lim kengligi 2-3 sm va ular orasidagi bo'shliq 2-2,5 sm bo'lgan lamellardan iborat.Seksiyalar ventilyatsiya kanaliga yotqiziladi va mahkamlanadi. bir-biriga, bir-birini, o'zaro. Olingan doimiy shamollatish panjarasi mahsulot ostida joylashgan kanalning qismini qoplaydi. Kartoshka yoki boshqa mahsulotlar to'plamini shakllantirish paytida ichkariga 3x3 sm ichki kesimli yoqa termometri yoki maxsus tayyorlangan tetraedral naychali qutilar joylashtiriladi, ularga termometrlar sterjenning uchiga o'rnatiladi. Yoqalar tizma va shamollatish kanali orqali ventilyatsiya qilinadi. Qoziqlar somon va tuproq bilan qoplangan. To'liq qalinlikdagi somon pastdan yuqoriga qadar zich qatlamga yotqiziladi, shunda qoziqning tepasi bir-biriga yopishadi. Shundan so'ng, qoziq yon tomonlarga yupqa tuproq qatlami bilan sepiladi. Qoziqning tizmasi birinchi sovuqqa qadar somon qoplami ostida qoladi. Yomg'irli havoda vaqtincha ruberoid yoki plastik plyonka bilan qoplangan. Kartoshkani barqaror sovuqlar boshlanishidan oldin +4 ° C ga sovutganda, shamollatish kanallari somon bilan mahkam yopiladi va qoziq butunlay er bilan qoplanadi. Agar qoziqlardagi harorat +1 ° C dan pastga tushsa, qoziqlar qo'shimcha ravishda issiqlik izolyatsiyalovchi materiallar - torf, somon, somon go'ngi yoki qor bilan qoplanadi. Qattiq qor yog'sa, qoziqlarning haddan tashqari qoplanishiga olib keladi, ular vaqti-vaqti bilan qordan tozalanadi.

Xandaq saqlash . Ushbu saqlash usuli qoziqlarda saqlashga qaraganda 2 barobar kamroq somon yoki boshqa issiqlik izolyatsiyalovchi materiallarni talab qiladi. Xandaqlar er osti suvlari chuqur bo'lganda ishlatiladi. Xandaqning chuqurligi va kengligi 60-80 sm dan (janubiy hududlarda) 1,5-2 m gacha (Sibirda). Xandaklar tepada somon qatlami bilan qoplangan: markaziy hududlarda u 30-40 sm, Sibirda - 70 sm gacha, Keyin tuproq qatlami quyiladi (zonaga qarab 40 dan 70 sm gacha). Odatda, har xil turdagi xandaklar qo'llaniladi: sayoz, shamollatish kanallari bilan chuqur, tuproq qatlami va qatlamsiz va oddiy. Xandaklar va qoziqlar (tabiiy) oddiy shamollatish bilan jihozlangan. Uning asosiy maqsadi - kuzda kartoshka va sabzavotlarni sovutish. Ta'minot va egzoz ventilyatsiyasining ishlash printsipi havo bosimidagi farqga asoslanadi, ya'ni. mahsulotlar to'plamidagi va tashqaridagi harorat farqi tufayli yuqoriga qarab havo harakati loyihasi bo'yicha. Issiq havo engilroq bo'lib, egzoz trubkasi orqali chiqib ketadi va sovuq havo ta'minot kanali orqali kiradi. Shamollatish tizimi ta'minot va egzoz kanallaridan iborat. Kirish kanali yoqa tagining o'rtasidan o'tadi, uchlarida tashqariga chiqish joylari mavjud. Kartoshka va ildiz sabzavotlari qo'yilgan qoziqlarda ular mahsulotning alohida nusxalari tushib ketmasligi uchun 20x20 sm yoki 30x30 sm kesimli truba hosil qiladi, ular panjarali taxtalar, ko'ndalang lamellar yoki cho'tka bilan qoplangan. Ushbu kanal orqali sovuqroq tashqi havo tortishish kuchi bilan stack ichiga oqadi. Stakdan isitiladigan havo egzoz kanallari (quvurlar) orqali chiqariladi. Ular 20x20 sm yoki 15x15 sm kesimli taxtalardan yasalgan tetraedral qutilardir.Pastki qismida sabzavot qatlamidan o'tib, ular panjara qilingan, yuqori qismida esa boshpanadan o'tib, ular mustahkamdir. tuproq ularga tushmasligi uchun. Mahsulotlarni yomg'ir suvidan himoya qilish uchun ularning ustiga kanop o'rnatilgan. Saqlash uchun saqlanadigan sabzavotlarning xususiyatlari va sifatiga qarab egzoz quvurlari qoziq uzunligi bo'ylab har 2-4 m ga o'rnatiladi. Vertikal egzoz quvurlarining kamchiliklaridan biri shundaki, issiq va nam havo faqat stackning qo'shni joylaridan chiqariladi va uzoq joylar deyarli sovutilmaydi. Egzoz quvurlari yaqinida suv oqadi, mahsulotlarni terlaydi va muzlaydi, chunki bu erda boshpana kamroq zich va ishonchli. Shuning uchun tizma egzoz shamollatish ishlatiladi. Sabzavotlarni quruq, salqin havoda saqlashda xandaqning tepasi faqat somon bilan qoplanadi, u orqali iliq havo chiqariladi. Biroq, bunday sharoitlar kamdan-kam uchraydi, ob-havo ko'pincha kuzda yomg'irli bo'ladi. Bunday hollarda gorizontal egzoz kanali o'rnatiladi - 90 ° burchak ostida bir-biriga urilgan taxtalar, ular uchlari tashqariga chiqadigan sabzavot to'plamiga yotqiziladi. Bunday holda, tizma bo'ylab xandaq darhol somon va tuproq bilan qoplanishi mumkin, somon namlanadi va mahsulot muzlashidan qo'rqmaydi. Siz faqat oxirgi teshiklarni o'z vaqtida yopishingiz kerak. Gorizontal tizma egzoz kanalining vertikal egzoz ventilyatsiya quvurlari ustidagi afzalligi, shuningdek, bu holda issiq va nam havo mahsulotlarning butun majmuasidan teng ravishda chiqariladi.

Chuqur. Eng oddiy saqlash - bu tuproqli chuqurlik - ko'pincha kartoshkaning kichik partiyasini va vaqti-vaqti bilan ildiz ekinlarini saqlash uchun mo'ljallangan. U er osti suvlari darajasi past bo'lgan baland maydonda qazilgan. Tuproqning zichligiga qarab, u tekis yoki eğimli devorlar bilan qazilgan. Chuqurning eng maqbul shakli yumaloq, ammo ba'zida ular to'rtburchaklar shaklida bo'ladi. Zich loy tuproqda ko'za shaklidagi teshik qaziladi. Qumli tuproqda buni qilish tavsiya etilmaydi, chunki u qulab tushadi. Ular quyidagi tarzda teshik qazishadi: diametri 1 m bo'lgan doira chizib, ko'zaning bo'ynini qazib oling, so'ngra chuqurroq qazib, asta-sekin teshikni diametri 2-2,5 m gacha kengaytiring. Chuqur ko'zaning chuqurligi 1,5-2 m bo'lishi kerak.Erigan suvning chuqurga kirishiga yo'l qo'ymaslik uchun bo'yinning teshigiga olib tashlangan loydan rolik yotqiziladi. Bunday saqlash joyi yomg'ir suvining dumalab ketishi uchun nishabga qo'yilgan qopqoq bilan qoplangan. Yaxshi tayyorlangan ko'za 30-40 yil davomida ta'mirsiz xizmat qiladi. Qishda u oddiy podvalga qaraganda ko'proq doimiy harorat va namlikni saqlab turadi. Bunday chuqurdagi kartoshka uzoq vaqt davomida terlamaydi va unib chiqmaydi. Kartoshka shamollatishsiz kichik chuqurlarda saqlanadi. Katta bo'lganlarda shamollatish trubkasi chuqurning tubiga o'ralgan va somon shnuri bilan o'ralgan taxtalardan yoki to'rtta qoziqdan o'rnatiladi. Kartoshka chelak yordamida teshikka tushiriladi. Paqirga ikkita arqon bog'langan: biri tutqichga, ikkinchisi esa pastki qismga. Paqir erga etib borganidan so'ng, pastki qismga biriktirilgan arqonni torting. Shu bilan birga, chelak ag'dariladi va kartoshka to'kiladi. Ushbu to'ldirish usuli bilan ildiz mevalari shikastlanmaydi. Pit-ko'zani kartoshka bilan to'ldirgandan so'ng, bo'yin somon va qopqoq bilan yopiladi. Dastlabki ikki hafta ichida kartoshka nafas olayotganda juda ko'p namlikni chiqaradi, shuning uchun somon qatlami qalin bo'lmasligi kerak. Keyinchalik, qatlam mahalliy qish sharoitlariga qarab 50-70 sm gacha o'rnatiladi.

Chop etish (Ctrl+P)

Ushbu bo'lim vaqtinchalik saqlash va fayllar bilan ishlash mexanizmining eng keng tarqalgan qo'llanilishini tavsiflaydi.

Ma'lumotni fayldan vaqtinchalik saqlashga saqlash

Bitta faylni joylashtirish

PlaceFile() usuli mahalliy fayl tizimidagi faylni vaqtinchalik xotiraga joylashtiradi. Usul fayl saqlanishi kerak bo'lgan vaqtinchalik xotiradagi manzilni qabul qilishi mumkin. Agar manzil aniqlanmagan yoki bo'sh satr bo'lsa, unda yangi manzil yaratiladi va usul uni maxsus parametr orqali qaytaradi.
Eslatma. PutFile() usuliga bitta qo'ng'iroqda mijoz va server o'rtasida ko'chirilgan ma'lumotlar miqdori
Agar interaktiv ish rejimini belgilovchi parametr True bo'lsa, u holda usul standart fayl tanlash dialog oynasini ko'rsatadi, unda siz saqlashga joylashtirish uchun faylni tanlashingiz mumkin. Bunday holda, usul tanlangan faylning manzilini ham qaytaradi.
Agar foydalanuvchi interaktiv ravishda fayl tanlash dialogida operatsiyani bajarishdan bosh tortsa, usul False qiymatini qaytaradi.

Fayllar to'plamini joylashtirish

Usul PlaceFiles() bir qo'ng'iroqda bir nechta fayllarni vaqtinchalik xotiraga joylashtiradi. Ushbu usuldan foydalanishning bir necha xil usullari mavjud:
● qo'shiladigan fayllar ro'yxatini oldindan yaratish, masalan, ma'lumot bazasiga joylashtirilishi kerak bo'lgan fayllarni oldindan tanlaganingizda;
● faylni qidirish maskasini usulga o'tkazish, masalan, ma'lum turdagi barcha fayllarni, masalan, barcha rasmlarni ma'lumotlar bazasiga joylashtirmoqchi bo'lganingizda;
● oldindan tayyorlangan ob'ektni usulga o'tkazish Fayl tanlash dialogi faylni ochish rejimida.
Ishni tugatgandan so'ng, usul haqiqatda qo'shilgan fayllar ro'yxatini qaytarishi mumkin.

// FileList – ValueList tipidagi shaklning atributi,
// qo'shilgan fayllar ro'yxatini o'z ichiga oladi
FileArray = Yangi massiv;
Fayllar roʻyxatidan roʻyxatning har bir elementi uchun
FileArray.Add(NewDescriptionofTransferFile(ListElement,));
EndCycle;
PlacedFiles= Yangi massiv;
Natija = PlaceFiles (ArrayFiles, PlacedFiles, False, UniqueIdentifier);

Eslatma 1: Usuldan foydalanish uchun PlaceFiles() Veb-mijoz faylni qayta ishlash kengaytmasini ulashni talab qiladi.
Eslatma 2: Mijoz va server o'rtasida har bir usul chaqiruvi o'rtasida o'tkaziladigan ma'lumotlar miqdori PlaceFiles(), 4 Gb dan oshmasligi kerak (seriyalashtirilgan shaklda).

Ma'lumotlarni vaqtincha saqlashga joylashtirish

Usul PlaceFile() usuliga o'xshaydi, faqat ma'lumotlar vaqtinchalik saqlashga yozilishi kerak
fayl tizimida yo'l sifatida emas, balki qiymat sifatida ifodalanadi. Xuddi shunday, agar vaqtinchalik saqlashda mavjud manzil ko'rsatilmagan bo'lsa, yangi manzil yaratiladi. Funktsiya natijasi sifatida manzil qaytariladi. Fayllarda bo'lgani kabi, joylashtirilgan ma'lumotlar ham qandaydir shaklga tegishli bo'lishi kerak va ular o'chirilgandan keyin avtomatik ravishda o'chiriladi.
Eslatma. Har bir usul chaqiruvi uchun mijoz va server o'rtasida o'tkaziladigan ma'lumotlar miqdori PlaceInTemporaryStorage(), 4 Gb dan oshmasligi kerak (seriyalashtirilgan shaklda).
Diqqat! Vaqtinchalik saqlashga qo'yilganda, qiymat aslida ketma-ketlashtirilmaydi. Qiymatga havola joylashtiriladi va keshda 20 daqiqa davomida saqlanadi. Ushbu davrdan keyin qiymat ketma-ketlashtiriladi, diskka yoziladi (sessiya ma'lumotlarini saqlash) va keshdan o'chiriladi.

Vaqtinchalik saqlashdan ma'lumotlarni olish

Ob'ektni ma'lumot bazasiga yozishda siz vaqtinchalik xotiradan ma'lumotlarni ajratib olishingiz va uni, masalan, infobase obyekti atributiga joylashtirishingiz kerak bo'lishi mumkin. Buning uchun maxsus usul mavjud - GetFromTemporaryStorage(). Bu usul vaqtinchalik xotiradan ma'lumotlarni oladi va uni bajarish natijasi sifatida qaytaradi. Ma'lumot olish uchun siz manzilni vaqtincha ko'rsatishingiz kerak
saqlash. Ushbu manzil, agar ular muvaffaqiyatli bo'lsa, ma'lumotlarni vaqtincha saqlashga joylashtirish usullari bilan qaytariladi (oldingi bo'limlarga qarang).
Diqqat! Serverdagi vaqtinchalik xotiradan qiymatni olishda siz u mos yozuvlar orqali olinganligini hisobga olishingiz kerak. Aslida, bu havola keshda saqlanadigan qiymatga ishora qiladi. 20 daqiqa ichida, u saqlashga joylashtirilgan paytdan boshlab yoki oxirgi marta kirish paytidan boshlab, qiymat keshda saqlanadi, so'ngra diskka yoziladi va keshdan o'chiriladi. Keyingi safar qiymatga kirishda u diskdan yuklanadi va yana keshga joylashtiriladi.
Vaqtinchalik saqlashdan qiymatlar seriyali holga keltirilgach va tiklangandan so'ng, havolalar tiklanmaydi. Kesh qiymati diskdan tiklanadi. Ammo ketma-ketlashtirish/deserializatsiyadan so'ng, qiymat ichidagi boshqa ob'ektlarga havolalarni tiklash mumkin emas.

Vaqtinchalik xotiradan ma'lumotlarni o'chirish

Ma'lumotlar infobase ob'ekt atributiga saqlanganidan so'ng, vaqtinchalik xotiradagi ma'lumotlar o'chirilishi mumkin. Buning uchun bir usul mavjud
RemoveFromTemporaryStorage(), olib tashlashni amalga oshiradi. Usul vaqtinchalik saqlashdagi manzilni parametr sifatida oladi.

Vaqtinchalik saqlash uchun manzilni tekshirish

Manzil ma'lumot bazasida vaqtinchalik saqlashni ham, tafsilotlarni ham ko'rsatishi mumkin. Uning turini tekshirish usuli mavjud
Bu TemporaryStorageAddress(). U uzatilgan manzil do'konga ishora qiluvchi manzil ekanligini tekshiradi. Agar manzil vaqtinchalik xotiraga ishora qilsa, True qiymatini qaytaradi.

Takliflar manzilini olish

Ma'lumotlar infobase ob'ekt atributiga joylashtirilgandan so'ng, fayl usullaridan foydalangan holda unga kirishingiz kerak bo'lishi mumkin.
Ammo, masalan, mulkdan ma'lumot olishdan oldin, siz ushbu mulkning manzilini olishingiz kerak. Buning uchun bir usul mavjud GetNavigationLink().

U asl parametrlar asosida infobazadagi qiymat manzilini qaytarishi mumkin. Buni amalga oshirish uchun siz ob'ekt kalitini topshirishingiz kerak (bu bo'lishi mumkin
ob'ektga havola va axborot registrining kirish kaliti) va atribut nomi. Agar siz atributda saqlangan qiymatning manzilini olishingiz kerak bo'lsa
jadval qismi, so'ngra atribut nomini ko'rsatuvchi parametrdagi atribut nomiga jadval qismi nomini va "." nuqtasini qo'shishingiz kerak. Masalan: Mahsulotlar. Rasm

Ma'lumot bazasidan fayl olinmoqda

Bitta faylni qabul qilish

GetFile() usuli ma'lumotlar bazasidan faylni oladi va uni foydalanuvchining mahalliy fayl tizimiga saqlaydi. Birinchi parametr infobase obyekti atributidagi yoki vaqtinchalik fayl xotirasidagi fayl manzilini belgilaydi. Agar nomidan operatsiya amalga oshirilayotgan foydalanuvchi infobase ob'ekti tafsilotlarini ko'rish huquqiga ega bo'lmasa, saqlash amalga oshirilmaydi. Ikkinchi parametr natijada olingan fayl saqlanadigan joyni aniqlaydi. Interaktiv bo'lmagan rejimda siz yo'lni belgilashingiz kerak. Interaktiv rejimda parametr hisoblanadi
ixtiyoriy.
Odatiy bo'lib, usul interaktiv tarzda amalga oshiriladi. Bu degani, siz qabul qilingan fayl bilan amalni belgilashingiz mumkin bo'lgan dialog oynasi yaratiladi: uni ishga tushiring yoki fayl tizimidagi foydalanuvchi tomonidan belgilangan joyga saqlang. Agar interaktiv rejim tanlansa va Fayl nomi opsiyasi ko'rsatilmagan bo'lsa, faylni ochish operatsiyasi mavjud emas. Usul mantiqiy qiymatni qaytaradi. Noto'g'ri foydalanuvchi interaktiv faylni saqlash dialog oynasida operatsiyani bekor qilishni tanlaganligini bildiradi.

Fayllar to'plamini qabul qilish

GetFiles() usuli foydalanuvchining mahalliy fayl tizimidagi infobazada saqlangan bir nechta fayllarni qabul qilish va saqlash imkonini beradi. Yuklangan fayllar ro'yxati parametr sifatida uzatiladi.

// FileList - elementlarga havolalarni o'z ichiga olgan qiymatlar ro'yxati
// yuklangan fayllar joylashgan katalog
// Qiymatlarni ko'rsatish ro'yxati yuklanayotgan faylning nomidir
FileArray = Yangi massiv;
Fayllar roʻyxatidan roʻyxatning har bir elementi uchun
Fayl = Yangi Fayl(String(ListElement.Value));
ReceiveFile = Yangi O'tkazilgan faylning tavsifi;
ReceiveFile.Name = ListElement.View;
ReceiveFile.Storage= P getNavigationLink(ListItem.Value, “Ma’lumotlar”);
FileArray.Add(ReceivingFile);
EndCycle;
Qabul qilingan fayllar= Yangi massiv;
Natija = ReceiveFiles(FilesArray, ReceivedFiles, UploadedFilesPath, False);
Agar natija bo'lmasa
Xabar = Yangi Foydalanuvchiga xabar;
Message.Text = "Fayllarni qabul qilishda xatolik yuz berdi!";
Message.Message();
EndIf;

Tugatgandan so'ng, usul har bir saqlangan faylning to'liq nomini ko'rsatadigan haqiqatda yuklab olingan fayllar ro'yxatini qaytarishi mumkin.
ESLATMA. Veb-mijozda GetFiles() usulidan foydalanish uchun fayl kengaytmasini ulashingiz kerak. Agar mulk ob'ekt nomi O'tkazilgan faylning tavsifi faylga mutlaq yo'lni o'z ichiga oladi, fayl parametrdan qat'iy nazar shu yo'lda saqlanadi Fayl joylashuvi.
Fayl joylashuvi parametri mahalliy fayl tizimidagi yo'l yoki katalog tanlash yoki fayllarni saqlash rejimida Fayl tanlash dialogi ob'ekti bo'lishi mumkin. Agar parametr qiymati bo'lsa Fayl joylashuvi belgilangan ob'ekt Fayl tanlash dialogi rejimida
fayllarni saqlash, keyin:

● O'tkazilgan fayl tavsifi ob'ekt nomi xususiyati mutlaq yo'lni o'z ichiga olgan fayllar bundan mustasno, har bir uzatilgan fayl uchun dialog oynasi chaqiriladi;
● ob'ektning qiymati O'tkazilgan fayl tavsifining nomi dialog oynasida boshlang'ich fayl nomi sifatida ishlatiladi;
● har qanday fayl uchun saqlashni rad etish tanlansa, u holda O'tkazilgan fayl xususiyatining ob'ekt nomi tavsifi bo'sh qatorni o'z ichiga oladi;
● GetFiles() usuli kamida bitta fayl muvaffaqiyatli qabul qilingan taqdirda True qiymatini qaytaradi;
● foydalanuvchi nomi va yoʻlini koʻrsatish boʻyicha savollarga javob bergandan soʻng fayllar haqiqatda qabul qilinishini hisobga olish kerak.
barcha qabul qilingan fayllar;
● nomidan GetFile() usuli bajariladigan foydalanuvchi fayllar olinadigan infobase obyektining kamida bitta atributiga Ko‘rish huquqiga ega bo‘lmasa, butun operatsiya bajarilmaydi.
Misol:

TransferredFiles = Yangi massiv;
Tavsif = Yangi O'tkazilgan faylning tavsifi(“Tavsif”, Fayl manzili);
O'tkazilgan fayllar. Qo'shish(Tavsif);
FileSelect = Yangi FileSelectionDialog(FileSelectionDialogMode.Saqlash);
FileSelect.Header= "Arxivni saqlash";
Fayl tanlash. Kengaytma= "zip";
FileSelect.Filter= “Arxiv(*.zip)|*.zip|Barcha fayllar|*.*”;
FileSelect.FilterIndex = 0;
ReceiveFiles(TransferFiles, SelectFile, False);

Agar fayllarni saqlash uchun katalogni tanlashning interaktiv rejimi tanlangan bo'lsa, veb-mijoz qo'shimcha ravishda mutlaq yo'llar bilan ko'rsatilgan fayllarni saqlash uchun ruxsat so'raydi. Interaktiv bo'lmagan saqlash holatida (katalogga yo'l mos keladigan parametrda ko'rsatilgan), so'rov saqlangan fayllarning butun ro'yxati uchun bajariladi.

Fayl usullaridan foydalanishga misol

// Diskdan faylni interaktiv tarzda olish
// va uni vaqtincha saqlashga joylashtirish.
&OnClient
Jarayon SelectDiskFileIWrite()
o'zgaruvchining tanlangan nomi;
Perem TemporaryStorageAddress;
NewObject = Object.Link.Empty();
Agar PlaceFile(TemporaryStorageAddress, “”, TanlanganName, rost) Keyin
Object.FileName = SelectedName;
PlaceObjectFile(TemporaryStorageAddress);
endIf;
Jarayonning oxiri
// Faylni vaqtinchalik xotiradan rekvizitlarga nusxalash
// katalog, ob'ektni yozish, vaqtinchalik faylni o'chirish
// saqlash.
&Serverda
Jarayon PlaceObjectFile(TemporaryStorageAddress)
Katalog elementi = Form AttributesValue ("Ob'ekt");
BinaryData = GetFromTemporaryStorage(TemporaryStorageAddress);
Directory Element.File Data= Yangi StorageValues ​​(BinaryData, NewDataCompression());
Fayl = Yangi Fayl(Directory Item.FileName);
Directory Item.FileName = File.Name;
Katalog elementi.Write();
O'zgartirilgan = noto'g'ri;
DeleteFromTemporaryStorage(TemporaryStorageAddress);
ValueVFormAttributes(Katalog elementi, "Ob'ekt");
Jarayonning oxiri
// Faylni rekvizitlardan o'qing va uni saqlang
// interaktiv rejimda mahalliy diskda.
&OnClient
Jarayon ReadFileAndSaveToDisk()
Manzil = GetNavigationLink(Object.Link,"FileData");
GetFile(Manzil, Object.FileName, True);
Jarayonning oxiri

Fayl operatsiyalari guruhini bajarish uchun ruxsat

Veb-mijozda ba'zi operatsiyalarni bajarayotganda, bir nechta fayl operatsiyalari uchun ruxsat olishingiz kerak bo'lishi mumkin.
Masalan, siz ma'lumot bazasidan hujjatni olishingiz va keyin saqlangan hujjatni biriktirilgan ilova yordamida ochishingiz kerak.
Ushbu operatsiyani bajarish uchun siz hujjatni saqlash haqidagi savolga va uni ishga tushirish zarurati haqidagi savolga javob berishingiz kerak bo'ladi. Agar ko'proq operatsiyalar mavjud bo'lsa, foydalanuvchi ham ko'proq savollarga ega bo'ladi.
Savollar sonini kamaytirish uchun siz usuldan foydalanishingiz mumkin. Ushbu usuldan foydalanganda
Foydalanuvchiga bajarilishi rejalashtirilgan barcha operatsiyalar ro'yxati ko'rsatiladi va operatsiyalar guruhini bajarishga ruxsat berish so'raladi. Agar foydalanuvchi bajarishga ruxsat bergan bo'lsa, so'ralgan amallar foydalanuvchiga qo'shimcha so'rovlarsiz amalga oshiriladi. Agar ruxsat berilmasa, operatsiyalar odatdagidek davom etadi: har bir operatsiya uchun bitta so'rov.
ESLATMA. Usuldan foydalanish uchun RequestUserPermission() Veb-mijozda siz faylni boshqarish kengaytmasini yoqishingiz kerak.
Keling, usuldan foydalanish misolini ko'rib chiqaylik:

Agar ConnectExtensionFayllar bilan ishlash() Keyin
Havola = GetNavigationLink(Object.Link, “FileData”);
// O'tkazilgan fayllar tavsifini shakllantirish (bu holda faqat bitta fayl mavjud)
O'tkazilgan fayllar= Yangi massiv;
Tavsif = O'tkazilgan faylning yangi tavsifi (Ob'ekt. Fayl nomi, havola);
TransferredFiles.Add(Ta'rif);
// Qabul qilingan fayllar haqida ma'lumot olish uchun ob'ektni tayyorlang
O'tkazilgan fayllar= Yangi massiv;

// Boshqa usul parametrlarini aniqlang
Directory Save= “c:\temp”;
Interaktiv = noto'g'ri;
O'tkazilgan fayl nomi = Saving Directory + "\" + Object.FileName;
// Ruxsat olish usullari tavsifini tayyorlang
Methods = New Array;

Methods.Add (“GetFiles”);
Methods.Add(TransferFiles);
Methods.Add(TransferredFiles);
Methods.Add(SaveDirectory);
Methods.Add (Interaktiv);
Methods.Add (Yangi massiv);
Methods.Add ("RunApplication");
Methods.Add(TransferredFileName);
Agar unday bo'lmasa RequestUserPermission (usullari) Keyin
Ogohlantirish("Foydalanuvchi ruxsatni rad etdi.");
Qaytish;
endIf;
GetFiles(TransferFiles, TransmittedFiles, SavingDirectory, Interactive);
RunApplication(TransferredFileName);
Aks holda
Ogohlantirish("Bajarish qo'llab-quvvatlanmaydi. Fayl kengaytmasi o'rnatilmagan.");
endIf;

Usulning bir nechta xususiyatlarini ta'kidlash kerak RequestUserPermission().

1. Ruxsat faqat quyidagi usullar uchun so'raladi:

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

2. Usul parametrlarining muayyan to'plami uchun ruxsat so'raladi. Agar faylni manipulyatsiya qilish usulini amalda bajarish paytida parametr qiymatlari ruxsat olingan qiymatlardan farq qilsa, bu ruxsat haqiqiy emas va foydalanuvchi operatsiyani tasdiqlash uchun alohida so'rov oladi.

3. Agar siz fayllar bilan ikkita (yoki undan ortiq) bir xil amallarni bajarishingiz kerak bo'lsa (hatto bir xil parametrlar to'plami bilan ham), siz usul parametrlari massivida mos keladigan elementlar sonini ko'rsatishingiz kerak. RequestUserPermission(). Misol uchun, agar siz bir xil faylni infobazadan ikki marta olishingiz va uni fayl tizimidagi belgilangan joyga joylashtirishingiz kerak bo'lsa, ruxsat so'rashingiz kerak.
ikkita operatsiya uchun.

4. Agar interaktiv operatsiyani amalga oshiradigan operatsiya uchun ruxsat so'ralsa (masalan, GetFiles() funktsiyasi, ob'ekt parametr sifatida uzatiladi. Fayl tanlash dialogi), keyin bunday operatsiya so'rovdan chiqarib tashlanadi.

Berilgan ruxsatlar ruxsat etilgan qoʻngʻiroq amalga oshirilgunga qadar yoki oʻrnatilgan til bajarilmaguncha saqlanadi.
ESLATMA. Qalin va ingichka mijozlarda RequestUserPermission() Usul har doim foydalanuvchi shovqinisiz True ni qaytaradi.

Fon ishida vaqtinchalik saqlash bilan ishlash

Vaqtinchalik saqlash bilan ishlash mexanizmi ma'lumotlarni fon ishidan fon ishini boshlagan sessiyaga o'tkazish qobiliyatiga ega.
Bunday o'tkazish uchun siz ota-sessiyadagi vaqtinchalik xotiraga bo'sh qiymat qo'yishingiz kerak (usul yordamida) PlaceInTemporaryStorage()), yaratilayotgan vaqtinchalik saqlashning har qanday identifikatorini ko'rsatish (Manzil parametri). Keyin olingan manzilni fon ish parametrlari orqali fon ishiga o'tkazing. Bundan tashqari, agar fon ishida ushbu manzil Method Address parametrining qiymati sifatida ishlatilsa PlaceInTemporaryStorage(), keyin natija fon ishi boshlangan sessiyaga ko'chiriladi.
Fon ishida vaqtinchalik saqlashga joylashtirilgan maʼlumotlar fon ishi tugaguniga qadar ota-sessiyadan foydalanib boʻlmaydi.

Rasm maydonidagi manzillarni qo'llab-quvvatlash

Ko'rish maydoni shakli elementi Rasm maydoni vaqtinchalik saqlash yoki ma'lumotlar bazasida qiymat manzili (rasm yoki ikkilik ma'lumot bo'lishi mumkin) bilan belgilangan rasmni ko'rsatishni qo'llab-quvvatlaydi.
Buning uchun forma elementining Data xossasida string tipi atributini o‘rnatish kerak. Ushbu atributning qiymati rasmning manzili sifatida talqin qilinadi.

// 1-misol
// Rasm maydonini vaqtinchalik rasm manziliga bog'lash
// saqlash. Manzil rasmlari - satr tipidagi shakl tafsilotlari
PlaceFile(ImageAddress, InitialName, SelectedName, True, UniqueIdentifier);
// 2-misol
// Ob'ekt atributidan tasvir manzilini olish
// ma'lumotlar bazasi
FilePictures = Object.FilePictures;
Agar PictureFile.Empty() bo'lmasa
ImageAddress = GetNavigationLink(ImageFile, “FileData”);
Aks holda
ImageAddress = “”;
cheksiz;

Standart kataloglarga kirish

Tizimdan foydalanganda, fayl tizimida turli xil fayl ma'lumotlarini saqlash mumkin bo'lgan ma'lum bo'sh joy talab qilinadi, bu bir tomondan vaqtinchalik, boshqa tomondan esa ancha uzoq vaqt saqlanishi kerak. Bunday fayllarga hujjatlarni boshqarish tizimlari uchun qoralamalar, mijoz kompyuterida ishlaydigan tashqi komponentlar va boshqalar kiradi.
Maxsus katalog ma'lum bir ma'lumot bazasining ma'lum bir foydalanuvchisiga bog'langan bunday fayllarni saqlash uchun mo'ljallangan.
Ikki ma'lumot bazasi bilan ishlaydigan bir foydalanuvchi foydalanuvchi ma'lumotlarini saqlash uchun ikki xil katalogga kirish huquqiga ega bo'ladi. Ushbu katalogning joylashuvi usul yordamida aniqlanadi WorkUserDataDirectory(). Agar katalog mavjud bo'lmasa, u birinchi marta kirishda yaratiladi. Agar katalog yaratilmasa, tizim istisno qiladi.
ESLATMA. UserDataWorkDirectory() usuli server tomonida mavjud emas.
Operatsion tizimda foydalanuvchi ma'lumotlarini doimiy saqlash uchun ajratilgan maxsus katalog mavjud. Ba'zi bo'lishi mumkin
hisobotlar, hujjatlarning bosma shakllari va boshqalar. Ushbu katalogga ma'lumotlar joylashtiriladi, ular keyinchalik tashqi ma'lumotlarga yuborilishi mumkin
iste'molchilarga. Ushbu katalogga kirish uchun DocumentDirectory() usuli qo'llaniladi. Katalogning jismoniy joylashuvi operatsion tizimga qarab o'zgaradi.
dastur bajariladigan va sintaksis yordamchisida ro'yxatga olingan tizim.