Qiymatni saqlash 1s dan ma'lumotlarni qabul qilish 8.3. Veb-mijoz bilan ishlashda cheklovlar

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();

EndProcedure

StorageFromStoragePress(element)ni tiklash tartibi

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

EndProcedure

...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));

EndProcedure

Protsedura ProcessingFromStorage(PropsStorageType)

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

EndProcedure

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;

EndProcedure

// 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");

EndProcedure

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

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

EndProcedure

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. Ushbu 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.

Bizda "Mahsulotlar" katalogi mavjud bo'lib, uning "Ma'lumotlar" atributida ma'lumotlar ikkilik ma'lumotlar shaklida saqlanadi. Atributning o'zi "Qiymatni saqlash" qiymat turiga ega. Quyidagi skrinshotda katalog metadata tuzilishi ko'rsatilgan.

Diskdan element ko'rinishidagi ixtiyoriy faylni biriktirish uchun "AttachFile" buyrug'i amalga oshirildi. Uning dastur kodi quyidagi ro'yxatda keltirilgan:

& Mijoz Protsedurasida AttachFile(Buyruq) // Mijozdagi buyruq ishlovchisi. Fayl tanlash // Diskdan fayl tanlash uchun dialog oynasi Mode = FileSelectionDialogMode. Ochilish; OpenFileDialog = NewFileSelectDialog(Mode); OpenFile dialog oynasi. FullFileName = " " ; OpenFile dialog oynasi. MultipleSelect = False ; OpenFile dialog oynasi. Sarlavha = "Fayllarni tanlash" ; Agar FileOpenDialog. () ni tanlang, keyin FilePath = FileOpenDialog. To'liq fayl nomi; // Ikkilik fayl ma'lumotlarini qabul qilish BinaryData = yangi BinaryData(PathToFile); // Ikkilik ma'lumotlarni serverga o'tkazish AttachFileServer(BinaryData); Aks holda Matn = "ru = "" Fayl (lar) tanlanmagan!" " ; uz ="" Fayl (lar) tanlanmagan!" " " ; Ogohlantirish(NStr(Matn) ); EndIf ; EndProcedure & OnServer Procedure AttachFileServer(BinaryData) // Axborot xavfsizligida faylni yozib olish uchun serverdagi ishlov beruvchi // Shakl ob'ektini mos yozuvlar ob'ektiga aylantiring ObjectCurrent = FormAttributesValue("Ob'ekt" ); // “Data” atributiga yangi qiymat tayinlash ObjectCurrent. Ma'lumotlar = NewValueStorage(BinaryData); // O'zgarishlarni saqlash ObjectCurrent. Write(); EndProcedure

Agar algoritmni umumiy ma'noda tasvirlab beradigan bo'lsak, u holda birinchi navbatda mijozdagi diskdan fayl tanlanadi. Olingan ikkilik fayl ma'lumotlari serverga yuboriladi, u erda ma'lumotlar bazasida, ya'ni joriy katalog elementining "Ma'lumotlar" atributida qayd etiladi.

Aslida, hamma narsa ishlaydi. Elementni ochishda biz ushbu ma'lumotlarni kerak bo'lganda o'qiy olamiz. Agar, masalan, rasm atributda saqlangan bo'lsa, biz uni olishimiz va uni forma maydonida ko'rsatishimiz mumkin. Ushbu yechim o'z o'rniga ega, ammo ko'pgina vazifalarda kataloglar va hujjatlarda "Qiymatni saqlash" qiymat turiga ega atributlardan foydalanish maqbul emas. Va shuning uchun ...

Ishlash ta'siri

Keling, ba'zi ishlash testlarini o'tkazaylik. Sinovlarda "Mahsulotlar" katalogining ikkita elementi, biriktirilgan fayl va faylsiz foydalaniladi. Biriktirilgan fayl hajmi 5 megabayt.

Barcha testlar test konfiguratsiyasida "GetElement" ishlovi yordamida amalga oshiriladi. Ushbu konfiguratsiyani maqolaning oxiridagi havoladan yuklab olishingiz mumkin.

Keling, "Mahsulotlar" katalogidagi narsalarni ochish vaqtini o'lchaymiz. Elementni ochish uchun "OpenValue()" global kontekst usuli qo'llaniladi, bu elementga parametr sifatida havola uzatiladi. Keling, standart ishlashni o'lchash vositasi yordamida ochilish vaqtini o'lchaymiz. Natijalar quyidagi skrinshotda keltirilgan:

Ko'rib turganimizdek, biriktirilgan fayl bilan elementni ochish uchun ketadigan vaqt 10 barobar ko'p! Keling, yana bir sinov qilaylik. Mahsulot katalogi elementiga murojaat qilish uchun “GetObject()” usulini bajaramiz. Sinov natijasini quyidagi skrinshotda ko'rishingiz mumkin.

Farqi ancha sezilarli. Biriktirilgan faylsiz elementni qabul qilish 194 marta tezroq!

Buning sababi, "GetObject()" usuli barcha ma'lumotlarni katalog elementi tafsilotlaridan mos yozuvlar orqali oladi. Shunga ko'ra, usul nafaqat "Kod" va "Ism" atributlarining qiymatlarini, balki "Ma'lumotlar" atributining qiymatini ham oladi. Agar u 5 megabayt hajmdagi ikkilik ma'lumotlarni saqlasa (bizning misolimizda bo'lgani kabi), u holda ob'ekt qabul qilinganda, bu ma'lumotlar RAMga joylashtiriladi (boshqa tafsilotlar kabi) va keyin mijoz tomoniga uzatiladi. Ushbu atributdan ma'lumotlarni olish element ob'ektini olish vaqtini oshiradi. Agar yupqa aloqa kanali ishlatilsa, u holda tarmoq orqali katta hajmdagi ma'lumotlarni uzatish hisobiga ochilish vaqti yanada sezilarli darajada oshadi.

Eslatma: “OpenValue()” usulini bajarishda avval katalog elementi obyekti ham olinadi, so‘ngra shakl obyektiga aylantiriladi va mijozga uzatiladi (boshqariladigan shakllar uchun). Ya'ni, element mos yozuvlar bo'yicha ochilganda, ob'ekt ham olinadi.

Keling, biriktirilgan faylli va faylsiz katalog elementini ochish va yozish vaqtini yakuniy sinovdan o'tkazamiz. Natija quyidagi skrinshotda ko'rsatilgan.

Tabiiy natija. Biriktirilgan fayl bilan katalog elementini qabul qilish va undan keyin yozish vaqti ~19 baravar ko'p bo'ldi. Yuqorida aytib o'tilganidek, ob'ektni qabul qilishda uning barcha tafsilotlarining qiymatlari, shu jumladan 5 megabaytlik ma'lumot saqlanadigan "Ma'lumotlar" atributi olinadi. Element yozilganda, ma'lumotlarning bu miqdori yana ma'lumotlar bazasiga yoziladi. Shunday qilib, ma'lumotlarni katalog atributida (yoki hujjatda) "Qiymatni saqlash" turida saqlash ob'ektni olishda ham, uni ma'lumotlar bazasiga joylashtirishda ham ishlashga salbiy ta'sir qiladi.

Axborot bazasi ob'ektlari uchun ma'lumotlarni saqlash masalasini hal qilishning eng to'g'ri usuli qanday?

To'g'ri yechim

Agar biz ushbu mexanizmning odatiy konfiguratsiyalarda amalga oshirilishini ko'rib chiqsak, ob'ektlar uchun qo'shimcha ma'lumotlar alohida ma'lumotlar registrlari jadvalida saqlanganligini ko'ramiz. Bu, masalan, "Savdoni boshqarish" 11-versiyasining standart konfiguratsiyasida biriktirilgan fayl mexanizmi qanday ko'rinishga ega.

"Nomenklatura" katalogi "NomenclatureAttachedFiles" katalogining egasidir. Bu, o'z navbatida, AttachedFiles axborot registriga bog'liq bo'lib, uning AttachedFile o'lchami uning elementiga tegishli. Shunday qilib, axborot bazasi ob'ektlariga biriktirilgan ma'lumotlar haqiqatda axborot registrlari jadvalida saqlanadi, ularning ishlashiga resursda saqlanadigan ma'lumotlar miqdori deyarli ta'sir qilmaydi. "Biriktirilgan fayllar nomenklaturasi" oraliq katalogi biriktirilgan fayl uchun qo'shimcha ma'lumotlarni saqlash, shuningdek, biriktirilgan faylga havola orqali kirishni qo'llab-quvvatlash uchun zarur.

Yuqorida aytilganlarning barchasi to'g'ri ishlab chiqilgan konfiguratsiya metama'lumotlar strukturasining ishlashga katta ta'sirini yana bir bor tasdiqlaydi.

Maqoladan misol bilan konfiguratsiyani sinab ko'ring: LINK .

Platforma 1C: Korxona har xil turdagi ma'lumotlarni saqlash uchun juda ko'p imkoniyatlarni taqdim etadi.

Ammo ko'pincha bu imkoniyatlar etarli emas. Va keyin bizning yordamimizga maxsus ob'ekt keladi - Saqlash qiymatlari. Ushbu ob'ekt sizga standart 1C: Enterprise ob'ektlarini, masalan, qiymatlar jadvalini va platformada turi ko'rsatilmagan nostandart ob'ektlarni maxsus formatda saqlashga imkon beradi. Nostandart turlarga fayllar kirishi mumkin. Masalan, 1C ma'lumotlar bazasidagi qiymatlar do'konidan foydalanib, siz xodimlarning fotosuratlarini, hujjatlarni skanerlash, tashqi ishlov berish va hokazolarni saqlashingiz mumkin. Bu erda afzallik shundaki, ushbu ob'ektlarning barchasi ma'lumotlar bazasida saqlanadi. Shunga ko'ra, zaxira nusxadan yangi ma'lumotlar bazasini o'rnatishda ushbu ob'ektlarning barchasi yangi ma'lumotlar bazasida ham mavjud bo'ladi. Boshqa tomondan, agar siz katta hajmdagi fayllarni ma'lumotlar bazasida saqlasangiz, bu uning hajmini sezilarli darajada oshirishi va uning ishlashiga salbiy ta'sir ko'rsatishi mumkin. Shuning uchun bu erda oqilona muvozanat saqlanishi kerak.

Keling, misol yordamida qiymat do'koni bilan ishlashni ko'rib chiqaylik. Keling, konfiguratorda maxsus katalog yarataylik - keling, uni chaqiramiz Tashqi ob'ektlar, va o'z navbatida biz katalog uchun rekvizitlarni yaratamiz Ob'ekt turi bilan Saqlash qiymatlari

Va endi biz ushbu katalogda va rekvizitlarda elementlar yaratishimiz mumkin Ob'ekt Har bir element faylga yoziladi.

Qiymat do'koni bilan ishlash juda oddiy. Sintaksis yordamchisiga nazar tashlasak, bu obyektning faqat bitta metodi va bitta konstruktori borligini ko ramiz.

Endi namoyish qilish uchun keling, rekvizitlarga fayl yozadigan eng oddiy kodni yozamiz Ob'ekt avval yaratilgan katalog elementi va keyin ushbu faylni rekvizitlardan o'qing va diskka yozing, lekin boshqa nom ostida.

&Server protsedurasida LoadUnloadFile(Directory Element)Directory Object =Directory Element. GetObject(); //Rasmni qiymatlar do'koniga joylashtiring LabelDownload = Yangi rasm("g:\musor\favicon.ico" ) NewValueStorage; //Katalog elementini yozing Katalog ob'ekti. DirectoryObject obyekti. Write(); //Rasmni qiymatlar do'konidan faylga yuklang Fayl nomi = "g:\musor\favicon_1.ico" ; LabelUpload = Katalog ob'ekti. Ob'ekt. Get(); LabelUpload. Yozish (Fayl nomi); EndProcedure

Va kod uchun bir nechta tushuntirishlar.

  • Ob'ekt konstruktor yordamida do'kon yaratilganda to'g'ridan-to'g'ri do'konga joylashtiriladi.

Saqlashda tasvirlardan tashqari boshqa turdagi fayllarni saqlash uchun siz ob'ektdan foydalanishingiz mumkin BinaryData. Sof nazariy jihatdan siz hatto katalog elementlarini, hujjatlarni va hokazolarni qiymatlar do'konida saqlashingiz mumkin. Ammo amalda bu hech qanday ma'noga ega emas. Ammo ba'zida qiymatlar jadvalini, qadriyatlar daraxtini va boshqa universal to'plamlarni saqlash uchun qiymatlar do'konidan foydalanish mumkin.