Ev / internet / 1s 8 dinamik listeden oluşturma. Dinamik liste ayarları

1s 8 dinamik listeden oluşturma. Dinamik liste ayarları

Sonunda, herhangi bir "yedi oyuncu" rüyası gerçek oldu. 7.7 programı kullanıcılarının ne sıklıkta normal bir öğe seçimi yapmaları istendi. Böylece bakiyeleri, fiyatları ve set filtrelerini görebilirsiniz. Harici bileşenler yazmaya kadar çeşitli numaralar bulmam gerekiyordu. 1C 8.2'de dinamik listeler ortaya çıktı. 1C 8.3'te ne olduğunu ve bize ne verebileceklerini düşünmeyi öneriyorum.

Bazılarını temel alalım test yapılandırması 1C: "Kurumsal muhasebe 3.0". Şimdi bir seçim yapmayacağız, sadece "Adlandırma" referans kitabına başka bir seçim formu ekleyin ve onu geçici olarak ana form yapın:

Oluşturulduğunda, sistem varsayılan olarak forma "Dinamik liste" tipinde bir tablo alanı ekleyecektir.

Özelliklerine gidelim ve orada ne olduğunu görelim.

Her şeyden önce, "Keyfi istek" onay kutusuyla ilgileniyoruz. Dinamik bir listenin tüm avantajlarını bize gösterecek olan odur. Kendi sorgumuzu ve parametrelerle yazma şansımız olacak. Kutuyu işaretleyin ve "Aç" bağlantısını tıklayın:

için hazır bir kod içeren bir pencere açılacaktır. Şimdiye kadar, "Adlandırma" dizininin tüm alanları burada basitçe listelenmiştir.

267 1C video derslerini ücretsiz alın:

Gördüğünüz gibi, bir "" çağrı düğmesi ve listenin içeriğini dinamik olarak değiştirmenize izin veren bir onay kutusu var. Yani başka bir kullanıcı dizinde bir şeyi değiştirdiğinde, listemizde de değişecektir. Ayrıca Ayarlar sekmesi var ama buna daha sonra değineceğiz.

Dinamik listede özel sorgu

Öncelikle bakiyeler ve fiyatlar ile ihtiyacımız olan sorguyu oluşturalım. Aşağı yukarı şöyle:

Ayarlar sekmesi

Ve şimdi en lezzetlisi! "Ayarlar" sekmesine gidin. Ve ilk sekmede istekteki herhangi bir alan için herhangi bir seçim yapabileceğimizi hemen görüyoruz:

Dinamik bir listede sorgu parametrelerini programlı olarak ayarlama 1C 8.3

İstekte iki parametremiz olduğunu unutmayın: "Dönem" ve "Fiyat türü". Bunları isteğe iletmeliyiz, aksi takdirde bir hata olacaktır.

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

&OnServerProcedure OnCreateOnServer(Hata, StandardProcessing) Listesi. parametreler. SetParameterValue("Period", Parametreler. Tarih) ; Liste. parametreler. SetParameterValue("PriceType" , Parameters.PriceType) ; İşlem Sonu

Herhangi bir programlama dilinde bulunabilen ilkel veri tiplerine ek olarak, 1C'de benzersiz tipler vardır. Her birinin sistemde kendi özellikleri, yöntemleri, işlevleri, amacı ve kullanım nüansları vardır. Bu türlerden biri, uygulanan birçok görevi büyük ölçüde basitleştiren dinamik bir listedir. Bu nedenle geliştiricilerin bu çok yönlü aracı bilmeleri ve kullanabilmeleri gerekir.

1C'deki dinamik listelerin özellikleri

Bu türün amacı, türünden bağımsız olarak herhangi bir veritabanı tablosundaki bilgileri görüntülemektir. Mekanizma SKD temelinde oluşturulmuştur ve benzer yeteneklere sahiptir. Ancak bu, 1C dilinde kesinlikle bir sorgu yazmak zorunda kalacağınız anlamına gelmez, ancak bu olasılık var ve kullanmanız gerekiyor. Tabloyu, ilgilendiğiniz bilgileri basitçe belirtebilirsiniz ve 1C bağımsız olarak basit bir sorgu oluşturacaktır.

Dinamik bir listenin nasıl oluşturulduğunu ve hangi verileri gösterdiğini görmek için, yapılandırıcıda bulunduğu yönetilen formları açmanız gerekir: ayrıntılar listesinde aracılığıyla bağlam menüsüözelliklerini açın ve "Keyfi İstek" maddesine dikkat edin. Onay kutusu yoksa, "Ana tablo" parametresi verilerin alındığı veritabanı tablosunu yansıtır. Aksi takdirde, dinamik liste, liste kurulumunun açılmasıyla görülebilen özel sorgu verilerini yansıtır.

Çok çeşitli verileri birleştirmek ve görüntülemek için harika bir fırsat sağladığından, rastgele bir sorgu şeması çok daha yaygın olarak kullanılır. Çoğu zaman, bu mekanizma stok bakiyelerini, ürün fiyatlarını, geliri, giderleri veya satın alımları yansıtmak için kullanılır. Karmaşık sorgularda performans düşebileceğinden dikkatli kullanmanız gerekir.

Dinamik listenin bir başka kullanışlı özelliği de "Liste ayarları" yazısına tıklanarak açılır. Bu menü, standart bir alan seti kullanıldığında bile, bilgileri son kullanıcılar için daha erişilebilir ve anlaşılır hale getirmeyi sağlar. İsteğe bağlı bir istek olsun ya da olmasın, şunları belirtebileceğiniz bir "Ayarlar" sekmesi göreceksiniz:

  • Dinamik liste seçimi;
  • gruplamalar;
  • sıralama;
  • Kayıt.

Parametrelerin kullanımı dinamik listeleri çok yönlü ve yeterince esnek hale getirir. Bunları ayrıca yönetilen bir formdaki aksesuarlara bağlayabilirsiniz ve veriler, kullanıcı tarafından seçilen seçeneklere bağlı olarak değişecektir. Bu mekanizmaların kullanımı, gerçek dünyadaki problemlerin örneklerine bakılarak anlaşılabilir ve takdir edilebilir.

Örnek olarak, terminolojinin kalıntılarını yönetilen bir forma yansıtma sorununu ele alalım. Gerçek uygulamada, bu tür siparişler çeşitli konfigürasyonlarda oldukça yaygındır ve dinamik liste bir araç olarak idealdir. Bu görev için rastgele bir sorgu, dinamik liste parametreleri ve ayarları kullanmamız gerekecek.

Daha fazla netlik için ayrı bir harici işleme ve üzerine dinamik bir liste yerleştirin. Planlarımızı uygulamak için isimlendirme tablosu yeterli olmayacak, bu yüzden keyfi bir isteğe izin vermemiz gerekiyor. İçinde, referans kitabının sol bağlantısını isimlendirme listesi ve kalıntı kaydı ile açıklayacağız ve referans kitabını ana tablo olarak ayarlayacağız. Böyle bir şema, kullanıcıların dinamik bir listeyle çalışırken isimlendirmeyi eklemesine veya değiştirmesine izin verecektir.



Bir isimlendirme seçin.

İsteğimizde CurrentDate parametresi kullanıldığı için işlemeyi kullanmadan önce değerini ayarlamamız gerekiyor. Bunu yapmak için, form modülünde, "OnCreateAtServer" prosedüründe, "CurrentSessionDate" işlevini standart bir komutla ona atayın. Ayrıca kontrol formunda dinamik bir liste görüntülememiz ve netlik için alanların sırasını değiştirmemiz gerekiyor. "Kalan Adlandırma" desteklerini form öğelerine (sol üst) sürükleyin ve formdaki tablodaki alanların sırasını değiştirmek için mavi okları kullanın.

&Sunucuda Oluşturmada Prosedürü Sunucuda(Failure, StandardProcessing) Nomenclature Remains.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


Zaten bu aşamada harici işlemlerimizi 1C'de açıp dinamik listenin çalıştığını görebiliriz. Terazilere bakabilir, terminoloji ve gruplar oluşturabilir, arama yapabiliriz. Genellikle müşteriler, bakiyeyi görecekleri tarihi seçme yeteneği eklemeyi isterler. Dinamik listeye sahip bir form olması durumunda, bu, ek bir alan ve onu kullanarak parametrelerin ayarlanması ile sağlanır.

“Date” türünün “Remains Date” özniteliğini ekleyip form elemanlarına aktarıyoruz. Alan olaylarında bir "OnChange" olayı oluşturup dinamik sorguda kullanılan "CurrentDate" parametresini ayarlamak için kodu yazıyoruz. Kullanıcının formu açarken bakiyeleri hangi tarihte gördüğünü hemen anlaması için OnCreateOnServer prosedüründe küçük değişiklikler yapacağız.



&OnServerProcedureOnCreateOnServer(Hata, StandardProcessing)RemainsDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Prosedürün Sonu &Müşteri Prosedüründe RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); İşlem Sonu

Sonuç olarak, Dinamik Liste formumuz herhangi bir tarihe ait bakiyeleri görüntüleyebilir.

Bu araç setinin yeteneklerinin sadece küçük bir kısmını ele aldık, ancak bu, bu tür bir dinamik listenin uygunluğunu anlamak için zaten yeterli. Birçok görev için benzer bir mekanizma kullanılır, ancak çoğu zaman tipik konfigürasyonlarda bulunur. yönetilen formlar:

  1. seçim;
  2. Listeler.

Tipik yönetilen formlarda dinamik bir liste ve talebini almak için geliştiricinin gerekli formu yapılandırıcıda açması gerekir. Öznitelikler bölümünde, "DynamicList" veri türüne sahip özniteliği bulun (çoğunlukla seçilir kalın harflerle). Özellikleri, istek metnini, seçimleri ve diğer ayarları içerir.

ev Aynadan Notlar

21.04.2014 Dinamik liste verilerinin alınması

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 hayata geçirdik.

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, listede seçtiğiniz tüm karşı taraflara bazı kriterlere göre 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 grubuna ve belirli bir tedarikçiye ait malları seçtikten sonra, bu malların toplam sayısını hemen veritabanında görmek ister.

Dinamik listenin kendisi size bu bilgiyi sağlayamaz. Dinamik bir listenin amacı, büyük miktarda verinin hızlı bir görünümünü sağlamaktır. 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, kullanıcının istediği ek bilgileri alabilmek için 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 sorgunun 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, veri kompozisyon şemasının kendisini ve en önemlisi, kullanıcının listeyi tam olarak olduğu gibi gördüğü için tüm ayarlarını alırsınız. Tek yapmanız gereken, düzeni programlı olarak oluşturmak ve onu bir değerler koleksiyonuna (programlı işleme için) veya bir elektronik tablo belgesine (görüntülemek için) çıkarmaktır:

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 nokta, 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ı tarafından görülebilenleri değil, listenin tüm sütunlarını alabilirsiniz.

Bir elektronik tablo belgesine çıktı alırken, başka bir güzel an var. Genel olarak, raporun görünümü aşağıdakilere karşılık gelecektir. görünümşema ve ayarlar alındığında dinamik liste tabloları. Tablonun koşullu tasarımı dahil. Sadece formun koşullu tasarımını da rapora aktarmak istiyorsanız bazı ek işlemlere ihtiyacınız olacaktır.

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

Dinamik bir listenin olanaklarını göstermek için harici bir işlem oluşturalım, ana formu ekleyelim. Forma "Dynamic List" tipinde yeni bir öznitelik ekleyelim. Özelliklerine gidelim ve orada ne olduğunu görelim.
"Özel istek" özelliğiyle ilgileniyoruz. Etkinleştirmek bize dinamik bir listenin tüm olanaklarını gösterecektir. 1C: Enterprise sisteminin sorgu 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 bakiyeye sahip kalemlerin bir listesini görüntüler. Böyle bir listeyi uygulamak için aşağıdaki sorguyu ekleyin:


Ana tablo olarak "Directory. Nomenclature"ı seçeceğiz, bu bize bir terminoloji listesinde olduğu gibi dinamik bir listeyle çalışmamıza izin verecek - dizinin öğelerini ekleme, değiştirme, silme öğelerini işaretleme. Benzer şekilde, ana tablonun ayarlanması uygun fiyatlı fırsat dinamik veri okuma - bu, örneğin 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ırmayı denersek bir hata alırız:


Bunu ortadan kaldırmak için "Dönem" parametresinin değerini ayarlamalısınız. 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 olan parametrenin veya veri kompozisyon 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 süresini değiştirme yeteneği verelim. Bunu yapmak için özniteliği ve onunla ilişkili "Tarih" form öğesini ekleyelim:


"Date" form öğesinin "OnChange" işleyicisinde, ilişkili özniteliğin değerini değer olarak geçirerek "SetParameterValue" yöntemini çağırın. Benzer şekilde, formun "On CreationAtServer" prosedürünü değiştireceğiz. 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 mevcut bakiyeleri veya tahmini makbuzları görmek istediğini varsayalım. Uygulama seçeneklerinden birini ele alalım. Bir Boolean form niteliği ve ilişkili bir radyo düğmesi ekleyelim:


Anahtarın değerini değiştirirken, isteğin 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. Bu özellik istemcide mevcut olmadığından, sunucu prosedürüne bir çağrı gereklidir:


Yapılan değişikliklerin sonucu: