internet pencereler Android
Genişletmek

1C Bir ipi ikili veriye dönüştürün. İkili verilerle çalışmak

İkili veriler 1C'deki persleri isteğe bağlı bir formatın depolanması için tasarlanmıştır. Onların yardımı ile şunları yapabilirsiniz:

  • İkili protokolde etkileşimi düzenleyin Çeşitli cihazlar;
  • Herhangi bir formattaki meta veri nesnelerinin detayları biçiminde saklayın;
  • Metin verilerini ikili olarak dönüştürün (en sık rapor göndermek için kullanılır);
  • Hafızada ikili verilerle çalışın.

Sistem ne yapabilir

İkili verilerle çalışırken, 8.3 platformu aşağıdaki işlemleri gerçekleştirebilir:

  1. İkili verileri okuyun ve yazın;
  2. İstemciden sunucuya verileri ve geçici depolamayı kullanarak geri getirin;
  3. Yardımla başlat İkili Dosyalar Nesne Tipi "Resim";
  4. Posta nesnelerini, NTTR bileşimini vb. Kullanarak dünya çapındaki ağdan okumak için.
  5. Kullanmak Şifreleme araçları önemli yatırımların şifrelemesi ve imzası için;
  6. "Hashized" nesnesini kullanarak, karma işlevini hesaplayın.

Verileri sahne içine kaydetme

Örneğin, test yapılandırmasında bir dizin oluşturun.

Aslında, resimlerin isimlendirmesi ve ikili verileri hakkında bilgi depolamak için aynı referans kitabını kullanın. Yeterince büyük miktarda veri ve ağır büyük ölçekli dosyalar, sistemde istenmeyen aksama süresi ve "frenler" oluşabilir. Ayrı bir referans kitabı "resimler", sistemin bakış açısına göre çok doğru bir şekilde düzenlenecek, bir tür sahne olarak ayarlayabileceğimiz bağlantı.


İkili verileri içeren "depo" tipinin şartlarının kontrollü uygulama modunda mevcut olmadığı gerçeğinden dolayı, onlara yapılan itiraz, yalnızca Props uygunluk yöntemini kullanarak mümkündür.


Mesaj alanı, ikili veri depolama verilerinin bir kaydı sağlar.

Sahneden veri okumak

Yapılandırmamızdaki bir ikili formda depolanan dosyayı bir tablo belgesine (gerekli, şirketin logosunu yazdırmak için söyleyelim) bir işlem oluşturun.


Prensip olarak, ihtiyacımız olan tüm kod budur. Operatörün kullanılması (), referans kitabının uygun ayrıntılarında depolanan ikili verileri okuduk ve onları sol üst hücrede gösterilecek "resme" nesnesine iletiriz. tablo belgesi Formlar (Şekil 9).

Şekil 9.

Veri dönüşümü

Seyrek olarak, ancak standart olmayan borsalarla çalışırken olur. dış sistemler Verileri ikili formattan baz64 veya geri dönüştürmeniz gerekir.

Çoğu durumda, platform bağımsız olarak veri oluşmazsa, global çeviri işlevlerini kullanmak gerekir:

  1. Base64 Stroke - Belirtilen değeri karşılık gelen kodlama satırında çevirir;
  2. Base64ding - ters dönüşümü yapar.

Yukarıdaki kodun optimizasyonu

Şekil 4'te sunulan kod kesinlikle çalışıyor, ancak önemli bir rezervasyonla: Yapılandırma özelliklerinde (Şekil 10) onay kutusu seçilirse (Şek. 10). Aksi takdirde, kullanımı bir hataya neden olur.
Şekil 10.

Bunun gerçekleşmemesi için, referans öğesi formunun modül formlarında, Metin Menüsü-\u003e Refactoring-\u003e Tavsiye Edilen Senkron Çağrılar-\u003e Modül çağrılarını dönüştürün.

Bir süre sonra, senkronize çağrılar otomatik olarak eşzamansızca dönüştürülecektir ve kod formu alır (Şek. 11)

Şekil.11

Teknolojik Platform 1C: Enterprise 8, isteğe bağlı dosyaları bilgi tabanında kaydetmenizi, oradan alın ve kullanmanızı sağlar farklı yollar. Örneklerdeki bu işlemleri düşünün.

Dosyayı 1C Bilgi Veritabanına indirmeden önce, dosya üzerindeki dosyanın tam adresini almanız gerekir. Dosya seçimi iletişim kutularıyla çalışmak üzere açıklanmaktadır.

Dosyaları saklamak için gerekli (veya kayıt kaynağı) kullanılır. Yabancı.

1C bilgi veritabanına rastgele bir dosya yükleme

Herhangi bir dosya ikili veri olarak gösterilebilir ve indirilebilir. Yabancıları.

İkili verileri bir nesneye dönüştürürken Yabancı Kullanılan tasarım yeni depolama (veri, sıkıştırma) İki parametre ile:

  1. Veri - Depoya yerleştirilecek ikili veriler
  2. Sıkıştırma - Sıkıştırma algoritması deflasyonunun derecesi. -1 ... 9 aralığında bir tamsayı. -1 - varsayılan olarak sıkıştırma derecesi. 0 - Sıkıştırma yok, 9 maksimum sıkıştırma oranıdır. Varsayılan değer: -1. Seçenek isteğe bağlıdır, belirtilmezse, sıkıştırma kullanılmaz.

// dosyayı ikili verilere dönüştürün
Dosya \u003d yeni ikili (yol);

// yeni bir depolama tesisi oluştur

Saklandı \u003d yeni depolama (dosya, yeni sıkıştırılmış (9));

1C bilgi veritabanından diske rastgele bir dosyayı kaydetme

Dosyayı 1C veritabanından diske kaydetmek için, yolu ve dosya adını belirlemeniz gerekir. Bunu yapmak için, dosyaları kaydetmek için bir iletişim kutusu var, bu da üzerinde açıklanan.

// depodan ikili veri alın
// StoraDed - RepoSitse türüyle nesnenin sahne

// Alınan verileri diske yaz
// değişken yolda, diskteki dosyanın tam adresidir.
Veri. Yazın (yol);

Bilgi veritabanında bulunan bir dosyayı görüntüleme 1C

Veritabanına kaydedilen dosyayı görüntülemek için, uygulamanın bu dosyayı açan bilgisayara yüklenmesi gerekir.

// Gerekli genişlemeyle geçici dosyanın adını al.
// değişken uzantısına, dosya uzantısını, örneğin "PDF" koymanız gerekir.
Yol \u003d operateQumen dosyası (genişleme);

// depodan veri al
// StoraDed - RepoSitse türüyle nesnenin sahne
Veri \u003d saklandı. Teslim almak() ;

// Geçici bir dosyaya veri yazın
Veri. Yazın (yol);

// dosyayı amaçlayan uygulamada açmayı deneyin
// başvuru bulunmazsa, bir sistem iletişim kutusu "ile açık" görünecektir.
Uygulamayı (yol) çalıştırmak;

Değer deposunda, hemen hemen her bilgiyi kaydedebilirsiniz, örneğin,

... Resimler (Resimler):

Takım görüntüsü. Project \u003d sprisi.link; Ekip çalışması .vidata \u003d listeleme. Vidual bilgi nesneleri. Görüntü; Depolama \u003d Yeni depolama (yeni karotin, yeni sıkıştırılmış ()); Takım süreci. Everbill \u003d Depolama. Dökün ();

// bu yerde, her şeyi söndürür ... Elementforms. Polekartinki1. Cartink \u003d Depolama. Dökün (); Takım işleme. İşe almak ();

... Tablo Belgesi:

Tabo \u003d Yeni Kereste; Tabdow.stiver (elementforms. Poletablichnogymenta1); Depo \u003d yeni depolama (tabid); Yazma ();

Ekstrüdreler

Prosedür Restoranlık (Eleman)

Tabdok \u003d depolama. Dök (); Eğer tabdow<>Bu, elementformlar süresizdir. Poletoleschnogymenta1.shet (Tabd); Bitti;

Ekstrüdreler

... Keyfi dosyalar (ikili veriler):

XS \u003d yeni depolama (yeni ikili (dosya));

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

XS \u003d yeni depolama (yeni ikili (dosya), yeni sıkıştırılmış (9));

... Dış işleme ve raporlar:

Prosedür AnahtarlamaProcessing / Zorunlu)

Caydırıcı \u003d yeni sıkıştırılmış (9); // 9 Maksimum Requisite \u003d Yeni depolama (yeni ikili ("C: \\ Reports \\ Report.epf", derece));

Ekstrüdreler

İşleme işlemi için prosedür (gerekli)

İmagremnyfile \u003d Katalog Şiddet Dosyaları () + "Rapor.epf"; İki) \u003d requisittypusto. Dökün (); Bikçe. İşe almak (imagremenphal); Dış işlem \u003d dış işleme. Oluştur (imaginenefile); Dış işlem. Tahta (). Açık ();

Ekstrüdreler

Depolama ile çalışmak

Bunlar ikiye katlandıysa, değer yönteminin depolanmasından restore edilebilir ve dosyaya () yazmak için yazılabilirler.

Eğer typcoon (depolama)<> Tip ("ikili") o zaman

İkili) \u003d depolama. Dökün ();

İkili) \u003d depolama;

Bitti; Bichelted. İşe almak (isim);

Örneğin, bir Word belgesi (DOC dosyası veya başka bir kayıtlı tür dosyası) olsaydı, o zaman böyle açılabilir:

Uygulamayı çalıştırma (ad dosyası);

Tür Depolama alanını silmek için, süresiz olarak atmanız gerekir:

Gerekli \u003d belirsiz;

Dosya ve resimlerle çalışma Dilinde 1C: İşletmeler 8

Amaç

Uygulanan yönetilen uygulamada yeni mekanizma Dosyalarla çalışır. Bilgi tabanı ile istemci uygulaması arasında dosya paylaşımını sağlar. Bu mekanizmanın bir özelliği, kullanmaya odaklanmasıdır. zayıf müşteri ve bir web istemcisi ve web tarayıcıları tarafından uygulanan dosyalarla çalışma konusunda kısıtlamaları dikkate alarak geliştirildi.

Mekanizma, yerel olarak depolanan verileri kullanıcıdan geçici depoya koyabileceğiniz bir yöntemdir. bilgi tabanı, bu bilgileri geçici depolamadan veritabanına aktarın ve kullanıcının bilgisayarına geri getirin. Bu mekanizmanın çözdüğü en yaygın uygulanan görevler, beraberindeki bilgilerin, örneğin, belgeler sözleşmeleri vb. İle ilgili malların görüntülerinin depolanmasıdır.

Kapsam Yöntemleri

Geçici depolama

Geçici depolama, ikili verilerin yerleştirilebileceği özel bir bilgi taban alanıdır. Asıl amaç, veritabanına aktarılana kadar müşteri sunucu etkileşimi sırasında bilginin geçici olarak depolanmasıdır.

Geçici bir depolamanın ihtiyacı, Web tarayıcısı çalışma modelinde, dosyayı kullanıcının kullanıcısı tarafından istemciye kaydetme olasılığı olmadan doğrudan sunucuya aktarmanız gerekir. Bir dosyayı aktarırken, geçici bir depoda yerleştirilir ve veritabanına bir nesne yazarken zaten kullanılabilir.

En tipik geçici depolama, uygulanan görevi çözdü - Nesne bilgi tabanına, örneğin bir öğe biçiminde kaydedilmeden önce dosyalara veya resimlere erişimin sağlanması.

Depoya yerleştirilen dosya veya ikili veriler, daha sonra kayıt, okuma veya silme işlemlerinde kullanılabilecek benzersiz bir adresle tanımlanır. Bu adres, geçici bir depolama dosyasını kaydetme yöntemleri verilir. Gömülü dilde ayrı bir yöntem, adresin geçici depolamadaki verileri gösteren adrese aktarılıp aktarılmayacağını belirlemenizi sağlar.

Bilgi tabanı

Mekanizma, depolama türünün ayrıntılarında depolanan ikili verilere erişim sağlar.

Geçici depolama durumunda olduğu gibi, özel bir adres aracılığıyla bilgiye erişim mümkündür. Özel bir yöntemle, bağlantıyı nesneye veya bilgi kaydının kaydını ve sahnelerin adını elde edebilirsiniz. Tablo kısımları durumunda, tablo parçası hatları endeksini aktarmak için ayrıca gereklidir.

Bilgi tabanı ayrıntılarıyla çalışırken dosyalarla çalışma yöntemleri bir sınır vardır. Onlar için, geçici depolamanın aksine, yalnızca okuma bilgisi mevcuttur, ancak kaydı veya silme.

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

Geçici Depolamada Verileri Kaydetme

Bu mekanizmayı kullanmanın en tipik senaryosu, kullanıcı verilerinin geçici depolamada ilk yerleşimini sağlar. Bu amaçla, iki yöntem tasarlanmıştır: PlaceFile () ve lojmana () yerleştirme.

İlk yöntem, yerleştirerek (), dosyayı yerel dosya sisteminden geçici depoda yerleştirir. Yöntem, hedef adresi depoda alabilir. Tanımlanmamışsa veya boş bir dize ise, oluşturulacak yeni dosya. Ve yöntem, adresini uygun parametre ile iade edecektir.

Etkileşimli çalışma modunu tanımlayan bir parametre doğruysa, yöntem, tesis için bir dosyayı seçebileceğiniz Standart Dosya Seçimi iletişim kutusunu görüntüleyecektir. Bu durumda, yöntem de seçilen dosyanın adresini döndürür.

Sonuç olarak, yöntem etkileşimli moddaki kullanıcı, işlemi Dosya Seçimi iletişim kutusundaki işlemi gerçekleştirmeyi reddettiğinde bir yalan döndürür. Yöntem yalnızca istemcide kullanılabilir.

İkinci yöntem, yerleştirme sevgi veren yaş (), sunucuda mevcut olması dışında, bir önceki kişiye benzerdir ve geçici bir depolamaya kaydedilme verilerinin dosya sisteminde bir yol biçiminde değildir ve şeklinde değişken tipi İki. Aynı şekilde, hedef adres belirtilmemişse, depoda yeni bir dosya oluşturulur. Adresi fonksiyonun bir sonucu olarak döndürülür.

Geçici depolamadan bir dosya almak

Bilgi veritabanında bir nesne yazarken, geçici depolamadan veri çıkarmanız ve örneğin sahne cinsinden vermeniz gerekebilir. Bunu yapmak için, ilgili bir sunucu yöntemi var - filthylishy (). Bu yöntem geçici depolama alanından veri alır ve sonuç olarak iade eder. Bunu yapmak için, adresi geçici depoda belirtmelisiniz. Bu adres, başarılı bir şekilde yürütülmesi durumunda yukarıda açıklanan parametreleri () yöntemlerini ve anemi () yerleştirir.

Geçici bir depolama dosyasını silme

Veriler ayrıntılarda saklandıktan sonra, geçici depolamadaki dosya silinebilir. Bunu yapmak için, geçici depolamadaki bir dosyayı siler, bu da bir dosyayı silinir. Yöntem, geçici depolama parametresinde dosya adresini alır. Sunucuda kullanılabilir.

Geçici depolamaya ait adresleri kontrol etme

Dosya adresi, hem geçici depolamayı hem de bilgi tabanındaki gerekli bilgileri gösterebilir. Türünü doğrulamak için, bir büyüteç () yöntemi vardır.

İletilen adresin depoyu gösteren bir adres olduğunu kontrol eder. Adres geçici bir depolamayı gösterirse, gerçeği döndürür. Yöntem sunucuda mevcuttur.

Gerekli adreslerin alınması

Veriler bilgi tabanındaki sahnelere yerleştirildikten sonra, dosya yöntemlerini kullanarak bunlara erişmek gerekebilir.

Ancak, detaylar gibi veri elde etmeden önce, bu sahne adresini elde etmek gerekir. Bunun için resepsiyon için bir yöntem ().

Amacı, dosya adresini kaynak parametrelerdeki bilgi veritabanında iade etmektir. Bunu yapmak için, nesnenin nesnesini transfer etmek gerekir (bu hem nesneye hem de bilgi kaydının bir referansı olabilir) ve sahne adını. Tablo parçasının ayrıntılarında depolanan dosyanın adresini almanız gerekirse, el koyma adına, sahne adını belirten parametredeki el koyma adına, tablo bölümünün adını ve "" adını eklemelisiniz. Yöntem, hem istemcide hem de sunucuda kullanılabilir.

Bilgi tabanından bir dosya almak

Alma dosyası () yöntemi, bilgi tabanından bir dosyayı alır ve yerel olarak kaydeder dosya sistemi Kullanıcı. İlk parametre, dosyanın adresini talepte veya dosyaların geçici olarak depolanmasında belirler. İkinci parametre, alınan dosyanın hedef konumunu belirler. Etkileşimli modda, yolu belirtmelisiniz. Etkileşimli modda, parametre isteğe bağlıdır.

Varsayılan olarak, yöntem etkileşimli modda yürütülür, yani son parametre gerçeğe eşittir. Bu, alınan dosyayla ilgili eylemi belirleyebileceğiniz bir iletişim kutusunun yayınlandığı anlamına gelir: Çalıştır veya kullanıcı tarafından belirtilen konum tarafından kaydedilir. Etkileşimli bir mod aktifse ve Disk dosyasına hedef yol parametresi belirtilmemişse, Dosya açık işlemi mevcut değildir. Boolean değerini döndürür. Bir yalan, kullanıcının etkileşimli moddaki Dosya Kaydetme iletişim kutusundaki işlemin iptalini seçtiği anlamına gelir.

Dosya Yöntemlerini Kullanma Örneği

// Dosyanın etkileşimli modunda makbuz // // ve geçici depolama ve zamanlama prosedürüne yerleştirme FAILYDISKI İŞLEME ()

AG seçildi; Adilasyon ajanını değiştirmek için; Eğer yerleştirilirse (advinative-taneli, seçilen, gerçek) o zaman nesne. İmafeel \u003d seçilen; Düz peri (advinative); Bitti;

Ekstrüdreler

// Dosyayı Geçici Depolamadan Props // Referans, Nesne Girişi, Geçici // Depolama ve Nasserver Prosedür Yeri'nden silme (AdVationReenShip)

Element Advisor \u003d Requisitforman & ("nesne"); İki Kanatlı \u003d Get-Fiveyishery (AdviVerler); Eleman Advixer. DataFile \u003d Yeni depolama (BICHERED); Filenadadisk \u003d yeni dosya (öğe perm.imyfyle); Eleman önerileri. IMAFILE \u003d FilePutnadisk. Eleman advixer. İşe alım (); Değiştirme \u003d false; Dosya Kumandasını Sil İlköğretim (Adresrenansal Giriş); RecowerveVisitforms (Element Kalıcı, "Nesne");

Ekstrüdreler

// Dosyayı sahneden oku ve // yerel disk Etkileşimli bir modda ve özelleştirin, dosya ve cravenadadisk () okuyun

Adres \u003d OperadlesPhefileVinformation Base (Nesne. Bağlantı, "Puttails"); OPT dosyası (adres, nesne. İmiafyle, gerçek);

Ekstrüdreler

Alan resimlerinde destek adresleri

Kontrol alanı kontrolü, geçici depoda veya veritabanında dosya adresi tarafından belirtilen görüntü ekranını destekler.

Bunu yapmak için, form öğesinin özelliğinde, bir dize türünün sahnelerini belirlemek gerekir. Bu sahne değeri ve resim adresi olarak yorumlanacaktır.

Misal // Ciltleme alanları resimlerin adresine geçici // depoda. AddApArtikültikler Dize Tipi Formları Sahne

Dosya koymak (bağımlılık, gerçek)

Resim. Veri \u003d AddApArtikalizler

Bir web istemcisi ile çalışırken kısıtlamalar

Bir web istemcisini kullanırken tarif edilen mekanizmanın çalışmaları bazı sınırlamaları vardır. Bu kısıtlamalar, tarayıcı güvenlik modelinin özellikleriyle ilgilidir. Örneğin, istemci dosyayı yerel dosya sistemine bağımsız olarak kaydedemez, yani istemci yöntemlerinin yalnızca etkileşimli bir sürümü () ve dosyaları () kullanılabilir. Etkileşimli bir modu kullanmaya çalıştığınızda, bir istisna oluşturulur. Diyalog kutularıBelirli bir tarayıcı türüne özgü etkileşimli modda görüntülenir.

Müşteride depolarla çalışırken özellikler

Sorun:

Tablo bölümündeki belge, depolama türünün bir parçası olduğunda, detaylar bu düzeyde kaydedilirse, belge formunun açıklığını yavaşlatır.

Tahmini Sebep:

Belki de bir formu açarken, müşteriye, depo verilerindeki verilerin bağlantısının iletildiği, ancak verilerin kendileri olduğu aktarılmaz.

Karar

  • Masa sahnelerinin özelliklerinde, her zaman "her zaman kullanım" bayrağı vardır. Kurulursa, alan içeriği her zaman sunucu ile istemci arasında iletilir - örneğin, formu açarken. Bu bayrak devre dışı bırakılmalıdır, ancak bu alanın varsayılan değerleri istemcide olmayacağından, bunu kodda dikkate almak gerekir. Bir örnek 1C'de bulunabilir: Arşiv.

Kullanmak için daha iyi geçici depolama İstemci ile sunucu arasındaki dosyaları aktarmak için.