Dinamik listedeki parametre 1s 8.3. Dinamik liste verilerini işleme ve biçimlendirme

Yapılandırmaları sonlandırma sürecinde her 1C programcısı dinamik listelerle karşılaşır.
Dinamik liste, veritabanı nesnelerinin veya nesne olmayan veri kayıt girişlerinin çeşitli listelerini görüntülemek için kullanılan bir arayüz nesnesidir.
Örneğin, öğelerin listesini görüntülemek için dinamik bir liste kullanılır:

Dinamik bir listenin yeteneklerini göstermek için harici işleme oluşturalım ve ana formu ekleyelim. “Dinamik Liste” tipi ile forma yeni bir özellik ekleyelim. Haydi özelliklerine girelim ve orada ne olduğuna bakalım.
“Özel istek” özelliğiyle ilgileniyoruz. Bunu etkinleştirmek bize dinamik bir listenin tüm yeteneklerini gösterecektir. 1C: Enterprise sistem sorgulama dilinin neredeyse tüm yeteneklerini kullanarak bir istek yazabileceğiz. Kutuyu işaretleyin ve “Aç” bağlantısını tıklayın:

Varsayılan olarak listemiz, tüm depolar için toplam bakiyeyi içeren kalemlerin bir listesini görüntüler. Böyle bir listeyi uygulamak için aşağıdaki sorguyu ekleyin:


Ana tablo olarak "Dizin.Nomenclature" seçeneğini seçeceğiz, bu, bir terminoloji listesinde olduğu gibi dinamik bir listeyle çalışmamıza olanak tanıyacak - dizin öğelerini silmek için ekleme, değiştirme, işaretleme. Ayrıca ana tablonun kurulması, verilerin dinamik olarak okunmasını mümkün kılar; bu, seçimin gerektiği gibi kısımlar halinde yapılacağı anlamına gelir.
Daha sonra listemiz için form öğeleri oluşturmamız gerekiyor:

İşlemimizi bu formda çalıştırmayı denersek bir hata alırız:


Bunu ortadan kaldırmak için “Dönem” parametresine bir değer ayarlamanız gerekir. Bunun için dinamik listenin “Parameters” koleksiyonunun “SetParameterValue” metodunu kullanabilirsiniz. Yöntem iki parametre alır:
. "Parametre" - Tür: Dize; DataCompositionParameter. Değerini ayarlamak istediğiniz parametrenin veya veri kompozisyonu parametresinin adı;
. “Değer” - Tür: Keyfi. Ayarlanacak değer.
Formun “OnCreateOnServer” işleyicisinde çağrılabilir:

Bir sorunuz mu var veya bir danışmanın yardımına mı ihtiyacınız var?


Kullanıcıya bakiye alma dönemini değiştirme olanağı sağlayacağız. Bunu yapmak için özelliği ve onunla ilişkili "Tarih" form öğesini ekleyin:


“Date” form öğesinin “OnChange” işleyicisinde, ilgili niteliğin değerini değer olarak ileterek “SetParameterValue” yöntemini çağıracağız. Benzer şekilde formun “Sunucuda Oluştururken” prosedürünü değiştirelim. Yöntem istemcide mevcut olduğundan sunucuyu aramaya gerek yoktur:


Artık tarih değiştiğinde bakiyeler otomatik olarak güncellenecektir:




Kullanıcıların ya güncel bakiyeleri ya da planlanan tahsilatları görmek istediklerini varsayalım. Uygulama seçeneklerinden birini ele alalım. Boole tipi bir form niteliği ve ilişkili bir anahtar ekleyelim:


Anahtarın değerini değiştirirken isteğin metnini değiştireceğiz. Bunu yapmak için, "Makbuzda Miktarı Görüntüle" form öğesi için "Değişimde" olay işleyicisini kullanacağız. Özelliğin değerine göre dinamik listenin “QueryText” özelliğini değiştirmemiz gerekiyor. Bu özellik istemcide mevcut olmadığından, bir sunucu prosedürünün çağrılması gerekir:


Yapılan değişikliklerin sonucu:



Yazdır (Ctrl+P)

Dinamik liste

1. Genel bilgiler

Dinamik liste, bir formdaki veritabanı tablolarındaki isteğe bağlı bilgileri görüntülemenize olanak tanıyan özel bir veri türüdür. Bunu yapmak için, verileri görüntülemek istediğiniz tabloyu belirtmeniz veya ortaya çıkan seçimi bir sorgu dilinde açıklamanız gerekir.
Mekanizma bir veri kompozisyon sistemine dayanmaktadır ve alınan verileri sıralama, seçme, arama, gruplandırma ve koşullu olarak biçimlendirme yetenekleri sağlar. Bu durumda veri kaynağı, sistem tarafından otomatik olarak (belirtilen verilere göre) oluşturulan veya geliştirici tarafından manuel olarak yazılan bir istektir.

Pirinç. 1. Dinamik liste oluşturma seçenekleri

Türün form niteliklerini oluştururken Dinamik Liste geliştirici veri sorgusu oluşturmak için iki yol seçebilir:
● Ana tabloyu belirterek - bu durumda, yalnızca veri almak istediğiniz tabloyu (Ana tablo özelliği) belirtmeniz yeterlidir; sistem, veriler için otomatik olarak bir sorgu oluşturacaktır (Şekil 1'in sağ kısmına bakın). 1).
● Manüel olarak bir istek oluşturma - bunun için Özel istek özelliğini ayarlamanız gerekir (Şekil 1'in sol tarafına bakın). Bundan sonra, bilgi tabanından veri almak için manuel olarak bir talep oluşturulabilecektir.
Bir sorgu birden fazla tablodan veri alabilir, böylece birincil tabloyu belirtebilirsiniz. Bu, dinamik listenin hangi verinin birincil, hangisinin ikincil olduğunu belirleyebilmesi ve bilgileri doğru şekilde seçip görüntüleyebilmesinin yanı sıra standart komutlar sunabilmesi içindir. Ancak sorguda ana tablonun belirlenmesi mümkün değilse o zaman belirtilemez ancak daha sonra
dinamik liste ana tabloyla ilgili komutları sağlamayacaktır. Ayrıca bu durumda (ana tabloyu belirtmeden) dinamik listeyle veri elde etme verimliliği önemli ölçüde azalacaktır.
Performansı artırmak için, özel bir sorguda yalnızca ek veri elde etmek amacıyla kullanılan tüm birleştirmelerin, veri kompozisyon sistemi sorgu dili uzantısı kullanılarak isteğe bağlı hale getirilmesi önerilir.
Ana form özelliği olan dinamik bir liste için form parametresi kullanılarak seçim değerlerinin ayarlanması mümkündür. Seçim. Bunu yapmak için parametrede yer alan yapı özelliğinin adının girilmesi gerekir. Seçim,
dinamik liste seçim alanının adıyla çakıştı. Bu durumda yapı özelliğinin değeri seçim elemanının doğru değeri olarak ayarlanacaktır. Bir dinamik liste formunun Seçim parametresinin bir öğesinin değeri olarak bir dizi, sabit bir dizi veya değerler listesi iletilirse, seçime doğru değerde Listede seçeneği olan bir koşul eklenir. bir değerler listesi yerleştirilir (dizi ve sabit dizinin dönüştürüldüğü).
Dinamik listedeki rastgele bir sorgu, bir alanın değerini oluşturmak için bir parametrenin kullanıldığı bir sorgu olabilir, örneğin:

SEÇMEK
SEÇENEK
NE ZAMAN Teslimat. Katsayısı = 1 SONRA &Sunum
AKSİ TAKDİRDE Teslimat. Katsayı
SON OLARAK Oranı
İTİBAREN

Ayrıca, parametre değerinin türü nesne niteliğinin türünden farklıysa (örneğin, Sahne1 tipi var Sayı ve parametre değeri type'tır Astar), ardından alanı doğru şekilde görüntülemek için parametre değerini açıkça istenen türe dönüştürmeniz gerekir:

SEÇMEK
SEÇENEK
WHEN Teslimat. Katsayısı = 1 THEN EXPRESS(&Temsil AS String(100)) ELSE Teslimat. Katsayı
SON OLARAK Oranı
İTİBAREN
Belge.Ürünlerin Teslimatı NASIL Teslimat Yapılır

Seçimin ayarlandığı alan işlevsel seçenekler kullanılarak devre dışı bırakılırsa, seçim değeri form parametreleri veya seçim parametresi bağlantıları olarak aktarılsa bile böyle bir alana göre seçim kurulmaz.
Dinamik veri okuma özelliğini kullanarak, dinamik bir listeye verinin küçük parçalar halinde okunması gerektiğini belirtirsiniz.
(Dinamik liste ve veri önbelleğe alma kullanarak veri elde etme yolları hakkında daha fazla ayrıntı için aşağıya bakın). Bu özelliğe bakılmaksızın aşağıdaki koşullar geçerlidir:

● Görünüm modu hiyerarşik listeye ayarlanmışsa, yalnızca geçerli grubun verileri ve tüm üst öğelerin (çocuklar olmadan) verileri okunacaktır.
● Ağaç görünümü modu ayarlanırsa yalnızca açık ağaç düğümlerinden gelen veriler okunacaktır.
● Hiyerarşik göz atma ayarlandıysa (Görüntüleme özelliği Ağaç olarak ayarlandıysa) ve ilk ağaç görünümü Tüm düzeyleri genişlet olarak ayarlandıysa, dinamik liste verilerinin tek seferlik yüklenmesi desteklenmez. Veri elde etmek için, görüntülenen listedeki düğüm sayısı kadar sunucuya istekte bulunulacaktır.
Tek bir veri alımında, aşağıdaki koşullar karşılanırsa dinamik liste önceden oluşturulmuş geçici tabloları yeniden kullanır:
● Liste toplu sorgusunda, ana toplu sorgudan sonra hiçbir sorgu yoktur.
● Geçici tabloların ve içlerindeki alanların bileşimi, toplu isteğin önceki yürütülmesine göre değişmez.

Dinamik liste, çalışmasında meta veri nesnesi ayrıntılarının aşağıdaki özelliklerinin değerlerini kullanır:
● biçimi,
● formatı düzenleme,
● ipucu,
● negatif değerleri vurgulamak için işaret,
● maske,
● çok hatlı mod işareti,
● gelişmiş düzenlemenin işareti,
● şifre modu.
Veri kompozisyon sisteminin seçimini ve parametrelerini görüntülerken ve düzenlerken, ilgili alanın düzenleme formatı kullanılır.

2. Sınırlamalar ve özellikler

Dinamik bir listede seçimi ayarlarken, dinamik listenin görüntüleme modu Hiyerarşik Liste veya Ağaç ise seçimin grupları etkilemediğini unutmayın. "Gruplar" ile, ThisGroup özelliği True olarak ayarlanmış olan karakteristik türlerin bir dizininin veya planının bir öğesini kastediyoruz.
Sahip, Ana, Tarih, Dönem ve BuGrup standart ayrıntılarına dinamik bir liste tarafından otomatik olarak uygulanan yeterlilikler uygulanır
standart veri kompozisyon sistemi araçlarını kullanarak. Dinamik bir liste tarafından anahtar alanlara otomatik olarak uygulanan seçim, hem veri kompozisyon sisteminin standart araçlarıyla hem de doğrudan istek metnine koşullar eklenerek uygulanabilir. İÇİNDE ana tablonun alanlarına. Düzen araçlarını kullanarak seçimlerin uygulanması sonucunda hem iç içe geçmiş sorgularda hem de sanal tabloların parametrelerinde uygulanabilir.

Dinamik listeler geliştirirken tüm dinamik listelerin özel sorgularla test edilmesi önerilir. Doğrulama işlemi sırasında, bir liste sorgusu iç içe geçmiş sorgular veya sanal tablolar içeriyorsa ve bunlarda, standart ayrıntılardaki Sahip, Üst, Tarih, Dönem, BuGrup veya anahtar alanlarının takma adlarıyla eşleşen takma adlara sahip alanların mevcut olduğundan emin olmalısınız. seçim yapılırsa bu alanlar geçerli olur ve takma adlarının eşleştiği standart ayrıntılara karşılık gelir. Durum böyle değilse, isteği eşleşecek veya
takma adı farklıydı.
Bir isteği manuel olarak oluşturmayı seçerseniz isteğe bazı kısıtlamalar uygulanır:
● FIRST ifadesinin dinamik liste sorgusunda kullanılması desteklenmez. Dinamik listedeki kayıt sayısıyla sınırlı bir seçim kullanmanız gerekiyorsa, isteğin gerçek içeriği bir alt sorguya yerleştirilecek ve kayıt sayısını sınırlandıracak şekilde dinamik liste oluşturma isteğini yeniden işlemelisiniz. bu alt sorguda alındı. Alt sorgu yerine geçici bir tablo da kullanabilirsiniz.
● Seçme, sıralama ve gruplama desteklenmez:

  • Tablo parçalarının detaylarına göre.
  • Alanları görüntüleyin.
  • Veri Sürümü alanı.
  • Önceden TanımlanmışVeriAdı alanı.
  • Hesap planı tablo türü alanı.
  • Alan Birikim kayıt tablosunun Hareket Türü.
  • Alan TipiKarakteristik tip plan tablosunun değerleri.
  • Tür alanı Tür;
  • String türü alanı (sınırsız uzunluk).
  • BinaryData türü alanı.

● Alt Bağlam alanlarına göre sıralama ve gruplama desteklenmez<НомерСубконто>ve ViewSubconto<НомерСубконто>Tablolar HareketlerMuhasebe kaydının alt içeriği.
● Toplama işlevlerini içeren sorgu dili ifadeleri olan alanlara göre gruplandırma desteklenmez.
● Ana tablo seçildiğinde dinamik liste sorgusu aşağıdaki kısıtlamalara sahiptir:

  • Katılmalar desteklenmiyor.
  • ORDER BY bölümü desteklenmiyor. Ana tablo olmadan sorgu kullanmalı veya dinamik liste ayarlarından gerekli sıralamayı yapmalısınız.

● Dinamik bir liste hiyerarşik bir liste veya ağaç olarak görüntüleniyorsa, o girişin en az bir üst öğesi görüntülenmediği sürece bir giriş dinamik liste olarak görüntülenmez. Başka bir deyişle, hiyerarşik bir listenin bir öğesini görüntülemek için, dinamik bir listenin aynı zamanda o öğenin tüm üst öğelerini listenin en üstüne kadar görüntülemesi gerekir. Bu durumda listenin en üstünden şunu kastediyoruz:
dinamik liste tarafından görüntülenen hiyerarşik nesnenin kök öğesi veya dinamik liste için form tablosu uzantısının ParentTopLevel özelliği olarak ayarlanan öğe.

Aşağıdaki tabloların dinamik bir listenin ana tablosu olarak kullanılması desteklenmez:

● Her tablo kaydını benzersiz şekilde tanımlayan bir anahtara sahip olmayan bir tablo (nesne tabloları için bir referans ve kayıt tabloları için bir kayıt anahtarı). Ancak aşağıdaki tablolar dinamik bir listenin ana tablosu olarak ayarlanabilir (anahtara sahip olmasalar da):

● Muhasebe kaydının alt konjonktür tablosu;
● MovementsSubconto tablosu hariç, muhasebe kaydının tüm sanal tabloları;
● sabit değer tabloları (Sabitler tablosu dahil);
● anahtar alanları olmayan harici veri kaynaklarının tabloları;
● dış veri kaynaklarının küp tabloları;
● birikim kayıt tabloları:

  • devrim tablosu;
  • denge tablosu;
  • ciro ve bakiye tablosu.

● hesaplama kayıt tabloları:

  • fiili geçerlilik süresi tablosu;
  • zamanlama verileri;
  • temel veri.

● Nesnelerin tablo halindeki bölümlerinin tabloları;
● Kayıt tablolarını değiştirin (veri değişim mekanizmalarında kullanılır);
● Sıra tabloları;
● Dönüşüm tabloları (periyodik uzlaşma mekanizmalarında kullanılır).
● Yalnızca dış birleştirmede bir sorguda kullanılan tablo.

Başka bir deyişle, sorgunun yürütülmesi sonucunda belirtilen ana tabloya sahip dinamik bir liste doğru çalışacaktır:
Veri kaynağı olarak belirtildiğinde, ana tablodan elde edilen satır sayısı artmaz (empoze edilen seçim dikkate alınarak). Bir sorgunun yürütülmesi sonucunda ana tablodan sorgu tarafından elde edilen satır sayısı artarsa, bu, listede görüntülenen tablo kayıtlarının anahtarının benzersizliğinin ihlaline yol açacaktır. Bu durumda ana dinamik liste tablosunun kullanımını devre dışı bırakmalısınız.
Dinamik bir listeyle çalışırken liste tarafından görüntülenen ayrıntılara erişim haklarını dikkate almanız gerekir:
● Her Zaman Kullan özelliğiyle işaretlenen ancak geçerli kullanıcının Görüntüleme hakkına sahip olmadığı dinamik liste sütunlarındaki veriler istemci tarafına iletilmez. Bu tür sütunların verilerine erişim (CurrentData özelliğini ve RowData() yöntemini kullanarak)
istemci tarafında mümkün değildir.
● Geçerli kullanıcının dinamik listenin anahtar alanında Görüntüleme hakkı yoksa, bu dinamik listeden veri almak erişim ihlali hatasıyla sonuçlanır.
Numaralandırma listesini görüntüleyen dinamik bir liste için listeyi etkileşimli olarak özelleştirme seçeneği yoktur.
Dinamik listenin sütunlarının bileşimi ve ayarları, seçim alanlarının takma adları kullanılarak sorgu alanlarıyla ilişkilendirilir. Bir seçim alanı sorgusunda bir takma ad açıkça belirtilmemişse ve alan bir sistem alanıysa, takma ad olarak yerleşik dilin İngilizce sürümünün alan adı kullanılır.
Belirtilen ilişki, otomatik takma adın kullanıldığı bir alan için bir takma adı değiştirirken (veya açıkça belirtirken) anlamına gelir.
dinamik liste verilerini oluşturan sorgu alanının takma adı, dinamik liste öznitelik ayarları kaybolacak, form öğeleri görüntülenen ayrıntıları "kaybedecek", dinamik liste ayarları hatalı hale gelecektir, vb.
Dinamik bir listenin veri kaynağı, döneme göre seçim yapmanıza olanak tanıyan bir tablo (normal veya sanal) ise, kullanıcı böyle bir dinamik listede görüntüleme süresini ayarlarsa (Tarih aralığını ayarla... komutu),
belirtilen dönem sınırları seçim değerleri veya sanal tablo parametreleri olarak ayarlanacaktır. Dil uzantısı yoluyla ise
veri kompozisyon sistemi sorgularında, sanal tablo parametrelerinin adları açıkça belirtilmiştir - belirtilen parametrelere sahip parametreler
isimler. Verilerin görüntülenmesi veya işlenmesi için süreyi kontrol etmenin mümkün olduğu tablolar:
● döneme göre seçilebilen kayıt tabloları (ana veya sanal) (hesaplama kaydı için - kayıt dönemine göre);
● belgelerin, iş süreçlerinin ve görevlerin ana tabloları;
● belge günlüklerinin ana tabloları;
● ana dizi tabloları, dizi sınır tabloları.
Dinamik liste sorgu parametresi bir dizi veya değer listesi olabilir. Ancak parametre bir değerler listesi ise seçim değeri olarak yalnızca listedeki ilk değer kullanılacaktır. Dinamik liste parametreler içeren bir sorgu kullanıyorsa, parametre değerlerinin ilk ayarı OnCreateOnServer işleyicisinde gerçekleştirilmelidir.
Dinamik liste verilerini görüntülerken aşağıdaki noktaları aklınızda bulundurun:
● Dinamik bir listenin özelliklerini programlı olarak değiştirdiğinizde, listeyle ilişkili komut panelleri otomatik olarak yeniden doldurulmaz.
bu dinamik listeyle.
● Bir hücrede birden fazla alan, gruplandırma moduyla bir grup halinde gruplandırılmışsa ve gruplandırılmış alanlarda onay kutusu olarak görüntülenen bir alan varsa, bu onay kutusu, sonuçta ortaya çıkan hücrede her zaman ilk önce görüntülenir (sol tarafta) metin).
Dinamik bir listede, ifadeleri parametreler, alanlar veya değişmez değerler içeren alanlar için veri türünü belirlerken, ortaya çıkan tür, alanların ve değişmez değerlerin türlerine göre belirlenir. Sonuçta ortaya çıkan veri tipine parametre değer tipi dahil edilmezse değeri kesilecektir.
Örneğin aşağıdaki örnekte alan Number türünde olacaktır.

SEÇENEK
YALAN OLDUĞUNDA
SONRA 5
AKSİ TAKDİRDE
&Parametre
SON

Parametre parametresini başka türden bir değere ayarlarsanız, o alanın dinamik listesi 0 değerini alır (Numara türü için varsayılan değer).
Böyle bir durumda farklı türde bir parametre seçmeniz gerekiyorsa sorgu dili yapısını kullanmanız önerilir. İFADE ETMEK. Örneğin,
Yukarıdaki örnekte parametreye 100 karakterden uzun olmayan bir dize aktarmanız gerekiyorsa, parametrenin basit göstergesini açık tür dönüşümüne sahip bir ifadeyle değiştirmelisiniz:

SEÇENEK
YALAN OLDUĞUNDA
SONRA 5
AKSİ TAKDİRDE
EXPRESS(&Parametre AS String(100))
SON

Dinamik liste isteğinin rastgele metni, seçim alanlarının ifadelerinde parametreler kullanıyorsa, yapıyı kullanarak parametrelerin türünü açıkça belirtmelisiniz. İFADE ETMEK. Örneğin, bunun yerine &Adlandırma AS Adlandırma kullanmak
EXPRESS(&Adlandırma AS Dizini.Adlandırma) AS Adlandırma. Aksi takdirde arama çubuğunda arama yapmak işe yarayabilir
yanlıştır veya hata üretir.

3. Dinamik listeyle verileri alma ve önbelleğe alma yöntemleri

Görüntülenecek verileri alırken dinamik liste üç yöntemden birini kullanır:
1. Veritabanından okuma, listede aynı anda görüntülenen satır sayısından biraz daha fazla sayıda veri öğesi içeren parçalar halinde gerçekleştirilir (ancak 20'den az olmamalıdır). Veriler sunucuda önbelleğe alınmaz.
2. Veritabanından okuma 1.000 veri öğesinden oluşan sayfalarda yapılır. Veriler sunucuda önbelleğe alınıyor. Hiyerarşik veriler önbelleğe alınır: her bir üst öğe için en fazla 2 sayfalık öğe önbelleğe alınır. Dinamik liste başına 20 sayfadan fazla öğe önbelleğe alınmaz. Önbelleğe alma, aşağıdaki tablolar için dinamik bir liste tarafından etkinleştirilecektir:
● Seçim kriterleri;
● Ana tablo ve MovementsSubconto tablosu hariç, muhasebe kaydının tüm tabloları;
● Ana tablo dışındaki tüm birikim kayıt tabloları;
● Ana tablo dışındaki bilgi kaydının tüm tabloları;
● Ana tablo hariç, hesaplama kaydının tüm tabloları;
● Gerçekleştirene göre Görevlerin sanal tablosu;
● Anahtarsız harici kaynak tabloları;
● Harici kaynaklardan alınan küpler.

3. Veritabanından okuma 1.000 elementlik sayfalarda gerçekleştirilir. İlk kısım 1 sayfaya eşittir. Sonraki her bölüm 1 sayfa artar (önceki örneğin sonuna ulaşıldığında). "Görünüm noktası" görüntülenen verinin sonuna ne kadar yaklaşırsa, veri tabanından okunan örnek o kadar büyük olur ve sonuçta görüntülenen tüm veriye eşit hale gelir. Veriler sunucuda önbelleğe alınıyor. Önbellek ve dinamik listedeki maksimum giriş sayısı 1.000.000'dır.
Dinamik listenin ana tablosu tarafından neyin seçildiğine ve Dinamik okuma özelliğinin hangi değeri aldığına bağlı olarak, bir veya başka bir veri okuma yöntemi kullanılır:

● Ana tablo özelliğinin değeri olarak aşağıdaki tablolardan biri belirtilir: değişim planı, dizin, belge listesi, belge günlüğü, özellik planı türleri, hesap planı, hesaplama türleri planı, iş süreci, görev, tablo iş süreci noktaları:



● Ana tablo özelliğinin değeri olarak aşağıdaki tablolardan biri belirtilir: bilgi kaydının ana tablosu, birikim kaydı, muhasebe kaydı, hesaplama kaydı, muhasebe kaydının sanal tablosu MovementsSubconto:

● Dinamik okuma özelliği:
● Kurulu: yöntem 1 kullanıldı (yöntemlerin açıklaması yukarıda verilmiştir).
● Reset: Yöntem 2 kullanılır (Yöntemlerin açıklaması yukarıda verilmiştir).

● Ana tablo özelliği, yürütücüye göre seçim kriteri tablosunu veya görev tablosunu içerir (Yürütücüye Göre Görevler):
● Bir tablo satırını tanımlayan anahtar: Bağlantı.

● Ana tablo özelliği, SliceFirst veya SliceLast bilgi kaydının sanal tablosunu belirtir:
● Bir tablo satırını tanımlayan anahtar: RecordKey.
● Dinamik okuma özelliği geçerli değildir.
● Yöntem 2 kullanılır (Yöntemlerin açıklaması yukarıda verilmiştir).

● Ana tablo özelliği, yukarıda listelenenler dışındaki sanal kayıt tablolarından birine ayarlanmıştır:

● Dinamik okuma özelliği geçerli değildir.

● Ana tablo özelliği belirtilmedi, isteğe bağlı bir sorgu kullanıldı:
● Bir tablo satırını tanımlayan tuş: Sayı.
● Dinamik okuma özelliği geçerli değildir.
● Yöntem 3 kullanılır (Yöntemlerin açıklaması yukarıda verilmiştir).

Görüntüleme için veriler müşteriye, boyutu 1. veri okuma yöntemindeki (bu bölümün başında açıklanmıştır) porsiyon boyutuna benzer porsiyonlar halinde aktarılır.
Dinamik liste içeren bir form oluşturduğunuzda, her görünür dinamik liste için 45 veri öğesi başlangıçta istemciye iletilir (listede 45'ten fazla öğe varsa). Dinamik listede 45'ten fazla satır görüntüleniyorsa, eksik veri öğelerini almak için form açıldığında ek bir sunucu çağrısı yapılacaktır.

4. Dinamik liste ayarları

Özellik Listesi ayarları - Aç köprüsüne tıklamak, dinamik listenin görüntüsünü ayarlamak için bir form açar. Bir listenin oluşturulması, veri kompozisyon sistemindeki benzer işlemlerle aynı şekilde yapılır.


Pirinç. 2. Dinamik bir listenin koşullu stili

Yapılandırmada dinamik bir liste ayarlarken uygulama geliştiricisi aşağıdakileri yapma olanağına sahiptir:
● sıralamak istediğiniz alanları ayarlayın;
● listedeki veri seçimini açıklayın;
● koşullu görünüm ayarlarını belirtin;
● verileri gruplandırmak istediğiniz alanları ayarlayın.
Sistem tarafından yüklenen varsayılan sıralamadan memnun değilseniz, sıralamayı geliştiriciye ayarlamak mantıklı olacaktır.

TAVSİYE. Sıralama alanlarının kötü seçiminin (verilerin seçimi ve gruplandırılmasının yanı sıra) dinamik örneklemenin verimliliğini olumsuz yönde etkilediği unutulmamalıdır.
Bir uygulama geliştiricisinin bakış açısından dinamik liste ayarları birbirine bağlı birkaç parçadan oluşur. Dinamik bir listenin ayarlarını yönetebileceğiniz ana özellik Bağlayıcı Ayarları. Bu nesne, sistem çalıştırıldığında dinamik listeye uygulanan son ayarları belirleyen üç ayar kümesi içerir:
● Ayarlar – Yapılandırıcı modunda oluşturulan ayarlar. Dinamik listenin Order özelliği, dinamik listenin ayar oluşturucusunun Settings.Order özelliğine hızlı erişim sağlar; dolayısıyla aşağıdaki yapılar eşdeğerdir:
List.Order ve List.SettingsLinker.Settings.Order;
● Kullanıcı Ayarları – bunlar, 1C:Kurumsal modunda kullanıcı tarafından değiştirilen ayarlardır;
● Sabit Ayarlar – bu ayarlar yerleşik dilden ayarlanır. Bu özellik aynı zamanda parametreleri kullanılarak forma aktarılan seçim değerlerini de içerir. Dinamik liste özellikleri Seçim, Seçenekler, Koşullu Görünüm, dinamik liste ayarları oluşturucusunun sabit ayarlarına hızlı erişim sağlar. Başka bir deyişle, bu çağrılar eşdeğerdir:
List.Settings Composer.FixedSettings.Selection ve List.Selection.
Dinamik bir liste için son ayarları oluştururken çeşitli ayar seçenekleri aşağıdaki şekilde birleştirilir:
● Herhangi bir ayar türü tamamen özel olarak işaretlenmişse, ortaya çıkan ayarlar özel ayarları içerir
(List.ComposerSettings.UserSettings). Ayrıca herhangi bir ayar öğesi kullanılamaz olarak işaretlenirse bu ayarlar, List.Settings Composer özelliğinden elde edilen ayarlara yerleştirilecektir. Ayarlar.
● Herhangi bir ayar türü tamamen değil, öğe öğe özel olarak işaretlenmişse, o zaman:
● Özel olarak işaretlenen öğeler, List.SettingsComposer.CustomSettings özelliğinden elde edilen ayarlara dahil edilecektir.
● Kullanılamaz olarak işaretlenen öğeler, List.SettingsComposer.Settings özelliğinden elde edilen ayarlara dahil edilecektir.
● Sabit ayarlar (List.SettingsComposer.FixedSettings), ortaya çıkan ayarlara “olduğu gibi” eklenir. Aynı zamanda, sabit ve kullanıcı ayarlarının aynı addaki ayarları içermesi, örneğin durumda aynı sol değere sahip seçim yapılması kabul edilemez.

Dinamik liste ayarları, işlevsel seçenekler kullanılarak devre dışı bırakılan ayarlar içeriyorsa, dinamik liste verileri alındığında bu ayarlar mevcut ayarlar listesinden kaldırılacaktır.
Kullanıcının hangi ayarları kullanıp hangilerinin kullanamayacağının kontrolü dinamik liste ayarları penceresinde yapılır.


Pirinç. 3. Kullanıcı ayarlarına dahil edilmeyi kontrol edin

Pencerenin altındaki onay kutusu (bkz. Şekil 3), tüm ayar türlerinin ayarlara (normal veya hızlı) yerleştirilmesinden sorumludur. Bu özellik seçme, sıralama, gruplama ve koşullandırma için kullanılabilir. Ayarlar Hızlı Seçim düzenleme moduyla belirtildiyse, dinamik listeyi görüntüleyen formun tablosunun Kullanıcı Ayarları Grubu özelliğinde, formun hızlı kullanıcı ayarlarıyla ilişkili öğelerin yer aldığı boş bir grup grubu belirtmeniz gerekir. dinamik liste bulunacaktır. Grup belirtilmezse hızlı kullanıcı ayarları formda görüntülenmez. Dinamik liste uzantısının CreateCustomSettingsFormItems() yöntemini kullanarak yerleşik dili kullanarak özel ayarların oluşturulmasını açıkça başlatmak da mümkündür.
Kullanıcı ayarlarında belirli ayar öğelerinin yerleştirilip yerleştirilmeyeceğini seçmek de mümkündür. Bu özellik, seçim ve koşullu tasarım öğeleri için kullanılabilir (bkz. Şekil 3).

Dinamik bir listeyi açarken herhangi bir özel ayarın yüklenmesine ihtiyacınız varsa, bu iki şekilde yapılabilir:
● Dinamik liste formu parametresi UserSettings'in kullanılması. Bu parametrenin içerdiği veriler kullanıcının dinamik liste ayarlarına yerleştirilecektir.
● Dinamik liste formu parametresiUserSettingsKey'i kullanma. Bir formu açarken bu parametreyi belirtirseniz, belirtilen anahtarla ayarlar deposunda bulunan kullanıcı ayarları, formun ana özelliği olan dinamik listeye yüklenecektir.

5. Dinamik listede arama yapın

Formda yer alan dinamik liste, görüntülenen verilerde etkileşimli olarak arama olanağı sağlar. Arama aşağıdaki araçlar kullanılarak gerçekleştirilebilir: arama çubuğu, arama iletişim kutusu, geçerli değeri arama, arama geçmişini kullanma ve süreyi ayarlama (belgeleri görüntüleyen dinamik listeler için). Arama sonucu sınırlı bir kayıt kümesidir
arama kriterleriyle eşleşen dinamik bir liste (belirli bir kullanıcı tarafından kullanılabilenlerin listesi).
Dinamik bir listenin arama yeteneklerini denetlemek için yönetilen formda dinamik listeyi görüntüleyen üç tablo özelliği vardır:
● Arama dizisi konumu – arama dizisinin konumunu belirler. Şu değerleri alabilir: Otomatik, Komut Çubuğu, Yok, Üst, Alt.


Pirinç. 4. Dinamik listede dizeyi arayın

Bu özelliğin değeri Komut Paneli olarak ayarlanırsa, arama dizesi form komut panelinde (dinamik liste ana form özelliği ise) veya dinamik listeyle ilişkili komut panelinde görüntülenecektir. Komut çubuğuna yerleştirilen arama çubuğuna her zaman komut çubuğunun sağ kenarına (arama çubuğunun sağında bulunan düğmelerle birlikte) basılır.
Özellik Hayır olarak ayarlanırsa arama dizesi formda olmayacaktır ve arama dizesini yazmaya başladığınızda bir iletişim kutusu açılacaktır.
Özellik Üst olarak ayarlanırsa arama çubuğu, liste komut çubuğu ile dinamik listeyi görüntüleyen tablo arasında yer alır. Özellik Alt olarak ayarlanırsa, arama dizesi dinamik listeyi görüntüleyen tablonun hemen sonrasına yerleştirilecektir.


● Uyumluluk Modu özelliği Kullanmayın veya Sürüm 8.3.4'ten eskiyse, değer Komut Paneli olur.
Arama satırına şu şekilde gidin:
● Ctrl+F tuş kombinasyonuna basarak;
● Fare;
● Dinamik bir listeye yazmaya başladığınızda (dinamik listenin SearchOnTyping özelliğinin değeri dikkate alınarak).
● Durum Konumunu Görüntüle – görünüm durumunun nerede görüntüleneceğini açıklar: hangi alanların arandığını ve hangi değerlerin arandığını
Her alanda arandı. Şu değerleri alabilir: Otomatik, Yok, Üst, Alt


Pirinç. 5. Dinamik listede durumu arayın

Özellik Hayır olarak ayarlanırsa görünüm durumu formda mevcut olmayacaktır. Sonuç olarak sadece Aramayı İptal Et butonunun bulunmasıyla aramanın tamamlanıp tamamlanmadığının tespiti mümkün olacaktır.
Özellik Üst olarak ayarlanırsa görünüm durumu, liste komut çubuğu ile dinamik listeyi görüntüleyen tablo arasında yer alır. Özellik Alt olarak ayarlanırsa görünüm durumu, dinamik listeyi görüntüleyen tablonun hemen sonrasına yerleştirilecektir.
Form 1C:Enterprise sürüm 8.3.4 ve öncesinde oluşturulduysa özellik Hayır olarak ayarlanır. Form 1C:Enterprise sürüm 8.3.5 ve daha eski bir sürümde oluşturulduysa özellik Otomatik olarak ayarlanır. Bu durumda mülkün gerçek değeri şu şekilde belirlenecektir:
● Uyumluluk Modu özelliği Sürüm 8.3.4 (ve daha düşük) olarak ayarlanmışsa – Hayır değeri;
● Uyumluluk Modu özelliği Kullanmayın veya Sürüm 8.3.4'ten daha eski bir sürüme ayarlanmışsa – En Üst değer;
● Arama Kontrol Konumu – Arama kontrol düğmesinin nerede görüneceğini belirler. Düğme, aşağıdaki bilgileri içeren bir menüyü açar: komutlar Geçerli değere göre bul, Gelişmiş arama, Aramayı iptal et, Dönemi ayarla (belge ve günlük listeleri için) ve sorgu geçmişini ara (son 5 sorgu). Özellik şu değerleri alabilir: Otomatik, Yok, Komut paneli.


Pirinç. 6. Dinamik listede aramayı yönetme

Özellik Hayır olarak ayarlanırsa, arama kontrolü düğmesi formda olmayacaktır (ancak komutlar Diğer menüsü kullanılarak kullanılabilir). Komut Çubuğu özelliği değeri, dinamik listeyi görüntüleyen bir tabloyla ilişkili komut çubuğuna bir düğme yerleştirir.
Form 1C:Enterprise sürüm 8.3.4 ve öncesinde oluşturulduysa özellik Hayır olarak ayarlanır. Form 1C:Enterprise sürüm 8.3.5 ve daha eski bir sürümde oluşturulduysa özellik Otomatik olarak ayarlanır. Bu durumda mülkün gerçek değeri şu şekilde belirlenecektir:
● Uyumluluk Modu özelliği Sürüm 8.3.4 (ve daha düşük) olarak ayarlanmışsa – Hayır değeri;
● Uyumluluk Modu özelliği Kullanmayın veya Sürüm 8.3.4'ten daha eski bir sürüme ayarlanmışsa, değer Komut Paneli'dir;
Bir formda, komutların kaynağı yönetilen formun bir tablosu olan (dinamik liste verilerini gösteren) birden fazla komut paneli varsa, arama satırı ve arama kontrol düğmesi yalnızca bir komut panelinde yer alacaktır:
● Veya dinamik listenin komut çubuğunda (otomatik tamamlama etkinleştirilmişse)
● Veya geri kalan komut panellerinden herhangi birinde.

Dinamik listede aramayı kullanmanın özelliklerine bakalım:
● Aramanın kullanımını kolaylaştırmak için (performans açısından da dahil), dinamik listenin ana tablosu olarak kullanılabilecek tüm yapılandırma nesneleri için tam metin aramasını etkinleştirmeniz gerekir. Ayrıca tam metin araması, dinamik bir listede görüntülenebilecek ve aramanın gerekli olabileceği yapılandırma nesnelerinin tüm ayrıntılarını içermelidir.
Bir nesne tam metin aramasının dışında bırakılırsa söz konusu arama mekanizması çalışacaktır ancak böyle bir aramanın performansı son derece düşük olacaktır. Tam metin araması tarafından dizine eklenmeyen nesnelerde aramanın kullanılması önerilmez.
● Uygulama çözümünün, tam metin arama dizinini düzenli olarak güncelleyen rutin bir görevi olmalıdır.

● Arama, dinamik listenin (ve yapılandırma nesnesinin) tüm sütunlarında değil, yalnızca tabloda görüntülenen sütunlarda gerçekleştirilir.
● Dinamik bir listede referans türlerinin alanlarına göre arama, keyfi gösterimle, kullanılan alanlar tarafından gerçekleştirilir.
temsil oluşumu (buraya bakın). Görünümde yer alan alanlar, ilgili nesnenin ViewFieldGettingProcessing() işleyicisi dikkate alınarak elde edilir.
● Belirtilen ana tabloya sahip dinamik listeler için ana tabloda tam metin araması kullanılır. Ana tablodaki dizine eklenmemiş tüm bağlantılar, tam metin arama sonuçlarına eklenecektir. Ana tablo için yapılan tam metin aramasının sonucu, anahtar alanlara dayalı bir seçim olarak kullanılır. Diğer tablolardan listede görüntülenen alanlarda da tam metin araması gerçekleştirilir (eğer alan ve yapılandırma nesnesi tam metin aramasını kullanıyorsa). Tam metin araması etkinleştirilmediğinde veriler
bulundu, ancak aramanın kendisi çok yavaş olacak.
Tam metin araması yapılmaya çalışılırken bir hata oluşursa, tam metin araması uygulanmadan arama gerçekleştirilecektir.
Örneğin bilgi tabanında bir harf ve bu harfle başlayan çok sayıda satır aranırken bu durum ortaya çıkabilir.
● Dinamik bir listenin ana tablosundaki bir alan için Eşittir karşılaştırma türüne sahip bir seçim kullanılıyorsa, tam metin araması yapılırken bu tablonun arama sorgusuna bir seçim değeri eklenecektir.
● Arama dizisi kelimelere bölünmüştür. Bu bölüm aşağıdaki kurallara göre gerçekleştirilir:
● Satır, sınırlayıcı olarak boşluk ve sekme karakterleri kullanılarak kesilir.
● Daha sonra ortaya çıkan her parça işlenir:
● Parça, geçerli oturum yerel ayarına dayalı bir tarih temsiliyse (zamanlı veya zamansız), o zaman sözcük parçadır.
● Aksi takdirde parça, sınırlayıcı olarak “,.-/\” karakterleri kullanılarak daha da bölünür. Bu durumda, dizenin sonuçta ortaya çıkan her parçası bir sözcük olarak alınır.

● Her kelime için “OR” ile birleştirilen kendi koşullar kümesi oluşturulur. Bu koşullar kümesi, bu alanın elde edildiği tabloda belirli bir kelime için yapılan tam metin araması en az bir nesne döndürdüğünde veya bu alan için tam metin araması kullanılmadığında oluşturulur. Koşullar şu şekilde oluşturulmuştur:
● String türündeki bir alan için koşul FieldName LIKE %Word%'dir.
● Sayı türündeki bir alan için koşul, AlanAdı=Değer biçimindedir; burada Değer, Sayı türüne dönüştürülmüş bir sözcüktür. Cast işleminin gerçekleştirilememesi durumunda saha araştırması yapılmayacaktır.
● Sözcük, geçerli oturum için tanımlanan varsayılan Boole gösteriminde bir alt dize olarak aranır. Arama sözcüğü bir görünümde bulunursa, sözcüğün bulunduğu görünüme karşılık gelen değeri arar. Bu durumda arama, Biçim form öğesi özelliği kullanılarak belirtilen görünümleri kullanmaz.
● Date türündeki bir alan için koşul şu şekilde görünür: FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
Bir veya iki rakamla gösterilen yıl, içinde bulunulan yüzyıla indirgenecek ve bu değer arama koşuluna eklenecektir.
● Referans alanları için, referans görünümünü oluşturmak üzere kullanılan alanlarda bir arama gerçekleştirilir. Bu alanların her birinde arama
yukarıda açıklanan kurallara göre gerçekleştirilir. Arama, özel bir veri temsili oluşturmak için kullanılan alanları kullanmaz.
Her kelimenin koşulları kümesi “VE” ile birleştirilir.
● Başında sıfır bulunan değerler için, başında sıfır bulunan dizede veya başında sıfır olmadan belirtilen dizede arama yapabilirsiniz.
● Dinamik listede bir belge listesi veya belge geçmişi görüntüleniyorsa, belirttiğiniz liste görüntüleme aralığı, formun istenen dinamik listenin görünüm durumunu görüntülemek için ayrılan alanında da görüntülenir.
● Dinamik listenin ana tablosu seçim kriteri ise geçerli değere göre arama komutu kullanılamaz.
● Bulunan dize parçaları tabloda görüntülendiğinde vurgulanır.
● Bir sütun için yalnızca bir arama dizesi desteklenir. Halihazırda aranmakta olan bir sütun için yeni bir arama sorgusu eklenirken, iki arama sorgusunun birbirine eklenmesi yerine arama ifadesi değiştirilecektir.
● Formda, dinamik bir liste görüntüleyen tabloyla ilişkili arama dizesi görünümü (form öğesi ekleme Kaynak özelliği) formunun bir form öğesi eklemesi yoksa, Ctrl+F tuş kombinasyonuna basıldığında arama iletişim kutusu açılır.


Pirinç. 7. Arama iletişim kutusu

Form, dinamik bir liste görüntüleyen bir tabloyla (form öğesi ekleme Kaynak özelliği) ilişkili formun Arama dizesi görünümüne bir form öğesi eklemesi içeriyorsa, arama iletişim kutusunu açmak için Gelişmiş arama komutunu kullanmanız gerekir.
● Arama iletişim kutusunu kullanırken aşağıdaki noktaları aklınızda bulundurun:
● Arama iletişim kutusunun klavye kısayolu kullanılarak açılması, geçerli hücrenin değerinin Ne aranmalı satırında görünmesine neden olur ve Nasıl aranır anahtarının değeri Tam eşleşmeye göre olarak ayarlanır.

● Dinamik listeye doğrudan bir arama dizesi yazmaya başlayarak arama iletişim kutusunu açmak, Nasıl aranır anahtarının değerinin, Dizenin bir kısmına göre değerine ayarlanmasına ve yazılan metnin Ne arama alanına.

6. Dinamik liste tarafından görüntülenen verileri alma

Dinamik listeleri kullanırken, uygulanan seçimleri ve aramaları dikkate alarak dinamik liste tarafından o anda görüntülenen veriler üzerinde çeşitli eylemler gerçekleştirmeniz gerekebilir. Bu tür eylemler şunları içerir: görüntülenen bilgilerin işlenmesi, örneğin seçilen belgelerin yeniden gönderilmesi veya seçilen nesneler için bazı ayrıntıların ayarlanması, örneğin yazdırmak veya bir elektronik tablo belgesine kaydetmek için mevcut nesnelerin (tasarımlı vb.) bir listesinin oluşturulması.
Dinamik bir liste tarafından görüntülenen verileri elde etmek için GetExecutableDataCompositionSchema() işlevini kullanmalısınız ve
GetExecutableDataCompositionSettings().
Veri alma örneği:

Schema = Elements.List.GetExecutableDataCompositionSchema();
Ayarlar = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Şema, Ayarlar);
Bileşimİşlemcisi = yeniVeriBileşimİşlemcisi;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Yeni OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Verilerin bir değer koleksiyonuna (tablo veya değerler listesi) alınması aynı şekilde yapılır.
Dinamik liste verilerinin bu şekilde elde edilmesi, uygulama çözümleri geliştirilirken dikkate alınması gereken bir dizi özelliğe sahiptir:
● Aşağıdaki tablo tasarımı desteklenmez:
● Alternatif çizgi renkleri;
● Başlık resmi;
● Bodrum katının resmi;
● Altbilgi arka plan rengi;
● Altbilgi metin rengi;
● Altbilgi yazı tipi;
● Bodrum katında yatay konum;
● Şifre modu.
● Yönetilen bir form için belirtilen koşullu görünüm desteklenmez;
● Hiyerarşik bir tabloyu Bağlantı türündeki bir alana göre artan sırada sıralarken, boş bağlantı içeren kayıtlar her zaman önce yerleştirilir.

8.3.10.2168 sürümünde uygulandı.

Bildiğiniz gibi dinamik liste, büyük listelerin hızlı bir şekilde gösterilmesi açısından kullanışlı ve kullanışlıdır. Oldukça esnektir, standart sorguyu değiştirmenize ve hatta kendi karmaşık sorgunuzu oluşturmanıza olanak tanır. Bu sayede listenin ana verilerine ilişkin çeşitli ek verileri listede görüntüleme olanağına sahip olursunuz.

Ancak bu kadar çok yönlülüğün bir dezavantajı da var. "Her şeyi aynı anda gösterme" arzusu, talebi önemli ölçüde karmaşıklaştırmanıza yol açabilir. Sonuç olarak, verimsiz yürütme planlarıyla karşılaşacaksınız ve sonuç olarak listeyi görüntülerken ve listede gezinirken performansın düşmesine neden olacaksınız.

Ek olarak, liste verilerinin seçilmesine ve biçimlendirilmesine yönelik algoritmanın oldukça karmaşık olduğu bir dizi uygulamalı problem vardır. Bu durumlarda özel sorgu ve koşullu şekillendirme yetenekleri kesinlikle yeterli değildir. Bana "her şeyi" ve "yalnızca ihtiyaç duyulduğunda" yapmamı sağlayacak daha "özgür" ve daha "doğru" bir araca sahip olmak isterim.

Sunucuda Veri Alınırken Yaşanan Olay

Özellikle bu amaçlara yönelik yeni bir işleyici uyguladık. Dinamik listeyi görüntüleyen tablo uzantısına eklenir.

Bu işleyici, dinamik listenin görüntülenmek üzere bir sonraki veri parçasını alıp biçimlendirmesinden sonra sunucuda çağrılır.

Önemli bir özellik, form bağlamının bu işleyicide mevcut olmamasıdır. Yalnızca veritabanından alınan, dinamik listenin ayarlarına uygun olarak seçilmiş ve tasarlanmış liste satırlarının bir koleksiyonuyla çalışabilirsiniz.

Bu satırlardaki verileri değiştirebilir veya hücrelere kendi tasarımınızı uygulayabilirsiniz. Aşağıdaki tasarım seçenekleri mevcuttur: Arka plan rengi, Metin rengi, Yazı tipi, Yatay pozisyon, Görünürlük, Kullanılabilirlik, Görüntülemek, Metin Ve Biçim.

Ayrıca gerekirse tam dinamik liste ayarlarının bir kopyasını görüntüleyebilir ve analiz edebilirsiniz. Ancak ayarları değiştiremezsiniz.

En basit kullanım durumu

Bu işleyicinin amacını anlamanın en kolay yolu bir örnektir. Bir örnek, birikim kaydındaki bakiyelerinin bir mal listesinde gösterilmesidir. Belirli bir değerin altındaki miktar kırmızı renkle vurgulanır.

Şimdiye kadar bu sorun, dinamik liste isteğindeki sol birleştirme ve yapılandırıcıdaki koşullu liste tasarımıyla çözülüyordu.

Artık bu şekilde karar veriyor. Standart liste sorgusu karmaşık değildir; yalnızca sahte bir alan ekler Kalan.

Ve işleyicide WhenReceivingDataOnServer() Yalnızca alınan satırlar için kalanlar hesaplanır. Ve sonra küçük kalıntılar kırmızı renkle vurgulanır.

Burada yönteme göre GetKeys(), bir dinamik liste satırı koleksiyonundan anahtarlarını (bağlantılarını) alırsınız ve bu anahtarları kalan sorguya iletirsiniz.

Daha sonra, sorgu sonuçları arasında geçiş yaparken, sütunda gerekli satırları anahtara göre alırsınız. Kalan değeri yerleştirin ve gerekiyorsa bu alanın tasarımını ayarlayın.

Sonuç olarak kullanıcı aşağıdaki listeyi görür:

Bu seçeneğin avantajı nedir?

İlk olarak liste sorgusu basit kalıyor. Ya da basit kalmıyor ama içindeki bağlantı sayısı azalıyor. Bu, yüksek olasılıkla kendisi için iyi bir plan yapılacağı anlamına gelir.

İkinci olarak, işleyiciden kalanların alınması yalnızca bir kez yürütülürken, liste isteği birkaç kez yürütülebilir (liste ayarlarına ve sayfalama komut dosyasına bağlı olarak).

Üçüncüsü, ana veri veri tabanından alınıp hak kontrolünden geçtikten sonra yeni işleyici çalıştırılır. Bu, bazı senaryolarda ilgili verilerin bir işleyiciden alınmasının, izinler kontrol edilmeden ayrıcalıklı modda yapılabileceği anlamına gelir. Bu listeyi hızlandırır.

Düzenlenebilir ve eklenen alanlara ilişkin kısıtlamalar

İşleyicide liste alanlarının değerlerini değiştirebiliyor olmanız her zaman dikkate alınması gereken bir özelliğe sahiptir.

Ek önlemler almazsanız, değiştirdiğiniz alanlara göre gruplama, sıralama veya seçim (arama dahil) sonuçları kullanıcıyı çok şaşırtabilir. Sonuçta bu eylemler, kullanıcının gördüğü verilere göre değil, istek tarafından alınan orijinal verilere göre gerçekleştirilecektir.

Bu nedenle alan değerlerini değiştireceğiniz durumlarda bunları gruplama, sıralama ve seçim dışında bırakmayı unutmayın. Bu amaç için özel olarak üç yeni yöntem uyguladık.

Ayrıca bazı senaryolarda, kullanıcıların bu sütunların herkes gibi değil "özel" olduğunu görebilmesi için tablodaki bu tür sütunları görsel olarak vurgulamak mantıklı olabilir.

Nihayet yedi yaşındaki her çocuğun hayali gerçek oldu. 7.7 programının kullanıcıları ne sıklıkla öğelerin normal seçimini istedi? Böylece bakiyeleri, fiyatları görebilir ve filtreleri ayarlayabilirsiniz. Harici bileşenler yazmak da dahil olmak üzere çeşitli hileler bulmamız gerekiyordu. 1C 8.2'de dinamik listeler ortaya çıktı. Bunun ne olduğunu ve 1C 8.3'te bize neler verebileceklerini düşünmeyi öneriyorum.

1C'nin belirli bir test yapılandırmasını temel alalım: “Kurumsal Muhasebe 3.0”. Şimdi bir seçim yapmayacağız, sadece “Adlandırma” dizinine başka bir seçim formu ekleyeceğiz ve onu geçici olarak ana form yapacağız:

Oluşturulduğunda sistem varsayılan olarak forma "Dinamik Liste" türünde bir tablo alanı ekleyecektir.

Haydi özelliklerine girelim ve orada ne olduğuna bakalım.

Her şeyden önce “Özel istek” onay kutusuyla ilgileniyoruz. Bu bize dinamik bir listenin tüm avantajlarını ortaya çıkaracaktır. Kendi isteğimizi parametrelerle yazma imkanımız olacak. Kutuyu işaretleyin ve “Aç” bağlantısını tıklayın:

Bitmiş kodu içeren bir pencere açılacaktır. Şimdilik “Adlandırma” dizininin tüm alanları burada listelenmiştir.

1C'de 267 video dersini ücretsiz alın:

Gördüğünüz gibi listenin içeriğini dinamik olarak değiştirmeyi mümkün kılan bir çağrı düğmesi “ ” ve bir onay kutusu var. Yani başka bir kullanıcı dizinde bir şeyi değiştirdiğinde bizim listemizde de değişecektir. Ayrıca “Ayarlar” sekmesi de var ama ona daha sonra değineceğiz.

Dinamik listede özel sorgu

Öncelikle bakiyeler ve fiyatlar ile ihtiyacımız olan talebi oluşturalım. Bunun gibi:

“Ayarlar” sekmesi

Ve şimdi en iyi kısım! “Ayarlar” sekmesine gidin. Ve hemen ilk sekmede istekteki herhangi bir alan için seçim yapabileceğimizi görüyoruz:

Dinamik listede sorgu parametrelerini programlı olarak ayarlama 1C 8.3

Talepte iki parametremiz olduğunu unutmayın: “Dönem” ve “Fiyat türü”. Bunları isteğe iletmeliyiz, aksi takdirde bir hata olur.

Bu parametreleri form parametrelerine yazalım ve form modülüne aşağıdaki satırları ekleyelim:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) List. Seçenekler. SetParameterValue("Dönem", Parameters.Date) ; Liste. Seçenekler. SetParameterValue("PriceType", Parameters.PriceType) ; EndProcedures Ana Sayfa Aynanın İçinden Notlar

21.04.2014 Dinamik liste verileri alınıyor

8.3.6.1977 sürümünde uygulandı.

Dinamik bir liste kullanarak görüntülenen verileri kolay ve rahat bir şekilde elde etme özelliğini uyguladık.

Standart olmayan, "özel" bir biçimde yazdırmak için dinamik liste verilerine ihtiyacınız olabilir. Veya onlarla belirli eylemleri gerçekleştirmek için. Örneğin listeden seçtiğiniz tüm yüklenicilere belirli kriterlere göre bir mektup gönderin.

Ek olarak, kullanıcının öğe listesine ek olarak bu listeyle ilişkili özet verileri de görmek istediği bir dizi görev vardır. Örneğin, belirli bir ürün grubunun ve belirli bir tedarikçinin ürünlerini seçtikten sonra, bu tür ürünlerin toplam sayısını hemen veritabanında görmek istiyor.

Dinamik bir liste tek başına size bu bilgiyi sağlayamaz. Dinamik listenin amacı büyük miktarda verinin hızlı bir şekilde görüntülenmesini sağlamaktır. Bu nedenle, bir veya iki ekranda görüntülenmesi gereken verileri parçalar halinde okur. Ve örneğin sayması gereken toplam veri miktarı hakkında "hiçbir şey bilmiyor".

Genel olarak kullanıcının istediği ek bilgileri elde etmek için bir veritabanı sorgusu çalıştırmanız gerekir. Dinamik listede kullanılanla tamamen aynı.

Eskiden bunu yapabiliyordun. Ama bu her zaman kolay değildi. Sonuçta, dinamik listenin üzerinde çalıştığı orijinal istek metnine ek olarak, kullanıcının verileri görüntüleyen tabloda etkileşimli olarak ayarladığı tüm seçimleri, sıralamaları ve diğer parametreleri bilmeniz gerekiyordu.

Artık bu sorun basit bir şekilde çözülebilir. Dinamik liste tablosunun artık iki yeni yöntemi var:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Böylece, kullanıcının listeyi tam olarak bu şekilde görmesi sayesinde veri düzeni şemasının kendisini ve en önemlisi tüm ayarlarını elde edersiniz. Tek yapmanız gereken, düzeni programlı olarak oluşturmak ve onu bir değerler koleksiyonunda (program işleme için) veya bir elektronik tablo belgesinde (görüntülemek için) görüntülemektir:

Sonuç olarak, dinamik liste tablosunda görüntülenen sütunları ve satırları içeren bir yapı (veya rapor) alacaksınız.

Önemli olan, dinamik liste tablosundan aldığınız düzen ve ayarların, diğer şeylerin yanı sıra, sütunların görünürlüğünü ve uygulanan aramayı dikkate almasıdır. Ayarlar ayrı olarak elde edildiğinden, alanların kompozisyonunu kendi amaçlarınıza göre değiştirebilir ve örneğin yalnızca kullanıcının görebildiği sütunları değil, listenin tüm sütunlarını alabilirsiniz.

Bir elektronik tablo belgesine çıktı verirken hoş bir an daha var. Genel olarak raporun görünümü, şema ve ayarların alındığı andaki dinamik liste tablosunun görünümüne karşılık gelecektir. Tablonun koşullu tasarımı dahil. Yalnızca formun koşullu tasarımını rapora aktarmak istiyorsanız bazı ek işlemlere ihtiyacınız olacaktır.