Seçim parametrelerinde 1c'de grup adını ayarlayın. Meta veri nesneleri için seçim parametrelerini ve seçim parametresi ilişkilerini ayarlayın. AçıklamaofTypesInventory = NewDescriptionofTypes(Array)

İç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 giriş alanında seçim yönetilebilir bir biçimde 1C 8.3'te. 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.

/
Geliştiriciler /
Kodlama Kuralları

Meta Veri Nesneleri için Seçim Seçeneklerini ve Seçim Seçeneği İlişkilendirmelerini Ayarlama

1. Kural olarak, seçim kısıtlamaları gibi iş mantığı kısıtlamaları, belirli bir nesnenin düzenlendiği tüm formlar için aynı olmalıdır. Bu nedenle, meta veri nesnelerinin özelliklerinde - dizinlerin, belgelerin vb. ayrıntılarında seçim parametrelerinin ve seçim parametreleri arasındaki bağlantıların ayarlanması önerilir.

2. Ancak seçim kısıtlamalarının spesifik çalışma senaryosuna bağlı olabileceği durumlar da olabilir. Bu gibi durumlarda seçim parametreleri yerel olarak belirli bir biçimde belirtilebilir.

Örneğin, yapılandırma şunları içerir:

  • dizin Çalışanlar ayrıntıları içeren Organizasyon Ve Çalışan tipi(değerlerle numaralandırma Temel/Yarı zamanlı);
  • belge Resepsiyon Sırası, sahne donanımı içeren Organizasyon Ve Çalışan; sahne donanımı için ise Çalışan belge Resepsiyon Sırası seçim parametresi bağlantısı belirtildi Seçim.Organizasyon sahne donanımı ile Organizasyon.

İşlevsel seçeneğin değerine bağlı olarak yalnızca kilit çalışanları seçme yeteneğinin uygulanması gerekmektedir. YalnızcaÇalışanlardan SeçTemel Bilgiler. Bunun için gerekli

  • bir belge şeklinde Resepsiyon Sırası ek form niteliklerini uygulama Çalışan Türleri,
  • daha sonra form alanı için Çalışan bir seçim parametresi bağlantısı kurulabilir Seçim.Çalışan Türü form ayrıntılarıyla Çalışan Türleri,
  • bu durumda form ayrıntıları Çalışan Türleri Fonksiyonel seçeneğin analizine dayanarak doldurulur.

(Aynı zamanda sahne donanımı için ayarlayın Çalışan belge Resepsiyon Sırası seçim parametresi için bağlantı Seçim.Çalışan Türü hiçbir ihtimal yok çünkü sahne donanımı Çalışan tipi belgede Resepsiyon Sırası bulunmuyor.)

Daha sonra parametre için bağlantıyı ayarlama Seçim.Organizasyon pervane özelliklerinde Çalışan belge Resepsiyon Sırası ve parametre bağlantıları Seçim.Çalışan Türü belge formu alanında Resepsiyon Sırası modunda olmasına yol açacaktır 1C:İşletmeler Her iki seçim parametresi bağlantısı da çalışacaktır. Böylece, işe alım emri formunda bir çalışan seçilirken, çalışanlar listesindeki seçim hem belgede doldurulan kuruluşa hem de fonksiyonel seçeneğe göre belirlenecek çalışan türüne göre belirlenecektir.

Tünaydın.

Bugün yeni yönetilen arayüzde seçim formlarının programlı olarak nasıl açılacağından bahsedeceğiz.

Daha önce " düzenli uygulama"Şöyle yazdık:

form = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Bu operatörler arasında formun özelliklerini değiştirebiliriz, örneğin seçimi ayarlayabiliriz. Belirli bir formu isme göre belirtebiliriz. Değiştirebilir mi dış görünüş, formdaki elemanların özelliklerine nokta aracılığıyla adlarına göre erişilir (form.Button1.Visibility = False;)

Artık yönetilen bir arayüzümüz var ve burada her şey farklı. Sorun, kodu sunucu ve istemci kısımlarına bölmekten kaynaklanmaktadır. Nesnelere ve meta verilerine yalnızca sunucu üzerinden erişebiliriz ve formları istemcide açmamız gerekir.

Öyleyse başlayalım.

1. En basit durum, seçimi yönetmemize gerek kalmamasıdır (seçimleri ayarlama, parametreleri açılan seçim formuna aktarma).

Formlar yalnızca istemcide açılabildiğinden, bu istemci tarafında bir kod parçası olacaktır. Fonksiyonu kullanacağız Değer Girin(<Значение>, <Подсказка>, <Тип>) . Aslında açıklamasından her şey açık. Kullanıcının bir seçim yapıp yapmadığının bayrağını döndürür; ilk parametrede seçim değerinin döndürüleceği kabı, ikinci metinde seçim penceresinin başlığında görüntülenecek olan üçüncü diziyi aktarırız. türleri.

İşte bir kullanım örneği:

Değişken SelectTMC;

ArrayTypes = Yeni Dizi;

AçıklamaofTypesTMC = NewDescriptionofTypes(Array);

If EnterValue(Envanter Seçin, "Ürün Seçin", Envanter Türlerinin Açıklaması) Sonra

//Seçilen değer işleniyor

endIf;

Şunu da ekleyeyim, eğer konteyner değişkenimize seçmeden önce herhangi bir değer atarsak, bu değer varsayılan değer olacaktır. Bu durumda bir tür dizisi oluşturmanıza gerek yoktur; tür, kapsayıcıdaki değerden alınacaktır.

2. Bazen bir değer seçmeden önce bazı seçimleri ve seçim parametrelerini ayarlamamız gerekir. Örneğin bir karşı taraf sözleşmesi seçmemiz gerekiyor. İlk yöntem bizim için tüm belgeleri açacak, ancak sahibine göre seçmemiz gerekiyor.

Formları açmanın iki yöntemi vardır: AçıkForm Ve OpenFormModal. İlk yöntemde formu açacağız ve formu açtığımız kod parçası seçim sonucunu almadan çalışmaya devam edecek. Seçim sonucu, çağrı yöntemine bağlı olarak ya giriş alanına yerleştirilecek ya da önceden tanımlanmış "Seçim İşleme" prosedürüyle alınacaktır.

Bizim durumumuzda, kontrolü başka prosedürlere aktarmadan, seçilen değeri belirli bir değişkene alıp, seçilen değeri dikkate alarak işleme devam etmemiz gerekiyor. Bu nedenle bize yakışacak OpenFormModal.

Bunun bir web arayüzü için kötü bir yol olduğuna dair hemen rezervasyon yapacağım çünkü... Kalıcı pencereler, genellikle engellenen yeni bir tarayıcı penceresinde açılır. Ancak kullanıcıya neyin ne olduğunu önceden açıklarsanız, o zaman bu problemle başa çıkacağını düşünüyorum))

Öyleyse prosedürün açıklamasına bakalım, 4 parametresi var. İlkinde "Rehber. Müteahhit Sözleşmeleri. Seçim Formu" formunun tam yolunu gösteren bir satır belirtiyoruz. İkincisinde, seçim parametrelerini belirtiyoruz, bunlar hakkında daha fazlasını aşağıda belirtiyoruz. Üçüncüsü - sahip, bu seçimin sonucunu alacak bir form veya seçim alanıdır, onu doldurmuyoruz. Dördüncü parametre de bizim durumumuzda kullanılmamaktadır.

Yani basit bir seçim için aşağıdaki satır işe yarayacaktır:

&İstemcide

Prosedür Komut1(Komut)

res = OpenFormModal("Directory. Yüklenicilerin Sözleşmeleri. SelectionForm");

Prosedürün Sonu

Ancak bu, 1 numaralı yöntemin tam bir benzeridir ve sahibine göre seçim yapmadan tüm sözleşmeleri seçmek için bir form göreceğiz. Onlar. Bu ancak seçim formunun adını belirtmek istersek yapılabilir.

Seçimi ayarlamak için ikinci parametre bize yardımcı olacaktır.

İkinci parametre "Yapı" türündedir. Yapı elemanları olarak seçim formunun “parametreler” sekmesinde eklenen form parametrelerini belirleyebilirsiniz. İşlemleri prosedürde açıklanmalıdır. Sunucuda Oluşturulduğunda seçim formu modülünde. Bu bizim için iyi değil çünkü... Yapılandırmayı değiştirmem gerekiyor. Parametre yapısında bulunan “selection” tuşu ile de bir seçim yapısı geçirebilirsiniz. Daha sonra seçim yapısındaki tüm alanlar, öğe listesinin seçilmesinde kullanılacak ve kullanıcıya ne görüntüleme ne de değiştirme olanağı tanınmayacaktır.

Örneğimde, işleme formu niteliğine atıfta bulunan işlemede bir seçim alanı çizdim "karşı taraf" veri türüyle " DirectoryLink.Karşı Taraflar". ve aşağıdaki kod parçasını yazdı:

&İstemcide

Prosedür Komut1(Komut)

Seçimler = Yeni Yapı("Sahip", Karşı Taraf);

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

res = OpenFormModal("Rehber. Yüklenicilerin Sözleşmeleri. Seçim Formu", Seçim Parametreleri);

Prosedürün Sonu

Bu genellikle çoğu sorunu çözmek için yeterlidir ve herhangi bir yapılandırma müdahalesi gerektirmez. Ancak “When CreatedOnServer” prosedüründeki seçim formunda seçiminiz kaybolabilir. Bu nedenle bu yöntemi kullanmadan önce açtığınız seçim formunda bu prosedürü gözden geçirin. Buradaki çarpık geliştiriciler, seçimin açılış parametrelerinde geçip geçmediğini kontrol etmeyi unutarak seçimlerini kolayca "varsayılan olarak" ayarlayabilirler.

Bugünlük bu kadar, ilginiz için teşekkür ederiz.




Tepe