menü
Bedava
kayıt
ana  /  multimedya   / 1s değer tablosunu doldurma. Hangi yöntemler vardır ve aynı anda birkaç değer için nasıl arama yapılır

Değerler tablosunun doldurulması 1c. Hangi yöntemler vardır ve aynı anda birkaç değer için nasıl arama yapılır

İşte yeni başlayanlar için küçük bir gerçek - bir değer tablosu ile çalışmanın basit örnekleri:

1. Değerler tablosu oluşturun

Değer Tablosu \u003d Yeni Değer Tablosu;


2. Değerler tablosunun sütunlarını oluşturun:

Değer Tablosu, Sütunlar Ekle ("Ad");
Değer Tablosu, Sütunlar Ekle ("Soyadı");


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


Ad \u003d "Fesleğen";
Soyadı \u003d "Pupkin";


4. Değerler tablosundaki bir değer nasıl aranır:
İstenen değeri içeren tablo satırını bulmak gerekir.

FoundRow \u003d Değer Tablosu.Find (SearchedValue);


5. İlk tabloyu değer tablosunun belirli sütunlarında bulun

Bulunan Satır \u003d Değer Tablosu Bul (Aranan Değer, "Tedarikçi, Alıcı");


6. Değerlerin tablosunda tüm tekrarlamaları bulmanız gerekiyorsa:
Arama yapısını kullanıyoruz.

Arama Yapısı \u003d Yapı ("Çalışan", SearchValue);
FoundStrings Dizisi \u003d Değer Tablosu.FindStrings (Arama Yapısı);


Her bir öğesinin sütun adını anahtar olarak ve bu sütunda istenen değeri bir değer olarak içerecek bir arama yapısı oluşturalım. StructureSelecting parametresini FindStrings yöntemi () parametresi olarak iletiyoruz. Sonuç olarak, tablonun satırlarını alırız.
Arama yapısında istenen değeri, örneğin Sorumlu sütununda, FindStrings () yönteminin bir sonucu olarak bir arama eklersek, hem Çalışanın hem de Sorumlunun istenen değere eşit olduğu tüm satırları alırız.

7. Değerler tablosunu rastgele sırada yineleme

Değerler Tablosu Döngüsündeki Her Geçerli Satır için
  Rapor (CurrentString.Name);
Döngü sonu

Aynı şey dizinleri kullanarak:

Kıdemli Endeks \u003d Değer Tablosu Miktar () - 1;
Orta \u003d 0 için Kıdemli Endeks Döngüsü ile
  Rapor (Değer Tablosu [Orta]. Adı);
Döngü sonu


8. Değer tablosunun var olan bir satırını silme

Değer Tablosu Sil (Silinmiş Dize);

endekse göre

Değer Tablosu Sil (0);


9. Değerler tablosunun var olan bir sütununun silinmesi

Değer Tablosu, Sütunlar, Sil (Sütunu Sil);


endekse göre

Değerler Tablosu Sütunlar Sil (0);

Değerler tablosunun “ortasından” bir satırın (veya sütunun) silinmesinin, silinen “sonrasında” duran satırların dizininde bir azalmaya yol açacağı akılda tutulmalıdır.

10. Değişkenlerde sütun isimleri varsa değerler tablosunu nasıl doldurabilirim?

NewString \u003d Değer Tablosu.Add ();
NewString [ColumnName] \u003d Değer;


11. Değerler tablosunun tüm sütunu istenen değerle nasıl doldurulur?
Değer tablosundaki Mali Muhasebe Bayrağı sütunu Değer tablosu Yanlış değeriyle doldurulmalıdır

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


Değer tablosu için FillValues \u200b\u200b() yöntemini uygularız. İlk parametre dolgu değeridir. İkinci parametre, doldurulacak sütunun adıdır.

12. “Alıcı tablosu” değer tablosu “Kaynak tablosu” değer tablosu verileri ile nasıl doldurulur?

İşlem sırasında Alıcı tablosu yoksa veya önceki sütunlarının kaydedilmesi gerekmiyorsa, orijinalin tam kopyası olarak oluşturabilirsiniz.

Alıcı tablosu \u003d Kaynak tablosu. Copy ();


İkinci seçenek: tablo Alıcı tablosu vardır ve sütunlarını ve sütunların veri türlerindeki kısıtlamaları kaybetmek üzücüdür. Ancak, adları kaynak tablonun adlarıyla çakışan sütunların verilerini doldurmanız gerekir.

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

Kaynak Tablo Döngüsünden Kaynak Tablonun Her Satırı İçin
  Özellik Değerlerini Doldur (Yeni Dize, Kaynak Tablosunun Satırı);
Bitiş Döngüsü


Kaynak tablonun her satırı için, alıcı tablosuna yeni bir satır eklenir ve değerleri, kaynak tablodaki sütunların adlarıyla çakışan yeni tablonun sütunlarına değerler doldurulur

Tablolarda aynı ada sahip sütunlar yoksa, hedef tablo, kaynak tablodaki satırlarla aynı değerlere sahip boş sayıda satırla sonuçlanır.
Aynı addaki bazı sütunlar için kaynak tablodaki veri değeri türü, alıcı tablosunun izin verilen sütun türleri dizisine girmezse, bu tür alanlarda boş değerler alırız.
Üçüncü durumu düşünün. Aynı ad sütunlarında, alıcı tablosunun sütunu, kaynak tablonun sütununa tam olarak uygun hale getirilmelidir.

Eşleşen adlara sahip sütunlar için tam veri kopyalama

Aynı adlı sütunlar \u003d New Array ();

Orijinal Tablodaki Her Sütun İçin Sütun Döngüsü
  Eşleşen Sütun \u003d Tablo Alıcısı Sütunlar Bul (Sütun. Adı);

Eşleşen Sütun Varsa<>  Belirsiz O Zaman

  // Sütun özelliklerini al.
  Adı \u003d Sütun Adı;
  Değer Türü \u003d Sütun Değer Türü;
Başlık \u003d Sütun Başlık;
  Genişlik \u003d Sütun Genişlik;

  // Hedef tablodaki sütunları değiştirin.
  Dizin \u003d Tablo Alıcısı Sütunlar Dizin (Eşleşen Sütun);

Tablo Alıcısı, Sütunlar, Sil (İndeks);
  Tablo Alıcı Sütunlar Ekle (Dizin, Ad, Değer Türü, Üstbilgi, Genişlik);

  // Diziye eşleşen sütunların bir sonraki adını ekleyin.
  Aynı adlı sütunlar Add (Column. Name);

End If;

Döngü sonu

// Kaynak tablodaki satırlarda dolaşın.
Kaynak Tablosu Döngüsündeki Kaynak Tablonun her Satırı için

  // Hedef tabloya yeni bir satır ekleyin.
  NewString \u003d Tablo Alıcısı Add ();

  // Eşleşen hücrelerdeki değerleri girin.
  Aynı Ad Sütun Döngüsünün Her Ad Sütunu için
  NewRow [ColumnName] \u003d RowOriginalTable [ColumnName];

Döngü sonu

Döngü sonu


Alıcı tablosundaki sütunu, özellikleri kaynak tablodaki sütuna tam olarak karşılık gelen yeni bir sütunla değiştirmeniz gerekir.
Bu nedenle, alıcı tablosunda aynı ada sahip bir sütun bulunursa, değişkenlerde yeni sütunun tüm özelliklerini toplarız. Ardından eskisini silin ve yeni bir sütun oluşturun. Ardından, kaynak tablonun satırları arasında bir arama döngüsü yürütürüz.
Bir döngüde, alıcı tablosuna yeni bir satır ekleyin ve eşleşen sütun dizisindeki sütun adlarını aramak için bir döngü açın.
Bu iç içe döngü içinde, alıcı tablosunun hücrelerini kaynak tablodaki hücrenin verileriyle dolduruyoruz.

13. “TableValue” değer tablosuna türe göre kısıtlamalar içeren sütunlar nasıl eklenir?

Bir sütun eklerken, adını basitçe belirtebilirsiniz ve Add () yönteminin ikinci parametresine dokunmayın. 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.
Değer Tablosu, Sütunlar Add ("Object");


İkinci parametrenin değerini doldurabilirsiniz. Oraya sütun için izin verilen tipte bir açıklama geçirmek gerekir. Açıklamanın kendisi, yapıcı kullanılarak türün dize adını (daha sonra birçok virgülle ayrılmışsa, daha sonra virgülle ayrılmışsa) veya geçerli türler dizisini geçirerek elde edilebilir.

Veri türü sütunu ekleme

// Sütun veri türlerindeki kısıtlamalar:
// Yalnızca "Karşı Taraflar" dizininin öğeleri.
Değer Tablosu. Sütunlar Ekle ("Karşı Taraf", Türlerin Yeni Tanımı ("ReferenceLink. Karşı Taraflar"));


Sütun verilerini doldurmasına izin verilen türler arasında bir dize varsa, bit boyutunu (uzunluğunu) sınırlayabilir, bir değişkenin veya sabit bir uzunluğun kullanımını belirtebilirsiniz. Tüm bunlar yapıcı QualifiersStrings kullanılarak bir nesne oluşturularak sağlanır. Ayrıca, bu nesne Tiplerin Tanımı yapıcısının parametrelerinden biri olarak kullanılacaktır.

Değer Tablosu Sütununun Veri Türünü Hassaslaştırmak için Niteleyiciler Kullanma

// String türündeki veriler için kısıtlamalar hazırlayın ve ayarlayın.
QualifiersStrings \u003d Yeni QualifiersStrings (20, PermissibleLength.Variable);
Geçerli Türler \u003d Yeni Tür Açıklama ("String", String Qualifiers);
Değerler Table.Columns.Add ("NoteStringShort", Geçerli Türler);


Sayılar ve tarihler için niteleyiciler ile ilgili olarak benzer önlemler alınabilir.
Lütfen dikkat: tip açıklaması, kurucu tarafından sıfırdan oluşturulabilir ve mevcut tip açıklamasını temel olarak kullanabilir

Değer tablosundaki bir sütunun veri türünü belirtmek için mevcut tür açıklamalarını kullanma

// Önceden kullanılan tür açıklamasının uzantısı.
Eleme Numaraları \u003d Yeni Eleme Numaraları (10, 2, Geçerli İşaret. Negatif Olmayan);
QualifiersDates \u003d Yeni QualifiersDates (PartsDates.Date);
Genişletilmiş Geçerli Tipler \u003d Tiplerin Yeni Tanımı (Geçerli Tipler, "Sayı, Tarih", Niteleyiciler Sayılar, Niteleyiciler Tarihleri);

Değerler Tablosu, Sütunlar Ekle ("Not", Genişletilmiş Geçerli Türler);

Değer tablosu, verileri tablo görünümünde depolamak için tasarlanmış belirli bir evrensel nesnedir. Bir tablo ve uygulama nesneleri arasındaki temel fark, fiziksel veritabanı tablolarına bağlanma eksikliğidir. Değerler tablosu yalnızca bir yandan benzersiz yetenekler sağlayan RAM'de bulunurken, diğer yandan belirli kısıtlamalar getirir. Bununla birlikte, tabloyla etkileşim olanakları, veritabanında bulunan nesnelerle etkileşim ile karşılaştırılabilir.

Tarihsel olarak, 1C'deki değer tablosu, mevcut tabloların sanal bir analogu olmakla birlikte aynı zamanda bir kontrol elemanı olan çift bir amaca sahiptir. Yönetilen bir uygulamaya geçişle, bu işlevselliğin çoğu modası geçmiş, ancak şu anda bir kullanıcı arayüzü öğesi de olabilir, ancak bazı önemli sınırlamalar vardır.

Nesne olarak değerler tablosunun yapısı

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

Sütun Değer Tablosu

Değer tablosunun sütunu onun tanımlayıcı özelliğidir. Tablonun yapısını belirleyen sütun kümesidir. Sütunlar, fiziksel tabloların alanlarına veya sekmeli bölümün sütunlarına veya kullanıcı arabiriminden tanıdık gelen belge günlüğüne karşılık gelir. Bir sütun, tabloyla etkileşimli çalışma sırasında görüntülenen bir iç ad, değer türü ve başlık içerebilir.

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

Değer Tablosu Satırı

Yazılım arabirimi perspektifinden bakıldığında, dizeler değer tablosuna katıştırılmış ayrı bir koleksiyondur. Fiziksel tablolardaki girişlere, yani tablo bölümündeki veya belge günlüğündeki kullanıcı dostu satırlara benzerler. Her satır, adları tablo sütunlarının adlarına karşılık gelen bir dizi adlandırılmış özellik içeren bir nesnedir.

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

Değerler tablosu oluşturma

Bir değer tablosunu kullanıma hazır hale getirmenin birçok yolu vardır. Bazılarını ele alalım. Her örnek yorum içeren kod listeleri olarak verilecektir.

Yapıcı tablosu oluşturma

Geliştiricinin ihtiyaç duyduğu böyle bir tablo oluşturmanıza izin veren ana yöntem, maalesef en zaman alıcıdır, çünkü tablonun tüm gerekli özelliklerini manuel olarak belirtmenizi gerektirir.

  DemoTable \u003d Yeni Değer Tablosu; // İlk olarak TK'yi başlatın // Sonra, yeni sütunlar için gerekli parametreleri belirleyin ve koleksiyona ekleyin // "Adlandırma" Adı \u003d "Adlandırma" sütununu oluşturun; Değer Türü \u003d Yeni Tür Açıklaması ("DirectoryReference.Nomenclature"); Title \u003d "Adlandırma (ürün)"; DemoTable.Columns.Add (Kime, Değer Türü, Üstbilgi); // "Miktar" sütunu oluştur Ad \u003d "Miktar"; Değer Türü \u003d Yeni Tür Açıklaması ("Sayı"); Demo Tablosu.Columns.Add (Ad, Değer Türü); // Bu manipülasyonların bir sonucu olarak, yazılan sütunlarla boş bir tablo oluşturduk // İlkel türlerin daha doğru yazılmasını kullanmanız gerekiyorsa, “Türlerin Tanımı” yapıcısının genişletilmiş sözdizimini kullanmalısınız.

Kopyalayarak tablo oluşturma

Elinizde uygun bir yapıya ve / veya kompozisyona sahip bir referansınız varsa, referans değer tablosunu kopyalayabilir veya indirebilirsiniz. Başvuru başka bir tabloysa, "Referans tabloları kopyala" yöntemini uygulamanız gerekir. Sekmeli bir bölüm veya bir dizi kayıt girdisi ile ilgileniyorsanız, "Değer Tablosunu Kaldır" yöntemini kullanmanız gerekir. Yalnızca bir yapıya ihtiyacınız varsa, Sütunları Kopyala yöntemini kullanabilirsiniz.

   // Tüm satırların TK standardından kopyalanan ancak yalnızca iki sütunun korunduğu varyant ColumnsEtalon \u003d "Adlandırma, Miktar"; DemoTable \u003d TableEtalon.Copy (, ColumnsEtalon); // Standart Satır'ın belirtilen iki sütununu korurken, önceden seçilen satırları TK standardından kopyalama seçeneği \u003d Standart Tablodan İhtiyaç Duyulan Dizeleri Dizilemek İçin Seç (); Referans Sütunlar \u003d "Adlandırma, Miktar"; DemoTable \u003d TableStandard.Copy (RowsStandard, ColumnsStandard); // Bir sütunu “Adlandırma” koruyarak belirtilen filtreyi kullanarak TK standardından satır kopyalama seçeneği // Miktar sütunundaki değerin 0 olduğu tüm satırlar seçilecektir, yalnızca Nomenclature SelectionString \u003d Yeni Yapı (“Miktar” sütunu sonuç tablosuna girecektir) 0); Referans Sütunları \u003d "Adlandırma"; DemoTable \u003d TableStandard.Copy (RowsStandard, ColumnsStandard); // Tablonun tam bir kopyası ve sırayla miktar alanının değeri sıfıra eşit olan bir satırın silinmesi ve "Miktar" sütununun tamamının kaldırılması seçeneği SeçimString \u003d Yeni Yapı ("Miktar", 0); Referans Sütunları \u003d "Adlandırma"; DemoTable \u003d TableStandard.Copy (RowsStandard, ColumnsStandard); TableString \u003d DemoTable.Find (0, "Miktar"); DemoTable Sil (RowTables); DemoTable Sütunlar Sil ("Miktar"); // Benzer seçenekler ve modifikasyonları tablo bölümlerine ve kayıt girişi setlerine uygulanabilir

Sorguya göre tablo oluşturma

Veritabanı ihtiyacınız olan tablonun standardını içeriyorsa, istenen yapıya sahip bir tabloyu hızlı bir şekilde oluşturmak için sorguyu kullanabilirsiniz.

// Birikim kaydının yapısının modelini izleyerek boş bir tablo oluşturma örneği // Bu şekilde tamamlanmış tabloyu da alabileceğinizi tahmin etmek kolaydır Request \u003d New Request ("İLK 0 SEÇİN * Birikim Kaydından.TovarynaSklad"); İstek Sonucu \u003d İstek Execute (); Demo Tablosu \u003d Sonuç İsteği. // Açıkça belirtilen türlere ve alan adlarına göre boş bir tablo oluşturma örneği Request \u003d New Request; Request.Text \u003d "BİRİNCİ SEÇ 0 | Değer (Referans. İsimlendirme. Boş Referans) AS İsimlendirme, | EXPRESS (OLARAK NUMARASI (15, 3)) Sayı Olarak AS"; İstek Sonucu \u003d İstek Execute (); Demo Tablosu \u003d Sonuç İsteği. // ÖNEMLİ! Unutmayın, sorgudan alınan sütun değerleri türlerinde Null türü her zaman vardır // Böylece, sorgu tarafından oluşturulan TK her zaman bileşik sütun türlerine sahiptir

Sonuç

Bu kısa makalede, anlamaya ve uygulamaya başlamaya yeterli bir değer tablosu oluşturmak için temel özellikleri ve pratik teknikleri inceledik. 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ı dikkate almak için, işte farklı tablolar yaygın olarak kullanılmaktadır. Hemen hemen her belge bir tablodur.

Bir tablo stoktan sevkiyat için öğeleri listeler. Başka bir tabloda - bu mallar için ödeme yükümlülükleri.

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

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

Sorgu, yürütülmesi sonucunda iki farklı yolla erişilebilen bir tablo döndürür.

İlk - daha hızlı - getirme, satırları ondan almak sadece sırayla mümkündür. İkincisi, sorgu sonucunun değerler tablosuna boşaltılması ve daha sonra buna rasgele erişimdir.

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

  // masayı al
  Seçim \u003d Sorgu Yürüt (). ();
  // sırayla sorgu sonucunun tüm satırlarında gezin
  Güle Güle Örneklemesi Sonraki () Döngü
   Rapor (Seçim. Adı);
  Döngü sonu

// Seçenek 2 - değer tablosuna yükle
  İstek \u003d Yeni İstek ("BİR DİZİNDEN BİR İSİM SEÇİN. İsimlendirme");
  // masayı al
  Tablo \u003d Sorgu Yürüt (). Kaldır ().
  // ayrıca tüm çizgilerin etrafında da gidebiliriz
  Tablo döngüsündeki her satır için
   Rapor (Dize. Adı);
  Döngü sonu
  // veya dizelere rastgele erişme
  Satır \u003d Tablo. Bul ("Kürek", "Ad");

Önemli bir özellik, sorgu sonucundan elde edilen tabloda tüm sütunların kesinlikle yazılmasıdır. Yani, Adlandırma dizininden Ad alanını talep ederek, geçerli uzunluğu N karakterden fazla olmayan bir String türünde bir sütun alacaksınız.

Formdaki tablo (şişman müşteri)

Kullanıcı, forma yerleştirildiğinde tabloyla çalışır.

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

Yani, tabloyu forma yerleştireceğiz. Bunu yapmak için, tabloyu kontrol çubuğundan sürükleyebilirsiniz. Benzer şekilde, menüden Form / Yapıştır denetimini de seçebilirsiniz.

Veriler yapılandırmada saklanabilir - o zaman formunu düzenlediğiniz yapılandırma nesnesinin mevcut (önceden eklenmiş) sekmeli bölümünü seçmeniz gerekir.

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

Tablo parçasını seçerken, 1C'nin kendisi formdaki tabloya sütun ekleyecektir. Kullanıcı tarafından böyle bir tabloya girilen satırlar, dizin / belge ile birlikte otomatik olarak kaydedilir.

Aynı Data özelliğinde, rasgele bir ad girebilir ve TypeValue tablo türünü seçebilirsiniz.

Bu, rastgele bir değerler tablosu seçildiği anlamına gelir. Otomatik olarak sütun eklemez, otomatik olarak kaydedilmez, ancak bununla herhangi bir şey yapabilirsiniz.

Tabloya sağ tıklayarak bir sütun ekleyebilirsiniz. Sütun özelliklerinde, adını (1C kodunda referans için), formdaki sütun başlığını, sekmeli bölümün destekleriyle bağlantıyı (sonuncusu - sekmeli bölüm rastgele bir tablo olarak seçilmemişse) belirtebilirsiniz.

Formdaki tablo özelliklerinde, kullanıcının satır ekleyip kaldıramayacağını belirtebilirsiniz. Daha gelişmiş bir form OnlyView onay kutusudur. Bu özellikler, bilgi çıktısına yönelik tabloları düzenlemek için kullanılır ancak düzenlemez.

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

Komut panelinin özelliklerinde, paneldeki düğmelerin otomatik olarak görünmesi için Otomatik Doldur onay kutusunu seçin.

Formdaki tablo (ince / yönetilen istemci)

Yönetilen bir biçimde, bu eylemler biraz farklı görünüyor. Form üzerine sekmeli bir parça yerleştirmeniz gerekiyorsa, Nesne dalını açın ve sekmeli parçalardan birini sola sürükleyin. Ve hepsi bu!

Değerler tablosu yerleştirmek istiyorsanız, formun yeni bir niteliğini ekleyin ve özelliklerinde değerlerin tür tablosunu belirtin.

Sütun eklemek için formun bu özelliğinde farenin sağ düğmesiyle, Özellik öğesi sütununu ekle menüsünü kullanın.

Sonra da tabloyu sola sürükleyin.

Tablonun bir komut paneline sahip olması için, tablo özelliklerinde Kullanım - Komut paneli konumu bölümündeki değerleri seçin.

Excel'de tablo kaldırma

Formda bulunan herhangi bir tablo 1C yazdırılabilir veya Excel'e indirilebilir.

Bunu yapmak için, tablodaki boş bir noktayı sağ tıklayın ve Liste öğesini seçin.

Yönetilen (ince) bir istemcide, benzer işlemler Tüm eylemler / Liste ekranı menü öğesi kullanılarak gerçekleştirilebilir.

Infostart’a ait tüm okuyuculara selamlar. Bu makale, programlı olarak yönetilen bir uygulamanın biçiminde rasgele bir değerler tablosu oluşturulmasına odaklanacaktır.

Görevin özellikleri.

Düzenli bir başvuruda program yapan herkes genellikle formda keyfi bir değer tablosu elde etme göreviyle karşı karşıya kaldı. Rasgele bir değerler tablosu, sütun sayısı ve türü önceden bilinmeyen bir tablo anlamına gelir. Yani, sütunlar 3 veya belki 6 veya belki 8 olabilir. Normal bir uygulamada her şey basittir: “Değerler Tablosu” öğesini işleme formuna yerleştirebilir ve ardından oluşturulan değerler tablosunu programlı olarak bu öğeye aktarabilirsiniz. Sonra basit bir komut:

ElementsShapes.TableField.Create Columns ();

formdaki hazır değerler tablosunu alın. Bu daha kolay olabilirdi.

Her şey düzenli bir uygulamadaydı. Yönetilen bir uygulamada her şey değişti. Yani sadece keyfi bir tablo oluşturmayın. Şimdi formdaki değer tablosunu katı bir şekilde parametreleştirmeniz veya programlı olarak oluşturmanız gerekir (aslında, yönetilen uygulamanın kendisinin özünü tanımlayın). Yapmaya çalışacağımız şey: programlı olarak kontrollü bir şekilde keyfi bir değerler tablosu oluşturun.

Sorunun çözümü.

Yapmamız gereken ilk şey tablonun formda nasıl göründüğünü belirlemektir. Önemli olan, işlemede herhangi bir form öğesi oluşturmanıza gerek olmamasıdır. Tüm tablo gibi programlı bir şekilde oluşturacağız. Yani, tablo açıklanacak ve formu açarken veya düğmeyi kullanarak oluşturulacaktır - herkesin buna ihtiyacı vardır.

Formda bir tablo oluşturmak, değerler tablosunun sahne olarak açıklamasıyla gerçekleşir:
Seçim Türü Dizisi \u003d Yeni Dizi; Seçim Türü Dizisi Ekle (Tür ("Değerler Tablosu")); Seçim Türünün Tanımı \u003d Yeni Türlerin Tanımı (Seçim Türü Dizisi); Koşullar Dizisi \u003d Yeni Dizi; Gereksinimler Dizisi Ekle (Yeni Gereksinim Formları ("Zamanlama Çizelgesi", Seçim Türünün Tanımı, "", "TZN")); Şimdi, verileri içeren programlı bir değerler tablosu oluşturmamız gerekiyor. Değerler tablosu sorgudan alınırsa, az çok sıralanır. Tablo el ile oluşturulursa, sayı veya tarih içerecek sütunların değeri "Türlerin Açıklaması" ile oluşturulabilir. Sonuç olarak, değer tablosundaki sütunların bir tür olması gerekir. Örneğin, kullanıcının bu sütunlardaki verileri etkileşimli olarak dolduracağı varsayılırsa, değer tablosunun bir sütununu yalnızca bir adla ekleyemezsiniz, bu tür olmalıdır. Unutmayın - bu çok önemlidir çünkü bu türleri formdaki tabloya geçireceğiz.
  Birkaç sütun içeren bir tablo oluşturun:
   CD \u003d Yeni QualifiersDates (PartsDates.Time); ArrayKD \u003d Yeni Dizi; ArrayKD.Add (Tür ("Tarih")); Tiplerin Tanımı Zaman \u003d Yeni Tiplerin Tanımı (ArrayKD, KD); TK \u003d Yeni Değer Tablosu;
  TK Sütunlar Ekleme ("C", Zaman Türlerinin Tanımı);
  TK. Sütunlar Ekle ("Alıcı", Zaman Türlerinin Tanımı);
  TK.Kolonki. Ekle ("Ad");
  Ekle ("Not"); // Ad ve Not - satırları Daha sonra, TK program tablosumuzu gerekli verilerle dolduracağız. Gerekli değerleri içeren ve oluşturulan form şartına aktarılmaya hazır olan özellikler tablosunu alıyoruz. Her TK Sütunu için Sütun Döngüsü

   Gereksinimler Dizisi Add (New PropsForms (Column.Name, Column.Value Type, "Schedule Table"));
   Döngü sonu
  Değişim Gereksinimleri (Gereksinimler Dizisi);
  Seçim Tablosu \u003d Elemanlar. Ekle ("TSN", Tür ("TableForms"));
  Seçim Alanları Veri Yolu \u003d "Çizelge Tablosu";
  Seçim Alanları Tablosu Display \u003d Tabloların Gösterimi List;

İşte bu kadar basit bir kombinasyon ve masamız hazır.

Her TK Sütunu için Sütun Döngüsü

   NewElement \u003d Öğeler. Add (Column.Name, Type ("FormField"), SelectionFields Tablosu);
  NewElement.View \u003d ViewFieldsForms.FieldInput;
  NewItem.PathData \u003d "Zamanlama tablosu." + Sütun Adı;
  NewItem.Width \u003d 10;
   Döngü sonu

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

Seçim Alanları Tablosu Eylem Ayarla ("Seçim", "TSN Seçimi");

Bu olayı işlemek için, bir prosedür şeklinde ayrı bir prosedür reçete edilir:

   & Müşteri
  TKN prosedürü Seçimi (TK, Seçili Satır, Alan, Standart İşleme)
  // işleyici komutları EndProcedure

Tablo işleyicilerinin istemcide çalıştığını ve bu nedenle derleyici işaretçi komutunun olması gerektiğini unutmayın

   & Müşteri

Eklemek istediğim son şey, tüm bu işlemlerden sonra, bitmiş tabloyu form formuna aktarmayı unutmamamız:

Form Zorunluluğunun Değeri (TK, Çizelge Tablosu);

İşte sonuç:


Ve işte "Seç" etkinliğinin işlenmesi:



Sonsöz.

Umarım bu makale program üzerinde form üzerinde tablolar oluşturmaya başlayan 1C programcılarına yardımcı olacaktır.

Programlı olarak bir değer tablosu ve görüntü tablosu oluşturan işlemeyi, kendi tablolarınızı oluşturmanıza yardımcı olacak yorumlarla yönetilen bir formda indirebilirsiniz.

1C değerleri tablosunda arama yapın

Hangi yöntemler var ve aynı anda birkaç değer nasıl aranır.

Değer tablosunu aramak için iki özel yöntem vardır:

1. Bul

TV Ufuk \u003d Dizinler, Adlandırma, İsme Göre Bul ("TV Ufuk");
FoundString \u003d TKNomenclature.Find (TV Horizon);
// aramayı hızlandırmak için hangi sütunlarda aranacağını da belirleyebiliriz
FoundString \u003d TKNomenclature.Find (TV Horizon, "Adlandırma");

Bu yöntem, ilk bulunan dizeyi istenen değere veya Tanımlanmamışsa döndürür. Bu nedenle, benzersiz değerleri aramak için kullanmak uygundur, çünkü aksi takdirde, değeri bulduğunuzda, aşağıdakileri bulmak için değeri tablodan kaldırmanız gerekir.

Böyle acı çekmemek için, uygun dizeleri bulmanızı sağlayan aşağıdaki yöntem vardır:

2. Dizeleri Bul


Seçim yapısı, Insert ("Adlandırma", TV Horizon); // ilk önce nereye bakılacağını ve sonra neyi arayacağınızı belirtin.

Bu yöntem her zaman bir dizi döndürür, ancak hiçbir şey bulunmazsa boş olabilir. Ayrıca bu yöntem, bir öncekinde olduğu gibi, değer tablosunun satırlarını, değerleri ayrı bir dizide değil, kendileri döndürür. Bu nedenle, dizi dizesindeki veya bulunan dize için önceki yöntemdeki değerleri değiştirdiğinizde, işlenmekte olan değerler tablosundaki değeri değiştirirsiniz.

Bu yöntemle daha da iyi olan şey, bir değer tablosunun birkaç sütununu aynı anda arayabilmesidir:


Örnekleme Yapısı \u003d Yeni Yapı;
Seçim yapısı, Insert ("Adlandırma", TV Horizon);
Seçim yapısı Yapıştır ("Miktar", 10);
FoundArrayStrings \u003d TKNomenclature.FindStrings (Seçim Yapısı);

Gördüğünüz gibi tek eksi, "eşit" dışında başka karşılaştırma türlerini kullanamazsınız