1c kontrollü form seçimi. Bazı seçimlerle liste formu nasıl açılır? Yapılandırıcıda seçimin ayarlanması

Kod 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Kabul edildi";
DirectoryList.Selection.Status.Set();

1C 8.2 için:
Önceden ayarlanmış seçimlerle bir liste formunu açmanın birkaç yolu vardır. Sırasıyla bunlara bakalım:

1. İlk yöntem, formu açarken Selection form parametresini ayarlayıp bu parametre ile liste formunu açabilirsiniz. Seçim parametresi yapıyı temsil eder. Elemanların isimleri seçimin yapıldığı alanların isimlerine karşılık gelir ve değerler seçim değerlerini içerir. Bu, dinamik listeyle yönetilen bir form uzantısı seçeneğidir. Yani, ana özelliği Dinamik Liste türü özelliği olan formlar için mevcuttur; örneğin liste formları ve seçim formları.

Formu açarken belirtilen alana göre seçim yapılacaktır.
Code 1C v 8.2 UP // Örneğin aşağıdaki örnekte 333'e eşit Sayı alanı seçilerek fatura listesi açılmaktadır.
Seçim Değeri = Yeni Yapı("Sayı", "333");
SelectionParameters = Yeni Yapı("Seçim", SelectionValue);

OpenForm("Belge. Fiş Fatura. Liste Formu", Seçim Seçenekleri);

// Örneğin aşağıdaki örnekte faturaların listesi açılır
// Yüklenici alanının seçimi “OJSC Boynuzları ve Toynakları”na eşit olacak şekilde.
Seçim Değeri = Yeni Yapı("Karşı Taraf", "OJSC Kornaları ve Toynakları");
SelectionParameters = Yeni Yapı("Seçim", SelectionValue);
OpenForm("Belge. Fiş Fatura. Liste Formu", Seçim Seçenekleri);

2. Parametreler olmadan bir liste formu açabilirsiniz:
Code 1C v 8.2 UE OpenForm("Belge. Makbuz Fatura. Liste Formu");

Daha sonra, CreatedOnServer durumunda fatura listesi için formun olay işleyicisine, formun ana özelliği olan dinamik listede bir seçim oluşturan kodu yazın:
Kod 1C v 8.2 UP &Sunucuda

Seçim Öğesi = List.Selection.Elements.Add(Type("DataComposition Seçim Öğesi"));
SelectionElement.LeftValue = NewDataCompositionField("Sayı");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Prosedürün Sonu

&Sunucuda
Sunucuda Oluşturulduğunda Prosedür(Arıza, Standart İşleme)
Seçim Öğesi = List.Selection.Elements.Add(Type
(“DataCompositionSelectionElement”));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = Doğru;
SelectionElement.RightValue = 150000;
Prosedürün Sonu

Avantajları Bu method bu Karşılaştırma Görünümü mü? seçim için, ilk durumda olduğu gibi yalnızca Eşit'i değil aynı zamanda Daha Fazla, Daha Az vb.'yi de ayarlayabilirsiniz.

Ancak bu yöntemin çok önemli bir dezavantajı da vardır: Bu seçimle form her zaman açılacaktır. Nereden çağrıldıysa. Bu nedenle bu form ana form olarak belirlenmemelidir. Ve yine de asıl olan buysa, seçimi kurmadan önce, bu formun nereden açıldığı konusunda bir tür analiz sağlamak gerekir. Örneğin form parametrelerini analiz etmek.

3. Son olarak seçim koşulu, dinamik bir liste için verileri seçen özel bir sorguya yerleştirilebilir. Örneğin, öğe listesinde vurgulanan öğeyi içeren faturaların bir listesini açmamız gerekiyor.

Bunu yapmak için, bir öğe listesi biçiminde bir komut ve karşılık gelen Fatura makbuzu düğmesini oluşturun.

Bu komutun yürütme işleyicisini aşağıdaki gibi dolduralım:
Kod 1C v 8.2 UP &İstemcide
Prosedür MakbuzFaturalar (Komut)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Prosedürün Sonu

Bu işleyicide fatura listesine ait formu alıp, öğe listesindeki mevcut öğenin bağlantısını FilterByProduct form parametresine iletiyoruz ve formu bu parametreyle açıyoruz.

Daha sonra belge listesi için bir form oluşturacağız: Makbuz Faturası ve formu açarken parametre olarak kullanacağımız FilterBy Product form niteliğini oluşturacağız. Şimdi List formunun ana niteliğinin özellikler paletini açalım. ArbitraryRequest bayrağını ayarlayın ve Liste ayarları satırında öğesine tıklayın Açık.

Talep alanına aşağıdaki talep metnini girin:
Kod 1C v 8.2 YUKARI SEÇİM
Belge Alındı ​​Fatura Numarası,
Belge Alındı ​​Fatura.Tarih
İTİBAREN
Document.ReceiptInvoice AS DocumentReceiptInvoice
NEREDE
Belge Makbuz Fatura.Ürünler.Ürün = &Ürün

İstekte FilterBy Item fatura listesi form parametresinde yer alan, item listesindeki mevcut satıra bağlantı alacak olan Item parametresini kullanıyoruz. Bunu yapmak için OnOpen liste formundaki olay işleyicisine Product request parametresinin değerini ayarlamak için kod yazacağız:
Kod 1C v 8.2 UP
&İstemcide
Açma Prosedürü (Arıza)

List.Parameters.SetParameterValue("Ürün", FilterByProduct);

Prosedürün Sonu

Burada Liste.Seçenekler List özniteliği için dinamik liste isteği parametrelerinin bir listesidir. Product parametresinin değeri, FilterByProduct form parametresinin değerine eşit olarak ayarlanır.

Sonuç olarak, bir öğe listesi biçimindeki Faturaları al düğmesini tıklattığımızda, yalnızca aşağıda vurgulanan öğeleri içeren faturaların bir listesini alacağız. şu an isimlendirme listesinde.

Siteden alınan bilgiler

1C 8.3'te yönetilen formlarda seçim

Makale, yönetilen formlar 1C 8.3'te seçim yükleme seçeneklerini tartışacaktır. Dinamik liste seçimi statik veya dinamik olarak ayarlanabilir. Kullanıcı arayüzü veya yapılandırıcı. Aşağıdaki tüm seçim seçeneklerini dikkate alacağız.

  • Yapılandırıcıda seçimin ayarlanması

Kullanıcı modunda seçimi ayarlama

Herhangi bir liste içeren formların uygulanması için bir tablo veya değer ağacı yerine dinamik bir liste daha uygun bir çözümdür çünkü Dinamik liste, seçim, alan gruplandırma ve sıralama ile çalışmak için en geniş araç yelpazesini sağlar. Bu seçim kullanıcı modunda veya yapılandırıcıda çalışırken ayarlanabilir; prensip aynıdır.

Kurumsal modda seçimi ayarlamak için “Listeyi özelleştir” komutunu çağırmanız gerekir.

Bir pencere açılacaktır.


“Seçim” sekmesi mevcut listede bulunan alanların bir listesini sunar. Filtreleyeceğimiz liste alanlarını seçin. Bu, çift tıklayarak veya sürükle bırak yöntemiyle yapılabilir.


Karşılaştırma türünü ve değerini ayarlıyoruz, “Düzenlemeyi bitir” e tıklıyoruz, seçim ayarlanıyor.


Kurumsal modda seçimi ayarladığınızda, liste formunda otomatik olarak hızlı seçim alanları adı verilen alanlar oluşturulur.


1C platformunun otomatik olarak hızlı seçim alanları oluşturması için yapılandırıcıda bir form geliştirirken bir grup kullanıcı ayarı belirtmeniz gerekir.


Bu seçim yalnızca geçerli kullanıcı için kaydedilecektir; bu, dinamik listenin esnek bir şekilde özelleştirilmesine olanak tanır. Ancak görev, sistemin tüm kullanıcıları için belirli bir liste için sabit bir seçim yapmaksa, bunu yalnızca yapılandırıcı aracılığıyla çözebiliriz.

Yapılandırıcıda seçimin ayarlanması

Yapılandırıcıda çalışarak iki tür dinamik liste seçimi ayarlayabiliriz: sabit ve dinamik. Sabit seçim bir kez yapılandırılabilir, sistemdeki herhangi bir veriye bağlı olarak dinamik veya programlı olarak ayarlanabilir.

Yapılandırıcıda sabit bir seçim belirleme ilkesi, bunu yukarıda açıklanan kullanıcı modunda ayarlamaktan farklı değildir. Seçimi yapmak için dinamik liste ayarlarını açmalıyız.


Bir pencere açılacaktır.


Seçim, kullanıcı modundakiyle aynı şekilde ayarlanır.

"Kullanıcı ayarlarına dahil et" seçeneği, yapılandırıcıda ayarlanan seçimin "Listeyi özelleştir" menü öğesi aracılığıyla kullanıcı modunda kullanılıp kullanılamayacağını belirler.


Dinamik (yazılım) seçimi

Çoğu zaman, örneğin bir seçim formunu açarken, seçimle kontrollü bir form açmamız gerektiğinde, seçimi programlı olarak ayarlamaya ihtiyaç vardır. Forma bir parametre iletilir ve bu parametreye göre seçim yapılır. Bunun yaygın bir örneği, dizin öğelerinin sahibine göre seçilmesidir.

Yöntemler

Geliştirilmekte olan konfigürasyon BSP "Temel İşlevsellik" alt sistemini içeriyorsa, dinamik listedeki yazılım seçimi standart yöntem kullanılarak kurulabilir:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Bu yöntemin imzası:

Dinamik Liste Tür: DynamicList – Seçimi ayarlamak istediğiniz liste.

Alan adı Tür: String – Seçimi ayarlamak istediğiniz alan.

Sağ Değer Tür: Keyfi – Seçim değeri (İsteğe bağlı. Varsayılan değer: Tanımsız. Not: Tanımsız seçeneğini geçerseniz değer değişmeyecektir).

Karşılaştırmayı Görüntüle Tür: Veri Bileşimi Karşılaştırma Türü – Seçim Koşulu.

Verim Tür: Dize – Bir veri kompozisyonu öğesinin temsili (İsteğe bağlı. Varsayılan değer: Tanımsız. Belirtilmişse, yalnızca belirtilen gösterime sahip kullanım bayrağı yazdırılır (hiçbir değer yazdırılmaz). Değerin tekrar yazdırılması için temizlemek için boş bir dize iletilmelidir.)

Kullanım Tür: Boolean – Bu seçimi kullanmak için bayrak (İsteğe bağlı. Varsayılan: Tanımsız).

Ekran modu Tür: ItemDisplayModeDataCompositionSettings – Bu seçimin kullanıcıya nasıl görüntüleneceği. Olası değerler:

  • Öğe Görüntüleme ModuVeri Düzeni Ayarları.Hızlı Erişim – Grup İçi hızlı Ayarlar listenin üstünde.
  • Öğe Görüntüleme ModuVeri Düzeni Ayarları Normal – Liste ayarlarında (Diğer alt menüsünde).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – Kullanıcının bu seçimi değiştirmesini önleyin.

TanımlayıcıKullanıcıAyarları Tür: Dize – Bu seçim için benzersiz tanımlayıcı (Kullanıcı ayarlarıyla iletişim kurmak için kullanılır).

Bir seçim değerini kaldırmak için standart yöntemi kullanmanız gerekir:

Genel Amaçlı İstemci Sunucusu. RemoveGroupElementsSelectionDynamicList()

Bu yöntemin imzası:

Dinamik Liste Tür: DynamicList – seçimi ayarlamak istediğiniz form özelliği.

Alan adı Tür: Dize – düzen alanının adı (gruplar için kullanılmaz).

Verim Tür: Dize – Bir düzen alanının temsili.

Sistemde BSP yoksa seçim, DataComposition Field nesnesi kullanılarak bağımsız olarak ayarlanabilir.

Seçim Öğesi = List.Selection.Elements.Add(Type("DataComposition Seçim Öğesi")); Seçim Element.LeftValue = NewDataCompositionField("Name"); Seçim Elemanı.Karşılaştırma Türü = Veri Bileşimi Karşılaştırma Türü.Equal; Seçim Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // İsteğe Bağlı Seçim Elemanı RightValue = "Ivanov";

Bu seçim, "Tam ad" = "Ivanov" değerinin bulunduğu satırları seçecektir.

Mantıksal "VE", "VEYA", "DEĞİL" kullanmak için DataCompositionSelectionElementGroup veri türü tasarlanmıştır

Seçim Grubu = List.Selection.Elements.Add(Type("Veri Bileşimi Seçim Öğeleri Grubu")); SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR; Seçim Öğesi = Seçim Grubu.Elemanlar.Add(Type("Veri Bileşimi Seçim Öğesi")); Seçim Element.LeftValue = NewDataCompositionField("Name"); Seçim Elemanı.Karşılaştırma Türü = Veri Bileşimi Karşılaştırma Türü.Equal; Seçim Element.RightValue = "Ivanov"; Seçim Öğesi = Seçim Grubu.Elemanlar.Add(Type("Veri Bileşimi Seçim Öğesi")); Seçim Element.LeftValue = NewDataCompositionField("Name"); Seçim Elemanı.Karşılaştırma Türü = Veri Bileşimi Karşılaştırma Türü.Equal; SelectionElement.RightValue = "Petrov";

Bu seçim, "Tam ad" = "Ivanov" veya "Petrov" değerinin bulunduğu satırları seçecektir.

Dinamik listede seçim, dinamik liste isteğinin metni değiştirilerek de yapılabilir. Bu seçenek, dinamik liste "özel istek" yoluyla yapıldığında çalışır.


Bunun için sorgu metnine “DOĞRU NEREDE” koşulunu ekleyin...


Gördüğünüz gibi bu yaklaşım kod yazma açısından daha kompakttır. Nasıl daha zor koşullar Tablo kısmında seçim yapmak istiyorsak, Veri Bileşimi Seçim Elemanı yoluyla seçim yapma seçeneği o kadar hantal olacaktır. Ancak istek metnini değiştirme örneğinin dezavantajları vardır; bu uygulama kod değişikliklerine dayanıklı değildir. Örneğin, böyle bir uygulama yaptınız ve unuttunuz, ancak gelecekte WHERE (ORDER, GROUP) sonrasına bir operatör ekleyerek istek metnini değiştirmek isterseniz, program kodunun şunları içerdiğini hatırlamanız gerekir:

List.QueryText = List.QueryText + " And DirectoryUsers.Full Name V(""Ivanov"",""Petrov""");

Bu dikkate alınmazsa hata oluşacaktır ancak bunu önlemek için farklı bir uygulamaya değiştirebilirsiniz. İstek metnine aşağıdaki koşulu ekliyoruz:

WHERE (&SelectionInstalled VEYA DirectoryUsers.Name IN (&PertainedName)) DEĞİL

List.Parameters.SetParameterValue("SelectionSet", Full Name.Quantity() > 0); List.Parameters.SetParameterValue("İzin Verilen Tam Ad", Tam Ad);

Burada tam ad bir dizidir.

Gördüğünüz gibi 2 satır kod yerine 10 kod. Hangi yöntemin seçileceği belirli uygulama görevine bağlıdır.

İçin 1 saniye içinde seçim yaparak seçim formunu açın 8.2(normal formlar), bazı eylemleri gerçekleştirmemiz gerekiyor. Önce onu alacağız. Bundan sonra seçimi ayarlayıp programlı olarak açacağız, işte bir kod örneği:

1C 8.2 giriş alanındaki formda çeşitli değerlerle seçim

Yukarıdaki örnekte inceledik seçim formunda seçimin nasıl ayarlanacağı belirli bir değere göre. Şimdi birkaç değeri değiştirmeniz gereken bir duruma bakalım; bu, örneğin bir dizi olabilir veya bir sorgu sonucundan kaldırılabilir. Bu, 1c giriş alanındaki bir seçimdir birden fazla anlamı olan.

Öncelikle seçim formunu alıyoruz, parametrelere “Element” (sahip) iletiyoruz, seçim modu bayrağını ayarlıyoruz. Daha sonra bir değerler listesi ve bir dizi oluşturuyoruz, listede karşılaştırma türünü ayarlarken bir seçim olarak bir nesnenin yalnızca türle mevcut olabileceğini not ediyoruz. Değerleri Listele. Diziye öğeler ekliyoruz, ardından bu diziyi daha sonra seçimde ayarladığımız Değerler Listesine yüklüyoruz. Ayrıca bu seçimi kullanmak için bayrağı etkinleştirmeyi ve Karşılaştırma Tipini ayarlamayı unutmayın.

1C 8.3, Seçimin Başlatılması olayındaki formdaki giriş alanındaki seçimin ayarlanması

Şimdi düşünelim 1C 8.3'te yönetilen bir formda giriş alanında seçim. Seçimi belirleyeceğimiz, ilgilendiğimiz unsuru formda bulalım, bizim durumumuzda burası “Organizasyon” alanıdır. “Seçimin Başlangıcı” olayını buluyoruz, büyütece tıklıyoruz ve kendimizi prosedürün içinde buluyoruz. Selection Data parametresini görüyoruz, bu parametre ValueList türündedir. Seçimi gerekli öğelerle sınırlamak için Değerler Listesini doldurmamız gerekiyor. Yalnızca sunucudaki öğeleri seçebiliyoruz, bu nedenle &OnServer derleme yönergesi ile bir prosedür oluşturuyoruz. Bu prosedürde Seçim Verilerini doldurun.

Kod 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Kabul edildi";
DirectoryList.Selection.Status.Set();

1C 8.2 için:
Önceden ayarlanmış seçimlerle bir liste formunu açmanın birkaç yolu vardır. Sırasıyla bunlara bakalım:

1. İlk yöntem, formu açarken Selection form parametresini ayarlayıp bu parametre ile liste formunu açabilirsiniz. Seçim parametresi yapıyı temsil eder. Elemanların isimleri seçimin yapıldığı alanların isimlerine karşılık gelir ve değerler seçim değerlerini içerir. Bu, dinamik listeyle yönetilen bir form uzantısı seçeneğidir. Yani, ana özelliği Dinamik Liste türü özelliği olan formlar için mevcuttur; örneğin liste formları ve seçim formları.

Formu açarken belirtilen alana göre seçim yapılacaktır.
Code 1C v 8.2 UP // Örneğin aşağıdaki örnekte 333'e eşit Sayı alanı seçilerek fatura listesi açılmaktadır.
Seçim Değeri = Yeni Yapı("Sayı", "333");
SelectionParameters = Yeni Yapı("Seçim", SelectionValue);

OpenForm("Belge. Fiş Fatura. Liste Formu", Seçim Seçenekleri);

// Örneğin aşağıdaki örnekte faturaların listesi açılır
// Yüklenici alanının seçimi “OJSC Boynuzları ve Toynakları”na eşit olacak şekilde.
Seçim Değeri = Yeni Yapı("Karşı Taraf", "OJSC Kornaları ve Toynakları");
SelectionParameters = Yeni Yapı("Seçim", SelectionValue);
OpenForm("Belge. Fiş Fatura. Liste Formu", Seçim Seçenekleri);

2. Parametreler olmadan bir liste formu açabilirsiniz:
Code 1C v 8.2 UE OpenForm("Belge. Makbuz Fatura. Liste Formu");

Daha sonra, CreatedOnServer durumunda fatura listesi için formun olay işleyicisine, formun ana özelliği olan dinamik listede bir seçim oluşturan kodu yazın:
Kod 1C v 8.2 UP &Sunucuda

Seçim Öğesi = List.Selection.Elements.Add(Type("DataComposition Seçim Öğesi"));
SelectionElement.LeftValue = NewDataCompositionField("Sayı");


SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Prosedürün Sonu

&Sunucuda
Sunucuda Oluşturulduğunda Prosedür(Arıza, Standart İşleme)
Seçim Öğesi = List.Selection.Elements.Add(Type
(“DataCompositionSelectionElement”));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = Doğru;
SelectionElement.RightValue = 150000;
Prosedürün Sonu

Bu yöntemin avantajları Karşılaştırma Görünümü'dür. seçim için, ilk durumda olduğu gibi yalnızca Eşit'i değil aynı zamanda Daha Fazla, Daha Az vb.'yi de ayarlayabilirsiniz.

Ancak bu yöntemin çok önemli bir dezavantajı da vardır: Bu seçimle form her zaman açılacaktır. Nereden çağrıldıysa. Bu nedenle bu form ana form olarak belirlenmemelidir. Ve yine de asıl olan buysa, seçimi kurmadan önce, bu formun nereden açıldığı konusunda bir tür analiz sağlamak gerekir. Örneğin form parametrelerini analiz etmek.

3. Son olarak seçim koşulu, dinamik bir liste için verileri seçen özel bir sorguya yerleştirilebilir. Örneğin, öğe listesinde vurgulanan öğeyi içeren faturaların bir listesini açmamız gerekiyor.

Bunu yapmak için, bir öğe listesi biçiminde bir komut ve karşılık gelen Fatura makbuzu düğmesini oluşturun.

Bu komutun yürütme işleyicisini aşağıdaki gibi dolduralım:
Kod 1C v 8.2 UP &İstemcide
Prosedür MakbuzFaturalar (Komut)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Prosedürün Sonu

Bu işleyicide fatura listesine ait formu alıp, öğe listesindeki mevcut öğenin bağlantısını FilterByProduct form parametresine iletiyoruz ve formu bu parametreyle açıyoruz.

Daha sonra belge listesi için bir form oluşturacağız: Makbuz Faturası ve formu açarken parametre olarak kullanacağımız FilterBy Product form niteliğini oluşturacağız. Şimdi List formunun ana niteliğinin özellikler paletini açalım. ArbitraryRequest bayrağını ayarlayın ve Liste ayarları satırında öğesine tıklayın Açık.

Talep alanına aşağıdaki talep metnini girin:
Kod 1C v 8.2 YUKARI SEÇİM
Belge Alındı ​​Fatura Numarası,
Belge Alındı ​​Fatura.Tarih
İTİBAREN
Document.ReceiptInvoice AS DocumentReceiptInvoice
NEREDE
Belge Makbuz Fatura.Ürünler.Ürün = &Ürün

İstekte FilterBy Item fatura listesi form parametresinde yer alan, item listesindeki mevcut satıra bağlantı alacak olan Item parametresini kullanıyoruz. Bunu yapmak için OnOpen liste formundaki olay işleyicisine Product request parametresinin değerini ayarlamak için kod yazacağız:
Kod 1C v 8.2 UP
&İstemcide
Açma Prosedürü (Arıza)

List.Parameters.SetParameterValue("Ürün", FilterByProduct);

Prosedürün Sonu

Burada Liste.Seçenekler List özniteliği için dinamik liste isteği parametrelerinin bir listesidir. Product parametresinin değeri, FilterByProduct form parametresinin değerine eşit olarak ayarlanır.

Sonuç olarak, ürün listesi formundaki Faturaları al butonuna tıkladığımızda, yalnızca ürün listesinde o anda seçili olan ürünü içeren faturaların bir listesini alırız.

Bazı seçimlerle liste formu nasıl açılır?

Önceden ayarlanmış seçimlerle bir liste formunu açmanın birkaç yolu vardır. Sırasıyla bunlara bakalım:

1. İlk yöntem, formu açarken Seçim formu parametresini ayarlayabilir ve bu parametreyle liste formunu açabilirsiniz. Seçim parametresi yapıyı temsil eder. Elemanların isimleri seçimin yapıldığı alanların isimlerine karşılık gelir ve değerler seçim değerlerini içerir. Bu, dinamik listeyle yönetilen bir form uzantısı seçeneğidir. Yani, ana özelliği type özelliği olan formlar için mevcuttur. Dinamik Liste Liste formları ve seçim formları gibi.

Formu açarken belirtilen alana göre seçim yapılacaktır. Örneğin, aşağıdaki örnekte, 333'e eşit olan Numara alanına göre seçim yapılarak bir fatura listesi açılır.

Seçim Değeri = Yeni Yapı("Sayı", "333");

SelectionParameters = Yeni Yapı("Seçim", SelectionValue);

OpenForm("Belge. Fiş Fatura. Liste Formu", Seçim Seçenekleri);

2. Parametreler olmadan bir liste formu açabilirsiniz:

OpenForm("Document.Invoice.ListForm");

Daha sonra fatura listesi formunun olay işleyicisinde Sunucuda Oluşturulduğunda formun ana özelliği olan dinamik listede seçim oluşturan kodu yazın:

&Sunucuda

Sunucuda Oluşturulduğunda Prosedür(Arıza, Standart İşleme)

Seçim Öğesi = List.Selection.Elements.Add(Type("DataComposition Seçim Öğesi"));

SelectionElement.LeftValue = NewDataCompositionField("Sayı");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = Doğru;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

Prosedürün Sonu

Bu yöntemin avantajları, seçim için Karşılaştırma Türü'nün ilk durumda olduğu gibi yalnızca Eşit olarak değil aynı zamanda Daha Fazla, Daha Az vb. olarak da ayarlanabilmesidir.

Ancak bu yöntemin çok önemli bir dezavantajı da vardır: Bu seçimle form her zaman açılacaktır. Nereden çağrıldıysa. Bu nedenle bu form ana form olarak belirlenmemelidir. Ve yine de asıl olan buysa, seçimi kurmadan önce, bu formun nereden açıldığı konusunda bir tür analiz sağlamak gerekir. Örneğin form parametrelerini analiz etmek.

3. Son olarak seçim koşulu, dinamik bir liste için verileri seçen özel bir sorguya yerleştirilebilir. Örneğin, öğe listesinde vurgulanan öğeyi içeren faturaların bir listesini açmamız gerekiyor.

Bunu yapmak için, bir öğe listesi biçiminde bir komut ve karşılık gelen bir düğme oluşturun. Makbuz faturaları.

Bu komutun yürütme işleyicisini aşağıdaki gibi dolduralım:

&İstemcide

Prosedür MakbuzFaturalar (Komut)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Prosedürün Sonu

Bu işleyicide fatura listesine ait formu alıp, öğe listesindeki mevcut öğenin bağlantısını FilterByProduct form parametresine iletiyoruz ve formu bu parametreyle açıyoruz.

Daha sonra bir belge listesi formu oluşturacağız Satınalma faturası ve onu açarken form parametresi olarak kullanacağımız FilterByProduct form niteliğini oluşturun. Şimdi List formunun ana niteliğinin özellikler paletini açalım. Bayrağı dikelim Özel İstek ve çizgide Liste kurulumu Aç'ı tıklayın.

Talep alanına aşağıdaki talep metnini girin:

SEÇMEK

Belge Alındı ​​Fatura Numarası,

Belge Alındı ​​Fatura.Tarih

İTİBAREN

Document.ReceiptInvoice AS DocumentReceiptInvoice

NEREDE

Belge Makbuz Fatura.Ürünler.Ürün = &Ürün

İstekte FilterBy Item fatura listesi form parametresinde yer alan, item listesindeki mevcut satıra bağlantı alacak olan Item parametresini kullanıyoruz. Bunu yapmak için OnOpen liste formundaki olay işleyicisine Product request parametresinin değerini ayarlamak için kod yazacağız:

&İstemcide

Açma Prosedürü (Arıza)

List.Parameters.SetParameterValue("Ürün", FilterByProduct);

Prosedürün Sonu

Burada Liste.Seçenekler List özniteliği için dinamik liste isteği parametrelerinin bir listesidir. Product parametresinin değeri, FilterByProduct form parametresinin değerine eşit olarak ayarlanır.

Sonuç olarak tek tuşla Makbuz faturaları Bir öğe listesi biçiminde, yalnızca öğe listesinde o anda seçili olan öğeyi içeren faturaların bir listesini alacağız.

3. seçeneğe ilişkin bir demo örneği 1CITS/EXE/FAQ/OpenFormWithSelection.dt dizininde bulunur. Örnek 8.2.9.356 platformunda gerçekleştirildi.




Tepe