• 1c 8 değerler tablosunun sütununu doldurun. Hangi yöntemler mevcuttur ve aynı anda birkaç değerin nasıl aranacağı

    Yeni başlayanlar için küçük bir bilgi: Değer tablosuyla çalışmanın basit örnekleri:

    1. Bir değerler tablosu oluşturun

    Değer Tablosu = Yeni Değer Tablosu;


    2. Değer tablosu için sütunlar oluşturun:

    ValueTable.Columns.Add("Ad");
    Değer Table.Columns.Add("Soyadı");


    3. Sütun adlarını kullanarak yeni satırlar ekleyin:


    NewLine.Name = "Vasily";
    NewLine.LastName = "Pupkin";


    4. Değer tablosunda bir değere nasıl bakılır:
    İstenilen değeri içeren bir tablo satırı bulmak gerekir.

    FoundRow = ValueTable.Find(AramaValue);


    5. Değer tablosunun belirli sütunlarında ilk geçtiği yeri bulun

    FoundRow = ValueTable.Find(AramaValue, "Tedarikçi, Alıcı");


    6. Değer tablosundaki tüm oluşumları bulmanız gerekiyorsa:
    Arama yapısını kullanıyoruz.

    SearchStructure = Yapı("Çalışan", AramaValue);
    FoundRows Dizisi = ValueTable.FindRows(SearchStructure);


    Her elemanı anahtar olarak sütunun adını ve değer olarak bu sütunda istenilen değeri içerecek bir arama yapısı oluşturalım. Arama Yapısını FindLines() metoduna parametre olarak aktarıyoruz. Sonuç olarak tablo satırları alıyoruz.
    Arama yapısına, örneğin Sorumlu sütununda istenen değer için bir arama eklerseniz, FindLines() yönteminin uygulanmasının bir sonucu olarak, hem Çalışanın hem de Sorumlunun eşit olduğu tüm satırları elde ederiz. değer arandı.

    7. Değerler tablosunun rastgele sırayla yinelenmesi

    Değerler Tablosu Döngüsünden Her Geçerli Satır İçin
    Rapor(CurrentRow.Name);
    EndCycle;

    Dizinleri kullanarak aynı şey:

    SeniorIndex = ValueTable.Quantity() - 1;
    Hesap İçin = 0 - SeniorIndex Döngüsü
    Rapor(TableValues[Hesap].Ad);
    EndCycle;


    8. Mevcut bir değer tablosu satırının silinmesi

    ValueTable.Delete(Silinecek satır);

    indekse göre

    ValueTable.Delete(0);


    9. Değer tablosunun mevcut bir sütununu silme

    ValueTable.Columns.Delete(ColumnDeleted);


    indekse göre

    ValueTable.Columns.Delete(0);

    Değerler tablosunun “ortasından” bir satırın (veya sütunun) silinmesinin, silinenlerden “sonra” bulunan satırların indekslerinde birer birer azalmaya yol açacağını dikkate almak gerekir.

    10. Sütun adları değişkenlerde yer alıyorsa değerler tablosu nasıl doldurulur?

    NewRow = ValueTable.Add();
    NewRow[ColumnName] = Değer;


    11. Değer tablosunun tüm sütunu istenilen değerle nasıl doldurulur?
    Değerler Tablosu değerler tablosunda Mali Muhasebe Bayrağı sütunu Yanlış değeri ile doldurulmalıdır.

    Değerler Tablosu Değerleri Doldurun (Yanlış, "Mali Muhasebe Bayrağı");


    Değer tablosu için FillValues() yöntemini kullanıyoruz. İlk parametre doldurulacak değerdir. İkinci parametre doldurulacak sütunun adıdır.

    12. “Alıcı Tablosu” değer tablosunu “Kaynak Tablosu” değer tablosundaki verilerle nasıl doldurabilirim?

    İşlem sırasında Alıcı Tablosu henüz mevcut değilse veya önceki sütunlarının kaydedilmesine gerek yoksa orijinalin tam kopyası olarak oluşturabilirsiniz.

    Alıcı tablosu = Kaynak tablosu.Copy();


    İkinci seçenek: AlıcıTable tablosu mevcuttur ve onun sütunlarını ve sütun veri türlerindeki kısıtlamaları kaybetmek üzücü olur. Ancak adları kaynak tablonun adlarıyla eşleşen sütunların verilerini doldurmanız gerekir.

    Eşleşen adlara sahip sütunlar için kısmi veri aktarımı:

    SourceTable Döngüsünden SourceTable'ın Her Satırı İçin
    FillPropertyValues(NewRow, SourceTableRow);
    Döngünün Sonu


    Kaynak tablonun her satırı için, alıcı tabloya yeni bir satır eklenir ve değerler, adları kaynak tablodaki sütunların adlarıyla eşleşen yeni tablonun sütunlarına doldurulur.

    Tablolarda aynı adlara sahip sütunlar yoksa, hedef tablo, kaynak tablodaki satırların sayısı kadar boş değere sahip satır içerecektir.
    Aynı adı taşıyan bazı sütunlar için kaynak tablodaki veri değeri türü, hedef tablonun izin verilen sütun türleri dizisine girmezse, bu tür alanlarda boş değerler elde ederiz.
    Üçüncü durumu ele alalım. Aynı adı taşıyan sütunlar olması durumunda, hedef tablonun sütunu, kaynak tablonun sütunuyla tam uyumlu hale getirilmelidir.

    Eşleşen adlara sahip sütunlara ilişkin verilerin tam kopyalanması

    Aynı Sütunlar = Yeni Dizi();

    SourceTable.Columns Döngüsünden Her Sütun İçin
    MatchingColumn = TableReceiver.Columns.Find(Column.Name);

    Sütun Eşleşiyorsa<>Tanımsız Sonra

    // Sütun özelliklerini alın.
    Ad = Sütun.Adı;
    ValueType = Column.ValueType;
    Başlık = Sütun.Başlık;
    Genişlik = Sütun.Genişlik;

    // Hedef tablodaki sütunları değiştirin.
    Index = TableReceiver.Columns.Index(MatchingColumn);

    TableReceiver.Columns.Delete(Index);
    AlıcıTable.Columns.Insert(Index, Name, ValueType, Header, Width);

    // Eşleşen sütunların bir sonraki adını diziye ekleyin.
    Same Columns.Add(Column.Name);

    endIf;

    EndCycle;

    // Kaynak tablonun satırları arasında geçiş yapın.
    SourceTable döngüsündeki SourceTable'ın her Satırı için

    // Hedef tabloya yeni bir satır ekleyin.
    NewRow = TableReceiver.Add();

    // Eşleşen hücrelerdeki değerleri doldurun.
    Her Ad için Aynı addaki Sütunlardan Sütunlar Döngüsü
    NewRow[ColumnName] = SourceTableRow[ColumnName];

    EndCycle;

    EndCycle;


    Hedef tablodaki sütunu, özellikleri kaynak tablonun sütunuyla tamamen eşleşecek yeni bir sütunla değiştirmemiz gerekecek.
    Bu nedenle, alıcı tablosunda aynı isimde bir sütun bulunursa, yeni sütunun tüm özelliklerini değişkenlerde topluyoruz. Daha sonra eskisini silin ve yeni bir sütun oluşturun. Daha sonra kaynak tablonun satırları arasında dolaşıyoruz.
    Döngüde, alıcı tabloya yeni bir satır ekliyoruz ve eşleşen sütunlar dizisindeki sütun adları üzerinde bir döngü açıyoruz.
    Bu iç içe geçmiş döngünün içinde, hedef tablonun hücrelerini kaynak tablo hücresinin verileriyle dolduruyoruz.

    13. “ValueTable” değerler tablosuna tür kısıtlamaları ile sütunlar nasıl eklenir?

    Bir sütun eklerken, basitçe adını belirtebilir ve Add() yönteminin ikinci parametresine dokunmadan bırakabilirsiniz. Bu durumda sütun veri türü isteğe bağlıdır.

    Veri türü belirtmeden sütun ekleme

    // Tür kısıtlaması olmayan bir sütun ekleyin.
    ValueTable.Columns.Add("Nesne");


    İkinci parametrenin değerini doldurabilirsiniz. Burada sütun için izin verilen türün açıklamasını aktarmanız gerekir. Açıklamanın kendisi yapıcı kullanılarak elde edilebilir, parametre olarak türün dize adı (birçok tür varsa, virgülle ayrılmış olarak) veya geçerli türlerden oluşan bir dizi iletilebilir.

    Veri türünü belirten bir sütun ekleme

    // Sütun veri türlerindeki kısıtlamalar:
    // Yalnızca "Karşı Taraflar" dizininin öğeleri.
    Değer Tablosu.Columns.Add("Hesap", Türlerin Yeni Açıklaması("DirectoryLink.Accounts"));


    Sütun verilerini doldurmak için izin verilen türler arasında bir dize varsa, bit derinliğini (uzunluğunu) sınırlayabilir, değişken veya sabit uzunluk kullanımını belirtebilirsiniz. Bütün bunlar, String Qualifiers yapıcısını kullanarak bir nesne oluşturarak elde edilir. Daha sonra bu nesne TypeDescription yapıcısının parametrelerinden biri olarak kullanılacaktır.

    Bir değer tablosu sütununun veri türünü belirtmek için niteleyicileri kullanma

    // String tipindeki veriler için kısıtlamaları hazırlayın ve ayarlayın.
    Dize Niteleyicileri = Yeni Dize Niteleyicileri (20, AllowedLength.Variable);
    ValidTypes = NewTypeDescription("String", StringQualifiers);
    ValueTable.Columns.Add("NoteStringShort", ValidTypes);


    Sayı ve tarih niteleyicileri için de benzer işlemler yapılabilir.
    Lütfen unutmayın: Tip tanımları kurucu tarafından "sıfırdan" oluşturulabilir veya mevcut bir tip tanımı temel olarak kullanılabilir.

    Bir değer tablosu sütununun veri türünü belirtmek için mevcut tür bildirimlerini kullanma

    // Daha önce kullanılan tür açıklamasının uzantısı.
    QualifiersNumbers = New QualifiersNumbers(10, 2, ValidSign.Non-negative);
    DateQualifiers = New DateQualifiers(DateParts.Date);
    Genişletilmiş ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

    ValueTable.Columns.Add("Not", ExtendedAcceptableTypes);

    Değer tablosu, verileri tablo şeklinde bir gösterimde depolamak için tasarlanmış özel bir evrensel nesnedir. Bir tablo ile uygulama nesneleri arasındaki temel fark, fiziksel veritabanı tablolarına bağlanma eksikliğidir. Değer tablosu yalnızca bir yandan benzersiz fırsatlar sağlayan, diğer yandan belirli kısıtlamalar getiren RAM'de bulunur. Bununla birlikte, tabloyla etkileşim olasılıkları, veri tabanında gerçekten var olan nesnelerle etkileşimle karşılaştırılabilir.

    Tarihsel olarak, 1C'deki değer tablosunun, mevcut tabloların sanal bir analogu olarak ikili bir amacı vardır, ancak aynı zamanda bir kontrol unsurudur. Yönetilen bir uygulamaya geçişle birlikte, bu işlevselliğin çoğu kullanımdan kaldırıldı, ancak artık bazı önemli sınırlamalarla birlikte bir kullanıcı arayüzü öğesi de olabilir.

    Bir nesne olarak değer tablosunun yapısı

    Bir değer tablosunun özellikleri, önceden tanımlanmış iki koleksiyonun birleşimiyle belirlenir: sütunları ve satırları.

    Değerler tablosu Sütunlar

    Bir değerler tablosunun sütunu, onun tanımlayıcı özelliğidir. Yapısını belirleyen tablo sütunları kümesidir. Sütunlar, tablolu bir bölümün veya belge günlüğünün kullanıcı arayüzünden aşina olunan fiziksel tablo veya sütun alanlarına karşılık gelir. Bir sütunun dahili bir adı, değer türü ve tabloyla etkileşimli olarak çalışırken görüntülenen bir başlığı olabilir.

    Sütunlar bir nesne koleksiyonu olduğundan sütunları ekleyebilir, silebilir ve düzenleyebilirsiniz.

    Değer tablosu satırı

    Yazılım arayüzü açısından bakıldığında dizeler, bir değerler tablosuna yerleştirilmiş ayrı bir koleksiyondur. Bunlar, fiziksel tablolardaki kayıtlara, yani kullanıcının tablo bölümünde veya belge günlüğünde aşina olduğu satırlara benzer. Her bir satır, adları tablo sütunlarının adlarına karşılık gelen bir dizi adlandırılmış özelliğe sahip bir nesnedir.

    Dolayısıyla bir dizeyle etkileşim, diğer nesnelerle etkileşime çok benzer. Önceden tanımlanmış "FillPropertyValues()" işlevini kullanmak da dahil olmak üzere özelliklerini okuyabilir ve yazabilirsiniz. Değer tablosunun ana koleksiyonu satırlar olduğundan tablonun tüm satırlarını silmek için “Clear()” yöntemi kullanılır.

    Değer tablosu oluştur

    Değer tablosunu kullanıma hazır hale getirmenin birçok yolu vardır. Bunlardan bazılarına bakalım. Her örnek, yorumlarla birlikte kod listeleri olarak sağlanacaktır.

    Yapıcıyı kullanarak tablo oluşturma

    Tam olarak geliştiricinin ihtiyaç duyduğu tabloyu oluşturmanıza olanak tanıyan ana yöntem, ne yazık ki, gerekli tüm tablo özelliklerinin manuel olarak belirtilmesini gerektirdiğinden en yoğun emek gerektiren yöntemdir.

    DemoTablo = Yeni DeğerTablosu; // Öncelikle TK'yı başlatıyoruz // Daha sonra yeni sütunlar için gerekli parametreleri belirleyip koleksiyona ekliyoruz // "Nomenclature" sütununu oluşturuyoruz Name = "Nomenclature"; ValueType = New TypeDescription("DirectoryLink.Nomenclature"); Başlık = "Adlandırma (ürün)"; DemoTable.Columns.Add(Name, ValueType, Header); // "Miktar" sütunu oluşturuluyor Name = "Miktar"; ValueType = New TypeDescription("Sayı"); DemoTable.Columns.Add(Name, ValueType); // Bu manipülasyonların sonucunda, yazılan sütunlardan oluşan boş bir tablo oluşturduk // İlkel türlerin daha hassas yazımını kullanmanız gerekiyorsa, o zaman “Türlerin Açıklaması” yapıcısının genişletilmiş sözdizimini kullanmalısınız.

    Kopyalayarak tablo oluşturma

    Elinizde uygun yapıya ve/veya bileşime sahip bir referans varsa referans değer tablosunu kopyalayabilir veya indirebilirsiniz. Referans tablosu başka bir tablo ise “Referans tablolarını kopyala” yöntemini kullanmanız gerekir. Eğer tablo halinde bir kısım veya bir dizi kayıt kaydı ile uğraşıyorsanız, “Değer tablosunu kaldır” yöntemini kullanmalısınız. Eğer sadece yapıya ihtiyacınız varsa “Sütunları Kopyala” yöntemini kullanabilirsiniz.

    // Teknik şartname standardındaki tüm satırların kopyalanması ancak yalnızca belirtilen iki sütunun korunması seçeneği Standardın Sütunları = "Adlandırma, Adet"; DemoTable = TableEtalon.Copy(, ColumnsEtalon); // Belirtilen iki sütunu korurken, teknik spesifikasyon standardından önceden seçilmiş satırları kopyalama seçeneği.Rows of the Standard = SelectIntoArrayThe Rows We Need From the Table of the Standard(); ColumnsStandard = "Adlandırma, Miktar"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Belirtilen filtreyi kullanarak teknik spesifikasyon standardından satırları kopyalama seçeneği, “Adlandırma” sütununu koruyarak // Miktar sütunundaki değerin 0 olduğu tüm satırlar seçilecektir, yalnızca Adlandırma sütunu Satır Seçimi = Yeni Yapı(" Sonuç tablosunda "Miktar" görünecektir, 0); SütunlarStandart = "Adlandırma"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Tablonun tam bir kopyası ve miktar alanı değeri sıfıra eşit olan bir satırın ardından silinmesi ve “Miktar” sütununun tamamının silinmesi seçeneği Satır Seçimi = Yeni Yapı("Miktar", 0); SütunlarStandart = "Adlandırma"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); TableRow = DemoTable.Find(0, "Miktar"); DemoTable.Delete(TableRow); DemoTable.Columns.Delete("Miktar"); // Benzer seçenekler ve bunların değişiklikleri tablo bölümlerine ve kayıt kayıt kümelerine uygulanabilir

    Sorguyla tablo oluşturma

    İhtiyacınız olan tablonun şablonu veritabanında mevcutsa, istediğiniz yapıya sahip bir tabloyu hızlı bir şekilde oluşturmak için bir sorgu kullanabilirsiniz.

    // Biriktirme kaydının yapısına göre boş bir tablo oluşturma örneği // Bu şekilde doldurulmuş bir tablo da elde edebileceğinizi tahmin etmek kolaydır Query = New Query("SELECT FIRST 0 * From Accumulation Register. Ürünler Depoda"); requestResult = request.Execute(); DemoTable = Sorgu Sonucu.Unload(); // Açıkça belirtilen türleri ve alan adlarını kullanarak boş bir tablo oluşturma örneği Sorgu = Yeni Sorgu; Query.Text = "TOP 0'ı SEÇ | Değer(Directory.Nomenclature.EmptyLink) AS Adlandırması, | EXPRESS(0 AS NUMBER(15, 3)) AS Miktar"; requestResult = request.Execute(); DemoTable = Sorgu Sonucu.Unload(); // ÖNEMLİ! Bir istekten elde edilen sütun değerlerinin türlerinin her zaman Null türünü içerdiğini unutmayın // Böylece isteğin oluşturduğu TK her zaman bileşik sütun türlerine sahip olur.

    Çözüm

    Bu kısa yazımızda anlamak ve kullanmaya başlamak için yeterli bir değerler tablosu oluşturmanın temel özelliklerine ve pratik tekniklerine baktık. Değer tablosu nesnesinin kendisi o kadar çok yönlüdür ki, yeteneklerinin ayrıntılı bir açıklaması, teknikler ve çalışma yöntemleri hakkında ayrı bir makale yazmayı gerektirir.

    Para ve malların muhasebeleştirilmesi için iş dünyasında çeşitli tablolar yaygın olarak kullanılmaktadır. Hemen hemen her belge bir tablodur.

    Bir tablo depodan sevk edilecek malları listeler. Başka bir tablo bu mallar için ödeme yükümlülüklerini göstermektedir.

    Bu nedenle 1C'de tablolarla çalışmak önemli bir yer tutuyor.

    1C'deki tablolara "tablo parçaları" da denir. Dizinler, belgeler ve diğerleri bunlara sahiptir.

    Sorgu yürütüldüğünde iki farklı şekilde erişilebilen bir tablo döndürür.

    İlk - daha hızlı - seçim, ondan satır elde etmek yalnızca sırayla mümkündür. İkincisi, sorgu sonucunu bir değerler tablosuna yüklemek ve ardından ona rastgele erişim sağlamaktır.

    //Seçenek 1 – sorgu sonuçlarına sıralı erişim

    //tabloyu al
    Select = Query.Run().Select();
    // sorgu sonucunun tüm satırlarını sırayla inceliyoruz
    Select.Next() Döngüsü sırasında
    Rapor(Seçim.Ad);
    EndCycle;

    //Seçenek 2 – değerler tablosuna yükleme
    İstek = Yeni İstek("Dizin.Nomenclature'dan Ad SEÇİN");
    //tabloyu al
    Tablo = Query.Run().Unload().
    //ayrıca tüm satırları yineleyebiliriz
    Tablo Döngüsünden Her Satır için
    Rapor(Dize.Ad);
    EndCycle;
    //veya dizelere isteğe bağlı olarak erişim
    Satır = Table.Find("Kürek", "Ad");

    Önemli bir özellik, sorgu sonucundan elde edilen tabloda tüm sütunların kesin olarak yazılmasıdır. Bu, İsimlendirme dizininden Ad alanını talep ettiğinizde, izin verilen uzunluğu N karakterden fazla olmayan Dize türünde bir sütun alacağınız anlamına gelir.

    Formdaki tablo (kalın istemci)

    Kullanıcı tablo forma yerleştirildiğinde onunla çalışır.

    Formlarla çalışmanın temel ilkelerini derste ve derste tartıştık.

    Öyleyse tabloyu formun üzerine yerleştirelim. Bunu yapmak için tabloyu Kontrol panelinden sürükleyebilirsiniz. Benzer şekilde menüden Form/Ekle Denetimi'ni seçebilirsiniz.

    Veriler konfigürasyonda saklanabilir - daha sonra formunu düzenlediğiniz konfigürasyon nesnesinin mevcut (önceden eklenmiş) tablo bölümünü seçmeniz gerekir.

    Veri özelliğinde "..." düğmesini tıklayın. Tablosal parçaların listesini görmek için Nesne dalını genişletmeniz gerekir.

    Tablo bölümünü seçtiğinizde, 1C'nin kendisi formdaki tabloya sütunlar ekleyecektir. Kullanıcının böyle bir tabloya girdiği satırlar, referans kitabı/belgeyle birlikte otomatik olarak kaydedilecektir.

    Aynı Veri özelliğinde isteğe bağlı bir ad girebilir ve Değer Tablosu türünü seçebilirsiniz.

    Bu, keyfi bir değer tablosunun seçildiği anlamına gelir. Otomatik olarak sütun eklemez veya otomatik olarak kaydedilmez, ancak onunla istediğinizi yapabilirsiniz.

    Tabloya sağ tıklayarak sütun ekleyebilirsiniz. Bir sütunun özelliklerinde, adını (1C kodunda referans için), formdaki sütun başlığını, tablo bölümünün niteliğiyle bağlantısını (ikincisi - rastgele bir tablo seçilmemişse, ancak bir sütun) belirtebilirsiniz. tablo kısmı).

    Formdaki tablo özelliklerinde kullanıcının satır ekleyip ekleyemeyeceğini/silebileceğini belirtebilirsiniz. Daha gelişmiş bir form Salt Görüntüle onay kutusudur. Bu özellikler, bilgileri görüntülemek için tasarlanmış ancak düzenleme amaçlı olmayan tabloları düzenlemek için kullanıma uygundur.

    Tabloyu yönetmek için formda bir komut paneli görüntülemeniz gerekir. Form/Ekle Kontrol/Komut Çubuğu menü öğesini seçin.

    Paneldeki düğmelerin otomatik olarak görünmesi için komut çubuğu özelliklerinde Otomatik Doldur onay kutusunu seçin.

    Formdaki tablo (ince/yönetilen istemci)

    Yönetilen formda bu eylemler biraz farklı görünür. Forma tablolu bir bölüm yerleştirmeniz gerekiyorsa Nesne dalını genişletin ve tablolu bölümlerden birini sola sürükleyin. Bu kadar!

    Bir değerler tablosu yerleştirmeniz gerekiyorsa, yeni bir form özelliği ekleyin ve özelliklerinde türü - değerler tablosunu belirtin.

    Sütun eklemek için bu form özelliğinde sağ tıklama menüsünü kullanın ve Özellik sütunu ekle'yi seçin.

    Daha sonra tabloyu sola da sürükleyin.

    Bir tablonun komut çubuğuna sahip olabilmesi için tablo özelliklerinde Kullanım – Komut çubuğu konumu bölümündeki değerleri seçin.

    Excel'e tablo yükleme

    Formda bulunan herhangi bir 1C tablosu yazdırılabilir veya Excel'e yüklenebilir.

    Bunu yapmak için tablodaki boş bir alana sağ tıklayın ve Liste'yi seçin.

    Yönetilen (ince) bir istemcide, Tüm işlemler/Listeyi görüntüle menü öğesi kullanılarak benzer işlemler gerçekleştirilebilir.

    Tüm infostart okuyucularına selamlar. Bu makale, programlı olarak yönetilen bir uygulama biçiminde keyfi bir değer tablosu oluşturma konusuna ayrılacaktır.

    Görevin özellikleri.

    Normal bir uygulamada programlayan herkes çoğu zaman bir form üzerinde keyfi bir değerler tablosu elde etme göreviyle karşı karşıya kalmıştır. Rastgele bir değer tablosu, sütun sayısı ve türü önceden bilinmeyen bir tablodur. Yani 3 sütun olabilir, belki 6 veya belki 8. Normal bir uygulamada her şey basittir: “Değerler Tablosu” öğesini işleme formuna yerleştirebilir ve ardından oluşturulan değerler tablosunu aktarabilirsiniz. bu öğeye programlı olarak. Daha sonra basit bir komutla:

    Form Elements.TableField.CreateColumns();

    formda hazır bir değerler tablosu edinin. Görünüşe göre daha basit olabilir.

    Bunların hepsi normal başvurudaydı. Yönetilen bir uygulamada her şey değişti. Rastgele bir tablo oluşturmak o kadar kolay değil. Şimdi ya formdaki değer tablosunu katı bir şekilde parametreleştirmeniz ya da programlı olarak oluşturmanız gerekiyor (bunun aslında yönetilen uygulamanın özü olduğunu açıklayın). Yapmaya çalışacağımız şey bu: kontrollü bir formda programlı olarak rastgele bir değerler tablosu oluşturmak.

    Sorunun çözümü.

    Yapmamız gereken ilk şey tablonun formda nasıl görüneceğini belirlemek. Önemli olan, işleme sırasında herhangi bir form öğesi oluşturmanıza gerek olmamasıdır. Tablonun tamamı gibi programlı olarak oluşturacağız. Yani, tablo, kimin ihtiyacı olduğuna bağlı olarak, formu açtığınızda veya bir düğmeyi kullandığınızda tanımlanacak ve oluşturulacaktır.

    Formda bir tablonun oluşturulması, değer tablosunun bir nitelik olarak tanımlanması yoluyla gerçekleşir:
    SelectionTypeArray = Yeni Dizi; SelectionType.Add(Type("Değer Tablosu")); dizisi ChoiceTypeDescription = Yeni TürAçıklaması(ChoiceTypeArray); Ayrıntılar Dizisi = Yeni Dizi; Nitelikler Dizisi.Add(Yeni Form Nitelikleri("Zamanlama Tablosu", SelectionType'ın Açıklaması, "", "TZN")); Şimdi verileri içeren programatik bir değerler tablosu oluşturmamız gerekiyor. Değer tablosu bir sorgudan elde ediliyorsa, her şey aşağı yukarı sıralıdır. Tablo manuel olarak oluşturulmuşsa “Türlerin Açıklamaları” üzerinden sayı veya tarih içerecek sütunların anlamı oluşturulabilir. Önemli olan, değerler tablosundaki sütunların bir türe sahip olması gerektiğidir. Örneğin, kullanıcının bu sütunlardaki verileri etkileşimli olarak doldurması bekleniyorsa, değer tablosunun bir sütununu yalnızca bir adla ekleyemezsiniz; bir türü olması gerekir. Unutmayın, bu çok önemli çünkü... Bu türleri formdaki tabloya aktaracağız.
    Birkaç sütun içeren bir tablo oluşturuyoruz:
    CD = NewDateQualifiers(DateParts.Time); ArrayKD = Yeni Dizi; ArrayCD.Add(Type("Tarih")); AçıklamaTypesTime = Yeni AçıklamaTypes(ArrayCD,CD); TZ = Yeni Değer Tablosu;
    TK.Columns.Add("İle", AçıklamaTypesTime);
    TK.Columns.Add("Önce", AçıklamaTypesTime);
    TK.Columns.Add("Ad");
    TK.Columns.Add("Note"); // Tam ad ve Not - satırlar Daha sonra TK program tablomuzu gerekli verilerle dolduracağız. Gerekli değerleri içeren ve oluşturulan form özelliğine aktarılmaya hazır bir TK tablosu alıyoruz. TK'den Her Sütun İçin Sütun Döngüsü

    Attributes Dizisi.Add(Yeni Form Nitelikleri(Column.Name, Column.ValueType,"ScheduleTable"));
    EndCycle;
    ChangeDetails(ArrayDetails);
    SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));
    SelectionFieldsTable.DataPath = "ScheduleTable";
    SelectionFieldTable.Display = TableDisplay.List;

    Bu basit bir kombinasyon ve masamız hazır.

    TK'den Her Sütun İçin Sütun Döngüsü

    NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable);
    NewElement.View = FormFieldView.InputField;
    NewElement.DataPath = "ScheduleTable." + Sütun.Adı;
    NewElement.Width = 10;
    EndCycle;

    Koşullu tasarım, eğer ihtiyacımız olursa, manuel olarak da komut menüsünü yazıyoruz - manuel olarak. Masa işleyicileri de elle yazılır. Örneğin, "Seçim" tablosuna bir olay işleyicisi eklemek için:

    SelectionFields.SetAction("Selection", "TZNSelection");

    Bu olayı işlemek için, prosedür şeklinde ayrı bir prosedür öngörülmüştür:

    &İstemcide
    Prosedür TKNSelection(TK, SelectedRow, Field, StandardProcessing)
    //işleyici komutları EndProcedure

    Tablo işleyicilerinin istemcide etkinleştiğini ve bu nedenle bir derleyici işaretçisi komutuna sahip olması gerektiğini unutmayın.

    &İstemcide

    Eklemek istediğim son şey, tüm bu adımlardan sonra bitmiş tabloyu form niteliğine aktarmayı unutmayın:

    ValueВFormAttributes(ToR, "ScheduleTable");

    Sonuç olarak elimizde şu var:


    Ve işte "Seçim" olayının ele alınması:



    Sonsöz.

    Makalenin programlı olarak bir form üzerinde tablolar oluşturmaya başlayan 1C programcılarına yardımcı olacağını umuyorum.

    Programlı olarak bir değerler tablosu oluşturan ve bunu kendi tablolarınızı oluşturmanıza yardımcı olacak yorumlarla birlikte yönetilebilir bir formda görüntüleyen bir işlemi indirebilirsiniz.