menü
Bedava
kayıt
ana  /  Sorunlar    / 1s değeri form verileri 8.3. Yönetilen Form Ayrıntıları (1Cv8)

1s değeri form verileri 8.3. Yönetilen Form Ayrıntıları (1Cv8)

Yönetilen formlarla çalışırken kullanılan ana 1C nesneleri aşağıdadır. 1C konfigürasyonları yazarken bu nesnelerin geleneksel kullanımını gösteren kısa kod örnekleri verilmiştir.

EtaForma

Form modülünde, prosedürlerde kullanılır& İstemci ve & Sunucuda.

Hem form öğelerine hem de ayrıntılara erişmenizi sağlar.

Form öğesine erişim nesne üzerinden gerçekleşirÖğeler ve şöyle görünür:

ThisForm.Elements.VersionNumber.Header \u003d "v." + Program Sürümü;

Formda var olan gerekli referans aşağıdaki gibidir:

ThisForm.TextAds \u003d "Merhaba yoldaşlar!";

Form öğelerine ve ayrıntılara basitleştirilmiş erişim

Form modülünde, prensip olarak, anahtar kelimeyi atlayabilirsinizEtaForma . Form öğelerine ve ayrıntılarına basitleştirilmiş bir şekilde erişebilirsiniz:

// form öğesi

Elements.Version Number. Title \u003d "v." + Program Sürümü;

// Form gereksinimleri

Duyuru Metni \u003d "Merhaba, yoldaşlar!";

Form gereksinimlerini elde etmenin özellikleri (önemli!)

Form özniteliği basit bir türdeyse -Dize, Sayı, Tarih ... sonra özelliğin değerini basitçe ada göre alabilirsiniz (ayarlayabilirsiniz):

Metin \u003d Ürün Adı; // Ürün adı gerekli formdur

Bununla birlikte, bu şekilde "karmaşık" tipin detaylarını elde etmek imkansızdır -Değer tablosuDeğer Ağacı . Bu tür bir sahne adını ada göre almaya çalıştığınızda, türünde bir nesneDannyeFormyKollektsiya.

"Karmaşık" tipte bir sahne değerini almak için, fonksiyonu kullanmanız gerekir.PropsFormsValue ():

CurrentTable \u003d PropsFormsValue ("Seçili İnşaat Nesneleri");

"Karmaşık" özniteliğin değerini ayarlamak için,Form Zorunlu Değeri (<Значение>, <ИмяРеквизита>) , her iki parametre de gereklidir.

fonksiyonlar PropsFormsValue ()   ve ValueV Zorunlu Formlar ()   yalnızca Sunucuda kullanılabilir.

nesne

Açıkçası, formda böyle bir anahtar kelime yoktur. Basitçe, bir form oluşturulduğunda, örneğin bir elemanın formu, 1C otomatik olarak form üzerinde adıyla bir sahne oluştururnesne . Bu öznitelik sayesinde, form üzerinde düzenlenen geçerli nesnenin özellikleri kullanılabilir.

veya daha eksiksiz bir kayıt:

Bu Nesne

Nesnenin kendisini içerir. Nesne modülünde veya form modülünde bir nesne almak üzere tasarlanmıştır.

Kullanım: Salt Okunur.

Kullanılabilirlik: Sunucu, kalın istemci, harici bağlantı.

  Şişman bir müşterinin günlerinde, bir form modülünden bir nesne modülü yordamı çağırmak basitti. Modül prosedürünü dışa aktarılmış olarak tanımlamak ve form modülünde çağırmak yeterliydi.


  Zaman değişiyor, 1C platformu optimize ediliyor ve geliştiriliyor, kalın müşteri unutuluyor, herkese ince veya web istemcisi veriyor. Geliştiriciler, düzenli formları yönetilebilir hale getirmeye başlar, ancak o kadar basit değil, program kodu yürütmesinin iki bağlamda ayrılması nedeniyle bazı zorluklar ortaya çıkıyor: sunucu ve istemci. Bu nedenle, yukarıdaki kod örneği ince istemcide çalışmaz.

Yeni veri türleri

  Ayrıca, yönetilen formlar nedeniyle yeni veri türleri ortaya çıktı. Bir form var:
  Ayrıntı türlerini hatırlıyoruz ve bu ayrıntılar için hangi türlerin hata ayıklamada olduğunu görüyoruz:

Yeni form veri türleri
  Türün, nesnenin kendisinin verilerini görüntülemek için kullanıldığı sonucuna vardık DannyeFormyStruktura, değer ağacını görüntülemek için - DannyeFormyDerevo, tablo bölümü için - DannyeFormyKollektsiya   vb Yani, istemci üzerindeki form modülünde, nesnenin kendisi ile değil sunumuyla çalışıyoruz! Bu nedenle, örneğin nesne modülündeki tablo bölümü için kullanılabilir yöntemler MEVCUT DEĞİL   form modülünde.

Yeni Türlerle Mücadele

  1C platformunun geliştiricileri iki işlev sağladı:
  1. RekvizitFormyVZnachenie   - Belirtilen form niteliğini bir uygulama türü nesnesine dönüştürür.
  2. DannyeFormyVZnachenie   - Form verilerini bir uygulama türü nesnesine dönüştürür.
  Bu işlevleri çağırmak yalnızca sunucuda kullanılabilir. Görevimize geri dönelim ve olaydaki form modülünde ince istemci için kod yazalım Sunucuda Oluşturulduğunda, işlevi nesne modülünden çağırır:
  & Sunucuda


RequestObject1 \u003d RequisiteFormBValue ("Nesne");
RequestObject1.OpenMessage (Object.Requisition1);




  KonetsProtsedury

Hem bir fonksiyonun yardımıyla hem de başka bir O_o'nun yardımıyla çalışır. Dönüşüm kodunu yazalım DannyeFormyDerevo   uygulama türü nesnesine:
  & Sunucuda
  Sunucuda Oluşturma Prosedürü (Hata, Standart İşleme)

Değer Tree1 \u003d Form RequisiteB Değeri ("Requisite1");
ValueValue2 \u003d FormFormValue (EtaForma. Requisite1, Type ("ValueValue"));

  KonetsProtsedury

Değerler Ağacı1 ve Değerler Ağacı2 aynı türdedir - Değerler Ağacı. Peki bu işlevler arasındaki fark nedir ???

DannyeFormyVZnachenie   - fonksiyon global   bağlamı. Form tarafından desteklenen nesnenin türünü veritabanı nesnesinin türüne dönüştürür: DataFormStructure -\u003e DirectoryObject.Handbook1.

RekvizitFormyVZnachenie   - form modülünün işlevi, yani form bağlamında sunucuda çağrılır (& OnServer). Bu işlevi formun kapsamı dışında çağırmaya çalışırsanız, platform olağanüstü bir hata oluşturur:
  & Bağlamsız Sunucuda
  Tip Dönüştürme Prosedürü ()

// Bu kod yanlış, form içeriği kullanılamıyor, bir hata olacak!
DemandObject2 \u003d DataFormsValue (Object, Type ("DirectoryObject.Handbook1"));
RequestObject2.OpenMessage (Object.Requisition1);

  KonetsProtsedury

Tüm farklar bu.

İşleme, seçilen nesnenin tüm ayrıntılarını gösterir, bunları düzenlemenize ve aynı türdeki iki nesneyi karşılaştırmanıza olanak tanır. Herhangi bir yapılandırmayı destekler, standart olarak otomatik olarak yüklenir.

Geçerli sürüm: düzenli formlar 1.09 için, yönetilen formlar için 1.12.

İndirme işlemi (1C 8.2, 1C 8.3 (normal formlar için), epf dosyası, 47 KB)

İndirme işlemi (1C 8.2, 1C 8.3 (yönetilen formlar için), epf dosyası, 22 KB)

1C 8.1: 1.05 için son sürüm

İndirme işlemi (1C 8.1, epf dosyası, 48 KB için)

İşleme açılmazsa ne yapmalı

İşleme, bu gibi durumlarda çok yararlıdır:

    bilmediğiniz bir üssü anlamaya ihtiyaç

    yapılandırma sürümü güncellendi ve belgeye yeni bir alan eklendi (gizli, ancak formda değil). Aynı zamanda, oluşturulduklarında yeni belgeler için ayarlanır, ancak doğal olarak eski belgeleri unuturlar. Tamamen özdeş iki belgenin farklı kayıtlar vermesi gerçeğinde kullanıcı için ne ifade edilir?

    sadece alanın içeriği formda kendisine ayrılan alana uymuyor, ancak tamamen bakmanız gerekiyor (tablo parçaları özellikle bundan muzdarip - geliştiriciler sütunların genişliğini sınırlamaktan çok hoşlanıyorlar ve buna ek olarak değişmesine izin vermiyorlar).

    ilgili bilgilere gitmeniz gerekir (örneğin, faturada belirtilen GTD'yi açın) sadece bu alanı kullanılabilir hale getirmeyi unuttunuz (yani, noktalı veya büyüteçli düğmeler veya F4 içermez) (ve giriş alanı yerine bir seçim alanı, yazıt veya alan oluşturdukları da olur) genellikle on formunda değil)

    aynı türden iki nesneyi karşılaştırmanız gerekir

Ayırt edici özellikler

    standart konfigürasyonlara basılı bir form olarak bağlanma yeteneği (yani tamamen kullanıcı modunda, konfigüratöre gerek yoktur)

    "veri değişimi - indir" modunda bir nesneyi kaydetme yeteneği - ör. "Olduğu gibi"

Kurulum (normal arayüz)

İşlem açık, ekrandaki talimatları izleyin. (Yani, sağ üst köşedeki "Kurulum" düğmesini tıklayın ve sonraki pencerede kurulumu onaylayın.

Kurulum ("yönetilen" arayüz)

Uyarı: Bu kurulum seçeneği yalnızca tipik 1C yapılandırmalarında çalışır.

1. "Yönetim" bölümüne gidin ve orada - "Ek raporlar ve işleme".

2. Ekle düğmesini tıklayın ve dannye-objecta-upr.epf dosyasını seçin

3. İşleme ayarları penceresinde aşağıdakileri doğrulayın:

    Yayın: Kullanılmış

    İşaretli onay kutuları: liste formu için kullan, form için nesneleri kullan

4. Kurulumu Tamam'a tıklayarak onaylayın.

İşlemeyi Kullanma

Belge biçiminden bir referans öğesi. her iki liste formu

    Normal arayüz - "Yazdır ..." düğmesini tıklayın

    "Yönetilen" arayüz - doldur düğmesini tıklayın

"Nesne verileri" menüsünden seçin - işleme formu açılır

Gerekliliği görüntülemek için (örneğin, belge gerekli "Sözleşme" yi içerir, değişiklik yapılamaz. Bu sözleşme için kartı açmanız gerekir).

İstemcideki referans değerinden sahne alma

İşleme formunda, özniteliğin değerini tıklayın.

Destekleri değiştirmek için - değerin yanındaki kutuyu işaretleyin. Bundan sonra değer değiştirilebilir.

Değişiklikleri kaydetmek için, kaydı “veri değişimi - indirme” modunda, normal kayıtta kaydetmek için gerekli seçeneğin düğmesine basın. tutma (yalnızca belgeler için).

Değiştirilen gereksinimlerin bir kısmını kaydetmek ve en'nin bir kısmını kaydetmek istiyorsanız, tr'nin kaydedilmesi gerektiği gerçeğinin yanındaki kutunun işaretini kaldırın.

İşlemede “Zorunlu Veriler” vardır; bu, referansla bir değer açmanız (örneğin, karşı tarafın kartı) ve tekrar işlemeyi tekrarla aynıdır.

Nesnelerin karşılaştırılması yapılabilir:

İşleme için 2 nesne seçme

2. Bir nesneden işlemeyi başlatarak, ardından (pencereyi kapatmadan) başka bir nesneden işlemeyi başlatın. Bir karşılaştırma için öneriler olacaktır.

3. (Yalnızca "yönetilen" arayüz). Listeden hemen 2 nesne seçin (bunun için Ctrl düğmesini basılı tutuyoruz) ve çağrı işleme - nesneler karşılaştırılacak.

Ekran görüntüleri (normal arayüz)

Ekran görüntüleri ("yönetilen" arayüz)

Sorunlu durumları ayrıştırmak için işlemeyi kullanma örnekleri.

Sürüm 1.12'deki değişiklikler (17/10/2017)

  • Yönetilen formlara sahip varyant için bir hata düzeltildi (nesnenin kendisinde aynı ada sahip başlık sahne varsa tablo bölümündeki aksesuarlar güncellenmedi)

Sürüm 1.10'daki değişiklikler (01/06/2017)

  • Yönetilen formlara sahip varyant için bazı standart yapılandırmalardaki (Muhasebe, UNF) çalışma düzeltildi

1.09 sürümündeki değişiklikler (07/07/2015)

  • "Üst", "Sahip" alanlarının çıktıları eklendi
  • Yönetilen arayüzün sürümü için, modsal penceresiz çalışma sağlanır.

1.08 sürümündeki değişiklikler (04/03/2014)

    Normal arayüzün sürümü için, "Production Enterprise Management" (SCP) 1.3 yapılandırmasında çalışırken uyumluluk artırıldı.

1.07 sürümündeki değişiklikler (04/03/2013)

    "Yönetilen" formlar için bir işleme sürümü vardır (otomatik yükleme ve güncelleme işlevi yalnızca normal formların sürümünde kullanılabilir)

    Hata düzeltildi (dağıtım dağıtımında haklar belirlendi)

Sürüm 1.06'daki değişiklikler (13.05.2012)

    "Nesne Sürümü" alanını görüntüleme

    Hata düzeltildi (işlenirken salt okunur haklar ayarlanamadı)

Sürüm 1.05'teki değişiklikler (05/04/2011)

    Hata düzeltildi (8.2 altında çalışırken, iletim modunda bir belge kaydetmek mevcut değildi)

1.04 sürümündeki değişiklikler (13.04.2011)

    Hata düzeltildi (8.2 altında çalışırken, ayrıntıları çift tıklamak ayrıntıları açmadı)

    Şimdi işleme, referans türünün ayrıntılarını görüntülemeye devam edebilir.

    Yani: "Malların, hizmetlerin satışı" dokümanının ayrıntılarını açtığınızı varsayalım. Bu belge, “DirectoryReference. Counterparties” türünde “Counterparty” özelliğine sahiptir. Farenin sağ tuşuyla gerekli olanı tıkladığınızda, “Gerekli veriler” ve “Yeni bir pencerede gerekli veriler” öğelerinin bulunduğu bir bağlam menüsü elde edersiniz. Bunlardan birini seçerek, ilgili karşı tarafın ayrıntılarını görüntüleyebilirsiniz.

1.03 sürümündeki değişiklikler (15.11.2010)

    Kullanıcıları ve işleme erişim haklarını ayarlama özelliği eklendi.

1.02 sürümündeki değişiklikler (08.21.2010)

    Harici işleme referansının "Ek Yazdırma Formları" olarak adlandırıldığı yapılandırmalar desteklenir.

Sürüm 1.01'deki değişiklikler (28/01/2010)

    Object1 boş ve Object2 seçildiğinde oluşan bir hata düzeltildi (bunu gösteren rasswet sayesinde);

    "Ayrıntılı" bir onay işareti hemen çalışır, "Göster" i tıklamanız gerekmez;

    “Değer Türü” sütunu, “Olası Değer Türü” olarak yeniden adlandırılmıştır ve yapılandırıcıda bu öznitelik için tanımlanan değer türünü gösterir. Kompozit tipe sahip ayrıntılar için, buna ek olarak, görüntülenen nesnede bu özelliğin değer türü gösterilir.

İşlemeyi yapılandırmanıza bağladıysanız, güncellemek için:

işlemeyi indirin, harici olarak açın, size neyin ve nasıl tıklanacağını söyleyecektir ("Yükle" düğmesi, "Veritabanında işlemeyi güncelle" yi seçin, "Çalıştır" düğmesini tıklayın)

   Yazdır (Ctrl + P)

Uygulama nesnelerini veriye dönüştürmek için bir dizi genel yöntem vardır veya bunun tersi de geçerlidir:

  • Form Verilerindeki Değer (),
  • DataFormsValue (),
  • CopyDataForms ().

Uygulama nesneleriyle çalışan yöntemler yalnızca sunucu yordamlarında kullanılabilir. Form verileri arasında değer kopyalama yöntemi sunucuda ve istemcide kullanılabilir, çünkü parametre olarak uygulama nesneleri gerektirmez.

Form verilerini bir uygulama nesnesine dönüştürürken uyumlulukları dikkate alınmalıdır.

  • Değer Veri Formları() - uygulama türü nesnesini form verilerine dönüştürür.
  •   DannyeFormyVZnachenie() - form verilerini bir uygulama türü nesnesine dönüştürür.
  • KopirovatDannyeFormy() - form verilerinin uyumlu bir yapıya sahip kopyasını oluşturur. Kopyalama yapıldıysa True değerini veya nesnelerin yapısı uyumsuzsa False değerini döndürür.

Form verilerini uygulama nesnelerine dönüştürürken veya tersini yaparken, nesne önbelleğe alma kullanılır, ancak bu, önbellekteki nesnenin sürümünün geçerli olup olmadığını kontrol eder.

NOT.   Ana eylemi olan bir formda standart eylemler gerçekleştirirken (bir form açma, standart Yazma komutu yürütme vb.), Dönüştürme otomatik olarak gerçekleştirilir.

Veri dönüşümünün kendi algoritmalarımızda nasıl kullanılacağına dair bir örnek veriyoruz.

   & Sunucuda
Sunucuda Oluşturma Prosedürü (Hata, Standart İşleme)
ObjectProduct \u003d Ürünler. FindName ("Cezve"). GetObject (); ValueVDataForms (ObjectProduct, Object);
  KonetsProtsedury
  & Müşteri
Yazma Prosedürü ()
  Sunucuya Yaz ();
KonetsProtsedury
& Sunucuda
Sunucuya Yaz () prosedürü
  ObjectProduct \u003d DataFormsValue (Object, Type ("DirectoryObject.Products"));
  ObjectGood.Record ();
KonetsProtsedury

Ayrıca, İstemci Başvuru Formu Formunun sunucuda kullanılabilen yöntemleri vardır:

  • Form Zorunlu Değeri () - Uygulama türü nesnesinin belirli bir form özniteliğine dönüştürülmesini gerçekleştirir.
  • RekvizitFormyVZnachenie() - form verileri niteliğini bir uygulama türü nesnesine dönüştürür.

Bu yöntemlerin kullanımı genellikle daha uygundur, çünkü örneğin form özelliğinin türü hakkında bilgi sahibi olurlar. Ayrıca, PropsFormsValue () yöntemi, ileti oluşturulurken kullanılan form ve nesne verilerinin yazışmalarını ayarlar.

Ayrıca, ValueValue veya ValueValue türündeki nesnelerin form verilerine (hem ValueValueForms () yöntemini hem de ValueVRequisitionForms () yöntemini kullanarak) dönüştürürken aşağıdaki dönüştürülmüş nesnede var olması gereken unutulmamalıdır: oluştururlar.

UYARI! Verilerle ilgili olmayan ayrıntı sütunları, form verisi ile bilgi tabanının nesneleri arasındaki değerlerin dönüştürülmesine katılmaz ve bunun tersi de geçerlidir. Nesne verilerinde bulunmayan sütunlar, form verilerine dönüştürüldüğünde temizlenir.

Platform tarafından veri oluşturmak üzere bir nesneyi aktarırken veya yöntemleri çağırırken Değer Veri Formları(), Değer V Zorunlu Formlar(), yalnızca nesne verileri aktarılır. Nesnenin dahili durumu, form verilerine aktarılmaz. Örneğin, bir nesneye göre ayarlanan yeni bir bağlantının değeri SetLinkNew ()nesneyi form verilerine dönüştürme işleminde kaybolacaktır ve bunun tersi de geçerlidir.

Yöntemlerin ilk parametresi olarak RekvizitFormyVZnachenie() ve Veri Form Değerleri () yalnızca aşağıdaki türlerin ayrıntıları görünebilir:

  • DannyeFormyStruktura,
  • DataForms Koleksiyonu,
  • DannyeFormyStrukturaSKollektsiey,
  • Form Verisi Ağacı.

İşte bu yöntemlerin kullanımına bir örnek.

   & Sunucuda
  Sunucuda Yeniden Hesapla ()
// Gerekli Nesneyi bir uygulama nesnesine dönüştürür. Document \u003d PropsFormsValue ("Nesne");
  // Yeniden saymayı belge modülünde tanımlanan yöntemi kullanarak gerçekleştirir. Document.Recount ();
  // Uygulama nesnesini tekrar props'e dönüştürür. Form Zorunlu Değeri (Belge, "Nesne");
  KonetsProtsedury

Form Ayrıntıları

Form ayrıntıları kümesi, formda görüntülenen, düzenlenen veya saklanan verilerin kompozisyonunu açıklar. Ayrıca, yalnızca formun ayrıntıları veri görüntüleme ve düzenleme olanağı sağlamaz. Görüntüleme ve düzenleme için, formun ayrıntılarıyla ilişkili form öğeleri kullanılır (bu bölümdeki "Form Öğeleri" bölümüne bakın). Formun tüm ayrıntılarının kümesine form verisi denir.

Önemli!   Sıradan formlardan farklı olarak, yönetilen bir formdaki tüm verilerin ayrıntılar şeklinde tanımlanması gerektiği unutulmamalıdır. Form modülünün değişkenlerinin form öğeleri için veri kaynağı olarak kullanılmasına izin verilmez.

Atamak mümkündür Temel form gereksinimleri, yani formun standart işlevselliğini belirleyecek olan aksesuarlar (formun uzantısı). Formun ana özelliğinin sadece bir tane olabileceği unutulmamalıdır.

Form uzantısı   - bunlar, formun ana öğesi olan bir nesnenin özelliği olan ManagedForm nesnesinin şeklinin ek özellikleri, yöntemleri ve parametreleridir.

Formu geliştirme sürecinde, Görünüm ve Düzenle özelliklerini kullanarak formun belirli ayrıntılarını roller bağlamında görüntüleme ve düzenleme yeteneğini açıkça ayarlayabilirsiniz (daha fazla ayrıntı için "Editörler" bölümünün "Rol tabanlı form ayarları" bölümüne bakın). Ayrıca, formdaki belirli bir özniteliğin kullanılabilirliği işlevsel seçenekler kullanılarak yapılandırılabilir (işlevsel seçenekler hakkında daha fazla bilgi için "Yapılandırma arabirimini yönetme" bölümüne bakın).

Özellik Formu Özellik Saklanan Veriler   Propsların etkileşimli bir şekilde değiştirilmesinin, form verilerini düzenleme için engellemeye ve form değişikliği işaretinin otomatik olarak ayarlanmasına neden olacağının bir işaretidir.

Yönetilen Form Veri Türleri

Yönetilen bir form, çalıştığı veri türlerinde de normal bir formdan farklıdır. Normal form, 1C: Enterprise'ın sağladığı çoğu türle çalışıyorsa (Dizin Nesnesi, Belge Nesnesi vb. Türleri dahil), yönetilen bir formda, aşağıdaki tür kategorileri ayırt edilebilir:

  • doğrudan formda kullanılan türler, ince ve Web istemci tarafında bulunan türlerdir (örneğin, Number, ReferenceReference.Products, Graphic Schema, TableDocument);
  • özel veri türlerine dönüştürülecek türler - yönetilen bir formun veri türleri. Bu tipler, parantez içindeki form ayrıntıları listesinde görüntülenir, örneğin (ReferenceObject.Products);
  • dinamik liste (daha fazla ayrıntı için bu bölümün Dinamik Liste bölümüne bakın).

Uygulama nesnelerini form verilerine dönüştürme

İnce ve Web istemci tarafında bazı uygulama türleri (Dizin Nesnesi vb.) Yoktur (daha fazla ayrıntı için "Yönetilen uygulama kavramı" bölümüne bakın). Bu nedenle, bu tür uygulama türlerini formda temsil etmek için, yönetilen formlarda çalışmak üzere tasarlanmış platforma özel veri türleri eklenmiştir. Yönetilen bir uygulamanın bu özelliği, uygulama nesnelerinin veri oluşturacak şekilde dönüştürülmesini gerektirir (ve tersi de geçerlidir).

Aşağıdaki veri türleri kullanılır:

  • Form DataStructure - isteğe bağlı türde bir dizi özellik içerir. Özellikler başka yapılar, koleksiyonlar veya koleksiyonları olan yapılar olabilir. Bu tür, örneğin Dizin Nesnesi biçiminde temsil edilir.
  • Form Verileri Koleksiyon, bir diziye benzeyen yazılan değerlerin listesidir. Bir koleksiyon öğesine erişim dizin veya tanımlayıcı ile yapılır. Bazı durumlarda tanımlayıcıya erişim mümkün olmayabilir. Bunun nedeni, bu koleksiyon tarafından temsil edilen uygulama nesnesinin türüdür. Tanımlayıcı herhangi bir tam sayı olabilir. Bu tip, örneğin, tablo biçiminde bir parça şeklinde temsil edilir.
  • DataFormsStructureCollection aynı zamanda bir yapı ve koleksiyon olarak sunulan bir nesnedir. Bunu bu varlıklardan herhangi biri gibi halledebilirsiniz. Bu tür, örneğin bir kayıt kümesi biçiminde temsil edilir.
  • DataFormTree - nesne hiyerarşik verileri depolamak için tasarlanmıştır.

Bir uygulama nesnesi, bir veya daha fazla form veri öğesiyle temsil edilir. Genel olarak, form verilerinin hiyerarşisi ve bileşimi, yönetilen formun uygulama nesnelerinin karmaşıklığına ve ilişkisine bağlıdır.

Örneğin, sekmeli bir parça içeren bir belge, DataFormsCollection türündeki bir nesnenin (belgenin sekmeli kısmı) bağlı olduğu DataFormsStructure tipinde bir nesne (belgenin kendisi) ile temsil edilir.

Önemli!   Yapılandırmanın geliştirilmesi sırasında, uygulama nesnelerinin yalnızca sunucuda kullanılabilir olduğunu, bu formların nesnelerinin de sunucuda ve istemcide kullanılabileceğini hatırlamak önemlidir.

Yönetilen bir formun istemci ve sunucu bölümleri arasında veri aktarımı

Aslında, form verilerinin, formun aynı şekilde çalıştığı ve hem sunucuda hem de istemcide bulunan çeşitli uygulama nesnelerinin verilerinin birleşik bir temsili olduğunu söyleyebiliriz. Yani form, uygulanan nesnelerin verilerinin kendi veri türleri biçiminde bir miktar “projeksiyonu” içerir ve gerekirse aralarında dönüşüm gerçekleştirir. Bununla birlikte, yapılandırma geliştiricisi kendi veri işleme algoritmasını uygularsa, veri dönüşümünü (özel türlerden uygulama türlerine ve tam tersi) bağımsız olarak gerçekleştirmesi gerekir.

Özel bir düzenleyicide form ayrıntılarını düzenlerken (daha fazla ayrıntı için "Editörler" bölümündeki "Form Ayrıntıları" bölümüne bakın), form çalışırken istemci ile sunucu arasında veri aktarımını etkilemek mümkündür. Bunu yapmak için, ayrıntı düzenleyici sütununu kullanın. Her zaman kullan. Bu özelliğin etkisi üç tür ayrıntı için farklıdır:

  • Dinamik listeye bağlı özellik için (dinamik listenin sütunu):
    • özellik açıktır - öznitelik her zaman veritabanından okunur ve form verilerine dahil edilir;
    • özellik kapalı - öznitelik veritabanından okunur ve yalnızca öznitelikle veya alt özniteliğiyle ilişkilendirilmiş olarak görünür durumda olan bir form öğesi olduğunda form verilerine eklenir.
  • Hareketlerin toplanmasına bağlı sahne için:
    • özellik on - belge hareketleri veritabanından okunur ve form verilerinde bulunur;
    • özellik kapalı - belge hareketleri veritabanından okunmayacak ve form verilerine girmeyecektir (belge hareketlerini ifade eden bir form öğesi yoksa).
  • Formun diğer detayları:
    • özellik açıktır - öznitelik veya alt özniteliği ile ilişkili formun en az bir öğesi olup olmadığına bakılmaksızın, öznitelik form verilerinde bulunur;
    • özellik kapalı - öznitelik, yalnızca öznitelikle veya alt özniteliğiyle ilişkilendirilmiş bir form öğesi varsa form verilerinde bulunur. Dinamik listenin özelliklerinden farklı olarak, özellikle ilişkilendirilen öğenin görünürlüğü burada bir rol oynamaz.

Not. Üst öznitelikte ayarlanan özelliğin tüm alt ayrıntıları etkilediği unutulmamalıdır. Örneğin, Use özelliği her zaman belgenin sekmeli kısmından kaldırılırsa, sistem bu özelliğin tüm alt ayrıntılardan da (özelliğin gerçek durumuna rağmen) kaldırıldığını düşünür.

Uygulama verilerini form verilerine dönüştürme yöntemleri

Uygulama nesnelerini veriye dönüştürmek için bir dizi genel yöntem vardır veya bunun tersi de geçerlidir:

  • Form Verilerindeki Değer (),
  • DataFormsValue (),
  • CopyDataForms ().

Önemli!   Uygulama nesneleriyle çalışan yöntemler yalnızca sunucu yordamlarında kullanılabilir. Form verileri arasında değer kopyalama yöntemi sunucuda ve istemcide kullanılabilir, çünkü parametre olarak uygulama nesneleri gerektirmez.

Form verilerini bir uygulama nesnesine dönüştürürken uyumlulukları dikkate alınmalıdır.

  • ValueDataForms () - bir uygulama türü nesnesini form verilerine dönüştürür;
  • Form DataV Value () - form verilerini bir uygulama türü nesnesine dönüştürür;
  • CopyDataForms () - form verilerini uyumlu bir yapıya kopyalar. Kopyalama yapıldıysa True değerini veya nesnelerin yapısı uyumsuzsa False değerini döndürür.

Not. Ana niteliğe sahip bir formun standart eylemlerini (form açma, standart Yazma komutunu yürütme vb.) Gerçekleştirirken, dönüştürme otomatik olarak gerçekleştirilir.

Veri dönüşümünün kendi algoritmalarımızda nasıl kullanılacağına dair bir örnek veriyoruz.

  & Sunucuda Oluştururken Yordam (Hata, Standart İşleme)

ObjectProduct \u003d Dizinler.Ürünler. FindName ("Cezve"). GetObject (); ValueVDataForms (ObjectProduct, Object);

KonetsProtsedury

& İstemci Üzerinde Prosedür Yazma ()

Sunucuya Yaz ();

KonetsProtsedury

& Sunucuda Yordam Sunucuda Yazma ()

ObjectProduct \u003d DataFormsValue (Object, Type ("DirectoryObject.Products")); ObjectGood.Record ();

KonetsProtsedury

Ayrıca, ManagedForm nesnesinin sunucuda kullanılabilir yöntemleri vardır:

  • Değer Formu Requisite () - Uygulama türü nesnesini belirtilen form özniteliğine dönüştürür.
  • FormPropsValue () - Form verisi uygulamalarını bir uygulama türü nesnesine dönüştürür.

Bu yöntemlerin kullanımı genellikle daha uygundur, çünkü örneğin form özelliğinin türü hakkında bilgi sahibi olurlar. Ayrıca, PropsFormsValue () yöntemi, ileti oluşturulurken kullanılan form ve nesne verilerinin yazışmalarını ayarlar. Bununla ilgili daha fazla bilgiyi “Navigasyon Servis Özellikleri” bölümünde bulabilirsiniz.

İşte bu yöntemlerin kullanımına bir örnek.

  & Sunucuda Yordam Sunucuda Yeniden Hesaplama ()

   // Gerekli Nesneyi bir uygulama nesnesine dönüştürür. Document \u003d PropsFormsValue ("Nesne"); // Yeniden saymayı belge modülünde tanımlanan yöntemi kullanarak gerçekleştirir. Document.Recount (); // Uygulama nesnesini tekrar props'e dönüştürür. Form Zorunluluğunun Değeri (Belge, “Nesne”);

KonetsProtsedury

Yazılım arayüzü

DataFormTree (FormDataTree)

  • FindBy Tanıtıcısı (FindById)
  • PoluchitElementy (GetItems)

Açıklama:

Yönetilen form verilerindeki bir ağacı simüle etmek için tasarlanmıştır.

Bu nesne XDTO'ya / XDTO'dan serileştirilebilir. Bu nesneye karşılık gelen XDTO türü, ad alanında tanımlanır. XDTO türü adı:

PoluchitElementy (GetItems)

sözdizimi:

Öğeleri Al ()

Dönüş değeri:

Aşağıdakini yazın: DataFormsCollection of ElementsTree.

Açıklama:

Üst düzey ağaç öğeleri koleksiyonu alır.

Kullanılabilirlik: istemci, sunucu, ince istemci, web istemcisi.

FindBy Tanıtıcısı (FindById)

sözdizimi:

Tanımlayıcıya Göre Bul (<Идентификатор>)

Seçenekler:

<Идентификатор>   (Zorunlu)

Tür: Sayı. Ağaç öğesi kimliği

Dönüş değeri:

Aşağıdakini yazın: DataShapesTree Öğesi.

Açıklama:

Koleksiyon öğesini tanıtıcıya göre alır.

Kullanılabilirlik: istemci, sunucu, ince istemci, web istemcisi.

DataFormsTreeItem (FormDataTreeItem)

Özellikler:

<Имя свойства> (<Имя свойства>)

  • GetIdentifier (GetId)
  • Ebeveyn Olun (GetParent)
  • PoluchitElementy (GetItems)
  • Mülkiyet (Mülkiyet)

Açıklama:

Form veri ağacı öğesi.

DataFormsTreeTeleItemsCollection (FormDataTreeItemCollection)

Koleksiyon Öğeleri: DataShapesTree Öğesi

Nesne için bir operatör vasıtasıyla koleksiyonu atlamak her biri için ... From ... Loop. Tarama sırasında koleksiyondaki öğeler seçilir. [...] operatörünü kullanarak koleksiyonun elemanına erişmek mümkündür. Öğenin dizini bağımsız değişken olarak geçirilir.

  • Takın (Ekle)
  • Ekle (Add)
  • Dizin (IndexOf)
  • Miktar (Sayı)
  • Temizle (Sil)
  • Get (Al)
  • Hareket (taşı)
  • Kaldır (Sil)

Açıklama:

Ahşap öğeleri koleksiyonu.

Kullanılabilirlik: istemci, sunucu, ince istemci, web istemcisi.

Ayrıca bakınız:

  • DataFormsElementTree, yöntem GetItems
  • DataShapesTree, yöntem GetItems

Değer ağacı ile çalışmanın özellikleri

Ağaç güncelleme

Bir sorun var sonbahar   bir ağacı güncellerken platformlar.

Ağaçta bir düğüm genişletildiyse ve bir alt düğüm seçildiyse, ağaç işlevle güncellenirken Değer Veri Formları   platform çöküyor.

Çözüm: Yükseltmeden önce ağacı temizlemeniz gerekir.

Örneğin:

& Sunucuda Prosedür Ağacı Temizle (öğeler) Elementlerden her öğe için Ağacı Temizle (element. Receive Elements ()); Döngü sonu Clean (); KonetsProtsedury

& Sunucuda Yordam Kavramlar Ağacı'nı () Kavramlar \u003d cp Özellikleri için Doldur Kavram Ağacı Oluştur (Tarih İçin, Meta. Geçerli IB ()); ClearTree (Kavram Ağacı.Öğeleri Al ()); Form Verilerindeki Değer (Kavramlar için, Kavram Ağacı); KonetsProtsedury

& Değişim Tarihindeki (Prosedür) Müşteri Prosedüründe Kavram Ağacını () doldurun; KonetsProtsedury