1C 8.3'te Liste Komutlarının ve Bağlam Menüsünün Yapılandırılması
Bağlam menüsünü ve liste komutlarını yapılandırmak için önce yapıyı (gruplar/ayraçlar/sıralama) düzenleyin, ardından kendi komutlarınızı ekleyin ve Visible/Enabled koşullarını etkinleştirin; dinamik menüyü yalnızca öğelerin gerçekten mevcut satıra bağlı olduğu durumlarda kullanın.
İçindekiler
Kod yazmadan yapılabilenler: sıralama ve gruplar
Yapı ile başlayın — bu, programlama yapmadan maksimum fayda sağlar.
Önerilen menü mantığı (menünün aşırı büyümemesi için):
- Hızlı eylemler (1–3 madde): aç/yazdır/buna dayanarak oluştur.
- Satır işlemleri: değiştir/kopyala/sil.
- İlişkiler: ilişkili nesneyi aç, hareketleri/durumu göster.
- Servis: yenile, liste ayarları, listeyi dışa aktar.
Konfigüratörde genellikle şunlar yapılandırılır:
- Komut ayraçları ve grupları: kullanıcı tanımlı komutları standart olanlardan görsel olarak ayırın.
- Standart komutların taşınması: "Sil"/"Kopyala"yı taşımanız gerekiyorsa, aynı standart komuta bağlı bir düğme ekleyin ve bunu istediğiniz gruba yerleştirin.
- Grubu otomatik doldurma: kullanışlıdır, ancak "üstte özel sıralama" gerekiyorsa, bazen üst grubun otomatik doldurulmasını devre dışı bırakmak ve başlığı manuel olarak oluşturmak daha kolaydır; standart komutları ise iç içe geçmiş bir grupta tutun.
Bir komuta "nadiren" ihtiyaç duyuluyorsa, genellikle bağlam menüsünde değil, "Diğer/Tüm eylemler" bölümünde yer almalıdır. Bu, yanlış tıklama riskini azaltır.
Kodun gerekli olduğu durumlar
| Görev | Kod olmadan | Kod gerekir |
|---|---|---|
| Kendi maddelerinizi/ayraçlarınızı eklemek, yeniden gruplamak | Evet | Bazen |
| Bir komutu kalıcı olarak gizlemek | Evet | Evet |
| Duruma/seçime/haklara göre gizlemek/kilitlemek | Kısmen | Evet |
| Menü maddeleri seçili satıra bağlıdır | Hayır | Evet |
Görünürlük ve erişilebilirlik koşulları: doğru UX
Kullanıcı için önemli olan, komutların "hata vermemesi" ve bağlamı doğru şekilde göstermesidir.
Visible = Ложь— komutun bu konumda bulunmaması gerektiğinde (politika tarafından yasaklanmış, nesneyle ilgili değil).Enabled = Ложь— komut mevcut olduğunda ancak şu anda erişilemez olduğunda (seçim yok, yanlış durum).
Pratik koşullar:
- seçili satır yok / birden fazla satır seçili (ve komut yalnızca tek bir satır için);
- nesne silinmek üzere işaretlenmiş;
- belge kaydedilmiş/kapatılmış ve işlem yasak;
- yetersiz haklar (bu durumda genellikle gizlemek daha iyidir).
Satıra göre dinamik bağlam menüsü (yönetilen formlar)
Dinamik yapı, eylem kümesinin gerçekten satıra göre değiştiği durumlarda gereklidir (örneğin, farklı "ilişkili nesneler").
Çalışan şablon:
- aktif satırın anahtarını (örneğin, referansı) bir form değişkeninde saklayın;
- aktif satır değiştiğinde anahtarı karşılaştırın — satır değişmediyse menüyü yeniden oluşturmayın;
- yeniden oluşturmada önce önceden eklenen dinamik öğeleri kaldırın;
- tüm dinamik komutları tek bir işleyiciye yönlendirin ve farkı parametre/komut adı aracılığıyla iletin.
"Her satır tıklamasında" veriye ağır erişimler yapmayın. Sonucu önbelleğe almak veya gecikmeli olarak yürütmek daha iyidir (aksi takdirde menüde yavaşlama ve titreme yaşarsınız).
Standart formlar: tablo alanı için özel bağlam menüsü
Tipik yaklaşım — tablo alanının otomatik menüsünü devre dışı bırakmak ve kendi menünüzü atamak (komut panelini kapsayıcı olarak kullanarak), standart eylemler için otomatik doldurmayı bırakmak.
Kısa örnek (anlam olarak, öğe adlarını forma göre uyarlayın):
// ТабличноеПоле — элемент формы
ТабличноеПоле.АвтоКонтекстноеМеню = Ложь;
МенюТЧ = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), "МенюТЧ", Истина);
МенюТЧ.ИсточникДействий = ТабличноеПоле;
МенюТЧ.АвтоЗаполнение = Истина;
ТабличноеПоле.КонтекстноеМеню = МенюТЧ;
// Свои пункты сверху
МенюТЧ.Кнопки.Вставить(0, "Разделитель", ТипКнопкиКоманднойПанели.Разделитель);
МенюТЧ.Кнопки.Вставить(0, "МояКоманда", ТипКнопкиКоманднойПанели.Действие, "Моё действие");
Yaygın hatalar
- Bağlam menüsü aşırı yükleniyor (15–20 madde): kullanıcılar onu kullanmayı bırakıyor.
- Aynı komut sebepsiz yere üç yerde tekrarlanıyor (panel + "Diğer" + bağlam menüsü).
- Komutlar
Enabled = Ложьyerine gizleniyor: kullanıcı eylemin aslında var olduğunu anlamıyor. - Dinamik menü, tek bir satırdaki hücreler arasında imleç her hareket ettiğinde yeniden oluşturuluyor.
- Otomatik doldurma devre dışı bırakılıyor ve menü gereksiz yere tamamen manuel olarak dolduruluyor — değişikliklerde bakım yapmak daha zor hale geliyor.
SSS
Tüm standart komutlar tamamen yeniden sıralanabilir mi?
Evet, ancak bu çoğunlukla otomatik doldurmanın reddedilmesini ve manuel oluşturmayı gerektirir. Genellikle gruplar, ayraçlar ve birkaç anahtar komutun "yeniden atanması" yeterlidir.
Hangisi daha önemli — komut panelindeki düğmeler mi yoksa bağlam menüsü mü?
Panel düzenli eylemler içindir, bağlam menüsü ise seçili satır üzerinde "yerinde" eylemler içindir.
Dinamik yapı Visible/Enabled üzerinden mi yoksa komut ekleme/kaldırma üzerinden mi yapılmalı?
Madde kümesi sabitse — Visible/Enabled daha basittir. Maddeler gerçekten farklıysa (örneğin, bağımlı nesnelerin listesi satır verilerine göre oluşturuluyorsa) — dinamik olarak eklemek/kaldırmak daha uygundur.