internet pencereler Android
Genişletmek

1c Bir değer tablosu nasıl oluşturulur. Hangi yöntemler var ve aynı anda birkaç değerde nasıl arama yapılacağı

Selamlar Tüm okuyucular Infostart'a. Bu makale, yönetilen bir uygulama programatik yöntemi formundaki keyfi bir değer tablosunun oluşturulmasına ayrılacaktır.

Görevin özellikleri.

İçinde programlanan herkes her zamanki başvuru ilegenellikle formda keyfi bir değer tablosu alma görevi ile karşı karşıya. Keyfi bir değer tablosu altında, tablo, bilinmeyen sütun sayısı ve türü olarak anlaşılmaktadır. Yani, sütunlar 3 ve belki 6 veya belki 8 olabilir. Her zamanki uygulamada, her şey basittir: "Tablo Apartion" öğesini formasyon formunda yerleştirmek ve ardından değer tablosunu aktarmak mümkündü. Bu öğeye bu öğeye değerler. Sonra basit bir ekip:

Elementforms. Ticksed. Concess ();

formda hazır bir değer tablosu alın. Daha kolay olabileceği gibi görünüyor.

Hepsi normal uygulamadaydı. Yönetilen uygulamada her şey değişti. Yani sadece yaratılmaması gereken rastgele bir masa. Artık, formdaki değerlerin tablosunu sert bir şekilde paramparça etmeniz veya programlı olarak oluşturmanız (açıkça, bu, yetkili uygulamanın kendisinin özü). Bunu yapmaya çalışacağız: yazılım Yönetilen bir formda keyfi bir değer tablosu oluşturun.

Sorunun çözümü.

Yapmamız gereken ilk şey, tablonun formda nasıl göründüğünü belirlemektir. Asıl şey, işlemdeki formun hiçbir unsurunun gerekli olmamasıdır. Tüm tablo gibi programlı olarak yaratacağız. Yani, tablo açıklanacaktır ve formu açma sırasında veya düğmeyi kullanarak oluşturmak için - bu nasıl gerekli olduğudur.

Formda bir tablo oluşturmak, istek olarak değerler tablosunun açıklaması ile oluşur:
Massiferboabor \u003d yeni dizi; Massifable müşteri. Addly (Tip ("Tablo Apartion")); AçıklamaSarebar \u003d Yeni açıklamalar (masifacivity); Masifler \u003d yeni dizi; Masif. Addly (Yeni Gerekli ("TABLESCRIPT", Açıklamalar, "", "TZN")); Şimdi veri içeren bir değer tablosu oluşturmalıyız. Değer tablosu istekden elde edilirse, her şey siparişten daha azdır. Tablo manuel olarak oluşturulursa, sayı veya tarih içerecek olan hoparlörlerin değeri "Açıklama" ile oluşturulabilir. Alt çizgi, değerlerin tablosundaki sütunların bir tür tipi olması gerekir. Örneğin, kullanıcının bu sütunlardaki verileri etkileşimli olarak dolduracağı varsayılmaktadır, daha sonra değer sütununun değerlerini sadece adıyla ekleyemeyeceğiniz varsayılmaktadır. Akılda tutun - bu çok önemli çünkü Bu türleri formdaki masaya vereceğiz.
Birkaç sütun içeren bir tablo oluşturun:
KD \u003d yeni niteliksel tarihler (parçacıklar. Veria); Massigs \u003d yeni dizi; Kollar. Addly (Tip ("Tarih")); Arama Grafik \u003d Yeni Açıklamalar (Silah, CD); TK \u003d yeni tablolar;
Tk.colonki. Addly ("C", açıklamaları.
Tk.colonks. Addly ("to", açıklamaları.
Tk.colonki. Addly ("tam adı");
TK. Solonks. Addly ("not"); // tam not - sıralarda, yazılım tablosumuzu TK'yı gerekli verilerle dolduracağız. Gerekli değerleri içeren TK tablosunu elde ediyoruz ve oluşturulan form sahnelerine iletmeye hazırız. TK'nin her sütunu için sütun döngüsü

Massiverevizites. Addly (Yeni Gerekli (sütun. Demek istediğim, sütun. Tip, "TOPRIPTS"));
Endcycle;
Değişiklikler (Massivevizites);
TabloPoles Captivity \u003d Elements. Addly ("TZN", Tip ("Tablo Form"));
Tahtepçeler yakalayın. Powded \u003d "Taxcripts";
Tablepoleseboat. Örnek \u003d görüntülenir. Olanaklar;

İşte böyle basit bir kombinasyon ve masamız hazır.

TK'nin her sütunu için sütun döngüsü

NewElent \u003d Elements. Addly (sütun. Demek istediğim, tip ("öneform"), tablo direği);
Yeni element. Vid \u003d vidpolar formu. Güç;
Yeni element. Powdly \u003d "Taksiler." + Sütun.
Yeni element.shirina \u003d 10;
Endcycle;

Koşullu tasarım, gerekirse manuel olarak yazıyoruz, komuta menüsü - manuel olarak. Masa işleyicileri de elleriyle yazılır. Örneğin, bir olay işleyicisi "seçim" olayı eklemek için:

TabloPoles Yakalama. Ayar ("Seçim", "Tznvybor");

Bu olayı işlemek için, prosedür formunda ayrı bir prosedür belirlenir:

& Svalette
Prosedür TZNVSB (TK, Seçilmiş, Alan, Standart İşleme)
// İşlemci komutları son kontrolleri

Lütfen masa işleyicilerinin istemciye tetiklendiğini ve bu nedenle bir derleyici işaretçi komutuna sahip olmasını unutmayın.

& Svalette

Peki ve bu eylemlerden sonra bunu eklemek istediğim son şey, bitmiş tabloyu formun talimatına aktarmayı kesinlikle unutmayız:

RECENTERREREVISITFORMS (TK, "TAXCRIPTS");

İşte bir sonuç olarak sahip olduğumuz şey:


Ancak "seçim" olayın işlenmesi:



Sonuç

Umarım makalede, programcıların 1C'ye, programatik yöntem formunda tablolar oluşturmaya başlayacak.

Bu yazılımın bir değer tablosu oluşturduğu işlemi indirebilirsiniz ve yönetilen Form Görevlerinizi oluşturmanıza yardımcı olacak yorumlarla.

1C değerler tablosunda arama yapın

Hangi yöntemler var ve çeşitli değerlerde eşzamanlı olarak nasıl arama yapılır.

Değerler tablosunda aramak için iki özel yöntem vardır:

1. Bulun

Tvgorizont \u003d referans kitapları. Nomelaclature. İntepponation ("TV Horizon");
Sonuçlar \u003d tznenenclature. Inite (TV, TV);
// Ayrıca, hangi hoparlörlerin aramayı hızlandırmak için arama yapacağını belirleyebiliriz.
Foundation \u003d tznomenclature. İnite (TV, "isimlendirme");

Bu yöntem, ilk bulunan çizgiyi istenen değerle döndürür veya bulamazsa tanımsız. Bu yüzden aramak için kullanışlıdır benzersiz değerlerÇünkü Aksi takdirde, aşağıdakileri bulurken tablodan silmek zorunda kalacaksınız.

Böylece acı çekmiyor bir sonraki yöntemBu da bir dizi uygun satır bulmanızı sağlar:

2. Uçuş


Yapısalboration. HOLD ("isimlendirme", TVGorizont); // İlk önce, nerede aranacağı ve sonra aranacağınız sütunu belirtin.

Bu yöntem her zaman bir dizi döndürür, ancak hiçbir şey bulunamazsa boş olabilir. Ve bu yöntem ayrıca, önceki gibi, değerlerin değerlerinin satırlarını ve değerlerin kendilerini ayrı bir dizide değil. Bu nedenle, Dizi satırındaki değerleri değiştirme veya Bulunan Çizgi'deki önceki yöntemde, işlenen değerler tablosundaki değeri değiştirirsiniz.

Bu yöntem daha iyi olursa, aynı anda değer tablosunun birkaç sütununda bir kerede arama yapabilmesidir:


Yapılar \u003d yeni yapı;
Yapısalboration. HOLD ("isimlendirme", TVGorizont);
Yapısal teknesi. HOLD ("miktar", 10);
FoundationMassiVests \u003d tznenenclature. Girişler (yapılar);

Görülebileceği gibi tek eksi, "eşit" hariç başka karşılaştırmalar kullanılamaz.

Değerler Tablosu belirli bir evrensel nesneVerileri tablo görünümünde saklamak için tasarlanmıştır. Tablonun uygulanan nesnelerden gelen kilit farkı, fiziksel veritabanı tablolarına bağlanma eksikliğidir. Değerlerin Tablosu sadece içinde var rasgele erişim belleğiBir yandan, benzersiz fırsatlar sunar ve diğer tarafta, bazı sınırlamalar getirir. Bununla birlikte, tablo ile etkileşim olasılığı, gerçekten veritabanında bulunan nesnelerle etkileşime göre karşılaştırılabilir.

Tarihsel olarak, 1c'deki değer tablosu, mevcut tabloların sanal bir analogu olan, aynı zamanda - ve kontrolleri elemanının sanal bir amacına sahiptir. Kontrollü uygulamaya geçişle, bu işlevselliğin çoğu modası geçmiştir, aynı zamanda şu anda ayrıca kullanıcı arayüzünün bir elemanı olabilir, ancak bir dizi önemli kısıtlamalar da olabilir.

Bir nesne olarak değerlerin tablosunun yapısı

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

Hoparlör değerleri

Sütun değerleri tablosu - tanımlayıcı özelliği. Bu bir dizi masa sütunlarıdır yapısını belirler. Sütunlar, fiziksel tabloların alanlarını eşleştirir veya Kullanıcı Arabirimi Sütunları Tabular Bölüm veya Belgeler Günlüğüne aşina. Sütun bir iç adı, değerin değeri ve etkileşimli çalışma sırasında tabloda çalışma sırasında görüntülenen başlık olabilir.

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

Değerlerin satırı

Yazılım arayüzünün bakış açısına göre, dize değerler tablosuna yerleştirilmiş ayrı bir koleksiyondur. Fiziksel tabloların kayıtlarına, yani, tablo bölümünün normal çizgileri veya günlük günlüğüne benzerlerdir. Ayrı olarak alınan her bir çizgi, isimleri tablo sütunlarının adlarına karşılık gelen bir dizi adlandırılmış özelliğe sahip bir nesnedir.

Böylece, dize ile etkileşim, diğer nesnelerle etkileşime çok benzer. "Aşağıdakileri doldurma ()" 'in önceden tanımlanmış işlevini kullanarak özelliklerini okuyabilir ve yazabilirsiniz. Çizgiler, değerler tablosunun ana koleksiyonu olduğundan, tablonun tüm satırlarını silmek için, "Clear ()" yöntemi geçerlidir.

Bir değer tablosu oluşturun

Kullanıma hazır değerler tablosunu almanın birçok yolu vardır. Bazılarını düşünün. Her örnek, yorumlarla kodun listeleri olarak verilecektir.

Masa Tasarımcısı Oluşturma

Geliştirici tarafından ihtiyaç duyulan bu tür bir tablo yaratmanın ana yolu, maalesef en fazla zaman alıcı, çünkü tablonun gerekli tüm özelliklerini manuel olarak elle gerektirir.

Demorable \u003d yeni tablolar; // her şeyden önce ilk önce TK // Sonraki, yeni sütunlar için gerekli parametreleri tanımlar ve bunları "adlandırma" sütun adı \u003d "isimlendirme" oluşturma koleksiyonuna ekleriz; Tip Type \u003d Yeni Açıklama ("DizinAds.Nanklatura"); Title \u003d "noMenclature (ürün)"; DemoTablik. Kesikler. Addly (onlara, başlık, başlık); // bir sütun oluşturma "numara" adı \u003d "numara"; Tip başlık \u003d yeni açıklamalar ("numara"); Dalgalanabilir. Kesikler. Addly (İsim, Başlık); // manipülasyonların verilerinin bir sonucu olarak, daha doğru yazmayı kullanmanız gerekirse, yazılan sütunlarla boş bir tablo oluşturduk. İlkel tiplerTasarımcı Tasarımcısı "desigratypov" adlı gelişmiş sözdizimini kullanmalısınız.

Kopyalama tablosu oluşturma

Elinizde uygun bir yapı ve / veya kompozisyona sahip bir standardı varsa, referans değer tablosunu kopyalayabilir veya boşaltabilirsiniz. Referans başka bir tablo ise, "Kopyalama Standı Tablosu" yöntemini uygulamanız gerekir. Eğer uğraşırsan tablo parçası veya bir dizi kayıt girişi, "Boşaltma tablosu" yöntemini kullanmanız gerekir. Yalnızca bir yapıya ihtiyacınız olursa, "Kopyalama koleksiyonu" yöntemini kullanabilirsiniz.

// Tüm satırların TK standardından kopyalanan seçeneği, ancak kolonalone \u003d "adlandırma, sayı" için sadece belirtilen iki sütunun korunması ile; Demotable \u003d tabletetalon .copy (, sütunlu); // Önceden Seçilmiş Satırların TK standardından kopyalanan seçenek, stringalone \u003d to-to-obstrüzyonistalkyeetalone () tarafından seçilen iki tane belirtilen iki sütununu korurken; Sütunalon \u003d "Adlandırma, Numara"; Demorable \u003d TableteTalon .Copy (Rowetal, Solunumel); // TK-Strelna satırlarından belirtilen filtreden kopyalanan seçeneği, bir sütun "adlandırma" // bir sütunu kaydederken, sütundaki değerin 0'a eşit olduğu yerlerde, yalnızca çözümlerin isimlendirilmesinin sütununu seçecektir. elde edilen tabloya ("miktar" 0) içine düşmek; Sütunaltalon \u003d "isimlendirme"; Demorable \u003d TableteTalon .Copy (Rowetal, Solunumel); // tablonun tam kopyalanmasıyla ve bir satırın sıfır miktarının alan değeri ile bir sonraki çıkarılması sıfırdır ve karşılıkın tüm sütununun "Numarasının" çıkarılması \u003d yeni yapı ("numara", 0) ; Sütunaltalon \u003d "isimlendirme"; Demorable \u003d TableteTalon .Copy (Rowetal, Solunumel); Strifices \u003d dematör. Gece (0, "miktar"); Dematör. Sil (strifices); DemoTablik. Solonki.deel ("Miktar"); // Benzer seçenekler ve değişiklikleri tablo parçalarına ve kayıt kümelerine uygulanabilir.

Bir masa sorgulaması oluşturma

Veritabanındaki veritabanında bir referans tablosu varsa, isteğini kullanabilirsiniz. hızlı yaratma İstenilen yapıya sahip tablolar.

// birikiminin örnek yapısına göre boş bir tablonun oluşturulmasıyla Örnek // Bu, bu şekilde doldurulmuş masa isteğini alabileceğinizi tahmin etmek zor değildir \u003d yeni bir sorgu ("İlk 0 * seçeneğini seçin. kayıt. Sonuç kaynağı \u003d sorgu. Dolgu (); Demorable \u003d sonuç işe alımı. İndir (); // Örnek Boş bir tablonun oluşturulmasıyla, alanların açıkça belirtilen türleri ve adları sorgusu \u003d yeni bir istek; Request.Text \u003d "İlk 0'ı seçin | Anlamı (Referans Kitabı. İkame. Güç Rulosu) Bir isimlendirme olarak, | Express (0, sayı (15, 3)) bir miktar olarak"; Sonuç kaynağı \u003d sorgu. Dolgu (); Demorable \u003d sonuç işe alımı. İndir (); // ÖNEMLİ! Sorgudan elde edilen Hoparlör Değerleri türlerinde her zaman null // türünde, sorgu tarafından oluşturulan TK'ların her zaman kompozit sütun türlerine sahip olduğunu unutmamalısınız.

Sonuç

Bu küçük makalede, uygulamayı anlamak ve başlatmak için yeterli bir değer tablosu oluşturmak için temel özellikleri ve pratik teknikleri gözden geçirdik. Değerlerin tablosunun amacı bu kadar çoklu yöneldi ki detaylı Açıklama Yeteneklerinin, esaslar ve iş yöntemleri hakkında ayrı bir makale yazmayı gerektirir.