internet pencereler Android

Geçici depolamadan alın 1s 8.3. Bir dosyadan geçici depolamaya veri kaydetme

Değer deposunda hemen hemen her bilgi saklanabilir, örneğin,

... resimler (fotoğraflar):

TekImage.Object = SprFabric.Ref; TekImage.DataType = Enumerations.AdditionalInformationTypesObjects.Image; Depolama = Yeni Depolama Değeri (Yeni Resim, Yeni Veri Sıkıştırma ()); TekImage.Storage = Storage.Get();

// bu yerde her şeyi görüntüler ... Form Elements.PictureField1.Picture = Storage.Get (); TekImage.Write();

... elektronik tablo belgesi:

TabDoc = Yeni Tablo Belgesi; TabDoc.Display (Form Elements.TableDocumentField1); Depolama = Değerlerin Yeni Depolanması (TabDoc); Yazı yazmak ();

Prosedürün Sonu

Prosedür Depolama Presinden Geri Yükleme (Öğe)

TabDoc = Storage.Get(); TabDoc ise<>Tanımsız Sonra Form Elements.TableDocumentField1.Offer (TabDoc); EndIf;

Prosedürün Sonu

... isteğe bağlı dosyalar (ikili veriler):

HZ = NewValueStore (Yeni BinaryData (dosya));

Sekiz, depoya yerleştirilen verilerin sıkıştırılmasını destekler:

HZ = NewValueStore (Yeni BinaryData (dosya), Yeni DataCompression (9));

... harici işleme ve raporlama:

Yordam LoadProcessingDepolamada (Props StorageType)

Sıkıştırma Derecesi = Yeni Veri Sıkıştırma (9); // 9 maksimum PropsStorageType = NewValueStore (Yeni BinaryData ("c: \ raporlar \ rapor.epf", Sıkıştırma Derecesi));

Prosedürün Sonu

Prosedür StartProcessingFrom Storage (Props StorageType)

TempFileName = TempFileDir () + "report.epf"; BinaryData = PropsTypeStorage.Get (); BinaryData.Write (GeçiciDosyaAdı); ExternalProcessing = ExternalProcessing.Create (TemporaryFileName); ExternalProcessing.GetForm().Aç();

Prosedürün Sonu

Depolama ile çalışma

BinaryData ise, Get yöntemi kullanılarak değer deposundan geri yüklenebilir ve Write () yöntemi kullanılarak bir dosyaya yazılabilir.

TypeZnch (Depolama) ise<>("BinaryData") yazın ve ardından

BinaryData = Storage.Get();

BinaryData = Depolama;

EndIf; BinaryData.Write (DosyaAdı);

Örneğin, bir Word belgesiyse (doc dosyası veya kayıtlı türden başka bir dosya), şu şekilde açılabilir:

RunApplication (DosyaAdı);

Değer depolama türündeki bir alanı temizlemek için, onu Tanımsız olarak atamanız gerekir:

PropsStorage = Tanımsız;

1C: Enterprise 8 yerleşik dilinde dosya ve resimlerle çalışma

Randevu

Yönetilen uygulama uygular yeni mekanizma dosyalarla çalışmak. arasında dosya alışverişi sağlar. bilgi tabanı ve bir istemci uygulaması. Bu mekanizmanın özelliği, ince bir istemcide ve bir Web istemcisinde kullanıma odaklanması ve web tarayıcıları tarafından dayatılan dosyalarla çalışma kısıtlamaları dikkate alınarak tasarlanmasıdır.

Mekanizma, kullanıcıda yerel olarak depolanan verileri bilgi tabanının geçici deposuna koymak, bu bilgileri geçici depodan veri tabanına aktarmak ve kullanıcının bilgisayarına geri almak için kullanılabilecek bir dizi yöntemdir. Bu mekanizma tarafından çözülen en yaygın uygulama görevleri, örneğin malların resimleri, sözleşmelerle ilgili belgeler vb. gibi eşlik eden bilgilerin saklanmasıdır.

Yöntem kapsamı

Geçici depolama

Geçici depolama, ikili verilerin depolanabileceği özel bir bilgi tabanı alanıdır. Temel amaç, istemci-sunucu etkileşimi sırasında veri tabanına aktarılana kadar bilgilerin geçici olarak depolanmasıdır.

Geçici depolama ihtiyacı, web tarayıcısının modelinde, kullanıcı tarafından seçilen dosyanın istemcide saklanma olasılığı olmadan doğrudan sunucuya aktarılması gerektiği gerçeğinden kaynaklanmaktadır. Bir dosya aktarılırken geçici depoya alınır ve ancak o zaman veritabanına bir nesne yazılırken kullanılabilir.

Geçici depolama ile çözülen en tipik uygulama sorunu, örneğin bir öğe biçiminde nesne bilgi tabanına yazılmadan önce dosyalara veya resimlere erişim sağlamaktır.

Depoya yerleştirilen bir dosya veya ikili veri, daha sonra yazma, okuma veya silme işlemlerinde kullanılabilecek benzersiz bir adresle tanımlanır. Bu adres, dosyayı geçici depolamaya yazma yöntemleri ile verilir. Yerleşik dilde ayrı bir yöntem, iletilen adresin geçici depolamadaki verilere işaret eden bir adres olup olmadığını belirlemenize olanak tanır.

bilgi tabanı

Mekanizma, ValueStore türünün özniteliklerinde depolanan ikili verilere erişmenizi sağlar.

Geçici saklama durumunda olduğu gibi özel bir adres üzerinden bilgiye ulaşılabilir. Bir nesneye veya bir bilgi kaydı kayıt anahtarına ve bir öznitelik adına bir referans ileterek özel bir yöntemle elde edebilirsiniz. Bir tablo bölümü olması durumunda, tablo bölümü satırının indeksinin de aktarılması gerekir.

Bilgi bankası ayrıntılarıyla çalışırken dosyalarla çalışma yöntemleri sınırlıdır. Onlar için, geçici depolamadan farklı olarak, yalnızca okuma bilgileri mevcuttur, ancak bunları yazmak veya silmek mümkün değildir.

Dosyalarla çalışma yöntemlerinin açıklaması

Verileri geçici depolamaya kaydetme

Bu mekanizmayı kullanmanın en tipik senaryosu, kullanıcı verilerinin geçici depolamaya ilk yerleştirilmesini içerir. Bunun için iki yöntem vardır: PlaceFile() ve PlaceFileToTemporaryStorage().

İlk yöntem, PlaceFile (), yerel dosya sisteminden bir dosyayı geçici depolamaya yerleştirir. Yöntem, mağazadaki hedef adresi alabilir. Tanımlanmamışsa veya boş bir dize ise, oluşturulacaktır. yeni dosya ve yöntem, adresini karşılık gelen parametre aracılığıyla döndürür.

Etkileşimli çalışma modunu belirleyen parametre True ise, yöntem, depoya yerleştirilecek bir dosya seçebileceğiniz standart bir dosya seçimi iletişim kutusu görüntüler. Bu durumda, yöntem seçilen dosyanın adresini de döndürür.

Sonuç olarak, kullanıcı dosya seçimi iletişim kutusunda işlemi gerçekleştirmeyi etkileşimli olarak reddederse, yöntem False değerini döndürür. Yöntem yalnızca istemcide kullanılabilir.

İkinci yöntem, PutFileToTemporaryStorage (), sunucuda mevcut olması ve geçici depolamaya yazma verilerinin bir yol olarak temsil edilmemesi dışında öncekine benzer. dosya sistemi, ve şeklinde değişken tip Ikili veri. Aynı şekilde, hedef adres belirtilmemişse, depoda yeni bir dosya oluşturulur. Adresi, işlevin bir sonucu olarak döndürülür.

Geçici depolamadan bir dosya alma

Bir bilgi tabanına bir nesne yazarken, geçici bir depodan veri çıkarmanız ve örneğin bir sahne içine yerleştirmeniz gerekebilir. Buna karşılık gelen bir sunucu yöntemi var - GetFileFrom TemporaryStorage (). Bu yöntem, verileri geçici depolamadan alır ve sonuç olarak döndürür. Bunu yapmak için, adresi geçici depolamada belirtmelisiniz. Bu adres, başarılı olmaları durumunda yukarıdaki PlaceFile() ve PlaceFileTemporaryStorage() yöntemleri tarafından döndürülür.

Bir dosyayı geçici depolamadan kaldırma

Veriler aksesuarlara kaydedildikten sonra geçici depolamadaki dosya silinebilir. Bunu yapmak için dosyayı geçici depodan kaldıran DeleteFileFromTemporaryStorage () yöntemi vardır. Yöntem, parametreye geçici depolamadaki dosyanın adresini alır. Sunucuda mevcuttur.

Geçici depolamaya ait adresin kontrol edilmesi

Dosya adresi hem geçici bir depoya hem de bir bilgi tabanı değişkenine işaret edebilir. Türünü kontrol etmek için ThisTemporaryStorageAddress() yöntemi vardır.

Geçirilen adresin mağazaya işaret eden bir adres olduğunu doğrular. Adres geçici depolamaya işaret ediyorsa True döndürür. Yöntem sunucuda mevcuttur.

Bir sahne adresi alma

Veriler bilgi tabanındaki aksesuarlara yerleştirildikten sonra, onlara dosya yöntemlerini kullanarak erişmeniz gerekebilir.

Ancak örneğin bir props'tan veri almadan önce bu propların adresini almanız gerekir. Bunu yapmak için GetFileAddressVinformationBase () yöntemi vardır.

Amacı, bilgi tabanındaki dosya adresini orijinal parametrelere göre döndürmektir. Bunu yapmak için, nesne anahtarını (bir nesneye referans olabilir veya bir bilgi kaydı kaydı için bir anahtar olabilir) ve özniteliğin adını iletmeniz gerekir. Tablo bölümünün özniteliğinde saklanan dosyanın adresini almanız gerekiyorsa, özniteliğin adını belirten parametrede öznitelik adından önce, tablo bölümünün adını ve "." noktasını eklemelisiniz. Yöntem hem istemcide hem de sunucuda kullanılabilir.

Bir bilgi tabanından dosya alma

GetFile () yöntemi, bilgi tabanından bir dosya alır ve onu kullanıcının yerel dosya sistemine kaydeder. İlk parametre, aksesuarlardaki veya geçici dosya deposundaki dosya adresini tanımlar. İkinci parametre, ortaya çıkan dosyanın hedef konumunu belirtir. Etkileşimli olmayan modda yolu belirtmeniz gerekir. Etkileşimli modda parametre isteğe bağlıdır.

Varsayılan olarak, yöntem etkileşimli olarak yürütülür, yani son parametre True'dur. Bu, sonuçta ortaya çıkan dosyayla bir eylem belirtebileceğiniz bir iletişim kutusunun görüntülendiği anlamına gelir: çalıştırın veya kullanıcı tarafından belirtilen bir konuma kaydedin. Etkileşimli mod etkinse ve hedef dosya yolu on disk parametresi belirtilmemişse, dosya açma işlemi kullanılamaz. Bir boole değeri döndürür. Yanlış, kullanıcının çevrimiçi dosya kaydetme iletişim kutusunda işlemi iptal etmeyi seçtiği anlamına gelir.

Dosya yöntemlerini kullanma örneği

// Etkileşimli olarak diskten bir dosya alma // ve onu geçici depoya yerleştirme & İstemci Prosedüründe SelectSDiskFileUsewrite ()

Değişken SelectedName; Geçici Depolamanın Değişken Adresi; PutFile (GeçiciStorage Adresi, SelectedName, True) ise Object.FileName = SelectedName; PlaceObjectFile (GeçiciStorageAdresi); EndIf;

Prosedürün Sonu

// Geçici depolamadan dizinin gerekliliğine // dosya kopyalama, bir nesne kaydetme, geçici // depolamadan bir dosya silme ve OnServer Prosedürü PlaceObjectFile (GeçiciStorage Adresi)

DirectoryElement = FormInValue ("Nesne"); BinaryData = GetFileFrom TemporaryStorage (GeçiciStorage Adresi); DirectoryElement.FileData = NewValueStore (BinaryData); FileDiskPath = Yeni Dosya (DirectoryElement.FileName); DirectoryElement.FileName = FilePathNaDisk.Name; DirectoryElement.Write(); Değişiklik = Yanlış; DeleteFileFrom Geçici Depolama (Geçici Depolama Adresi); ValueVFormAttribute (DirectoryElement, "Nesne");

Prosedürün Sonu

// Dosyayı aksesuarlardan okuyun ve kaydedin // yerel diskÇevrimiçi ve İstemci Prosedürü ReadFile ANDSaveOnDisk ()

Adres = GetAddressFileInformationBase (Object.Link, "FileData"); GetFile (Adres, Object.FileName, True);

Prosedürün Sonu

Resim alanındaki adresler için destek

Görüntü alanı denetimi, geçici depolamada veya bir veritabanında dosya adresiyle belirtilen bir görüntünün görüntülenmesini destekler.

Bunu yapmak için, form öğesinin Veri özelliğinde bir dize türü özniteliği belirtmelisiniz. Bu değişkenin değeri resmin adresi olarak yorumlanacaktır.

Örnek // Görüntü alanını geçici depolamadaki görüntü adresine bağlama //. Dize türünün AddressPictures form özniteliği

PlaceFile (ResimAdresi, Doğru)

Image.Data = ResimAdresi

Web istemcisiyle çalışırken kısıtlamalar

Web istemcisini kullanırken açıklanan mekanizmanın çalışması bazı sınırlamalara sahiptir. Bu kısıtlamalar, tarayıcı güvenlik modelinin özellikleriyle ilgilidir. Örneğin, istemci bir dosyayı yerel dosya sistemine kendi başına kaydedemez, yani yalnızca PlaceFile () ve GetFile () istemci yöntemlerinin etkileşimli sürümü kullanılabilir. Etkileşimli olmayan modu kullanmaya çalışırken bir istisna atılır. Diyalog kutularıçevrimiçi görüntülenenler tarayıcıya özeldir.

İstemcideki Değerler Mağazası ile çalışırken özellikler

Sorun:

Bir Belge, tablo bölümünde ValueStore türünde bir özniteliğe sahip olduğunda, bu öznitelik büyük veri içeriyorsa belge formunun açılmasını yavaşlatır.

Tahmini sebep:

Belki de form açıldığında, müşteri Values ​​Store'da depolanan verilere değil, verilerin kendisine bir bağlantı alır.

Çözüm

  • Formun tablo özniteliğinin özelliklerinde "Her zaman kullan" bayrağı vardır. Ayarlanırsa, alanın içeriği her zaman sunucu ve istemci arasında iletilir - örneğin, bir form açılırken. Bu bayrak devre dışı bırakılmalıdır, ancak kodda bunu dikkate almalısınız, çünkü varsayılan olarak bu alanın değeri istemcide olmayacaktır. Bir örnek 1C: Arşiv'de görüntülenebilir.

Daha da iyisi, kullanın geçici depolama istemci ve sunucu arasında dosya aktarmak için.

Yazdır (Ctrl + P)

Bu bölüm, geçici depolama ve dosyalarla çalışma mekanizmasını kullanmak için en yaygın seçenekleri açıklar.

Bir dosyadan geçici depolamaya veri kaydetme

Tek bir dosya yerleştirme

PlaceFile () yöntemi, yerel dosya sisteminden bir dosyayı geçici depolamaya yerleştirir. Yöntem, dosyayı kaydetmek istediğiniz geçici depolama alanında bir adres alabilir. Adres tanımlı değilse veya boş bir dize ise, oluşturulacaktır. yeni adres ve yöntem onu ​​özel bir parametre aracılığıyla döndürür.
Not. PlaceFile() yöntemine yapılan çağrı başına istemci ve sunucu arasında aktarılan veri miktarı
Etkileşimli çalışma modunu belirleyen parametre True ise, yöntem, depoya yerleştirilecek bir dosya seçebileceğiniz standart bir dosya seçimi iletişim kutusu görüntüler. Bu durumda, yöntem seçilen dosyanın adresini de döndürür.
Sonuç olarak, kullanıcı dosya seçimi iletişim kutusunda işlemi gerçekleştirmeyi etkileşimli olarak reddederse, yöntem False değerini döndürür.

Bir dizi dosya yerleştirme

Yöntem Yer Dosyaları () bir aramada birkaç dosyayı geçici depolamaya yerleştirir. Bir kaç tane var Farklı yollar bu yöntemi kullanarak:
● örneğin bilgi tabanına yerleştirilecek dosyaları önceden seçtiğinizde, önceden eklenen dosyaların bir listesini oluşturun;
● örneğin, belirli bir türdeki tüm dosyaları bilgi tabanına, örneğin tüm resimlere yerleştirmek gerektiğinde, dosya arama maskesini yönteme iletin;
● önceden hazırlanmış bir nesneyi yönteme iletin Dosya Seçimi Diyaloğu dosya açma modunda.
Bittiğinde, yöntem gerçekten eklenen dosyaların bir listesini döndürebilir.

// FileList, ValuesList türünün bir form özelliğidir,
// eklenecek dosyaların listesini içeren
ArrayFiles = Yeni Dizi;
Dosya Listesi Döngüsünden Her Öğe Listesi İçin
ArrayFiles.Add (İletilen Dosyanın Yeni Açıklaması (ListElement,));
Döngü Sonu;
Yerleştirilen Dosyalar= Yeni Dizi;
Sonuç = PlaceFiles (ArrayFiles, PlacedFiles, False, UniqueID);

Not 1. Yöntemi kullanmak için Yer Dosyaları () web istemcisinde bir dosya uzantısı gereklidir.
Not 2. Yöntem çağrısı başına istemci ve sunucu arasında aktarılan veri miktarı Yer Dosyaları (), 4 Gb'yi (serileştirilmiş biçimde) aşmamalıdır.

Verileri geçici depolamaya yerleştirme

Yöntem, geçici depolamaya yazılacak verilerin dışında PutFile () yöntemine benzer.
dosya sisteminde bir yol olarak değil, bir değer olarak temsil edilirler. Aynı şekilde, geçici depoda mevcut bir adres belirtilmemişse, yeni bir adres oluşturulur. Adres, işlevin bir sonucu olarak döndürülür. Dosyaların yanı sıra, gönderilen veriler mutlaka bir forma aittir ve silindikten sonra otomatik olarak silinir.
Not. Yöntem çağrısı başına istemci ve sunucu arasında aktarılan veri miktarı YerGeçiciDepolama (), 4 Gb'yi (serileştirilmiş biçimde) aşmamalıdır.
Dikkat! Geçici depolamaya yerleştirildiğinde, değer aslında serileştirilmez. Önbellekte 20 dakika saklanan değere bir bağlantı yerleştirilir. Bu süreden sonra değer serileştirilir, diske yazılır (oturum veri deposunda) ve önbellekten kaldırılır.

Geçici depolamadan veri alma

Bir bilgi tabanına bir nesne yazarken, geçici bir depodan veri almanız ve örneğin bilgi bankası nesne özniteliğine yerleştirmeniz gerekebilir. Bunun için özel bir yöntem var - GetFromTemporaryStorage (). Bu yöntem, verileri geçici depolamadan alır ve yürütme sonucu olarak döndürür. Veri almak için, adresi geçici olarak belirtmelisiniz.
depolamak. Verileri geçici depolamaya koyma yöntemleri, başarılı olursa bu adresi döndürür (önceki bölümlere bakın).
Dikkat! Sunucudaki geçici bir depodan bir değer alırken, referans olarak alındığını göz önünde bulundurmalısınız. Aslında bu bağlantı, önbellekte depolanan değere işaret eder. 20 dakika içinde, depoya yerleştirildiği andan veya son erişim anından itibaren, değer önbellekte saklanacak ve daha sonra diske yazılacak ve önbellekten silinecektir. Bir sonraki çağrıda, değer diskten yüklenir ve önbelleğe geri konur.
Seri durumdan çıkardıktan ve değeri geçici depodan geri yükledikten sonra bağlantılar geri yüklenmez. Önbellekteki değer diskten geri yüklenir. Ancak serileştirme/seri hale getirme işleminden sonra, değer içindeki diğer nesnelere yapılan referansları geri yüklemek mümkün değildir.

Verileri geçici depolamadan silme

Veriler, bilgi bankası nesnesinin özniteliğine kaydedildikten sonra, geçici depolamadaki veriler silinebilir. bunun bir yöntemi var
GeçiciDepolamadan Kaldır (), hangi silme yapar. Yöntem, parametre olarak geçici depolamadaki bir adresi kabul eder.

Geçici depolamaya ait adresin kontrol edilmesi

Adres, bilgi tabanında hem geçici bir depolama hem de bir değişken belirtebilir. Türünü kontrol etmek için bir yöntem var
Bu TemporaryStorageAddress (). Geçirilen adresin mağazaya işaret eden bir adres olduğunu doğrular. Adres geçici depolamaya işaret ediyorsa True döndürür.

Bir sahne adresi alma

Veriler, bilgi bankası nesnesinin özniteliğine yerleştirildikten sonra, dosya yöntemlerini kullanarak ona erişmeniz gerekebilir.
Ancak örneğin bir props'tan veri almadan önce bu propların adresini almanız gerekir. Bunun için bir yöntem var GetNavigationLink ().

Orijinal parametrelere göre bilgi tabanındaki değerin adresini döndürebilir. Bunu yapmak için nesnenin anahtarını iletmeniz gerekir (bu,
hem nesne referansı hem de bilgi kaydı kayıt anahtarı) ve sahne adı. Sahnede saklanan değerin adresini almanız gerekiyorsa
tablo bölümünün adı, ardından tablo bölümünün adı ve öznitelik adını belirten parametrede öznitelik adına "." noktası eklenmelidir. Örneğin: Ürünler.Resim

Bir bilgi tabanından dosya alma

Tek dosya alma

GetFile () yöntemi, bilgi tabanından bir dosya alır ve onu kullanıcının yerel dosya sistemine kaydeder. İlk parametre, bilgi bankası nesne özelliğindeki veya geçici dosya deposundaki dosya adresini tanımlar. Adına işlemin gerçekleştirildiği kullanıcının bilgi bankası nesne özniteliği üzerinde Görüntüleme hakkı yoksa kaydetme gerçekleşmez. İkinci parametre, elde edilen dosyanın nereye kaydedileceğini belirler. Etkileşimli olmayan modda yolu belirtmeniz gerekir. Etkileşimli modda, parametre
isteğe bağlı.
Varsayılan olarak, yöntem etkileşimli olarak yürütülür. Bu, sonuçta ortaya çıkan dosyayla bir eylem belirtebileceğiniz bir iletişim kutusunun oluşturulacağı anlamına gelir: dosyayı başlatın veya dosya sisteminde kullanıcı tarafından belirlenen bir konuma kaydedin. Etkileşimli mod seçilirse ve Dosya adı parametresi belirtilmezse, dosya açma işlemi kullanılamaz. Yöntem bir Boole değeri döndürür. Yanlış, kullanıcının çevrimiçi dosya kaydetme iletişim kutusunda işlemi iptal etmeyi seçtiği anlamına gelir.

Bir dizi dosyayı alma

GetFiles () yöntemi, kullanıcının yerel dosya sisteminde bilgi tabanında depolanan birkaç dosyayı almanıza ve kaydetmenize olanak tanır. Yüklenen dosyaların listesi parametre olarak iletilir.

// FileList - öğelere bağlantılar içeren bir değerler listesi
// yüklenen dosyaların bulunduğu dizin
// Değer listesi, yüklenen dosyanın adıyla temsil edilir
ArrayFiles = Yeni Dizi;
Dosya Listesi Döngüsünden Her Öğe Listesi İçin
Dosya = Yeni Dosya (Dize (ListItem.Value));
Alınan Dosya = Yeni Aktarılan Dosyanın Açıklaması;
Alınan Dosya.Adı = Liste Öğesi.Görünüm;
Alınan Dosya.Depolama= P getNavigationLink (ListElement.Value, “Veri”);
ArrayFiles.Add (Alınan Dosya);
Döngü Sonu;
Alınan dosyalar= Yeni Dizi;
Sonuç = GetFiles (ArrayFiles, ReceivedFiles, UploadFile Yolu, False);
Sonuç DEĞİLSE O zaman
Mesaj = Yeni Kullanıcıya Mesaj;
Mesaj.Metin = "Dosyalar alınırken hata oluştu!";
Mesaj.Bilgi ();
EndIf;

Tamamlandığında, yöntem, kaydedilen her dosyanın tam adıyla birlikte gerçekten yüklenen dosyaların bir listesini döndürebilir.
NOT. Web istemcisinde GetFiles () yöntemini kullanmak için bir dosya uzantısı gereklidir. Nesne Adı özelliği İletilen Dosyanın Açıklaması dosyanın mutlak yolunu içeriyorsa, dosya parametre hariç bu yola kaydedilecektir. Dosya konumu.
FileLocation parametresi, yerel dosya sistemindeki bir yol veya bir dizin seçme veya dosyaları kaydetme modundaki bir FileSelectDialog nesnesi olabilir. parametre değeri ise Dosya konumu belirtilen nesne Dosya Seçimi Diyaloğu modunda
dosyaları kaydedin, ardından:

● Nesne Adı özelliğinin TransferredFile Açıklaması'nın mutlak bir yol içerdiği dosyalar dışında, aktarılan her dosya için iletişim kutusu çağrılır;
● Nesne Adı özelliğinin değeri İletim Dosyasının Açıklaması, iletişim kutusunda ilk dosya adı olarak kullanılacaktır;
● herhangi bir dosya için kaydetmeyi reddetme seçilirse, TransferredFile'ın Nesne Adı özelliği Açıklaması boş bir dize içerecektir;
● GetFiles () yöntemi, en az bir dosya başarıyla alındığında True değerini döndürür;
● dosyaların asıl alınmasının, kullanıcı adı ve yolu belirlemeyle ilgili soruları yanıtladıktan sonra gerçekleştirildiği akılda tutulmalıdır.
alınan tüm dosyalar;
● adına GetFiles () yönteminin yürütüldüğü kullanıcının, dosyaların alındığı bilgi bankası nesnesinin en az bir özniteliği üzerinde Görüntüleme hakkı yoksa, tüm işlem başarısız olacaktır.
Örnek:

TransferredFiles = Yeni Dizi;
Açıklama = Yeni İletilen Dosyanın Açıklaması("Açıklama", Dosya-Adres);
Dosyalar aktarılıyor.(Açıklama );
Dosya Seçimi = Yeni FileSelectDialogue (FileSelectDialogueMode.Save);
Dosya Seç.Başlığı= "Arşivi kaydet";
Dosya Seçimi.Uzantısı= "Zip";
Dosya Seçimi Filtre= “Arşiv (*. Zip) | * .zip | Tüm dosyalar | *. *”;
FileSelect.FilterIndex = 0;
GetFiles (TransferredFiles, FileSelect, False);

Dosyaların kaydedileceği dizini seçmenin etkileşimli modu seçilirse, web istemcisi ayrıca mutlak yollarla belirtilen dosyaları kaydetmek için izin isteyecektir. Etkileşimli olmayan kaydetme durumunda (dizine giden yol ilgili parametrede belirtilir), tüm kayıtlı dosyalar listesi için istek yürütülür.

Dosya yöntemlerini kullanma örneği

// Diskten etkileşimli olarak bir dosya al
// ve geçici depolamaya koyuyoruz.
& OnClient
prosedür FileSDisk'i seçin ve Yaz ()
Değişken SelectedName;
Değiştirmek Geçici Saklamanın Adresi;
NewObject = Object.Ref.Empty();
Eğer PlaceFile (Geçici Depolama Adresi, “”, SelectedName, True) Sonra
Object.FileName = SelectedName;
PlaceObjectFile (GeçiciStorageAdresi);
EndIf;
Prosedürün Sonu
// Dosyayı geçici depodan aksesuarlara kopyala
// dizin, bir nesne yazma, geçici bir dosyadan bir dosya silme
// depolar.
&Sunucuda
prosedür PlaceObjectFile (GeçiciDepolama Adresi)
DirectoryElement = FormInValue (“Nesne”);
BinaryData = GetFrom Geçici Depolama (Geçici Depolama Adresi);
Dizin Element.Dosya Verileri= Yeni StoreValues ​​​​(BinaryData, Yeni Veri Sıkıştırma ());
Dosya = Yeni Dosya (Dizin Öğesi.DosyaAdı);
DirectoryElement.FileName = Dosya.Adı;
DirectoryElement.Write();
Değişiklik = Yanlış;
Geçici Depolamadan Sil (Geçici Depolama Adresi);
ValueVFormAttribute (DirectoryElement, “Nesne”);
Prosedürün Sonu
// Sahnedeki dosyayı okuyun ve kaydedin
// yerel diskte etkileşimli modda.
& OnClient
prosedür ReadFileSaveToDisk ()
Adres = GetNavigationLink (Object.Link, "FileData");
GetFile (Adres, Object.FileName, True);
Prosedürün Sonu

Bir grup dosya işlemi gerçekleştirme izni

Web istemcisindeki bazı işlemler, birden çok dosya işlemi için izin gerektirebilir.
Örneğin, bir bilgi tabanından bir belge almanız ve ardından ilgili uygulamayı kullanarak kaydedilen belgeyi açmanız gerekir.
Bu işlemi gerçekleştirmek için belgeyi kaydetme ile ilgili soruyu ve başlama ihtiyacı ile ilgili soruyu cevaplamanız gerekecektir. Daha fazla işlem varsa, kullanıcının daha fazla sorusu olacaktır.
Soru sayısını azaltmak için yöntemi kullanabilirsiniz. Bu yöntemi kullanırken
kullanıcıya gerçekleştirilecek tüm işlemlerin bir listesi gösterilir ve işlem grubunun gerçekleştirilmesine izin vermesi istenir. Kullanıcı yürütmeye izin verdiyse, istenen işlemler kullanıcıya ek istemler olmadan gerçekleştirilir. İzin verilmez ise işlemler normal mod: bir işlem için bir istek.
NOT. Yöntemi kullanmak için Kullanıcı İzni İsteği () web istemcisinde, dosyalarla çalışmak için uzantıyı bağlamanız gerekir.
Yöntemi kullanmanın bir örneğini ele alalım:

Eğer Dosyalarla ConnectExtensionWork () Sonra
Ref = GetNavigationLink (Object.Link, “FileData”);
// Aktarılan dosyaların açıklamasının oluşturulması (bu durumda sadece bir dosya vardır)
Aktarılan dosyalar= Yeni Dizi;
Açıklama = NewDescriptionFileTransferred (Object.FileName, Link);
TransferedFiles.Add (Açıklama);
// Alınan dosyalar hakkında bilgi almak için bir nesne hazırlayın
Aktarılan Dosyalar= Yeni Dizi;

// Yöntemlerin diğer parametrelerini tanımlayın
KatalogKaydet= “C: \ sıcaklık”;
Etkileşimli = Yanlış;
Yüklenen DosyaAdı = SaveDir + “\” + Object.FileName;
// İzinleri almak için yöntemlerin açıklamasını hazırlayın
Yöntemler = Yeni Dizi;

Methods.Add (“GetFiles”);
Methods.Add (TransferredFiles);
Methods.Add (TransferredFiles);
Methods.Add (Dizin Kaydetme);
Methods.Add (Etkileşimli);
Methods.Add (Yeni Dizi);
Methods.Add (“Uygulamayı Çalıştır”);
Methods.Add (Yüklenen DosyaAdı);
değilse RequestUserPermission (Yöntemler) Sonra
Uyarı (“Kullanıcı izni reddedildi.”);
Dönüş;
EndIf;
ReceiveFiles (TransferredFiles, TransferredFiles, SavingDirectory, Etkileşimli);
RunApplication (Yüklenen DosyaAdı);
Aksi halde
Uyarı ("Yürütme desteklenmiyor. Dosya uzantısı kurulu değil.");
EndIf;

Yöntemin uygulanmasının çeşitli özelliklerine dikkat edilmelidir. RequestUserPermission ().

1. İzin yalnızca aşağıdaki yöntemler:

GetFiles () / StartGetFiles (),
● PlaceFiles () / StartPlaceFiles (),
● FindFiles () / StartSearchFiles (),
● CopyFile () / StartCopyFile (),
● MoveFile () / StartMoveFile (),
● DeleteFiles () / StartDeleteFiles (),
● CreateDirectory () / StartCreateDirectory (),
● Uygulamayı Başlat () / Uygulamayı Başlat ().

2. Belirli bir dizi yöntem parametresi için izin istenir. Dosyalarla çalışma yönteminin fiili olarak yürütülmesi sırasında, parametre değerleri izin alınan değerlerden farklıysa, bu izin geçerli olmayacak ve kullanıcı işlemi onaylamak için ayrı bir istek alacaktır.

3. Dosyalarla (aynı parametre setiyle bile) iki (veya daha fazla) aynı işlemi gerçekleştirmeniz gerekiyorsa, yöntem parametreleri dizisinde uygun sayıda öğe belirtmelisiniz. Kullanıcı İzni İsteği ()... Örneğin, aynı dosyayı bir bilgi tabanından iki kez alıp dosya sisteminde sabit bir yere yerleştirmeniz gerekiyorsa izin istemeniz gerekir.
iki işlem için.

4. Etkileşimli bir işlemin gerçekleştirildiği bir işlem için izin istenirse (örneğin, GetFiles() işlevine bir nesne iletilirse) Dosya Seçimi Diyaloğu), daha sonra böyle bir işlem istekten çıkarılır.

Alınan izinler, izin verilen çağrı yapılana veya gömülü dilin yürütülmesi sona erene kadar korunur.
NOT... kalın ve ince istemciler Kullanıcı İzni İsteği () yöntem, kullanıcı etkileşimi olmadan her zaman True değerini döndürür.

Bir arka plan işinde geçici depolama ile çalışma

Geçici depolama ile çalışma mekanizmasında, bir arka plan işinden arka plan işini başlatan oturuma veri aktarmak mümkündür.
Böyle bir aktarım için, üst oturumda geçici depolamaya boş bir değer yerleştirilmelidir ( YerGeçiciDepolama ()) oluşturulmakta olan geçici depolamanın herhangi bir tanımlayıcısını belirterek (Adres parametresi). Ardından, alınan adresi arka plan işinin parametreleri aracılığıyla arka plan işine aktarın. Ayrıca, eğer içinde arka plan işi bu adresi parametre değeri olarak kullanın Yöntem adresi DeğerStorage'a () yerleştirin, ardından sonuç, arka plan işinin başlatıldığı oturuma kopyalanacaktır.
Bir arka plan işinde geçici depolamaya yerleştirilen veriler, arka plan işi tamamlanana kadar üst oturumdan kullanılamaz.

Resim alanındaki adresler için destek

Form öğesi Görünüm alanı Resim alanı, değer adresiyle (bir resim veya ikili veri olabilir) belirtilen bir resmin geçici depolamada veya bir veritabanında görüntülenmesini destekler.
Bunu yapmak için, form öğesinin Veri özelliğinde bir dize türü özniteliği belirtmelisiniz. Bu değişkenin değeri resmin adresi olarak yorumlanacaktır.

// Örnek 1
// Görüntü alanını geçici olarak görüntü adresine bağlama
// depolamak. AddressPictures - dize tipi form özniteliği
PlaceFile (ImageAddress, OriginalName, SelectedName, True, UniqueIdentifier);
// Örnek 2
// Nesnenin özniteliğinden resmin adresini almak
// bilgi tabanı
PictureFile = Object.PictureFile;
Resim Dosyası Değilse.Empty () Sonra
ImageAddress = GetNavigationLink (ImageFile, “FileData”);
Aksi halde
Resim Adresi = “”;
Bitiş eğer;

Standart kataloglara erişim

Sistemi kullanırken, bir yandan geçici olan ve diğer yandan yeterince uzun bir süre saklanması gereken çeşitli dosya verilerini saklayabileceğiniz dosya sisteminde biraz alan gerekir. Bu dosyalar, belge yönetim sistemleri için taslakları, istemci bilgisayarda çalışan harici bileşenleri vb. içerir.
Bu tür dosyaları depolamak için, belirli bir bilgi tabanının belirli bir kullanıcısına bağlı olan özel bir dizin amaçlanmıştır.
İki bilgi bankasıyla çalışan aynı kullanıcı, kullanıcı verilerini depolamak için iki farklı dizine erişebilecek. Bu dizinin konumu, yöntem kullanılarak belirlenir. WorkDirectoryUserData (). Dizin yoksa, ilk erişildiğinde oluşturulur. Katalog oluşturulamıyorsa, sistem bir istisna oluşturur.
NOT. UserDataWorkDirectory() yöntemi, sunucu tarafında kullanılamaz.
V işletim sistemi kullanıcı verilerinin kalıcı olarak saklanmasına ayrılmış özel bir dizin vardır. biraz olabilir
raporlar, basılı formlar belgeler, vb. Bu dizin daha sonra harici olarak gönderilebilecek verileri içerir.
tüketiciler. Bu dizine erişmek için DocumentCatalog() yöntemini kullanın. Dizinin fiziksel konumu ameliyathaneye bağlıdır
uygulamanın yürütüldüğü ve sözdizimi yardımcısında listelendiği sistemler.

1C 8.2 ve 8.3'te yapılandırma depolaması 1C: Enterprise 8 platformunda yerleşik çözümlerin grup geliştirmesi için bir araçtır.Depo, sınırsız sayıda kullanıcıyla çok kullanıcılı çözümlerin geliştirilmesine olanak tanır. Yardımıyla, yapılandırma geliştirmenin tam tarihini ve geliştiricilerin her adımını ayrıntılı olarak görebilirsiniz.

Ayarları ele alalım ve yapılandırma deposuyla daha ayrıntılı çalışalım.

Depo, esas olarak, yapılandırma değişikliklerinin depolandığı bir veritabanıdır. Geliştiricilerin her biri, depoya bağlı kendi bilgi tabanı ile çalışır. Çalışma tabanı ayrıca depoya bağlanabilir. Hepsinden iyisi, genel şema bu resimde gösterilmiştir:

Bu veritabanı ayrıca, bu veya bu nesneyi kimin yakaladığı hakkında bilgi depolar. Bir nesneyi yakalamak, geliştirici tarafından belirlenen bir etikettir. Yerleşik yakalama, grup geliştirmede çakışmaları önler. Nesne yakalanırken kimse onu düzenleyemez.

Tüm bir nesneyi (yinelemeli olarak) veya ayrı olarak bir nesneyi veya formları yakalayabilirsiniz.

Geliştirici nesne üzerinde bazı işlemler yaptıktan sonra, geliştirmeleri depoya yerleştirmek zorundadır. Ve böylece nesnenin yakalandığı işaretini kaldırın.

1C depolama alanı nasıl oluşturulur

Bir depolama alanı oluşturmak oldukça basittir, bunun için "Yapılandırma - Yapılandırma deposu" menüsünde "Depolama oluştur" öğesini seçmeniz gerekir. Görünen menüde, gelecekteki depolama konumuna giden yolu ve yönetici kullanıcının oturum açma / şifresini belirtmek yeterlidir:

Oluştururken, bir yedekleme yaptığınızdan emin olun. hesap yönetici haklarıyla - çoğu zaman yardımcı olur.

1C depolama birimine nasıl bağlanılır

Konfigürasyon havuzuna bağlanmak için menüdeki "Configuration - Configuration repository" menüsündeki "Depoya bağlan" öğesini seçin. Görünen pencerede, depolama yolunu ve kullanıcı adını / şifreyi belirtmeniz gerekir, "Bağlan" ı tıklayın:

267 1C video eğitimlerini ücretsiz edinin:

Bağlantı anında, yapılandırmanız depodaki yapılandırma ile değiştirilecektir, dikkatli olun.

1C yapılandırma depolama yönetimi

1C depolamayı yönetmek için yapılandırma menüsünde şu öğeyi seçin - "Yapılandırma - Yapılandırma depolaması - Yönetim":

  • "Kullanıcılar" sekmesinde, yeni kullanıcılar ekleyebilir veya kaldırabilir ve bunların her biri için hak kapsamını tanımlayabilirsiniz.
  • "Bağlantılar" sekmesinde, depolamaya bağlanan tüm kullanıcıları görebilir ve gerekirse bağlantılarını kesebilirsiniz.
  • "Yakalamayı İptal Et" sekmesinde, tabii ki haklarınız varsa, herhangi bir kullanıcının belirli bir nesneye yakalanmasını kaldırabilirsiniz.

1C depolama geçmişi nasıl görüntülenir

Geçmişi görüntülemek için "Yapılandırma - Yapılandırma depolaması" menüsüne gidin, "Depolama geçmişi" öğesini seçin:

1C depolama tarihinde, ne zaman, kim tarafından ve neyin değiştirildiğini görebilirsiniz.

1C 8.3 deposuyla geliştirme

Depoyla çalışmak koşullu olarak temel eylemlere ayrılabilir:

  • 1C yapılandırma deposundan yapılandırmalar;
  • 1C deposunun durumlarını güncelleyin;
  • depoda yakalama;
  • depo.

Her eylem üzerinde daha ayrıntılı olarak duralım:

1C depolamanın durumlarını güncelleyin

Nesnelerin en son durumlarını alır (yakalandı veya alınmadı).

Adı: "Yapılandırma - Yapılandırma deposu - Durumları güncelle".

1C yapılandırma deposundan yapılandırmayı güncelleme

Eylem, depoya yerleştirilmiş tüm değiştirilmiş yapılandırma nesnelerini alacaktır. Bu komutun yürütülmesi, nesnelerin durumlarını da günceller.

Adı: "Yapılandırma - Yapılandırma havuzu - Yapılandırmayı havuzdan güncelle".

1C yapılandırma depolamasını yakalama

Bu komutla değişikliği engelleyebilirsiniz. bu nesnenin diğer geliştiriciler için: nesne sizin tarafınızdan yakalanırken, siz nesneyi geri koyana kadar hiçbir kullanıcı onu değiştiremez.

Yakalama sağ tıklayarak yapılabilir bağlam menüsü meta veri nesnesi:

Açılan pencerede bazı ayarları yapabilirsiniz:

  • Özyinelemeli olarak yürüt- tüm alt nesneleri - formları vb. yakalamanıza izin verir.
  • Yakalananları almaya izin ver- diğer kullanıcıların nesnenin ara sürümlerini almasına izin verir

Depo odası 1C

Nesneyi değiştirdikten sonra, depoya geri yerleştirilmelidir, bu, yakalama ile aynı şekilde yapılır, yalnızca "Depoya koy" öğesi seçilir:

Paylaşım yaparken mutlaka "yorum" alanını doldurun, bu grup gelişimi için çok önemlidir. Altı ay sonra, belirli eylemleri neden yaptığınızı bile hatırlamayacaksınız. Tıpkı bir yakalama gibi, bir odanın da kendine özgü ayarları vardır:

  • Özyinelemeli olarak yürüt- tüm alt nesneleri - formları vb. yerleştirmenize izin verir.
  • Yakalanmayı bırak- yakalamayı kullanıcıya bırakırken nesnenin "orta" bir sürümünü yerleştirmenize olanak tanır

1C depolama alanına yeni bir nesne nasıl eklenir