1c տվյալների պահպանման ժամանակավոր պահեստավորում: Ժամանակավոր պահեստավորում. Ինչպե՞ս են նրանք կոչվում:

Գրեթե ցանկացած տեղեկատվություն կարող է պահվել արժեքի պահեստում, օրինակ.

... նկարներ (լուսանկարներ):

CurrentImage.Object = SprFabric.Link; CurrentImage.DataType = Enumerations.Objects.Image-ի լրացուցիչ տեղեկատվության տեսակները; Պահպանում = NewValueStorage (NewPicture, NewDataCompression()); CurrentImage.Storage = Storage.Get();

// այս վայրում այն ​​ցուցադրում է ամեն ինչ... Form Elements.PictureField1.Picture = Storage.Get(); CurrentImage.Write();

...աղյուսակ փաստաթուղթ.

TabDoc=Նոր TabularDocument; TabDoc.Output(FormElements.TabularDocumentField1); Storage=NewValueStorage(TabDoc); Գրել ();

Ընթացակարգի ավարտը

Procedure RestoreFromStoragePress(Element)

TabDoc=Storage.Get(); Եթե ​​TabDoc<>Չսահմանված ThenFormElements.TabularDocumentField1.Output(TabDoc); վերջԵթե;

Ընթացակարգի ավարտը

...կամայական ֆայլեր (երկուական տվյալներ).

XZ = NewValueStorage (NewBinaryData (ֆայլ));

Ութն աջակցում է պահեստում տեղադրված տվյալների սեղմմանը.

XZ = NewValueStorage(NewBinaryData(ֆայլ),NewDataCompression(9));

... արտաքին մշակում և հաշվետվություն.

Ընթացակարգը LoadProcessingIntoStorage (PropsStorageType)

CompressionRate = NewDataCompression(9); //9 առավելագույն PropsStorageType = New StorageValues(New BinaryData("c:\reports\report.epf", Սեղմման հարաբերակցություն));

Ընթացակարգի ավարտը

Ընթացակարգը StartProcessingFromStorage (PropsStorageType)

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

Ընթացակարգի ավարտը

Պահեստավորման հետ աշխատելը

Եթե ​​դա երկուական տվյալ էր, ապա այն կարող է վերականգնվել արժեքի պահեստից՝ օգտագործելով Get մեթոդը և գրել ֆայլի մեջ՝ օգտագործելով Write() մեթոդը։

Եթե ​​TypeValue (Պահեստավորում)<>Մուտքագրեք ("BinaryData") Այնուհետև

BinaryData = Storage.Get();

BinaryData = Պահպանում;

վերջԵթե; BinaryData.Write(FileName);

Եթե ​​դա, օրինակ, Word փաստաթուղթ էր (doc ֆայլ կամ այլ գրանցված ֆայլի տեսակ), ապա այն կարող է բացվել այսպես.

LaunchApplication (FileName);

Value Storage տիպի դաշտը մաքրելու համար պետք է այն նշանակել Undefined:

PropsStorage = Չսահմանված;

Ֆայլերի և նկարների հետ աշխատել ներկառուցված լեզվով 1C:Enterprise 8

Նպատակը

Կառավարվող հավելվածն իրականացնում է ֆայլերի հետ աշխատելու նոր մեխանիզմ։ Այն ապահովում է ֆայլերի փոխանակում տեղեկատվական բազայի և հաճախորդի հավելվածի միջև: Այս մեխանիզմի առանձնահատկությունն այն է, որ այն նախատեսված է thin client-ում և Web client-ում օգտագործելու համար և նախագծված է՝ հաշվի առնելով վեբ բրաուզերների կողմից ֆայլերի հետ աշխատելու սահմանափակումները:

Մեխանիզմը մեթոդների մի շարք է, որոնք կարող են օգտագործվել օգտատիրոջ համակարգչում տեղային պահված տվյալները տեղեկատվական բազայի ժամանակավոր պահեստում տեղադրելու, այդ տեղեկատվությունը ժամանակավոր պահեստից տվյալների բազա փոխանցելու և այն ետ ստանալու համար օգտագործողի համակարգիչ: Այս մեխանիզմով լուծվող ամենատարածված կիրառական խնդիրներն են ուղեկցող տեղեկատվության պահպանումը, օրինակ՝ ապրանքների պատկերները, պայմանագրերի հետ կապված փաստաթղթերը և այլն։

Մեթոդի շրջանակը

Ժամանակավոր պահեստավորում

Ժամանակավոր պահեստավորումը տեղեկատվական բազայի մասնագիտացված տարածք է, որտեղ կարող են տեղադրվել երկուական տվյալները: Հիմնական նպատակն է ժամանակավորապես պահպանել տեղեկատվությունը հաճախորդ-սերվեր փոխազդեցության ժամանակ՝ նախքան այն փոխանցելը տվյալների բազա:

Ժամանակավոր պահպանման անհրաժեշտությունն առաջանում է, քանի որ վեբ բրաուզերի գործառնական մոդելը պահանջում է, որ օգտագործողի կողմից ընտրված ֆայլը փոխանցվի անմիջապես սերվերին՝ առանց այն հաճախորդի վրա պահելու հնարավորության: Երբ ֆայլը փոխանցվում է, այն տեղադրվում է ժամանակավոր պահեստում և կարող է օգտագործվել տվյալների բազայում օբյեկտ գրելիս:

Ամենատիպիկ կիրառական խնդիրը, որը լուծվում է ժամանակավոր պահպանման միջոցով, ֆայլերի կամ նկարների հասանելիության ապահովումն է նախքան օբյեկտը տեղեկատվական բազայում գրանցելը, օրինակ՝ տարրի տեսքով:

Պահեստում տեղադրված ֆայլը կամ երկուական տվյալները նույնացվում են եզակի հասցեով, որը հետագայում կարող է օգտագործվել գրելու, կարդալու կամ ջնջելու գործողություններում: Այս հասցեն տրվում է ժամանակավոր պահեստում ֆայլ գրելու մեթոդներով: Ներկառուցված լեզվով առանձին մեթոդ թույլ է տալիս որոշել՝ արդյոք անցած հասցեն ժամանակավոր պահեստում գտնվող տվյալներին մատնանշող հասցե է:

Տեղեկատվական բազա

Մեխանիզմը թույլ է տալիս մուտք գործել երկուական տվյալներ, որոնք պահվում են Value Storage տեսակի ատրիբուտներում:

Ինչպես ժամանակավոր պահպանման դեպքում, տեղեկատվության հասանելիությունը հնարավոր է հատուկ հասցեի միջոցով։ Դուք կարող եք այն ստանալ հատուկ մեթոդի միջոցով՝ փոխանցելով հղում դեպի օբյեկտ կամ տեղեկատվական ռեգիստրի մուտքագրման բանալի և հատկանիշի անվանումը: Աղյուսակային մասի դեպքում լրացուցիչ պահանջվում է փոխանցել աղյուսակային մասի շարքի ցուցիչը։

Ֆայլերի հետ աշխատելու մեթոդները սահմանափակումներ ունեն տեղեկատվական բազայի մանրամասների հետ աշխատելիս: Նրանց համար, ի տարբերություն ժամանակավոր պահպանման, հասանելի է միայն տեղեկատվություն կարդալը, բայց ոչ այն գրելը կամ ջնջելը:

Ֆայլերի հետ աշխատելու մեթոդների նկարագրություն

Տվյալների պահպանում ժամանակավոր պահեստում

Այս մեխանիզմի կիրառման առավել բնորոշ սցենարը ներառում է օգտատիրոջ տվյալների սկզբնական տեղադրումը ժամանակավոր պահեստում: Դրա համար կա երկու մեթոդ՝ PlaceFile() և PlaceFileInTemporaryStorage():

Առաջին մեթոդը՝ PlaceFile(), տեղադրում է ֆայլը տեղական ֆայլային համակարգից ժամանակավոր պահեստում: Մեթոդը կարող է ընդունել թիրախային հասցե պահեստում: Եթե ​​այն սահմանված չէ կամ դատարկ տող է, ապա կստեղծվի նոր ֆայլ և մեթոդը կվերադարձնի իր հասցեն համապատասխան պարամետրի միջոցով։

Եթե ​​գործարկման ինտերակտիվ ռեժիմը որոշող պարամետրը True է, ապա մեթոդը կցուցադրի ստանդարտ ֆայլի ընտրության երկխոսության տուփ, որտեղ դուք կարող եք ընտրել ֆայլը պահեստում տեղադրելու համար: Այս դեպքում մեթոդը կվերադարձնի նաև ընտրված ֆայլի հասցեն:

Արդյունքում մեթոդը վերադարձնում է False-ը, եթե օգտատերը ինտերակտիվ կերպով հրաժարվում է գործողություն կատարել ֆայլի ընտրության երկխոսության մեջ: Մեթոդը հասանելի է միայն հաճախորդի համար:

Երկրորդ մեթոդը՝ PlaceFileInTemporaryStorage(), նման է նախորդին, բացառությամբ, որ այն հասանելի է սերվերում, և ժամանակավոր պահեստում գրվող տվյալները ներկայացված են ոչ թե որպես ուղի ֆայլային համակարգում, այլ որպես տիպի փոփոխական։ Երկուական Տվյալներ. Նմանապես, եթե թիրախային հասցե նշված չէ, պահեստում ստեղծվում է նոր ֆայլ: Դրա հասցեն վերադարձվում է որպես ֆունկցիայի արդյունք:

Ֆայլի առբերում ժամանակավոր պահեստից

Տեղեկատվական բազայում օբյեկտ գրելիս կարող է անհրաժեշտ լինել տվյալներ հանել ժամանակավոր պահեստից և տեղադրել դրանք, օրինակ, հատկանիշի մեջ: Դրա համար կա համապատասխան սերվերի մեթոդ՝ GetFileFromTemporaryStorage(): Այս մեթոդը առբերում է տվյալները ժամանակավոր պահեստից և արդյունքում վերադարձնում դրանք: Դա անելու համար դուք պետք է նշեք հասցեն ժամանակավոր պահեստում: Այս հասցեն վերադարձվում է վերը նկարագրված մեթոդներով՝ PlaceFile() և PlaceFileInTemporaryStorage(), եթե դրանք հաջողությամբ գործարկվեն:

Ֆայլի ջնջում ժամանակավոր պահեստից

Տվյալները մանրամասների մեջ պահվելուց հետո ժամանակավոր պահեստում գտնվող ֆայլը կարող է ջնջվել: Այդ նպատակով կա DeleteFileFromTemporaryStorage() մեթոդ, որը ջնջում է ֆայլը ժամանակավոր պահեստից: Մեթոդը որպես պարամետր վերցնում է ժամանակավոր պահեստում գտնվող ֆայլի հասցեն: Հասանելի է սերվերում:

Հասցեի ստուգում ժամանակավոր պահպանման համար

Ֆայլի հասցեն կարող է նշել ինչպես ժամանակավոր պահեստավորումը, այնպես էլ մանրամասները տեղեկատվական բազայում: Դրա տեսակը ստուգելու համար կա մեթոդ This isTemporaryStorageAddress():

Այն ստուգում է, որ անցած հասցեն խանութին մատնանշող հասցե է: Վերադարձնում է True, եթե հասցեն մատնանշում է ժամանակավոր պահեստ: Մեթոդը հասանելի է սերվերում:

Հասցեների ստացում

Այն բանից հետո, երբ տվյալները տեղադրվեն ինֆաբազայում մանրամասների մեջ, ձեզ հարկավոր է մուտք գործել դրանք՝ օգտագործելով ֆայլի մեթոդները:

Բայց նախքան տվյալներ ստանալը, օրինակ, սեփականությունից, դուք պետք է ստանաք այս գույքի հասցեն: Այդ նպատակով կա GetFileAddressInInformationBase() մեթոդ:

Դրա նպատակն է վերադարձնել ֆայլի հասցեն ինֆաբազում՝ ըստ սկզբնական պարամետրերի: Դա անելու համար դուք պետք է փոխանցեք օբյեկտի բանալին (սա կարող է լինել կամ հղում դեպի օբյեկտ կամ տեղեկատվական ռեգիստրի մուտքի բանալի) և հատկանիշի անունը: Եթե ​​Ձեզ անհրաժեշտ է ստանալ աղյուսակային մասի հատկանիշում պահվող ֆայլի հասցեն, նախքան ատրիբուտի անվանումը հատկանիշի անունը նշող պարամետրում, պետք է ավելացնել աղյուսակային մասի անունը և կետը «.»: Մեթոդը հասանելի է և՛ հաճախորդի, և՛ սերվերի վրա:

Ֆայլի առբերում տեղեկատվական բազայից

GetFile() մեթոդը ֆայլ է ստանում տեղեկատվական բազայից և պահպանում այն ​​օգտագործողի տեղական ֆայլային համակարգում։ Առաջին պարամետրը նշում է ֆայլի հասցեն հենարաններում կամ ֆայլի ժամանակավոր պահեստում: Երկրորդ պարամետրը սահմանում է ստացված ֆայլի նպատակակետը: Ոչ ինտերակտիվ ռեժիմում դուք պետք է նշեք ուղին: Ինտերակտիվ ռեժիմում պարամետրը պարտադիր չէ:

Լռելյայնորեն մեթոդը կատարվում է ինտերակտիվ ռեժիմով, այսինքն՝ վերջին պարամետրը True է։ Սա նշանակում է, որ երկխոսության տուփ է ցուցադրվում, որտեղ դուք կարող եք նշել գործողությունը ստացված ֆայլի հետ՝ գործարկել այն կամ պահպանել այն օգտագործողի կողմից նշված վայրում: Եթե ​​ինտերակտիվ ռեժիմն ակտիվ է, և թիրախային սկավառակի ֆայլի ուղու պարամետրը նշված չէ, ֆայլի բացման գործողությունը հասանելի չէ: Վերադարձնում է բուլյան արժեք: False նշանակում է, որ օգտագործողը որոշել է չեղարկել գործողությունը ինտերակտիվ պահպանման ֆայլի երկխոսության վանդակում:

Ֆայլի մեթոդների օգտագործման օրինակ

// Ինտերակտիվ ռեժիմում սկավառակից ֆայլ ստանալը // և տեղադրել այն ժամանակավոր պահեստում &Հաճախորդի ընթացակարգի վրա SelectDiskFileAndWrite()

Փոփոխական SelectedName; VariableTemporaryStorageAddress; Եթե ​​PutFile (TemporaryStorageAddress, SelectedName, True) Ապա Object.FileName = SelectedName; PlaceObjectFile (TemporaryStorageAddress); վերջԵթե;

Ընթացակարգի ավարտը

// Ֆայլի պատճենում ժամանակավոր պահեստից գրացուցակ // հատկանիշ, օբյեկտի ձայնագրում, ֆայլի ջնջում ժամանակավոր // պահեստից &Սերվերի ընթացակարգի վրա Տեղադրել օբյեկտի ֆայլը (ժամանակավոր պահպանման հասցե)

Տեղեկատու տարր = Form AttributesValue("Object"); BinaryData = GetFileFromTemporaryStorage (TemporaryStorageAddress); Directory Element.File Data = NewValueStorage(BinaryData); FilePathOnDisk = Նոր Ֆայլ (DirectoryItem.FileName); Տեղեկատու Item.FileName = FilePathOnDisk.Name; Գրացուցակի տարր.Write(); Փոփոխված = Սխալ; DeleteFileFromTemporaryStorage(TemporaryStorageAddress); ValueВFormAttributes (տեղեկատուի տարր, «Օբյեկտ»);

Ընթացակարգի ավարտը

// Ֆայլի ընթերցում և պահպանում ինտերակտիվ ռեժիմով տեղական սկավառակի վրա & Հաճախորդի ընթացակարգի վրա ReadFileAndSaveToDisk()

Հասցե = GetFileAddressInInformationBase (Object.Link, «FileData»); GetFile (Address, Object.FileName, True);

Ընթացակարգի ավարտը

Նկարի դաշտում հասցեների աջակցություն

Նկարի դաշտի կառավարումն աջակցում է ժամանակավոր պահեստում կամ տվյալների բազայում գտնվող ֆայլի հասցեով նշված նկարի ցուցադրմանը:

Դա անելու համար ձևի տարրի Data հատկության մեջ պետք է սահմանել տողի տիպի հատկանիշ: Այս հատկանիշի արժեքը կմեկնաբանվի որպես նկարի հասցե:

Օրինակ // Պատկերի դաշտի կապում պատկերի հասցեին ժամանակավոր // պահեստում: Հասցե Նկարները ձևավորում են տողի տիպի մանրամասները

PlaceFile (PictureAddress, True)

Picture.Data = ՀասցեՆկարներ

Վեբ հաճախորդի հետ աշխատելիս սահմանափակումներ

Նկարագրված մեխանիզմի գործարկումը Վեբ հաճախորդից օգտվելիս ունի որոշ սահմանափակումներ։ Այս սահմանափակումները կապված են դիտարկիչի անվտանգության մոդելի հետ: Այսպիսով, օրինակ, հաճախորդը չի կարող ինքնուրույն պահել ֆայլը տեղական ֆայլային համակարգում, այսինքն՝ հասանելի է միայն PlaceFile() և GetFile() եղանակների ինտերակտիվ տարբերակը: Բացառություն է արվում, երբ փորձում եք օգտագործել ոչ ինտերակտիվ ռեժիմ: Երկխոսության տուփերը, որոնք հայտնվում են ինտերակտիվ կերպով, հատուկ են ձեր դիտարկիչի տեսակին:

Հատկություններ հաճախորդի վրա Value Storage-ի հետ աշխատելիս

Խնդիր.

Երբ փաստաթուղթը աղյուսակային բաժնում ունի Value Storage տեսակի հատկանիշ, այն դանդաղեցնում է փաստաթղթի ձևի բացումը, եթե այս հատկանիշը մեծ տվյալներ է պարունակում:

Ենթադրյալ պատճառ.

Հավանաբար, ձևը բացելիս հաճախորդին ուղարկվում է ոչ թե Value Store-ում գտնվող տվյալների հղումը, այլ հենց տվյալները:

Լուծում

  • Ձևի աղյուսակի հատկանիշի հատկություններում կա «Միշտ օգտագործիր» դրոշակը: Եթե ​​այն սահմանված է, դաշտի բովանդակությունը միշտ փոխանցվում է սերվերի և հաճախորդի միջև, օրինակ՝ ձևը բացելիս: Այս դրոշը պետք է անջատված լինի, բայց դա պետք է հաշվի առնել կոդում, քանի որ լռելյայնորեն հաճախորդի վրա այս դաշտի արժեք չի լինի: Օրինակ կարելի է գտնել 1C:Archive-ում:

Նույնիսկ ավելի լավ է օգտագործել ժամանակավոր պահեստավորումֆայլերը հաճախորդի և սերվերի միջև փոխանցելու համար:

Նյութը թարմացվել է Drupal 8.7.0+-ին համապատասխանելու համար

Temp խանութ(ժամանակավոր պահեստավորում) - թույլ է տալիս ժամանակավորապես պահպանել ցանկացած տվյալ: Սա տվյալների պահպանման մի տեսակ է $_SESSION-ում, քանի որ այս պահեստը սովորաբար կապված է որոշակի օգտվողի հետ: Բայց այն չի օգտագործում $_SESSION և պահպանում է ամեն ինչ համակարգի ներսում (շտեմարանում):

Միջուկն ունի ժամանակավոր պահպանման երկու ծառայություն՝ tempstore.private և tempstore.shared: Նրանք աշխատում են նույնական, բայց մասնավորը միշտ պահում է տվյալներ կոնկրետ օգտագործողի համար: Այսինքն, մասնավոր պահեստից մեկ բանալի կանչելը յուրաքանչյուր օգտագործողի համար կվերադարձնի տարբեր տվյալներ: Համօգտագործումը հասանելի է յուրաքանչյուր օգտատիրոջ կողմից:

Այս ծառայությունների կիրառման շրջանակը և դրանց պահպանումը կարող են շատ մեծ լինել: Օրինակ, պահեք ձևերի որոշ ժամանակավոր արժեքներ, և եթե օգտագործողը դրանք չի պահել, դրանք կարող են վերականգնվել այս պահոցից, օրինակ, որոշ REST ձևերի համար և նույնիսկ հարմար են սովորականների համար: Ընդհանրապես, ինչի համար բավականաչափ երեւակայություն կամ առաջադրանքներ ունեք։ Օրինակ, սա կարող է օգտագործվել որոշ ձևերի համար, որոնք վերահսկվում են Drupal-ից դուրս, օրինակ՝ React-ում կամ Vue-ում:

Այս պահեստներում արժեքները լռելյայնորեն ապրում են 604800 վայրկյան (1 շաբաթ), որից հետո դրանք ավտոմատ կերպով ջնջվում են:

Այս արժեքը փոխելու համար: Դուք պետք է միացնեք, օրինակ, sites/default/services.yml և վերասահմանեք այն.

Պարամետրեր՝ # 10 վայրկյան tempstore.expire՝ 10

Բայց սա, լավ պատճառով, չպետք է տեղի ունենա:

Եկեք նայենք յուրաքանչյուր պահեստավորման սարքի հնարավորություններին, թեև դրանք նման են, բայց մի փոքր տարբերվում են:

tempstore.private - մասնավոր պահեստավորում

Այս պահեստը անձնական է յուրաքանչյուր օգտագործողի համար:

tempstore.shared - ընդհանուր պահեստավորում

Այս պահեստը համօգտագործված է և կարող է պարունակել բոլոր օգտատերերի համար ընդհանուր տվյալներ:

Պահեստն ունի հետևյալ մեթոդները.

  • get($key)՝ առբերում է արժեք խանութից իր բանալիով: Եթե ​​տվյալներ չկան, այն կվերադարձնի NULL, եթե կա՝ արժեք:
  • getIfOwner($key)՝ առբերում է արժեք խանութից իր բանալիով: Եթե ​​տվյալներ չկան կամ տվյալները գրված չեն ընթացիկ օգտատիրոջ տակ, այն կվերադարձնի NULL, եթե առկա է և գրվել է ընթացիկ օգտագործողի տակ, այն կվերադարձնի արժեք:
  • setIfNotExists($key, $value): Գրում է $value արժեքը պահեստավորման $key ստեղնի տակ միայն այն դեպքում, եթե տվյալ բանալի համար տվյալներ չկան: Վերադարձնում է TRUE, եթե գրանցված է, FALSE, եթե տվյալները արդեն գրանցված են:
  • setIfOwner($key, $value): Գրում է $value արժեքը պահեստավորման համար նախատեսված $key ստեղնի տակ միայն այն դեպքում, եթե տվյալ պահին տվյալներ չկան, կամ իրական տվյալների սեփականատերը ներկայիս օգտվողն է:
  • set($key, $value): Գրում է $value արժեքը պահեստավորման $key ստեղնի տակ:
  • getMetadata ($key) . Վերադարձնում է մետատվյալներ կոնկրետ $key-ի համար՝ առանց տվյալների: Սա սեփականատիրոջ սեփականություն պարունակող օբյեկտ է, որը պահում է արժեքը, ում է պատկանում արժեքը, և թարմացված հատկությունը՝ այս արժեքի գրման ժամանակի Unix-ի ժամանակի դրոշմը:
  • delete($key): Ջնջում է տվյալ $բանալու հետ կապված տվյալները պահեստից:
  • deleteIfOwner($key): Ջնջում է տվյալ $key-ի հետ կապված տվյալները պահեստից, միայն եթե տվյալները պատկանում են ընթացիկ օգտագործողին:

Ինչպե՞ս են նրանք կոչվում:

Փոքր օրինակներ, թե ինչպես կարելի է դրանք անվանել:

Առաջին քայլը անհրաժեշտ պահեստի tempstore-ն է, այնուհետև պահեստից ստացվում է «հավաքածու», որտեղ տվյալները արդեն պահվում են անհրաժեշտ ստեղների տակ։ Որպես կանոն, «հավաքածուի» անվանումը հավասար է մոդուլի անվանմանը։

Օգտագործեք Drupal\Core\TempStore\PrivateTempStoreFactory; օգտագործել Drupal\Core\TempStore\SharedTempStoreFactory; /** @var PrivateTempStoreFactory $private_tempstore */ $private_tempstore = \Drupal::service("tempstore.private"); $my_private_storage = $private_tempstore->get("dummy"); $my_private_storage->set("username", "Drupal"); /** @var SharedTempStoreFactory $shared_tempstore */ $shared_tempstore = \Drupal::service("tempstore.shared"); $my_shared_storage = $shared_tempstore->get("dummy"); $my_shared_storage->set("username", "Drupal");

Օրինակ

Օրինակում մենք կստեղծենք ձև /temp-store-form էջում երկու դաշտով, որոնցից մեկը կպահի հաղորդագրությունը մասնավոր պահեստում, իսկ մյուսը՝ հանրային:

Ստեղծեք ձև.

Src/FormWithTempStore.php

privateTempStore = $private_temp_store->get("dummy"); $this->sharedTempStore = $shared_temp_store->get("dummy"); ) /** * (@inheritdoc) */ public static ֆունկցիա create(ContainerInterface $container) ( return new static($container->get("tempstore.private"), $container->get("tempstore.shared") ); ) /** * (@inheritdoc) */ հանրային ֆունկցիա getFormId() ( վերադարձ «form_with_temp_store»; ) /** * (@inheritdoc) */ հանրային ֆունկցիա buildForm(զանգված $form, FormStateInterface $form_state) ( $form ["private_message"] = [ "#type" => "textarea", "#title" => $this->t("Private_message"), "#required" => TRUE, "#description" => $ this->t("Այս արժեքը կլինի անձնական յուրաքանչյուր օգտագործողի համար"), "#default_value" => $this->privateTempStore->get("message"), ]; $form["shared_message"] = [ " #type" => "textarea", "#title" => $this->t("Համօգտագործվող հաղորդագրություն"), "#required" => TRUE, "#description" => $this->t("Այս արժեքը կհամօգտագործվի բոլոր օգտատերերի համար։"), "#default_value" => $this->sharedTempStore->get("message"), ]; $form["actions"] = ["#type" => "գործողություններ" $form["գործողություններ"]["submit"] = [ "#type" => "submit", "#value" => $this->t("Save"), ]; վերադարձնել $ ձև; ) /** * (@inheritdoc) */ հանրային ֆունկցիա submitForm(զանգված &$form, FormStateInterface $form_state) ($this->privateTempStore->set("message", $form_state->getValue("private_message")); $this->sharedTempStore->set("message", $form_state->getValue("shared_message")); ) )

Տպել (Ctrl+P)

1C:Enterprise-ն ունի ժամանակավոր պահեստավորման հետ աշխատելու մեխանիզմ, որն ապահովում է նիստերի հետ կապված որոշ տվյալների պահպանում:
Բացի այդ, ներդրվել է ֆայլերի հետ աշխատելու մեխանիզմ, որն ապահովում է ֆայլերի փոխանակումը ինֆոբազայի և հաճախորդի հավելվածի միջև։ Այս մեխանիզմի առանձնահատկությունն այն է, որ այն նախատեսված է thin client-ի և web client-ում օգտագործելու համար և նախագծված է՝ հաշվի առնելով վեբ բրաուզերների կողմից ֆայլերի հետ աշխատելու սահմանափակումները։

Ժամանակավոր պահեստավորում

Սա տեղեկատվության մասնագիտացված պահեստ է, որի մեջ կարելի է արժեք տեղադրել: Հիմնական նպատակն է ժամանակավորապես պահպանել տեղեկատվությունը հաճախորդ-սերվեր փոխազդեցության ժամանակ՝ նախքան այն փոխանցելը տվյալների բազա: Ժամանակավոր պահպանման մեխանիզմը, ֆայլերի մշակման մեխանիզմի հետ միասին, ապահովում է մի շարք, որը կարող է օգտագործվել օգտատիրոջ համակարգչի վրա տեղական պահված տվյալները տեղեկատվական բազայի ժամանակավոր պահեստում տեղադրելու, այդ տեղեկատվությունը ժամանակավոր պահեստից տվյալների բազա փոխանցելու և ստանալու համար: այն վերադառնում է օգտագործողի համակարգչին: Այս մեխանիզմներով լուծվող ամենատարածված կիրառական խնդիրները ուղեկցող տեղեկատվության պահպանումն են, օրինակ՝ ապրանքների պատկերներ, պայմանագրերի հետ կապված փաստաթղթեր և այլն: Ժամանակավոր պահպանման և ֆայլերի հետ աշխատելու մեխանիզմները հաճախ օգտագործվում են միասին, բայց կարող են օգտագործվել նաև առանձին:
Ժամանակավոր պահեստավորման անհրաժեշտություն է առաջանում, օրինակ, քանի որ վեբ բրաուզերի մոդելը պահանջում է, որ օգտագործողի կողմից ընտրված ֆայլը փոխանցվի անմիջապես սերվերին՝ առանց այն հաճախորդի վրա պահելու հնարավորության: Երբ ֆայլը փոխանցվում է, այն տեղադրվում է ժամանակավոր պահեստում և կարող է օգտագործվել տվյալների բազայում օբյեկտ գրելիս:
Դուք կարող եք օգտագործել ժամանակավոր պահեստավորումը որպես ունիվերսալ պահեստ՝ տվյալների վերահսկվող ժամկետով.

1. Եթե տվյալները ժամանակավոր պահեստում տեղադրելիս տվյալները կապված են եղել որոշակի ձևի հետ, ապա պահպանված տվյալների ժամկետը կախված է այն ձևի կյանքի սպասվող տեւողությունից, որին կապվում են տվյալները: Երբ դուք ջնջում եք ձևի օբյեկտը, ժամանակավոր պահեստը կջնջվի դրա հետ կապված բոլոր տեղեկություններից:

2. Եթե տվյալները ժամանակավոր պահեստում տեղադրելու ժամանակ ձևաթղթի հետ կապելը չի ​​ավարտվել, ապա ժամանակավոր պահպանումը կջնջվի հետևյալ դեպքերում.

  • Հաջորդ անգամ, երբ կխնդրեք ձևը:
  • Հաճախորդի ընդհանուր մոդուլից հաջորդ սերվերի զանգի ժամանակ:
  • Համատեքստային և ոչ կոնտեքստային հաճախորդի զանգերի համար ձևաթղթից:
  • Երբ կոչվում է սերվերի կողմը հրամանի մոդուլից: Եթե ​​սերվերի զանգ է կատարվում ժամանակավոր պահեստում արժեք տեղադրելու համար, մաքրում չի կատարվում: Մաքրումը տեղի է ունենում զանգի աշխատանքն ավարտելուց հետո:

Այսինքն, դուք կարող եք տեղադրել մեկ կամ մի քանի արժեքներ ժամանակավոր պահեստում և օգտագործել այս արժեքը հաջորդ զանգի ժամանակ: Այնուամենայնիվ, օգտագործելուց հետո և մինչև սերվերի զանգի ավարտը, տեղադրված արժեքը ինքնաբերաբար կհեռացվի:

Ամենատիպիկ կիրառական խնդիրը, որը լուծվում է ժամանակավոր պահպանման միջոցով, ֆայլերի կամ նկարների հասանելիության ապահովումն է նախքան օբյեկտը տեղեկատվական բազայում գրանցելը, օրինակ՝ տարրի տեսքով: Նման մուտքը կազմակերպելիս խորհուրդ է տրվում հաճախորդի համակարգիչներից տվյալները փոխանցել սերվեր ճիշտ այնպես, ինչպես ֆայլեր, առանց նախնական «փոխակերպման» տեքստային փաստաթղթի, աղյուսակային փաստաթղթի և 1C:Enterprise համակարգի նմանատիպ ձևաչափերի: Խորհուրդ է տրվում ֆայլը փոխանցել սերվերի կողմը և սերվերի կողմից բեռնել ֆայլի տվյալները ցանկալի մեջ
1C: Ձեռնարկությունների համակարգի ձևաչափ:
Պահեստում տեղադրված տվյալները նույնականացվում են եզակի հասցեով, որը հետագայում կարող է օգտագործվել գրելու, կարդալու կամ ջնջելու գործողություններում: Այս հասցեն տրվում է ժամանակավոր պահեստում արժեք գրելու մեթոդներով: Ներկառուցված լեզվով առանձին մեթոդ թույլ է տալիս որոշել՝ արդյոք անցած հասցեն ժամանակավոր պահեստում գտնվող տվյալներին մատնանշող հասցե է:
Մեկ աշխատաշրջանում ստեղծված ժամանակավոր պահեստը հասանելի չէ մեկ այլ աշխատաշրջանից: Բացառություն է ֆոնային աշխատանքից տվյալների փոխանցման հնարավորությունը այն նստաշրջանին, որը սկսել է ֆոնային աշխատանքը՝ օգտագործելով ժամանակավոր պահեստավորում:

Բերթի . Կարտոֆիլի, արմատային բանջարեղենի և սպիտակ կաղամբի պահպանման ամենաընդունելի միջոցը շշալցումն է։ Կույտը երկարավուն թմբ է, երկու կողմից թեքված, իսկ վերևում ծածկված մեկուսիչ նյութով։ Պատրաստված է բերքը մեկ սեզոն պահելու համար։ Բուրտերը կարելի է մանրացնել, երբ կարտոֆիլը լցնում են հարթ մակերեսի վրա, և կիսահղկել, երբ ծանծաղ փոսեր են փորում։ Popunautny (թաղված) կույտ. Նման կույտի համար հյուսիսից հարավ ուղղությամբ 25 սմ խորությամբ փոս են փորում, սերմացուի համար փոսի լավագույն լայնությունը 170-200 սմ է։ Առողջ կարտոֆիլի կարճաժամկետ պահպանման համար կարելի է պատրաստել. ավելի լայն ամբարտակ (մինչև 4 մ): Փոսի երկարությունը կարող է լինել կամայական, բայց, այնուամենայնիվ, ավելի լավ է, երբ այն 20-25 մ-ից ոչ ավելի է, կույտի թմբի բարձրությունը հիմքի վրա 2 մ լայնությամբ կարող է լինել 90-: 100 սմ Սովորաբար, կարտոֆիլը պահվում է մի քանի կույտով մեկ տեղում: Հորատման վայրը տեղադրված է կարտոֆիլի աճեցման տարածքների մոտ՝ ճանապարհից ոչ հեռու, անձրևից և հալոցքից չհեղեղված վայրում: Փոսի կենտրոնական առանցքի երկայնքով փորված է 20-25 սմ լայնությամբ և խորությամբ օդափոխման խողովակ, որը ձգվում է փոսից այն կողմ և 25 սմ երկարությամբ օձիքի ծայրի ծածկույթից: Ջրանցքի այն հատվածը, որը տարածվում է փոսի սահմաններից այն կողմ, սերտորեն ծածկված է վերևում գտնվող տախտակներով, որպեսզի հողը չմտնի փոսի և ալիքի մեջ: Գրունտային մանյակներում օդափոխման խողովակը տեղադրվում է անմիջապես գետնի մակերեսի վրա և պատրաստվում է վանդակավոր վրանի տեսքով, որը կազմված է առանձին մեկուկես մետր հատվածներից։ Որպեսզի ծղոտը և հողը չմտնեն օդափոխման խողովակ, դրա ծայրերը պատրաստված են առանց բացերի: Օդափոխման խողովակները ծածկելու համար նախօրոք պատրաստվում են 1,5 մ երկարությամբ և 0,5 մ լայնությամբ վանդակաճաղերի հատվածներ, որոնք բաղկացած են 2-3 սմ լայնությամբ և 2-2,5 սմ բացվածքներից, հատվածները փռվում են օդափոխման խողովակի վրա և ամրացվում: միմյանց. Ստացված շարունակական օդափոխման վանդակաճաղը ծածկում է ալիքի այն հատվածը, որը գտնվում է արտադրանքի տակ։ Կարտոֆիլի կամ այլ ապրանքների թմբի ձևավորման ժամանակ ներսից տեղադրվում են օձիքի ջերմաչափ կամ հատուկ պատրաստված քառանիստ խողովակ-պատյաններ՝ 3x3 սմ ներքին կտրվածքով, որոնց մեջ ձողի ծայրին տեղադրվում են ջերմաչափեր։ Օձիքները օդափոխվում են սրածայրի և օդափոխման խողովակի միջոցով: Կույտերը ծածկված են ծղոտով և հողով: Ամբողջ հաստությամբ ծղոտը դրվում է ներքևից վերև խիտ շերտով, որպեսզի կույտի գագաթը համընկնի: Դրանից հետո կույտը կողքերին ցողում են հողի բարակ շերտով։ Կույտի գագաթը մնում է ծղոտե ծածկույթի տակ մինչև առաջին սառնամանիքը։ Անձրևոտ եղանակին այն ժամանակավորապես ծածկվում է տանիքի շերտով կամ պլաստիկ թաղանթով։ Մինչ կայուն ցրտահարությունների սկիզբը կարտոֆիլը +4°C սառչելիս օդափոխության խողովակները սերտորեն ծածկված են ծղոտով, իսկ կույտը ամբողջությամբ ծածկված է հողով։ Եթե ​​կույտերում ջերմաստիճանը իջնում ​​է +1°C-ից, ապա կույտերը լրացուցիչ ծածկվում են ջերմամեկուսիչ նյութերով՝ տորֆ, ծղոտ, ծղոտե գոմաղբ կամ ձյուն: Ձյան առատ տեղումների դեպքում, որոնք հանգեցնում են կույտերի ավելորդ ծածկույթին, դրանք պարբերաբար մաքրվում են ձյունից։

Խրամուղիների պահեստավորում . Պահպանման այս մեթոդը պահանջում է 2 անգամ ավելի քիչ ծղոտ կամ այլ ջերմամեկուսիչ նյութեր, քան կույտերում պահելու ժամանակ: Խրամուղիները օգտագործվում են, երբ ստորերկրյա ջրերը խորն են: Խրամուղու խորությունը և լայնությունը 60-80 սմ-ից (հարավային շրջաններում) մինչև 1,5-2 մ է (Սիբիրում): Խրամատները վերևում ծածկված են ծղոտի շերտով. կենտրոնական շրջաններում այն ​​30-40 սմ է, Սիբիրում՝ մինչև 70 սմ, այնուհետև լցնում են հողի շերտ (կախված գոտուց 40-70 սմ): Սովորաբար օգտագործվում են խրամուղիների տարբեր տեսակներ՝ մակերեսային, խորը օդափոխման խողովակներով, հողաշերտով և առանց շերտի և սովորական։ Խրամատները և կույտերը հագեցած են (բնական) պարզ օդափոխությամբ: Դրա հիմնական նպատակը աշնանը կարտոֆիլի և բանջարեղենի սառեցումն է։ Մատակարարման և արտանետվող օդափոխության շահագործման սկզբունքը հիմնված է օդի ճնշման տարբերության վրա, այսինքն. օդի շարժման գծի վրա դեպի վեր՝ արտադրանքի կույտում և դրսում ջերմաստիճանի տարբերության պատճառով: Տաք օդը, լինելով ավելի թեթև, դուրս է գալիս արտանետվող խողովակով, իսկ սառը օդը մտնում է մատակարարման խողովակով։ Օդափոխման համակարգը բաղկացած է մատակարարման և արտանետման խողովակներից: Մուտքի ալիքը անցնում է օձիքի հիմքի մեջտեղում, ծայրամասերում կան ելքեր դեպի արտաքին: Կարտոֆիլով և արմատային բանջարեղենով կույտերում 20x20 սմ կամ 30x30 սմ խաչմերուկով ակոս են անում՝ ծածկված վանդակավոր տախտակներով, լայնակի սալիկներով կամ խոզանակով, որպեսզի արտադրանքի առանձին օրինակները չընկնեն։ Այս ալիքի միջով ավելի սառը արտաքին օդը ձգողականության ուժով հոսում է բուրգ: Ջեռուցվող օդը կույտից հեռացվում է արտանետվող խողովակների (խողովակների) միջոցով: 20x20 սմ կամ 15x15 սմ խաչմերուկով տախտակներից պատրաստված քառանիստ տուփեր են, ստորին հատվածում, բանջարեղենի շերտով անցնելով, վանդակապատ են, իսկ վերին մասում, անցնելով կացարանով, ամուր են։ որպեսզի հողը չընկնի դրանց մեջ։ Անձրևաջրերից արտադրանքը պաշտպանելու համար դրանց վրա տեղադրվում է հովանոց։ Արտանետվող խողովակները, կախված պահեստավորման համար պահվող բանջարեղենի բնութագրերից և որակից, տեղադրվում են յուրաքանչյուր 2-4 մ-ի վրա՝ կույտի երկարությամբ։ Ուղղահայաց արտանետվող խողովակների թերություններից մեկն այն է, որ տաք և խոնավ օդը հեռացվում է միայն կույտի հարակից տարածքներից, իսկ հեռավոր տարածքները գրեթե չեն սառչում: Ջուրը հոսում է արտանետվող խողովակների մոտ՝ քրտնելով և սառեցնելով արտադրանքը, քանի որ այստեղ ապաստարանը պակաս խիտ է և հուսալի։ Հետեւաբար, օգտագործվում է լեռնաշղթայի արտանետվող օդափոխություն: Չոր, զով եղանակին բանջարեղենը պահելիս խրամատի գագաթը ծածկված է միայն ծղոտով, որի միջով տաք օդը հանվում է։ Այնուամենայնիվ, նման պայմանները հազվադեպ են լինում, եղանակը հաճախ անձրևոտ է աշնանը: Նման դեպքերում տեղադրվում է հորիզոնական արտանետվող խողովակ՝ 90° անկյան տակ իրար բախված տախտակներ, որոնք դրված են բանջարեղենի կույտի վրա՝ ծայրերից դեպի դրսից ելքով: Այս դեպքում լեռնաշղթայի երկայնքով խրամատը կարող է անմիջապես ծածկվել ծղոտով և հողով, առանց վախի, որ ծղոտը թրջվի և արտադրանքը սառչի: Պարզապես պետք է ժամանակին փակել ծայրի անցքերը: Հորիզոնական լեռնաշղթայի արտանետվող խողովակի առավելությունը ուղղահայաց արտանետվող օդափոխման խողովակների նկատմամբ նաև այն է, որ այս դեպքում տաք և խոնավ օդը հավասարապես հեռացվում է արտադրանքի ամբողջ կույտից:

Փոս. Ամենապարզ պահեստը հողային փոսն է, որը նախատեսված է, ամենից հաճախ, կարտոֆիլի փոքր խմբաքանակի և երբեմն արմատային մշակաբույսերի պահպանման համար: Այն փորված է ստորերկրյա ջրերի ցածր մակարդակով բարձրադիր վայրում։ Կախված հողի խտությունից՝ այն փորում են ուղիղ կամ թեք պատերով։ Առավել ընդունելի փոսի ձևը կլոր է, սակայն երբեմն դրանք պատրաստվում են ուղղանկյուն: Խիտ կավե հողի մեջ փոս է փորվում՝ սափորի ձևով։ Խորհուրդ չի տրվում դա անել ավազոտ հողում, քանի որ այն կփլուզվի: Փոս փորեք հետևյալ կերպ՝ գծեք 1 մ տրամագծով շրջան և փորեք սափորի վիզը, այնուհետև, ավելի խորանալով, փոսը աստիճանաբար ընդլայնեք մինչև 2-2,5 մ տրամագծով լայնությունը։ Փոս-կուժի խորությունը պետք է լինի 1,5-2 մ, որպեսզի հալոցքի ջուրը փոս չմտնի, վզի բացվածքի շուրջը գլանափակ են դնում հանված կավից։ Նման պահեստարանը ծածկված է կափարիչով, որը տեղադրված է թեքության վրա, որպեսզի անձրևաջրերը դուրս գան: Լավ պատրաստված փոսային սափորն առանց վերանորոգման ծառայում է 30-40 տարի։ Ձմռանը այն կպահպանի ավելի կայուն ջերմաստիճան և խոնավություն, քան սովորական նկուղում: Նման փոսի մեջ գտնվող կարտոֆիլը չի ​​քրտնում և երկար ժամանակ չի բողբոջում։ Կարտոֆիլը պահվում է փոքր փոսերում՝ առանց օդափոխության։ Խոշորներում օդափոխման խողովակը տեղադրվում է տախտակներից կամ չորս ցցերից, որոնք մղվում են փոսի հատակին և փաթաթված ծղոտե լարով: Կարտոֆիլները դույլով իջեցնում են անցքի մեջ: Դույլին երկու պարան են կապում` մեկը բռնակին, մյուսը` ներքևին: Դույլի հատակին հասնելուց հետո քաշեք ներքևում ամրացված պարանը: Միևնույն ժամանակ, դույլը շրջվում է, և կարտոֆիլը թափվում է: Լցավորման այս մեթոդով պալարները չեն վնասվում: Փոս-սափորը կարտոֆիլով լցնելուց հետո վիզը փակում են ծղոտով և կափարիչով։ Առաջին երկու շաբաթվա ընթացքում կարտոֆիլը շնչելիս շատ խոնավություն է արձակում, ուստի ծղոտի շերտը չպետք է հաստ լինի։ Հետագայում շերտը ճշգրտվում է մինչև 50-70 սմ՝ կախված տեղական ձմեռային պայմաններից։

Տպել (Ctrl+P)

Այս բաժինը նկարագրում է ժամանակավոր պահեստավորման և ֆայլերի հետ աշխատելու մեխանիզմի ամենատարածված օգտագործումը:

Տվյալների պահպանում ֆայլից ժամանակավոր պահեստում

Մեկ ֆայլի տեղադրում

PlaceFile() մեթոդը տեղական ֆայլային համակարգից ֆայլը տեղադրում է ժամանակավոր պահեստում: Մեթոդը կարող է ընդունել հասցե ժամանակավոր պահեստում, որտեղ պետք է պահվի ֆայլը: Եթե ​​հասցեն սահմանված չէ կամ դատարկ տող է, ապա կստեղծվի նոր հասցե և մեթոդը կվերադարձնի այն հատուկ պարամետրի միջոցով։
Նշում. Հաճախորդի և սերվերի միջև տեղափոխված տվյալների քանակը մեկ զանգով PutFile() մեթոդին
Եթե ​​գործարկման ինտերակտիվ ռեժիմը որոշող պարամետրը True է, ապա մեթոդը կցուցադրի ստանդարտ ֆայլի ընտրության երկխոսության տուփ, որտեղ դուք կարող եք ընտրել ֆայլը պահեստում տեղադրելու համար: Այս դեպքում մեթոդը կվերադարձնի նաև ընտրված ֆայլի հասցեն:
Մեթոդը վերադարձնում է False, որպես արդյունք, եթե օգտվողը ինտերակտիվ կերպով հրաժարվում է կատարել գործողություն ֆայլի ընտրության երկխոսության մեջ:

Ֆայլերի հավաքածուի տեղադրում

Մեթոդ PlaceFiles ()տեղադրում է բազմաթիվ ֆայլեր ժամանակավոր պահեստում մեկ զանգի ընթացքում: Այս մեթոդը օգտագործելու մի քանի տարբեր եղանակներ կան.
● նախապես ստեղծել ավելացվող ֆայլերի ցանկ, օրինակ, երբ նախապես ընտրել եք այն ֆայլերը, որոնք պետք է տեղադրվեն տեղեկատվական բազայում;
● փոխանցեք ֆայլի որոնման դիմակ մեթոդին, օրինակ, երբ ցանկանում եք տեղադրել որոշակի տեսակի բոլոր ֆայլերը, օրինակ՝ բոլոր նկարները, տեղեկատվական բազայում;
● մեթոդին փոխանցել նախապես պատրաստված օբյեկտ Ֆայլի ընտրության երկխոսությունֆայլի բացման ռեժիմում:
Աշխատանքն ավարտելուց հետո մեթոդը կարող է վերադարձնել իրականում ավելացված ֆայլերի ցանկը:

// FileList – ValueList տեսակի ձևի հատկանիշ,
// որը պարունակում է ավելացված ֆայլերի ցանկ
FileArray = Նոր զանգված;
Ցուցակի յուրաքանչյուր տարրի համար Ֆայլերի ցանկից
FileArray.Add(NewDescriptionofTransferFile(ListElement,));
End Cycle;
Տեղադրված Ֆայլեր= Նոր զանգված;
Արդյունք = PlaceFiles (ArrayFiles, PlacedFiles, False, UniqueIdentifier);

Նշում 1. Մեթոդն օգտագործելու համար PlaceFiles ()Վեբ հաճախորդը պահանջում է ֆայլերի մշակման ընդլայնման միացում:
Ծանոթագրություն 2. Հաճախորդի և սերվերի միջև տեղափոխվող տվյալների քանակը յուրաքանչյուր մեթոդի զանգի համար PlaceFiles (), չպետք է գերազանցի 4 Գբ-ը (սերիականացված տեսքով):

Տվյալների տեղադրում ժամանակավոր պահեստում

Մեթոդը նման է PlaceFile() մեթոդին, բացառությամբ, որ տվյալները պետք է գրվեն ժամանակավոր պահեստում
ներկայացված են ոչ թե որպես ուղի ֆայլային համակարգում, այլ որպես արժեք: Նմանապես, եթե ժամանակավոր պահեստում առկա հասցե նշված չէ, ստեղծվում է նոր հասցե: Հասցեն վերադարձվում է որպես ֆունկցիայի արդյունք: Ինչպես ֆայլերի դեպքում, տեղադրված տվյալները պետք է պատկանեն ինչ-որ ձևի և ջնջվելուց հետո ինքնաբերաբար ջնջվում են:
Նշում.Հաճախորդի և սերվերի միջև տեղափոխված տվյալների քանակը յուրաքանչյուր մեթոդի զանգի համար PlaceInTemporaryStorage(), չպետք է գերազանցի 4 Գբ-ը (սերիականացված տեսքով):
Ուշադրություն.Երբ տեղադրվում է ժամանակավոր պահեստում, արժեքը իրականում սերիականացված չէ: Արժեքի հղումը տեղադրվում և պահվում է քեշում 20 րոպե: Այս ժամանակահատվածից հետո արժեքը սերիականացվում է, գրվում է սկավառակի վրա (նստաշրջանի տվյալների պահպանում) և հանվում քեշից:

Տվյալների առբերում ժամանակավոր պահեստից

Տեղեկատվական բազայում օբյեկտ գրելիս ձեզ կարող է անհրաժեշտ լինել տվյալներ հանել ժամանակավոր պահեստից և տեղադրել դրանք, օրինակ, տեղեկատվական բազայի օբյեկտի հատկանիշում: Դրա համար կա հատուկ մեթոդ՝ GetFromTemporaryStorage(): Այս մեթոդը առբերում է տվյալները ժամանակավոր պահեստից և վերադարձնում դրանք որպես կատարման արդյունք: Տվյալներ ստանալու համար դուք պետք է ժամանակավոր նշեք հասցեն
պահեստավորում. Այս հասցեն վերադարձվում է տվյալների ժամանակավոր պահեստում տեղադրելու մեթոդներով, եթե դրանք հաջող լինեն (տես նախորդ բաժինները):
Ուշադրություն.Սերվերի վրա ժամանակավոր պահեստից արժեք ստանալիս պետք է հաշվի առնել, որ այն ստացվել է հղումով: Իրականում այս հղումը ցույց է տալիս մի արժեք, որը պահվում է քեշում: 20 րոպեի ընթացքում, այն պահից, երբ այն տեղադրվեց պահեստում կամ վերջին անգամ մուտք գործելու պահից, արժեքը կպահվի քեշում, այնուհետև կգրվի սկավառակի վրա և կջնջվի քեշից: Հաջորդ անգամ, երբ արժեքը հասանելի է դառնում, այն բեռնվում է սկավառակից և նորից տեղադրվում քեշի մեջ:
Ժամանակավոր պահեստավորումից արժեքների ապասերիալացումից և վերականգնումից հետո հղումները չեն վերականգնվում: Քեշի արժեքը վերականգնվում է սկավառակից: Բայց սերիալացումից/ապասերիալացումից հետո անհնար է վերականգնել արժեքի ներսում գտնվող այլ օբյեկտների հղումները:

Տվյալների ջնջում ժամանակավոր պահեստից

Այն բանից հետո, երբ տվյալները պահվում են infobase օբյեկտի հատկանիշում, ժամանակավոր պահեստի տվյալները կարող են ջնջվել: Դրա համար կա մի մեթոդ
RemoveFromTemporaryStorage(),որն իրականացնում է հեռացումը. Մեթոդը որպես պարամետր ընդունում է հասցե ժամանակավոր պահեստում:

Հասցեի ստուգում ժամանակավոր պահպանման համար

Հասցեն կարող է նշել և՛ ժամանակավոր պահեստավորում, և՛ մանրամասներ տեղեկատվական բազայում: Դրա տեսակը ստուգելու մեթոդ կա
Սա TemporaryStorageAddress():Այն ստուգում է, որ անցած հասցեն խանութին մատնանշող հասցե է: Վերադարձնում է True, եթե հասցեն մատնանշում է ժամանակավոր պահեստ:

Հասցեների ստացում

Այն բանից հետո, երբ տվյալները տեղադրվեն infobase օբյեկտի հատկանիշում, ձեզ հարկավոր է մուտք գործել դրանք՝ օգտագործելով ֆայլի մեթոդները:
Բայց նախքան տվյալներ ստանալը, օրինակ, սեփականությունից, դուք պետք է ստանաք այս գույքի հասցեն: Դրա համար կա մի մեթոդ GetNavigationLink().

Այն կարող է վերադարձնել արժեքի հասցեն ինֆաբազայում՝ հիմնվելով սկզբնական պարամետրերի վրա: Դա անելու համար դուք պետք է փոխանցեք օբյեկտի բանալին (սա կարող է լինել
և՛ օբյեկտի, և՛ տեղեկատվական ռեգիստրի մուտքի բանալին) և հատկանիշի անվանումը: Եթե ​​Ձեզ անհրաժեշտ է ստանալ հատկանիշում պահվող արժեքի հասցեն
աղյուսակային մաս, այնուհետև ատրիբուտի անունին ատրիբուտի անունը նշող պարամետրում պետք է ավելացնել աղյուսակային մասի անունը և կետ «.»: Օրինակ: Ապրանքներ.Պատկեր

Ֆայլի առբերում տեղեկատվական բազայից

Մեկ ֆայլի ստացում

GetFile() մեթոդը ֆայլ է ստանում տեղեկատվական բազայից և պահպանում այն ​​օգտագործողի տեղական ֆայլային համակարգում։ Առաջին պարամետրը նշում է ֆայլի հասցեն infobase օբյեկտի հատկանիշում կամ ֆայլի ժամանակավոր պահեստում: Պահպանումը տեղի չի ունենա, եթե օգտատերը, ում անունից իրականացվել է գործողությունը, չունի ինֆոբազայի օբյեկտի մանրամասների դիտման իրավունք: Երկրորդ պարամետրը որոշում է այն վայրը, որտեղ պահվում է ստացված ֆայլը: Ոչ ինտերակտիվ ռեժիմում դուք պետք է նշեք ուղին: Ինտերակտիվ ռեժիմում պարամետրն է
ընտրովի:
Լռելյայնորեն մեթոդն իրականացվում է ինտերակտիվ կերպով: Սա նշանակում է, որ կստեղծվի երկխոսության տուփ, որտեղ դուք կարող եք նշել գործողությունը ստացված ֆայլի հետ՝ գործարկել այն կամ պահպանել ֆայլային համակարգում օգտագործողի կողմից նշված վայրում: Եթե ​​ընտրված է ինտերակտիվ ռեժիմ, և Ֆայլի անուն տարբերակը նշված չէ, ֆայլի բացման գործողությունը հասանելի չէ: Մեթոդը վերադարձնում է բուլյան արժեք: False նշանակում է, որ օգտագործողը որոշել է չեղարկել գործողությունը ինտերակտիվ պահպանման ֆայլի երկխոսության վանդակում:

Ֆայլերի հավաքածուի ստացում

GetFiles() մեթոդը թույլ է տալիս ստանալ և պահպանել օգտատիրոջ տեղական ֆայլային համակարգում ինֆաբազայում պահվող մի քանի ֆայլեր։ Վերբեռնված ֆայլերի ցանկը փոխանցվում է որպես պարամետր:

// FileList - տարրերի հղումներ պարունակող արժեքների ցանկ
// գրացուցակ, որտեղ գտնվում են բեռնված ֆայլերը
// Արժեքների ներկայացման ցանկը վերբեռնվող ֆայլի անվանումն է
FileArray = Նոր զանգված;
Ցուցակի յուրաքանչյուր տարրի համար Ֆայլերի ցանկից
Ֆայլ = Նոր Ֆայլ (Տող (ListElement.Value));
ReceiveFile = Նոր Փոխանցված ֆայլի նկարագրություն;
ReceiveFile.Name = ListElement.View;
ReceiveFile.Storage= Պ getNavigationLink (ListItem.Value, «Տվյալներ»);
FileArray.Add(ReceivingFile);
End Cycle;
Ստացված ֆայլեր= Նոր զանգված;
Արդյունք = ReceiveFiles (FilesArray, ReceivedFiles, UploadedFilesPath, False);
Եթե ​​ՈՉ Արդյունք Ապա
Հաղորդագրություն = Նոր Հաղորդագրություն օգտատիրոջը;
Հաղորդագրություն.Տեքստ = «Ֆայլեր ստանալու սխալ»:;
Message.Message();
Վերջ Եթե ;

Ավարտելուց հետո մեթոդը կարող է վերադարձնել իրականում ներբեռնված ֆայլերի ցանկը՝ նշելով յուրաքանչյուր պահված ֆայլի ամբողջական անունը:
ՆՇՈՒՄ. Վեբ հաճախորդում GetFiles() մեթոդն օգտագործելու համար անհրաժեշտ է միացնել ֆայլի ընդլայնումը: Եթե ​​գույքը Օբյեկտի անվանումը Փոխանցված ֆայլի նկարագրությունըպարունակում է բացարձակ ուղի դեպի ֆայլ, ֆայլը կպահվի այս ճանապարհում՝ անկախ պարամետրից Ֆայլի գտնվելու վայրը.
Ֆայլի գտնվելու պարամետրը կարող է լինել կա՛մ ուղի տեղական ֆայլային համակարգում, կա՛մ Ֆայլի ընտրության երկխոսության օբյեկտ՝ գրացուցակ ընտրելու կամ ֆայլերը պահելու ռեժիմում: Եթե ​​պարամետրի արժեքը Ֆայլի գտնվելու վայրընշված օբյեկտը Ֆայլի ընտրության երկխոսությունռեժիմում
ֆայլերի պահպանում, այնուհետև՝

● երկխոսությունը կկանչվի յուրաքանչյուր փոխանցված ֆայլի համար, բացառությամբ այն ֆայլերի, որոնց համար Transmitted File Description object name հատկությունը պարունակում է բացարձակ ուղի;
● օբյեկտի արժեքը Name of Description of the Transmitted File հատկությունը կօգտագործվի որպես սկզբնական ֆայլի անուն երկխոսության մեջ;
● եթե որևէ ֆայլի համար ընտրված է պահպանումից հրաժարվելը, ապա Transferred File հատկության նկարագրությունը օբյեկտի անվանումը կպարունակի դատարկ տող;
● GetFiles() մեթոդը կվերադարձնի True արժեքը, եթե գոնե մեկ ֆայլ հաջողությամբ ստացվի;
● պետք է հաշվի առնել, որ ֆայլերն իրականում ստացվում են այն բանից հետո, երբ օգտվողը պատասխանում է անունն ու ճանապարհը նշելու վերաբերյալ հարցերին։
ստացված բոլոր ֆայլերը;
● եթե օգտատերը, ում անունից գործարկվել է GetFile() մեթոդը, չունի View իրավունք այն infobase օբյեկտի առնվազն մեկ հատկանիշի նկատմամբ, որից վերցվում են ֆայլերը, ամբողջ գործողությունը կձախողվի:
Օրինակ:

TransferredFiles = Նոր զանգված;
Նկարագրություն = Նոր Փոխանցված ֆայլի նկարագրությունը(«Նկարագրություն», Ֆայլի հասցե);
Փոխանցված Ֆայլեր.Ավելացնել(Նկարագրություն);
FileSelect = Նոր FileSelectionDialog (FileSelectionDialogMode.Save);
FileSelect.Header= «Պահպանել արխիվը»;
Ֆայլի ընտրություն. ընդլայնում= «zip»;
FileSelect.Filter= «Արխիվ (*.zip)|*.zip|Բոլոր ֆայլերը|*.*»;
FileSelect.FilterIndex = 0;
ReceiveFiles (TransferFiles, SelectFile, False);

Եթե ​​ընտրված է ֆայլերը պահելու համար գրացուցակի ընտրության ինտերակտիվ ռեժիմը, ապա վեբ հաճախորդը լրացուցիչ թույլտվություն կխնդրի պահպանել բացարձակ ուղիներով նշված ֆայլերը: Ոչ ինտերակտիվ պահպանման դեպքում (գրացուցակի ուղին նշված է համապատասխան պարամետրում), հարցումը կկատարվի պահպանված ֆայլերի ողջ ցանկի համար:

Ֆայլի մեթոդների օգտագործման օրինակ

// Ինտերակտիվ կերպով սկավառակից ֆայլի առբերում
// և տեղադրելով այն ժամանակավոր պահեստում:
&OnClient
Ընթացակարգը SelectDiskFileIWrite()
Փոփոխական SelectedName;
Պերեմ TemporaryStorageAddress;
NewObject = Object.Link.Empty();
Եթե PlaceFile (TemporaryStorageAddress, “”, SelectedName, True)Հետո
Object.FileName = SelectedName;
PlaceObjectFile (TemporaryStorageAddress);
վերջԵթե;
Ընթացակարգի ավարտը
// Ֆայլի պատճենում ժամանակավոր պահեստից դեպի ռեկորդներ
// գրացուցակ, օբյեկտ գրել, ֆայլի ջնջում ժամանակավորից
// պահեստավորում.
&Սերվերի վրա
Ընթացակարգը PlaceObjectFile (Ժամանակավոր Պահպանման հասցե)
Տեղեկատու տարր = Form AttributesValue («Օբյեկտ»);
Երկուական տվյալներ = GetFromTemporaryStorage (TemporaryStorageAddress);
Directory Element.File Data= Նոր StorageValues ​​(երկուական տվյալներ, NewDataCompression()) ;
Ֆայլ = Նոր Ֆայլ (տեղեկատուի նյութ. Ֆայլի անուն);
Տեղեկատու Item.FileName = File.Name;
Գրացուցակի տարր.Write();
Փոփոխված = Սխալ;
DeleteFromTemporaryStorage (TemporaryStorageAddress);
ValueВFormAttributes (տեղեկատուի տարր, «Օբյեկտ»);
Ընթացակարգի ավարտը
// Կարդացեք ֆայլը հենակետերից և պահպանեք այն
// տեղական սկավառակի վրա ինտերակտիվ ռեժիմում:
&OnClient
Ընթացակարգը ReadFileAndSaveToDisk()
Հասցե = GetNavigationLink (Object.Link,«FileData»);
GetFile (Address, Object.FileName, True);
Ընթացակարգի ավարտը

Ֆայլի մի խումբ գործողություններ կատարելու թույլտվություն

Վեբ-հաճախորդում որոշ գործողություններ կատարելիս գուցե անհրաժեշտ լինի թույլտվություն ստանալ բազմաթիվ ֆայլերի գործողությունների համար:
Օրինակ, դուք պետք է առբերեք փաստաթուղթը տեղեկատվական բազայից, այնուհետև բացեք պահպանված փաստաթուղթը՝ օգտագործելով համապատասխան հավելվածը:
Այս գործողությունը կատարելու համար դուք պետք է պատասխանեք փաստաթուղթը պահպանելու և այն գործարկելու անհրաժեշտության մասին հարցին: Եթե ​​ավելի շատ գործողություններ լինեն, օգտվողը նույնպես կունենա ավելի շատ հարցեր:
Հարցերի քանակը նվազեցնելու համար կարող եք օգտագործել մեթոդը. Այս մեթոդը կիրառելիս
Օգտագործողին ցուցադրվում է բոլոր գործողությունների ցանկը, որոնք նախատեսվում է կատարել, և նրան խնդրում են թույլ տալ կատարել գործողությունների խումբը: Եթե ​​օգտագործողը թույլատրել է կատարումը, ապա պահանջվող գործողությունները կկատարվեն առանց օգտագործողին լրացուցիչ հարցումների: Եթե ​​թույլտվություն չտրամադրվի, գործողությունները կշարունակվեն բնականոն հունով. յուրաքանչյուր գործողության համար մեկ հարցում:
ՆՇՈՒՄ. Մեթոդն օգտագործելու համար RequestUserPermission ()Վեբ հաճախորդում դուք պետք է միացնեք ֆայլերի կառավարման ընդլայնումը:
Դիտարկենք մեթոդի օգտագործման օրինակ.

Եթե ConnectExtensionԱշխատում է ֆայլերով ()Հետո
Հղում = GetNavigationLink (Object.Link, «FileData»);
// Փոխանցված ֆայլերի նկարագրության ձևավորում (այս դեպքում կա միայն մեկ ֆայլ)
Փոխանցված ֆայլեր= Նոր զանգված;
Նկարագրություն = Փոխանցված ֆայլի նոր նկարագրություն (Օբյեկտ. Ֆայլի Անուն, Հղում);
TransferredFiles.Add (Նկարագրություն);
// Պատրաստել օբյեկտ՝ ստացված ֆայլերի մասին տեղեկատվություն ստանալու համար
Փոխանցված ֆայլեր= Նոր զանգված;

// Սահմանել մեթոդի այլ պարամետրեր
DirectorySave= «c:\temp»;
Ինտերակտիվ = Սխալ;
Փոխանցված Ֆայլի Անուն = Պահպանում է գրացուցակը + “\” + Object.FileName;
// Պատրաստել թույլտվություններ ստանալու մեթոդների նկարագրությունը
Մեթոդներ = Նոր զանգված;

Methods.Add («GetFiles»);
Methods.Add(TransferFiles);
Methods.Add(TransferredFiles);
Methods.Add(SaveDirectory);
Methods.Add (Ինտերակտիվ);
Methods.Add(New Array);
Methods.Add («RunApplication»);
Methods.Add(TransferredFileName);
Եթե ​​ոչ RequestUser Permission (մեթոդներ)Հետո
Զգուշացում («Օգտագործողը մերժել է թույլտվությունը»);
Վերադարձ;
վերջԵթե;
GetFiles (TransferFiles, TransmittedFiles, SavingDirectory, Interactive);
RunApplication (TransferredFileName);
Հակառակ դեպքում
Զգուշացում («Կատարումը չի աջակցվում: Ֆայլի ընդլայնումը տեղադրված չէ»);
վերջԵթե;

Պետք է նշել մեթոդի մի քանի առանձնահատկություններ RequestUserPermission():

1. Թույլտվությունը պահանջվում է միայն հետևյալ մեթոդների համար.

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

2. Թույլտվություն է պահանջվում մեթոդի պարամետրերի որոշակի փաթեթի համար: Եթե ​​ֆայլի մանիպուլյացիայի մեթոդի իրական կատարման ընթացքում պարամետրերի արժեքները տարբերվում են նրանցից, որոնց համար թույլտվություն է ստացվել, ապա այս թույլտվությունը վավեր չի լինի, և օգտագործողը կստանա գործողությունը հաստատելու առանձին հարցում:

3. Եթե Ձեզ անհրաժեշտ է կատարել երկու (կամ ավելի) նույնական գործողություններ ֆայլերի հետ (նույնիսկ նույն պարամետրերով), դուք պետք է նշեք համապատասխան քանակի տարրեր մեթոդի պարամետրերի զանգվածում: RequestUserPermission (). Օրինակ, եթե ձեզ անհրաժեշտ է երկու անգամ նույն ֆայլը ստանալ տեղեկատվական բազայից և տեղադրել այն ֆայլային համակարգի ֆիքսված վայրում, դուք պետք է թույլտվություն խնդրեք:
երկու գործողության համար.

4. Եթե թույլտվություն է պահանջվում ինտերակտիվ գործողություն կատարող գործողության համար (օրինակ՝ GetFiles() ֆունկցիան, օբյեկտը փոխանցվում է որպես պարամետր։ Ֆայլի ընտրության երկխոսություն), ապա նման գործողությունը բացառվում է հարցումից։

Տրված թույլտվությունները պահպանվում են կամ մինչև լիազորված զանգի իրականացումը, կամ մինչև ներկառուցված լեզվի աշխատանքը ավարտվի:
ՆՇՈՒՄ. Հաստ և նիհար հաճախորդների մեջ RequestUserPermission ()Մեթոդը միշտ վերադարձնում է True՝ առանց օգտվողի փոխազդեցության:

Աշխատեք ժամանակավոր պահեստով ֆոնային աշխատանքում

Ժամանակավոր պահեստավորման հետ աշխատելու մեխանիզմը հնարավորություն ունի տվյալների փոխանցման ֆոնային աշխատանքից այն նիստին, որը սկսել է ֆոնային աշխատանքը:
Նման փոխանցման համար դուք պետք է դատարկ արժեք տեղադրեք ժամանակավոր պահեստում, մայր նիստում (օգտագործելով մեթոդը PlaceInTemporaryStorage()), նշելով ստեղծվող ժամանակավոր պահեստի ցանկացած նույնացուցիչ (Հասցեի պարամետր): Այնուհետև ստացված հասցեն փոխանցեք ֆոնային աշխատանքին ֆոնային աշխատանքի պարամետրերի միջոցով: Ավելին, եթե ֆոնային աշխատանքում այս հասցեն օգտագործվում է որպես Method Address պարամետրի արժեք PlaceInTemporaryStorage(), այնուհետև արդյունքը կպատճենվի այն նիստին, որտեղից գործարկվել է ֆոնային աշխատանքը:
Ֆոնային աշխատանքում ժամանակավոր պահեստում տեղադրված տվյալները հասանելի չեն լինի ծնողի աշխատաշրջանից մինչև ֆոնային աշխատանքը չավարտվի:

Նկարի դաշտում հասցեների աջակցություն

Դիտել դաշտի ձևի տարրը Նկար դաշտն աջակցում է ժամանակավոր պահեստում կամ տվյալների բազայում արժեքի հասցեով (որը կարող է լինել նկար կամ երկուական տվյալներ) նշված նկարի ցուցադրումը:
Դա անելու համար ձևի տարրի Data հատկության մեջ պետք է սահմանել տողի տիպի հատկանիշ: Այս հատկանիշի արժեքը կմեկնաբանվի որպես նկարի հասցե:

// Օրինակ 1
// Պատկերի դաշտը ժամանակավոր կապելով պատկերի հասցեին
// պահեստավորում. AddressPictures – տողի տիպի ձևի մանրամասներ
PlaceFile (ImageAddress, InitialName, SelectedName, True, UniqueIdentifier);
// Օրինակ 2
// Նկարի հասցեի ստացում օբյեկտի հատկանիշից
// տեղեկատվական բազա
FilePictures = Object.FilePictures;
Եթե ​​ոչ PictureFile.Empty() Ապա
ImageAddress = GetNavigationLink (ImageFile, «FileData»);
Հակառակ դեպքում
ImageAddress = «»;
Անվերջ;

Ստանդարտ դիրեկտորիաների հասանելիություն

Համակարգն օգտագործելիս ֆայլային համակարգում որոշակի տեղ է պահանջվում, որտեղ կարող են պահվել տարբեր ֆայլային տվյալներ, որոնք մի կողմից ժամանակավոր են, իսկ մյուս կողմից՝ պետք է բավական երկար պահվեն։ Նման ֆայլերը ներառում են փաստաթղթերի կառավարման համակարգերի նախագծեր, հաճախորդի համակարգչի վրա աշխատող արտաքին բաղադրիչներ և այլն:
Նման ֆայլերը պահելու համար նախատեսված է հատուկ գրացուցակ, որը կապված է կոնկրետ տեղեկատվական բազայի կոնկրետ օգտագործողի հետ։
Երկու տեղեկատվական բազաներով աշխատող նույն օգտատերը մուտք կունենա երկու տարբեր գրացուցակներ՝ օգտատիրոջ տվյալները պահելու համար: Այս գրացուցակի գտնվելու վայրը որոշվում է մեթոդով WorkUserDataDirectory () Եթե ​​գրացուցակը գոյություն չունի, այն ստեղծվում է առաջին անգամ մուտք գործելիս: Եթե ​​գրացուցակը հնարավոր չէ ստեղծել, համակարգը բացառություն է անում:
ՆՇՈՒՄ. UserDataWorkDirectory() մեթոդը հասանելի չէ սերվերի կողմից:
Օպերացիոն համակարգն ունի հատուկ գրացուցակ, որը հատկացված է օգտագործողի տվյալների մշտական ​​պահպանման համար: Դա կարող է լինել մի քանիսը
հաշվետվություններ, փաստաթղթերի տպագիր ձևեր և այլն: Տվյալները տեղադրվում են այս գրացուցակում, որոնք հետագայում կարող են ուղարկվել արտաքին
սպառողներին: Այս գրացուցակը մուտք գործելու համար օգտագործվում է DocumentDirectory() մեթոդը: Գրացուցակի ֆիզիկական գտնվելու վայրը տատանվում է կախված օպերացիոն համակարգից:
համակարգ, որտեղ հավելվածը կատարվում է և նշված է շարահյուսական օգնականում: