1c dinamik listesi, dize değerinin nasıl alınacağını. Dinamik liste verilerini alma

1c dinamik listesi, dize değerinin nasıl alınacağını. Dinamik liste verilerini alma

Konfigürasyonları tamamlama sürecinde, her 1C programcısı dinamik listelerle karşılaşır.
Dinamik liste, çeşitli veritabanı nesneleri listelerini veya nesne olmayan verileri - kayıt girişlerini görüntülemek için kullanılan bir arabirim nesnesidir.
Örneğin, bir öğe listesini görüntülemek için bir dinamik liste kullanılır:

Dinamik bir listenin olanaklarını göstermek için harici bir işleme oluşturalım, ana formu ekleyelim. Forma "Dynamic List" tipi ile yeni bir özellik ekleyelim. Özelliklerine gidelim ve orada ne olduğunu görelim.
"Özel istek" özelliğiyle ilgileniyoruz. Etkinleştirilmesi, bize dinamik bir listenin tüm olanaklarını gösterecektir. 1C: Enterprise sisteminin sorgulama dilinin hemen hemen tüm özelliklerini kullanarak sorgu yazabileceğiz. Kutuyu işaretleyin ve "Aç" bağlantısını tıklayın:

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


Ana tablo olarak "Dizin. Adlandırma" yı seçeceğiz, bu, adlandırma listesinde olduğu gibi dinamik listeyle çalışmamıza izin verecektir - dizinin öğelerini ekleyin, değiştirin, silmek için işaretleyin. Ayrıca, ana tablonun ayarlanması, dinamik veri okuma olasılığını mümkün kılar - bu, seçimin gerektiği gibi kısımlar halinde yapılacağı anlamına gelir.
Ardından, listemiz için form öğeleri oluşturmamız gerekiyor:

İşlemimizi bu formda çalıştırmaya çalışırsak bir hata alırız:


Bunu ortadan kaldırmak için "Dönem" parametresinin değerini ayarlamanız gerekir. Bunu yapmak için, dinamik listenin "Parameters" koleksiyonunun "SetParameterValue" yöntemini kullanabilirsiniz. Yöntem iki parametre alır:
. "Parametre" - Tür: Dize; DataCompositionParameter. Değeri ayarlanacak parametrenin veya veri oluşturma parametresinin adı;
. "Değer" - Tür: Keyfi. Ayarlanacak değer.
Formun "OnCreateOnServer" işleyicisinde çağrılabilir:

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


Kullanıcıya bakiye alma dönemini değiştirme yeteneği verelim. Bunu yapmak için, özniteliği ve bununla ilişkili "Tarih" form öğesini ekleyelim:


"Date" form öğesinin "OnChange" işleyicisinde, ilişkili özniteliğin değerini değer olarak ileterek "SetParameterValue" yöntemini çağırın. Benzer şekilde formun "On CreationAtServer" prosedürünü de değiştireceğiz. Yöntem istemcide mevcut olduğundan, sunucuyu çağırmaya gerek yoktur:


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




Kullanıcıların cari bakiyeleri veya öngörülen makbuzları görmek istediğini varsayalım. Uygulama seçeneklerinden birini ele alalım. Bir Boole formu özelliği ve ilişkili bir radyo düğmesi ekleyelim:


Anahtarın değerini değiştirirken, istek metnini değiştireceğiz. Bunu yapmak için "DisplayQuantityToReceipt" form öğesinin "OnChange" olay işleyicisini kullanacağız. Dinamik listenin "QueryText" özelliğini, niteliğin değerine bağlı olarak değiştirmemiz gerekiyor. Çünkü verilen mülk istemcide mevcut değilse, bir sunucu prosedür çağrısı gereklidir:


Yapılan değişikliklerin sonucu:



Anasayfa Aynadan Notlar

21.04.2014 Dinamik liste verileri alınıyor

8.3.6.1977 sürümünde uygulandı.

Dinamik bir liste kullanılarak görüntülenen verileri kolay ve rahat bir şekilde elde etme becerisini hayata geçirdik.

Standart dışı, "belirli" 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, bazı kriterlere göre listede seçtiğiniz tüm karşı taraflara 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, bazı malları seçerek emtia grubu ve bazı tedarikçiler, veritabanındaki bu tür malların toplam sayısını hemen görmek istiyor.

Dinamik listenin kendisi size bu bilgiyi sağlayamaz. Dinamik bir listenin amacı, hızlı Görünüm büyük miktarda veri. Bu nedenle, bir veya iki ekranda görüntülenmesi gereken verileri parçalar halinde okur. Ve örneğin okuması gereken toplam veri miktarı hakkında "hiçbir şey bilmiyor".

Genel olarak, elde etmek için Ek Bilgiler kullanıcının istediği veritabanını sorgulamanız gerekir. Dinamik listede kullanılanla tamamen aynı.

Daha önce yapabilirdin. Ama her zaman kolay değildi. Sonuçta, dinamik listenin çalıştığı orijinal sorgu 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.

Şimdi bu görev kolayca çözüldü. Dinamik liste tablosunun iki yeni yöntemi vardır:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Böylece, kullanıcının listeyi tam olarak olduğu gibi görmesi sayesinde veri oluşturma şemasının kendisini ve en önemlisi tüm ayarlarını elde edersiniz. Tek yapmanız gereken, düzeni programlı olarak düzenlemek ve onu bir değerler koleksiyonuna (programatik işleme için) veya elektronik tablo belgesi(göstermek):

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

Ö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ı hesaba katmasıdır. Ayarlar ayrı olarak elde edildiğinden, alanların bileşimini kendi amaçlarınız için değiştirebilir ve örneğin yalnızca kullanıcının görebildiğini değil, listenin tüm sütunlarını alabilirsiniz.

Bir elektronik tablo belgesine çıktı alırken, başka bir güzel an vardır. Genel olarak, raporun görünümü şuna karşılık gelir: dış görünüşşema ve ayarların alındığı sırada dinamik liste tabloları. Tablonun koşullu tasarımı dahil. Yalnızca formun koşullu tasarımını rapora da aktarmak istiyorsanız bazı ek işlemlere ihtiyacınız olacaktır.

1C:Enterprise 8.2 platformu, bir veritabanı tablosundaki birden çok kayıtla dinamik bir şekilde çalışabilir, yani verileri parçalar halinde okuyabilir. Makalelerin başlarında, dinamik listelerin mekanizmasını ve bunlarla çalışmayı optimize etme yöntemlerini ele aldık.

Bugün dinamik listeler için standart olmayan bir sorunu çözeceğiz."Miktar" belge özniteliği için toplamı hesaplamamız ve bunu listenin altbilgisinde göstermemiz gerekecek. Benzer şekilde, "Derecelendirme" alanı için ortalama değeri hesaplayın ve dinamik listenin alt bilgisinde de görüntüleyin. Toplam alanların hesaplanması, seçimi dikkate almalıdır, kullanıcı seti belge listesi ayarlarında.

Tüm zorluk, dinamik listenin tüm kayıtları bir kerede almaması, ancak bölümler halinde alması gerçeğinde yatmaktadır. Buna göre, geçerli seçime karşılık gelen tüm belgeler için toplamı hemen alamayız. Toplam nasıl hesaplanır?

uygulama

Ve böylece, sorunu çözmeye geçelim. Formu değiştirmekle başlayalım, ardından nihai değerleri elde etmek için algoritmayı açıklayacağız.

Form ve arayüz

İlk olarak, son alanları görüntülemek için bir belge formu hazırlayalım. Bunu yapmak için, "Derecelendirme" ve "Miktar" biçiminde iki dize niteliği ekleyelim.

Bu ayrıntılar, belgeler için toplam değerleri içerecektir.

Öznitelik değerlerini dinamik bir listenin altbilgisinde görüntülemek için, ilgili liste formu öğesinin ilgili seçeneğini etkinleştirmeniz gerekir (aşağıdaki ekran görüntüsüne bakın).

Şimdi, listenin alt bilgisinde sonuçların hangi etkinlikte güncelleneceğine karar vermeniz gerekiyor. Geliştirme kolaylığı için, "Güncelle" komutunu ve ilgili form öğesini komut paneline ekleyelim. Bu komut yürütüldüğünde, toplamlar güncellenecektir.

İÇİNDE test yapılandırması Yazının sonundaki linkten indirebileceğiniz , döküman yazarken totals update olayını da ekledim. Bu, form bildirim mekanizmasını kullanır. Bunun üzerinde daha ayrıntılı olarak durmayacağız.

algoritma

En sorunlu kısım kalır - toplamların değerlerini almanız gerekir. Şu şekilde ilerleyelim: dinamik listedeki seçim kümesine göre son alanların değerlerini elde etmek için bir veritabanı sorgusu oluşturacağız. Seçimde gruplardan karmaşık bir durum olabileceği akılda tutulmalıdır.

Not: Dinamik liste ayarları (yukarıdaki ekran görüntüsüne bakın), veri birleştirme sisteminin (ACS) mekanizmalarını temel alır. Buna göre onlarla benzer şekilde çalışabilirsiniz (programlı olarak ekleme, değiştirme, okuma vb.).

Sonuçları almak için bir sorgu oluşturma adımları aşağıdaki gibidir:

1. Dinamik liste için ilk talebi alın.

Gördüğümüz gibi, istek belgenin tüm ayrıntılarını seçiyor. Biraz karışıklık olsun diye, "CHOICE" yapısından oluşan kendi alanım olan "LevelRating"i ekledim.

2. Talep koşullarının metnini ("NEREDE" bölümü) oluşturuyoruz ve orijinal talebin yerine koyuyoruz.

Dinamik listenin yapılandırılmış seçimine göre isteğin alınan kaynak metnine koşullar eklememiz gerekiyor.

Prosedür, geçirilen filtre öğesinin (grup veya filtre öğesi) türüne bağlı olarak, koşulun uygun metnini üretir. Gruptaki tüm koşullar parantez içinde çerçevelenmiştir, grubun üyeleri de çerçeve içindedir. parantez. İfadeler arasındaki koşullar, üst gruba bağlıdır ("VE" koşulu, hiyerarşide en üstteki öğeler arasına yerleştirilir).

Öğenin bir kullanım bayrağı ("Kullanım" özelliği) varsa, öğe işlenir. Oluşturulan metin aynı zamanda karşılaştırma koşuluna da bağlıdır (Eşit, eşit değil, listede vb.). Oluşturulan koşul metninin karşılaştırma türüne bağımlılığı aşağıdaki fonksiyonda görülebilir.

Bence bir başka ilginç işlev de "GetFieldTextOnView". Alanları, sorgu dilinin ifadeleriyle oluşturulan sorgu koşullarına değiştirmek için gereklidir. Yukarıda, orijinal talebe "LevelRating" alanını ekledim. Kullanıcı bunu seçimde kullanacaksa, ifadenin tamamı sorgu koşuluyla değiştirilmelidir. Bu işlev alanın metnini temsili ile istekten alır. Bu tür karmaşık alanlar için ifadenin tüm metnini döndürür.

Algoritma hakkında daha fazla ayrıntı için makaleye ekli test yapılandırmasına bakın. Aşağıda, seçim ayarlarının ve bunlar için oluşturulan sorgu koşullarının ekran görüntüsü bulunmaktadır.

Oluşturulan koşul metni, orijinal dinamik liste isteğine eklenir. Sorgu sonucu geçici bir tabloya yerleştirilir.

3. İlk sorguyu geçici bir tabloya yerleştiriyoruz ve gerekli toplama işlevleriyle özet alanlarına göre gruplandırma yapıyoruz.

"Puan" alanı için ortalama değeri, "Miktar" alanı için toplam tutarı almamız gerektiğini hatırlatalım. Seçimleri dikkate alarak zaten bir sorgu oluşturduk, geriye toplam değerleri hesaplamak kalıyor. Bu, aşağıdaki sorgu ile yapılır:

Talebi yürüttükten sonra sonucu işliyoruz, müşteriye geri gönderiyoruz ve daha önce oluşturduğumuz form detaylarına yazıyoruz. Sonuç olarak, dinamik listenin alt bilgisinde toplamların görüntüsünü aldık (makale için ilk ekran görüntüsüne bakın).

Çözüm optimalliği

Genel olarak, bu yaklaşım performansı olumsuz etkileyebilir. Örneğin, program dinamik listede yerleşik seçim olmadan toplamı hesaplayacaksa, seçilen kayıtların sayısı çok büyük olabilir (örneğin, birkaç yıl boyunca). Sonuç olarak, sonuçların her güncellemesi onlarca (!!!) saniye sürebilir. Bu nedenle, yalnızca bir seçim yapılmışsa toplamları hesaplamak mantıklıdır. Bu koşulu test yapılandırmasında belirledim.

Artı, sonuçların hesaplanması, yalnızca sunucu tarafında istekte bulunabiliriz. Bu nedenle, toplamları güncelleme prosedürü çok sık gerçekleştirilebildiğinden, sunucuya yapılan isteğe ciddi şekilde yaklaşmanız gerekir. Bir ticaret organizasyonunda, dakikada en fazla 5 çekin ve saatte en fazla 300 çekin girilebildiği bir KKM çek kaydı düşünün. Belge yazıldıktan sonra her defasında, toplamlar güncellemesi çağrılır. Bu nedenle, bağlam dışı prosedürler kullanarak iletilen trafiği azaltmak mantıklı olacaktır.

Aşağıdaki ekran görüntüsü, toplamları döndüren bağlam dışı bir sunucu işlevini çağırmak için program kodunu gösterir.

Birinci parametre bir dinamik liste seçimi, ikincisi ise "FilterFieldNameFilterFieldValueType" tipinin yapısıdır. İşlevdeki ilk parametrenin bağımsız bir değer olarak alındığını unutmayın. Nedenini tam olarak söyleyemem ama seçimi link olarak iletirseniz platform seçim değiştirilemez hatası veriyor. Hata ancak bu şekilde atlatılabilir.->

Not: Bağlam dışı yordamların kullanılması, iletilen trafik miktarını birkaç kez azaltmanıza olanak tanır, çünkü bağlam sunucusu yordamlarının aksine ("&AtServer" yönergesi), form verileri sunucuya iletilmez.

Çözüm

Sonuç olarak, dinamik bir listedeki toplamları hesaplamak için böyle bir yaklaşımın geliştirme metodolojisi açısından yanlış olduğunu söyleyeceğim. Kayıtlarda bir toplam almak doğru olacaktır. Örneğin çek defterinde yine cari kasadaki para miktarını ya belgelere göre ya da karşılık gelen birikim defterine göre alabiliriz.

Artı, birikim kayıtlarının kullanılması, seçimi dikkate almadan toplamları hesaplamanıza olanak tanır, çünkü sistem geçmiş aylar için önceden hesaplanmış toplamlarla en iyi şekilde çalışır.

Ancak problem çözerken yazıda anlatılan yöntem devreye giriyor.

İndirilenler:

Yazdır (Ctrl+P)

dinamik liste

1. Genel bilgiler

Dinamik liste, bir formdaki veritabanı tablolarından rasgele bilgileri görüntülemenize izin veren özel bir veri türüdür. Bunu yapmak için, görüntülemek istediğiniz tabloyu, verileri belirtmeniz veya sorgu dilinde ortaya çıkan seçimi açıklamanız gerekir.
Mekanizma, bir veri kompozisyon sistemine dayalıdır ve alınan verilerin sıralanması, seçilmesi, aranması, gruplandırılması ve koşullu işlenmesi için seçenekler sunar. Bu durumda veri kaynağı, sistem tarafından otomatik olarak üretilen (belirtilen verilere dayalı olarak) veya geliştirici tarafından manuel olarak yazılan bir istektir.

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

türünde bir form özniteliği oluştururken Dinamik Liste Geliştirici, verileri sorgulamak için iki yol seçebilir:
● Ana tabloyu belirterek – bu durumda, veri almak istediğiniz tabloyu (Ana tablo özelliği) belirtmeniz yeterlidir ve sistem otomatik olarak verilere bir sorgu oluşturur (bkz. .1).
● Bir isteğin manuel olarak oluşturulması – bunu yapmak 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 bir talebin manuel olarak oluşturulması mümkün olacaktır.
Bir sorgu ile birden çok tablodan veri seçebilir, böylece bir birincil tablo belirleyebilirsiniz. Bu, dinamik listenin hangi verilerin birincil ve hangilerinin ikincil olduğunu belirleyebilmesi ve bilgileri doğru bir şekilde seçip görüntüleyebilmesinin yanı sıra standart komutlar sağlayabilmesi için gereklidir. Ancak, sorguda ana tabloyu belirlemek mümkün değilse, o zaman atlanabilir, ancak sonra
dinamik liste, temel alınan tabloyla ilgili komutlar sağlamaz. Ayrıca bu durumda (ana tablo belirtilmeden), dinamik bir liste ile veri elde etme verimliliği önemli ölçüde azalacaktır.
Performansı artırmak için, isteğe bağlı bir sorguda yalnızca ek verileri almak için kullanılan tüm birleştirmelerin, bir veri oluşturma sistemi sorgulama dili uzantısı kullanılarak isteğe bağlı hale getirilmesi önerilir.
Formun ana özelliği olan dinamik bir liste için form parametresini kullanarak seçim değerlerini ayarlamak mümkündür. seçim. Bunu yapmak için, parametrede bulunan yapının özelliğinin adının olması gerekir. seçim,
dinamik liste seçim alanının adıyla eşleşti. Bu durumda, yapı özelliğinin değeri, seçim öğesinin doğru değeri olarak ayarlanacaktır. Dinamik liste formu Seçim parametresinin bir öğesinin değeri olarak bir dizi, sabit bir dizi veya bir değerler listesi geçirilirse, seçime doğru değerde olan Listede seçeneği olan bir koşul eklenir. değerler listesi yerleştirilir (dizi ve sabit dizinin dönüştürüldüğü).
Dinamik bir listedeki isteğe bağlı bir sorgu, bir alanın değerini oluşturmak için bir parametrenin kullanıldığı bir sorgu olabilir, örneğin:

SEÇMEK
SEÇENEK
WHEN Teslimat.Faktörü = 1 SONRA &Sunum
BAŞKA Teslimat. katsayı
END AS Katsayısı
İTİBAREN

Bu durumda, parametre değer tipi nesne öznitelik tipinden farklıysa (örneğin, aksesuarlar1 tipi var Sayı, ve parametrenin değeri türdür Astar), ardından alanı doğru şekilde görüntülemek için parametre değerini açıkça istenen türe çevirmelisiniz:

SEÇMEK
SEÇENEK
WHEN Teslimat.Faktörü = 1 SONRA İFADE(&Gösterim AS Dizge(100)) BAŞKA Teslimat. katsayı
END AS Katsayısı
İTİBAREN
Document.DeliveryProducts AS Teslimat

Filtrenin ayarlandığı alan işlevsel seçenekler kullanılarak devre dışı bırakılırsa, filtre değeri form parametreleri veya seçim parametresi bağlantıları olarak geçse bile bu alandaki filtre ayarlanmaz.
Dinamik veri okuma özelliği kullanılarak, verileri küçük bölümler halinde okuması gereken bir dinamik liste belirtilir.
(dinamik bir listeden nasıl veri alınacağı ve verilerin nasıl önbelleğe alınacağı hakkında daha fazla bilgi için aşağıya bakın). Bu özellikten bağımsız olarak, aşağıdaki koşullar geçerlidir:

● Görünüm modu hiyerarşik liste olarak ayarlanmışsa, yalnızca geçerli grubun verileri ve tüm üst öğelerin (alt öğe yok) verileri okunacaktır.
● Ağaç görünümü modu ayarlanmışsa, yalnızca açık ağaç düğümlerinin verileri okunacaktır.
● Hiyerarşik bir görünüm ayarlandığında (Görüntüleme özelliği Ağaç olarak ayarlandığında) ve ilk ağaç görünümü Tüm Düzeyleri Genişlet olarak ayarlandığında, dinamik liste verilerinin tek seferlik yüklenmesi desteklenmez. Veri almak için, görüntülenen listedeki düğüm sayısı kadar sunucuya istek yapılacaktır.
Tek bir veri toplamada, bir dinamik liste önceden oluşturulmuş geçici tabloları aşağıdaki koşullara tabi olarak yeniden kullanır:
● Liste toplu sorgusunda ana toplu sorgudan sonra sorgu yok.
● Toplu sorgunun önceki yürütülmesinden bu yana geçici tabloların ve alanlarının bileşimi değişmedi.

Çalışmasında dinamik liste, meta veri nesnelerinin niteliklerinin aşağıdaki özelliklerinin değerlerini kullanır:
● biçim,
● düzenleme biçimi,
● ipucu,
● negatif değerleri vurgulama işareti,
● maske,
● çok satırlı modun işareti,
● gelişmiş düzenleme işareti,
● şifre modu.
Veri birleştirme 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 listede bir filtre ayarlarken, dinamik liste için görüntüleme modu Hiyerarşik Liste veya Ağaç ise filtrenin grupları etkilemediğini unutmayın. "Gruplar" ile, ThisGroup özelliğinin True olarak ayarlandığı bir referans kitabının veya özellik türleri planının bir öğesi kastedilmektedir.
Sahip, Üst, Tarih, Dönem ve ThisGroup standart özniteliklerine dinamik liste tarafından otomatik olarak uygulanan filtreler uygulanır
standart araçlar veri kompozisyon sistemleri. Anahtar alanlara dinamik bir liste tarafından otomatik olarak uygulanan filtreler, hem standart veri birleştirme sistemi aracılığıyla hem de doğrudan sorgu metnine bir koşul ekleyerek uygulanabilir. İÇİNDE ana tablonun alanlarında. Filtrelerin yerleşim araçları tarafından kullanılması sonucunda hem iç içe geçmiş sorgularda hem de sanal tablo parametrelerinde uygulanabilir.

Dinamik listeler geliştirirken, tüm dinamik listeleri özel sorgularla test etmek iyi bir fikirdir. Doğrulama işlemi sırasında, liste sorgusu iç içe geçmiş sorgular veya sanal tablolar içeriyorsa ve takma adlara sahip alanlar Sahip, Üst, Tarih, Dönem, BuGroup veya anahtar alanlarının standart özniteliklerinin takma adlarıyla eşleşen seçim için uygun olduğundan emin olmalısınız. o zaman bu alanlar, aynı takma ada sahip oldukları standart özniteliklerle eşleşecek şekilde geçerlidir. Durum böyle değilse, isteği eşleşecek şekilde değiştirmelisiniz veya
takma ad farklıdır.
Manuel sorgu oluşturma seçilirse, sorguya bazı kısıtlamalar getirilir:
● Bir dinamik liste sorgusunda FIRST yan tümcesinin kullanımı desteklenmez. Kayıt sayısıyla sınırlı bir dinamik listede bir seçim kullanılması gerekiyorsa, dinamik bir liste oluşturmak için sorgu, sorgunun gerçek içeriği bir alt sorguya yerleştirilecek ve sınırlanacak şekilde yeniden çalışılmalıdır. Bu alt sorguda alınan kayıt sayısı. Alt sorgu yerine geçici bir tablo da kullanabilirsiniz.
● Filtreleme, sıralama ve gruplama desteklenmez:

  • ayrıntılara göre tabular parçalar.
  • Alanları görüntüleyin.
  • Veri Sürümü alanı.
  • PredefinedDataName alanı.
  • Alan Hesap planı tablosu türü.
  • Birikim kaydı tablosunun Hareket Türü alanı.
  • Alan TürüÖzellik türleri planı tablosunun değerleri.
  • Tip alanı Tip;
  • String tipi alan (sınırsız uzunluk).
  • BinaryData türü alanı.

● Alt Conto alanlarına göre sıralama ve gruplandırma desteklenmez<НомерСубконто>ve Subconto yazın<НомерСубконто>Tablolar HareketlerSubconto muhasebe kaydı.
● Aşağıdakileri içeren sorgu dili ifadeleri olan alanlara göre gruplama: toplama işlevleri.
● Ana tablo seçiliyken, dinamik liste sorgusu aşağıdaki sınırlamalara sahiptir:

  • Birleştirmeler desteklenmez.
  • ORDER BY bölümünün kullanımı desteklenmiyor. Ana tablosu olmayan bir sorgu kullanmalı veya dinamik liste ayarlarından gerekli sıralamayı yapmalısınız.

● Bir dinamik liste hiyerarşik bir liste veya ağaç olarak görüntüleniyorsa, bu girdinin en az bir üst öğesi görüntülenmedikçe bir girdi dinamik liste olarak görüntülenmez. Başka bir deyişle, bir öğeyi hiyerarşik bir listede görüntülemek için, dinamik liste, o öğenin tüm ebeveynlerini de listenin en üstüne kadar göstermelidir. Bu durumda, listenin en üstünde şu anlama gelir:
dinamik liste tarafından işlenen hiyerarşik nesnenin kök öğesi veya dinamik liste form tablosu uzantısının ParentTopLevel özelliği olarak ayarlanan öğe.

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

● Her tablo girişini benzersiz şekilde tanımlayan bir anahtarı olmayan bir tablo (nesne tabloları için referans ve kayıt tabloları için giriş anahtarı). Ancak, aşağıdaki tablolar bir dinamik listenin ana tablosu olarak ayarlanabilir (anahtar olmamasına rağmen):

● Muhasebe kaydının alt içerik tablosu;
● MotionsSubconto 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ı:

  • ciro tablosu;
  • denge tablosu;
  • cirolar ve bakiyeler tablosu.

● hesaplama kayıt tabloları:

  • gerçek geçerlilik süresi tablosu;
  • grafik verileri;
  • temel veri.

● Nesnelerin tablo parçalarının tabloları;
● Değişiklik kayıt tabloları (veri alışverişi mekanizmalarında kullanılır);
● Sıra tabloları;
● Dönüştürme tabloları (yinelenen yerleşim motorlarında kullanılır).
● Bir sorguda yalnızca dış birleşimde kullanılan bir tablo.

Başka bir deyişle, belirli bir ana tabloya sahip bir dinamik liste, sorgu yürütmenin bir sonucu olarak şu durumlarda doğru şekilde çalışacaktır:
veri kaynağı olarak belirtildiğinde, ana tablodan alınan satır sayısı artmaz (zorlanan seçim hesaba katılarak). Sorgu yürütme sonucunda, ana tablodan sorgu tarafından alınan satır sayısı artarsa, bu, liste tarafından görüntülenen tablonun kayıt anahtarının benzersizliğinin ihlaline yol açacaktır. Bu durumda, ana dinamik liste tablosunun kullanımını devre dışı bırakmanız gerekir.
Dinamik bir listeyle çalışırken, liste tarafından görüntülenen ayrıntılara erişim haklarının dikkate alınması gerekir:
● Her zaman kullan özelliği ile işaretlenen, ancak mevcut kullanıcının Görüntüleme hakkına sahip olmadığı dinamik liste sütunlarının verileri istemci tarafına aktarılmaz. Bu tür sütunların verilerine erişme (CurrentData özelliğini ve RowData() yöntemini kullanarak)
istemci tarafında mümkün değildir.
● Mevcut kullanıcının bir dinamik listenin bir anahtar alanında Görüntüleme hakkı yoksa, bu dinamik listeden veri almak erişim ihlali hatasına neden olur.
Numaralandırma listesi görüntüleyen bir dinamik liste için, listeyi etkileşimli olarak özelleştirmenin bir yolu yoktur.
Sütunların bileşimi ve dinamik listenin ayarları, seçim alanlarının diğer adlarıyla sorgu alanlarıyla ilişkilendirilir. Seçim alanı için takma ad sorguda 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, değiştirdiğinizde (veya otomatik takma ad kullanan bir alan için açıkça bir takma ad belirttiğinizde)
dinamik liste verilerini oluşturan sorgu alanının takma adı, dinamik liste özniteliğinin ayarları kaybolacak, form öğeleri görüntülenen öznitelikleri "kaybedecek", dinamik liste ayarları yanlış hale gelecek vb.
Bir dinamik listenin veri kaynağının, seçimi döneme göre ayarlamanıza izin veren bir tablo (normal veya sanal) olması durumunda, kullanıcı böyle bir dinamik listede görüntüleme dönemini ayarlarsa (Tarih aralığını ayarla .. . emretmek),
belirtilen dönem sınırları, seçim değerleri veya sanal tablo parametreleri olarak ayarlanacaktır. Dil uzantısı araçları ise
veri birleştirme sistemi sorguları, sanal tablonun parametrelerinin adlarını açıkça belirtti - parametreler, belirtilenlerle ayarlanacak
isimler. Verileri görüntüleme veya işleme süresini kontrol etmenin mümkün olduğu tablolar:
● döneme göre (kayıt hesaplaması için - kayıt dönemine göre) seçim olanağı bulunan kayıt tabloları (ana veya sanal);
● ana belge tabloları, iş süreçleri ve görevler;
● belge günlüklerinin ana tabloları;
● ana dizi tabloları, dizi sınırları tabloları.
Bir dinamik listenin sorgu parametresi bir dizi veya bir değerler listesi olabilir. Ancak, parametre bir değerler listesiyse, filtre değeri olarak listenin yalnızca ilk değeri kullanılacaktır. Dinamik liste, parametreler içeren bir sorgu kullanıyorsa, ilk kurulum parametre değerleri OnCreateAtServer işleyicisinde yürütülmelidir.
Dinamik liste verilerini görüntülerken şunlara dikkat edin: aşağıdaki özellikler:
● Ne zaman program değişikliği dinamik bir listenin özellikleri, bunlarla ilişkili komut çubuklarını otomatik olarak yeniden doldurmaz.
bu dinamik liste ile.
● Birkaç alan, gruplandırma moduyla bir grupta gruplanırsa Hücrede ve gruplandırılmış alanlarda bir onay kutusuyla görüntülenen bir alan vardır, bu durumda bu onay kutusu her zaman sonuçtaki hücrede ilk olarak görüntülenir (metnin solunda) ).
Dinamik bir listede, ifadeleri parametreler, alanlar veya sabit değerler içeren alanlar için veri türünü tanımlarken, elde edilen tür, alanların ve sabit değerlerin türleri tarafından belirlenir. Elde edilen veri tipine parametre değer tipi dahil edilmezse, değeri kesilecektir.
Örneğin, aşağıdaki örnekte alan, Sayı türünde olacaktır.

SEÇENEK
NE ZAMAN YANLIŞ
SONRA 5
AKSİ TAKDİRDE
&Parametre
SON

Parametre parametresine farklı türde bir değer atarsanız, bu alan için dinamik liste 0 değerini alır (Sayı türü için varsayılan değer).
Böyle bir durumda farklı türde bir parametre seçilmesi gerekiyorsa, sorgu dili yapısının kullanılması önerilir. İFADE ETMEK. Örneğin,
Yukarıdaki örnekte, parametreye 100 karakterden uzun olmayan bir dize iletmek istiyorsanız, o zaman parametrenin basit göstergesini, açık bir tür dönüşümü olan bir ifadeyle değiştirmelisiniz:

SEÇENEK
NE ZAMAN YANLIŞ
SONRA 5
AKSİ TAKDİRDE
EXPRESS(&Dize OLARAK Parametre(100))
SON

Dinamik liste sorgusunun serbest metnindeki seçim alanlarının ifadelerinde parametreler kullanılıyorsa, yapıyı kullanarak parametrelerin türünü açıkça belirtmeniz gerekir. İFADE ETMEK. Örneğin, yerine & Terminoloji AS Terminolojisi kullanmak
EXPRESS(&Dizin.Adlandırma AS Terminolojisi) Terminoloji AS. Aksi takdirde, arama çubuğunda arama yapmak işe yarayabilir.
yanlış veya fırlatma hataları.

3. Dinamik bir liste ile veri alma ve önbelleğe alma yöntemleri

Görüntülenecek verileri alırken, bir dinamik liste üç yöntemden birini kullanır:
1. Veritabanından okuma, veri öğelerinin sayısı, liste tarafından aynı anda görüntülenen satır sayısını biraz aşan (ancak 20'den az olmayan) gruplar halinde gerçekleştirilir. Veriler sunucuda önbelleğe alınmaz.
2. Veritabanından okuma, 1.000 veri öğesinin sayfalarında yapılır. Veriler sunucuda önbelleğe alınıyor. Hiyerarşik veriler önbelleğe alınır: her üst öğe için en fazla 2 öğe sayfası önbelleğe alınır. Dinamik liste başına 20'den fazla öğe sayfası önbelleğe alınmaz. Önbelleğe alma, aşağıdaki tablolar için dinamik liste tarafından etkinleştirilecektir:
● Seçim kriterleri;
● Ana tablo ve MovesSubconto tablosu dışında tüm muhasebe defteri tabloları;
● Ana tablo hariç, birikim kaydının tüm tabloları;
● Ana tablo hariç, bilgi kaydının tüm tabloları;
● Ana tablo hariç, hesaplama kaydının tüm tabloları;
● Sanal tablo TasksBy Performer;
● Anahtarsız dış kaynak tabloları;
● Harici kaynak küpleri.

3. Veritabanından okuma, 1.000 öğelik sayfalar halinde yapılır. İlk kısım 1 sayfaya eşittir. Sonraki her bölüm 1 sayfa artar (önceki örneğin sonuna ulaşıldığında). "Bakış noktası" görüntülenen verilerin sonuna ne kadar yaklaşırsa, veritabanından okunan seçim o kadar büyük olur ve sınır, görüntülenen tüm verilere eşit olur. Veriler sunucuda önbelleğe alınıyor. Önbellek ve dinamik listedeki maksimum giriş sayısı 1.000.000'dir.
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 daha fazla veri okuma yöntemi kullanılır:

● Aşağıdaki tablolardan biri Ana tablo özelliğinin değeri olarak belirtilir: değişim planı, arama, belge listesi, belge günlüğü, özellik türleri tablosu, hesap planı, hesaplama türleri tablosu, 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ı, kapatma kaydı, muhasebe kaydının sanal tablosu MovementsSubconto:

● Dinamik okuma özelliği:
● Yüklendi: Yöntem 1 kullanılır (yöntemler yukarıda açıklanmıştır).
● Sıfırla: Yöntem 2 kullanılır (yöntemler yukarıda açıklanmıştır).

● Ana tablo özelliği olarak, yürütücüye göre bir seçim ölçütü tablosu veya görevler tablosu (Yürütücü Tarafından Görevler) belirtilir:
● Bir tablo satırını tanımlayan anahtar: Bağlantı.

● Ana tablo özelliği bilgi kaydı sanal tablosu SliceFirst veya SliceLast olarak ayarlanır:
● Bir tablo satırını tanımlayan anahtar: RecordKey.
● Dinamik Okuma özelliği uygulanamaz.
● Yöntem 2 kullanılır (yöntemler yukarıda açıklanmıştır).

● Ana Tablo özelliği aşağıdakilerden birine ayarlanmış sanal tablolar yukarıda listelenenler dışındaki kayıtlar:

● Dinamik Okuma özelliği uygulanamaz.

● Ana tablo özelliği belirtilmemiş, gelişigüzel bir sorgu kullanılmış:
● Bir tablo satırını tanımlayan anahtar: Sayı.
● Dinamik Okuma özelliği uygulanamaz.
● Yöntem 3 kullanılır (yöntemler yukarıda açıklanmıştır).

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

4. Dinamik liste ayarları

Liste ayarları özelliği – Aç köprüsüne tıklandığında, dinamik liste görüntüleme ayarları formu açılır. Listenin oluşturulması, veri birleştirme sistemindeki benzer işlemlerle aynı şekilde yapılır.


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

Yapılandırmada bir dinamik liste oluştururken, uygulanan çözümün geliştiricisi aşağıdakileri yapma olanağına sahiptir:
● sıralamanın gerçekleştirileceği alanları belirleyin;
● listedeki veri seçimini tanımlayın;
● koşullu biçimlendirme ayarlarını belirtin;
● verileri gruplandırmak istediğiniz alanları ayarlayın.
Sistem tarafından ayarlanan varsayılan sıralama uygun değilse, sıralamayı geliştiriciye ayarlamak mantıklıdır.

TAVSİYE. Unutulmamalıdır ki, kötü sıralama alanları seçimi (verilerin seçimi ve gruplandırılmasının yanı sıra), dinamik örneklemenin verimliliğini olumsuz etkiler.
Bir uygulama geliştiricisinin bakış açısından, dinamik liste ayarları birbirine bağlı birkaç bölümden oluşur. Bir dinamik listenin ayarlarını kontrol edebileceğiniz ana özellik, Bağlayıcı Ayarları. Bu nesne, sistem çalışırken dinamik listeye uygulanan son ayarları belirleyen üç ayar seti içerir:
● Ayarlar - Yapılandırıcı modunda oluşturulan ayarlar. Sipariş dinamik liste özelliği şunları sağlar: hızlı erişim Settings.Order dinamik liste ayarları oluşturucu özelliğine, dolayısıyla aşağıdaki yapılar eşdeğerdir:
List.Order ve List.SettingsComposer.Settings.Order;
● UserSettings, kullanıcının 1C:Enterprise modunda değiştirebileceği ayarlardır;
● Sabit Ayarlar - Bu ayarlar yerleşik dilden yapılır. Bu özellik, parametreleri kullanılarak forma iletilen seçim değerlerini de içerir. Dinamik liste Filtresi, Parametreler, Koşullu Görünüm özellikleri, dinamik liste ayarları oluşturucunun sabit ayarlarına hızlı erişim sağlar. Başka bir deyişle, bu çağrılar eşdeğerdir:
List.SettingsComposer.FixedSettings.Filter ve List.Filter.
Dinamik listenin son ayarını oluştururken, çeşitli ayarlar aşağıdaki şekilde birleştirilir:
● Herhangi bir ayar tamamen kullanıcı tanımlı olarak işaretlenirse, kullanıcı ayarları ortaya çıkan ayarlara dahil edilir
(List.SettingsComposer.UserSettings). Bu durumda, herhangi bir ayar öğesi kullanılamıyor olarak işaretlenirse, bu ayarlar List.Settings Composer özelliğinden elde edilen ayarlara yerleştirilecektir. Ayarlar.
● Herhangi bir ayar türü tamamen kullanıcıya özel değil, öğe öğe 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) elde edilen ayarlara "olduğu gibi" eklenir. Aynı zamanda, sabit ve kullanıcı ayarları aynı ada sahip ayarlar içerdiğinde, örneğin koşulda aynı kalan değere sahip seçim yapıldığında durum kabul edilemez.

Dinamik liste ayarlarında işlevsel seçenekler kullanılarak devre dışı bırakılan ayarlar varsa, bu ayarlar listeden kaldırılacaktır. kullanılabilir ayarlar dinamik liste verilerini alırken.
Dinamik liste ayarları penceresinde hangi ayarların kullanıcıya sunulacağını ve hangilerinin gerçekleştirilmeyeceğini kontrol edin.


Pirinç. 3. Kullanıcı ayarlarında katılımı yönetme

Pencerenin altındaki onay kutusu (bkz. Şekil 3), tüm ayar türlerinin ayarlara (normal veya hızlı) yerleştirilmesinden sorumludur. Bu özellik, seçim, sıralama, gruplama ve koşullu stil için kullanılabilir. Ayarlar düzenleme modu ile belirtilmişse Hızlı seçim, ardından bir dinamik liste görüntüleyen form tablosunun Kullanıcı ayarları grubu özelliğinde, dinamik listenin hızlı kullanıcı ayarlarıyla ilişkili öğelerin yerleştirileceği boş bir form grubu belirtmeniz gerekir. Grup belirtilmezse, hızlı kullanıcı ayarları formda görüntülenmez. Dinamik liste uzantısının CreateUserSettingsFormItems() yöntemini kullanarak 1C:Enterprise dilini kullanarak kullanıcı ayarlarının oluşturulmasını açıkça çağırmak da mümkündür.
Kullanıcı ayarlarında belirli ayar öğelerini yerleştirme olasılığını seçmek de mümkündür. Bu özellik seçim ve koşullu tasarım öğeleri için mevcuttur (bkz. Şekil 3).

Dinamik bir liste açılırken herhangi bir özel ayarın yüklenmesi gerekiyorsa, bu iki şekilde yapılabilir:
● CustomSettings dinamik liste form parametresini kullanma. Bu parametrede bulunan veriler, dinamik listenin kullanıcı ayarlarına yerleştirilecektir.
● UserSettingsKey dinamik liste formu parametresini kullanma. Formu açarken bu parametreyi belirtirseniz, belirtilen anahtarla birlikte ayarlar deposunda bulunan kullanıcı ayarları, formun ana özelliği olan dinamik listeye yüklenecektir.

5. Dinamik bir listede arama yapın

Formda bulunan dinamik liste, görüntülenen verilerde etkileşimli arama yapma olanağı sağlar. Arama, aşağıdaki araçlar kullanılarak gerçekleştirilebilir: arama dizisi, arama iletişim kutusu, geçerli değeri arama, arama geçmişini kullanma ve dönemi ayarlama (belgeleri görüntüleyen dinamik listeler için). Arama sonucu, sınırlı bir kayıt kümesidir
dinamik liste (mevcut verilen kullanıcı) arama kriterleriyle eşleşen.
Dinamik bir listede arama özelliklerini kontrol etmek için üç tablo özelliği vardır. yönetilen form dinamik bir liste görüntüleyen:
● Arama dizisi konumu - arama dizisinin konumunu tanımlar. Şu değerleri alabilir: Otomatik, Komut Paneli, Hayır, Üst, Alt.


Pirinç. 4. Dinamik listede arama çubuğu

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


● Uyumluluk Modu özelliği Kullanma olarak ayarlanmışsa veya Sürüm 8.3.4'ten eskiyse, değer Komut Paneli olur.
Arama çubuğuna geçiş şu şekilde gerçekleştirilir:
● Ctrl+F tuş bileşimine basarak;
● Fare;
● Bir dinamik listeye yazmaya başladığınızda (dinamik listenin SearchOnType özelliğinin değerine göre).
● Görüntü durumu konumu - görünüm durumunun nerede görüntüleneceğini açıklar: hangi alanların arandığını ve hangi değerlerin
her alanda aranır. Şu değerleri alabilir: Otomatik, Yok, Üst, Alt


Pirinç. 5. Dinamik listede arama durumu

Özellik Hayır olarak ayarlanırsa, görünüm durumu formda bulunmayacaktır. Sonuç olarak, aramanın yapılıp yapılmadığını yalnızca Aramayı İptal Et düğmesinin kullanılabilirliği ile belirlemek mümkün olacaktır.
Özellik Üst olarak ayarlanırsa, görünüm durumu, liste komut çubuğu ile dinamik listeyi gösteren tablo arasında yer alacaktır. Özellik Alt olarak ayarlanırsa, görünüm durumu, dinamik listeyi görüntüleyen tablonun hemen sonrasına yerleştirilir.
Form 1C:Enterprise sürüm 8.3.4 ve öncesinde oluşturulmuşsa, özellik Hayır olarak ayarlanır. Form 1C:Enterprise sürüm 8.3.5 ve sonrasında oluşturulmuşsa, özellik Otomatik olarak ayarlanır. Bu durumda mülkün gerçek değeri aşağıdaki şekilde belirlenecektir:
● Uyumluluk Modu özelliği Sürüm 8.3.4 (ve altı) olarak ayarlanmışsa – Hayır;
● Uyumluluk Modu özelliği Kullanma olarak ayarlanmışsa veya Sürüm 8.3.4'ten daha eskiyse, değer Üst olur;
● Arama kontrol konumu - arama kontrol düğmesinin nerede görüntüleneceğini belirler. Düğme, aşağıdaki bilgileri içeren bir menü açar: Komutlara göre bul Mevcut değer, Gelişmiş arama, Aramayı iptal et, Dönemi ayarla (belge ve dergi listeleri için) ve arama sorgularının geçmişi (son 5 sorgu). Özellik şu değerleri alabilir: Otomatik, Hayır, Komut paneli.


Pirinç. 6. Dinamik bir listede arama yönetimi

Özellik Hayır olarak ayarlanırsa arama kontrol düğmesi formda olmaz (ancak komutlar Diğer menüsü kullanılarak kullanılabilir). Komut Çubuğu özellik değeri, dinamik bir liste 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şturulmuşsa, özellik Hayır olarak ayarlanır. Form 1C:Enterprise sürüm 8.3.5 ve sonrasında oluşturulmuşsa, özellik Otomatik olarak ayarlanır. Bu durumda mülkün gerçek değeri aşağıdaki şekilde belirlenecektir:
● Uyumluluk Modu özelliği Sürüm 8.3.4 (ve altı) olarak ayarlanmışsa – Hayır;
● Uyumluluk Modu özelliği Kullanma olarak ayarlandıysa veya Sürüm 8.3.4'ten eskiyse, değer Komut Paneli olur;
Formda, komut kaynağı yönetilen formun bir tablosu olan (dinamik liste verilerini gösteren) birkaç komut paneli varsa, arama dizesi ve arama kontrol düğmesi yalnızca bir komut panelinde bulunur:
● Veya dinamik listenin komut çubuğunda (eğer otomatik tamamlama)
● Veya kalan komut panellerinden herhangi birinde.

Dinamik bir listede arama kullanmanın özelliklerini göz önünde bulundurun:
● Aramayı kullanışlı hale getirmek için (performans açısından dahil), dinamik bir listenin ana tablosu olarak kullanılabilecek tüm yapılandırma nesneleri için tam metin aramayı etkinleştirmeniz gerekir. Ayrıca, tam metin araması, dinamik bir listede görüntülenebilen ve arama gerektirebilecek konfigürasyon nesnelerinin tüm ayrıntılarını içermelidir.
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 arama yapılması önerilmez.
● Uygulama çözümü şu özelliklere sahip olmalıdır: rutin görev tam metin arama dizinini düzenli olarak güncelleyen.

● 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.
● İsteğe bağlı gösterime sahip referans türleri alanlarına göre dinamik bir listede arama,
temsil oluşumu (buraya bakınız). Görünüme dahil edilen alanlar, karşılık gelen nesnenin ViewFieldsGetProcess() işleyicisi dikkate alınarak elde edilir.
● Belirli bir ana tabloya sahip dinamik listeler için, ana tabloya göre tam metin araması kullanılır. Ana tablodaki indekslenmemiş tüm bağlantılar, tam metin arama sonuçlarına eklenecektir. Ana tablo için tam metin aramasının sonucu, anahtar alanlara göre filtre olarak kullanılır. Diğer tablolardan alınan listede görüntülenen alanlarda da tam metin araması gerçekleştirilir (alan ve yapılandırma nesnesi için tam metin araması kullanılıyorsa). Tam metin arama etkinleştirilmeden, veriler
bulundu, ancak aramanın kendisi çok yavaş olacaktır.
Tam metin araması yapılmaya çalışılırken bir hata oluşursa, arama tam metin arama kullanılmadan gerçekleştirilecektir.
Örneğin, tek bir harf ararken bu olabilir ve Büyük bir sayı satırlar bilgi bankası bu mektupla başlayan
● Dinamik listenin ana tablo alanı için Eşit karşılaştırma türüyle seçim kullanılırsa, tam metin araması yapılırken, arama sorgusu bu tabloya göre seçim değeri eklenecektir.
● Arama dizisi kelimelere bölünmüştür. Bu bölümleme aşağıdaki kurallara göre yapılır:
● Satır, sınırlayıcı olarak boşluk ve sekme karakterleri kullanılarak bölünür.
● Sonra ortaya çıkan her parça işlenir:
● Parça, oturumun geçerli yerel ayarına dayalı bir tarihin (zamanlı veya saatsiz) temsiliyse, o zaman parça kelimedir.
● Aksi takdirde, ayırıcı olarak “,.-/\” karakterleri kullanılarak parça daha fazla bölünür. Bu durumda, dizinin sonuçtaki her parçası bir sözcük olarak alınır.

● Her kelime için, “OR ile” birleştirilen kendi koşulları oluşturulur. Bu koşullar kümesi, bu alanın elde edildiği tablodaki belirli bir sözcük için tam metin araması en az bir nesne döndürürse veya bu alan için tam metin araması kullanılmamışsa oluşturulur. Koşullar aşağıdaki gibi oluşturulur:
● String türündeki bir alan için koşul, FieldName LIKE %Word% şeklindedir.
● Number türündeki bir alan için koşul, FieldName=Value şeklindedir; burada Value, Number'a dönüştürülen bir sözcüktür. Eğer döküm yapılamıyorsa alan araması yapılmaz.
● Sözcük, geçerli oturum için tanımlanan Boole türünün varsayılan gösteriminde bir alt dize olarak aranır. Aranan kelime bir görünümde bulunursa, kelimenin bulunduğu görünüme karşılık gelen değer için bir arama yapılır. Aynı zamanda, Form elemanını biçimlendir özelliği kullanılarak belirtilen görünümler arama için kullanılmaz.
● Bir Tarih türü alanı için koşul şu şekildedir: FieldName>=DayStart(Word) AND FieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
bir veya iki basamakla belirtilirse, yıl içinde bulunulan yüzyıla dönüştürülecek ve bu değer arama koşuluyla değiştirilecektir.
● Referans alanlar için, bağlantının gösterimini oluşturmak için kullanılan alanlar üzerinde arama yapılır. Bu alanların her birinde arama
yukarıda açıklanan kurallara göre yapılır. Arama, keyfi bir veri sunumu oluşturmak için kullanılan alanları kullanmaz.
Her sözcük için koşul kümesi "VE" ile birleştirilir.
● Başında sıfır olan değerler için, başında sıfır olan bir dizide veya başında sıfır olmadan belirtilen bir dizide arama yapabilirsiniz.
● Dinamik liste bir belge listesi veya bir belge geçmişi görüntülerse, gerekli dinamik liste için görüntüleme durumunu görüntülemeye ayrılmış form alanında belirtilen liste görüntüleme aralığı da görüntülenir.
● Dinamik listenin ana tablosu bir seçim kriteriyse, geçerli değere göre arama komutu kullanılamaz.
● Bulunan çizgi parçaları, tabloda gösterildiğinde vurgulanır.
● Sütun başına yalnızca bir arama dizesi desteklenir. Halihazırda aranmakta olan bir sütun için yeni bir arama terimi eklemek, iki arama terimini eklemek yerine arama ifadesinin yerini alacaktır.
● Formda formun bir form öğesi eklentisi yoksa Dinamik bir liste görüntüleyen bir tabloyla (form öğesi eklentisinin Source özelliği) ilişkili bir arama dizesi görüntüleyin ve ardından Ctrl+F tuş bileşimine basın arama iletişim kutusunu açar.


Pirinç. 7. Arama iletişim kutusu

Formda, dinamik bir liste görüntüleyen bir tabloyla (form öğesi eklentisinin Kaynak özelliği) ilişkili bir arama dizesinin görüntülenmesi formunun bir form öğesi eklentisi varsa, açmak için Gelişmiş arama komutu kullanılmalıdır. arama iletişim kutusu.
● Arama iletişim kutusunu kullanırken aşağıdaki noktaları aklınızda bulundurun:
● Arama iletişim kutusunu klavye kısayoluyla açmak, geçerli hücrenin değerinin Ne aranacak satırında görünmesine neden olur ve Nasıl aranır radyo düğmesinin değeri Tam eşleşme olarak ayarlanır.

● Dinamik bir listede doğrudan bir arama dizesi yazmaya başlayarak bir arama iletişim kutusu açmak, Nasıl arama yapılır radyo düğmesinin değerinin Bir dizenin parçası olarak ayarlanmasına ve yazılan metnin Ne aranmalı alanına girmesine neden olur.

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

Dinamik listeleri kullanırken, uygulanan filtreleri ve uygulanan aramayı 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 bir elektronik tablo belgesinin yazdırılması veya kaydedilmesi için mevcut nesnelerin bir listesinin oluşturulması (tasarımlı vb.).
Dinamik bir listede görüntülenen verileri almak için GetDataCompositionSchemeExecutable() işlevini kullanın ve
GetDataCompositionSettingsExecutable().
Veri alma örneği:

Şema = Items.List.GetExecutableDataCompositionSchema();
Ayarlar = Items.List.GetDataCompositionSettingsExecutable();
Düzen Düzeni Oluşturucusu = Yeni Veri Düzeni Düzeni Oluşturucusu();
LayoutLayout = LayoutComposer.Run(Şema, Ayarlar);
Kompozisyon İşlemcisi = NewDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Yeni OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;
OutputProcessor.Output(CompositionProcessor);

Verileri bir değerler koleksiyonuna (tablo veya değerler listesi) almak da benzer şekilde yapılır.
Dinamik bir listeden bu şekilde veri almanın, uygulama çözümleri geliştirirken dikkate alınması gereken bir dizi özelliği vardır:
● Aşağıdaki tablo tasarımı desteklenmez:
● Çizgi rengi değişimi;
● Başlık resmi;
● bodrum resmi;
● Bodrum arka plan rengi;
● Alt bilgi metin rengi;
● Alt bilgi yazı tipi;
● Bodrumda yatay konum;
● Şifre modu.
● Yönetilen form için belirtilen koşullu görünüm desteklenmiyor;
● Hiyerarşik bir tabloyu Bağlantı türündeki bir alana göre artan düzende sıralarken, boş bağlantı içeren kayıtlar her zaman ilk sırada yer alır.