Ev / Oyun konsolları / 1s kurumsal modüller. Genel modüller. "Dış birleştirme" ile ilgili işaretler

1s kurumsal modüller. Genel modüller. "Dış birleştirme" ile ilgili işaretler

Genel modüller 1C- genellikle konfigürasyonda çağrılan program kodunu saklayan konfigürasyon meta verileri 1C 8.3 ve 8.2 nesnesi. Bir fonksiyon/prosedür konfigürasyonun herhangi bir yerinden (dışa aktarılmışsa) çağrılabilir.

Paylaşılan modül nasıl kullanılır?

Birden fazla yerde çağrılıyorsa, bir prosedürü veya işlevi ortak bir modüle koymak iyi bir uygulamadır. İlk olarak, bir prosedür düzeltilirse, yalnızca bir yerde düzeltilmesi gerekir. İkincisi, kodda daha fazla düzen elde eder.

Ortak bir modülün tipik bir örneği, kayıtların bazı kayıtlara göre işlenmesi, iş günlerinde fark miktarının alınması, döviz kurlarının dönüştürülmesi, tablo bölümünde miktar/fiyat/tutarın yeniden hesaplanması ve diğer işlevlerdir.

Genel Modül Özellikleri

Paylaşılan modüller ile diğer modüller arasındaki temel farklardan biri, paylaşılan değişkenleri bildirememenizdir.

267 1C video derslerini ücretsiz alın:

Ortak modülün özellikler paletine daha yakından bakalım:

  • küresel- bayrak ayarlanmışsa, bu modüldeki işlevler ve prosedürler global bağlamda kullanılabilir hale gelir. Şunlar. ortak modülün adı olmadan konfigürasyonun herhangi bir yerinde çağrılabilirler. Ancak, bir koşul eklenir - bu ortak modüldeki prosedürlerin ve işlevlerin adları global bağlamda benzersiz olmalıdır.
  • sunucu- Bu ortak modülün prosedürleri ve işlevleri sunucu üzerinde yürütülebilir.
  • Dış birleştirme- bu ortak modülün program kodları, harici bir kaynakla (örneğin COM) bağlandığında yürütülebilir.
  • İstemci (yönetilen uygulama)— Bu ortak modülün prosedürleri ve işlevleri, yönetilen uygulama modunda kalın bir istemcide kullanılabilir.
  • Müşteri (normal uygulama)— bu ortak modülün program kodları, normal uygulama modunda kalın istemcide kullanılabilir.
  • sunucu çağrısı- istemcinin bu ortak modüldeki prosedürleri ve işlevleri kullanmasına izin veren bir bayrak.
  • - True olarak ayarlanırsa, bu ortak modülde erişim hakları denetimi devre dışı bırakılır.
  • yeniden kullanın— seçenek etkinleştirilirse, döndürülen değerler için ayarları tanımlar, ardından ilk çalıştırmadan sonra sistem bu giriş parametrelerinin değerini hatırlayacak ve hazır bir değer döndürecektir. Aşağıdaki değerleri alabilir: kullanılmamış- kapat, arama sırasında- belirli bir prosedür süresince, seans sırasında- kullanıcı oturumu (programı) kapatana kadar.

1C programlamayı öğrenmeye başlıyorsanız, ücretsiz kursumuzu tavsiye ediyoruz (unutmayın

1.1. Bazı kriterlere göre birleştirilen prosedürleri ve işlevleri uygulamak için ortak modüller oluşturulur. Kural olarak, bir konfigürasyon alt sisteminin (satışlar, satın almalar) prosedürleri ve işlevleri veya benzer işlevsellikteki prosedürler ve işlevler (dizelerle çalışma, genel amaçlı) ortak bir modüle yerleştirilir.

1.2. Paylaşılan modüller geliştirirken dört kod yürütme bağlamından birini seçmelisiniz:

Ortak modül tipi adlandırma örneği sunucu çağrısı sunucu Dış birleştirme Müşteri
(düzenli uygulama)
Müşteri
(yönetilen uygulama)
1. sunucuGenel Amaçlı (veya Genel Amaçlı Sunucu)
2. İstemciden aranacak sunucuGenel AmaçlıÇağrıSunucusu
3. MüşteriGenel Amaçlı Müşteri (veya Genel Amaçlı Global)
4. Müşteri sunucusuGenel AmaçlıİstemciSunucu

2.1. Sunucu Ortak Modülleri istemci kodundan kullanılamayan sunucu prosedürlerini ve işlevlerini barındırmak için tasarlanmıştır. Uygulamanın tüm dahili sunucu iş mantığını uygularlar.
Konfigürasyonun harici bağlantı modlarında, yönetilen ve düzenli uygulamalarda doğru çalışması için, sunucu prosedürleri ve işlevleri aşağıdaki özelliklere sahip ortak modüllere yerleştirilmelidir:

  • sunucu(onay kutusu sunucu çağrısı düştü),
  • Müşteri (normal uygulama),
  • Dış birleştirme.

Bu durumda, sunucu prosedürlerinin ve işlevlerinin değiştirilebilir tür parametreleriyle çağrılabileceği garanti edilir (örneğin, DizinNesnesi, Belgenesnesi vb.). Kural olarak, bu:

  • parametre olarak değişken bir değer (nesne) alan belge, dizin vb. olaylarına abonelikler için işleyiciler.
  • bir nesnenin dizinler, belgeler vb. modüllerinden ve ayrıca olay abonelikleri olan modüllerden parametre olarak geçirildiği sunucu prosedürleri ve işlevleri.

Sunucu ortak modülleri, meta veri nesnelerini adlandırmak için genel kurallara göre adlandırılır.
Örneğin: Dosyalarla Çalışmak, Genel Amaçlı

Bazı durumlarda, genel bağlam özellikleriyle ad çakışmalarını önlemek için bir son ek eklenebilir. "Sunucu".
Örneğin: ZamanlanmışGörevlerSunucusu, Veri Değişim Sunucusu.

2.2. İstemciden çağrılacak sunucu ortak modülleri istemci kodundan kullanılabilen sunucu prosedürlerini ve işlevlerini içerir. Uygulama sunucusunun istemci API'sini oluştururlar.
Bu tür prosedürler ve işlevler, şu öznitelikle ortak modüllere yerleştirilir:

  • sunucu(onay kutusu sunucu çağrısı Kurulmuş)

İstemciden çağrılacak sunucu ortak modülleri, meta veri nesnelerini adlandırmak için genel kurallara göre adlandırılır ve bir son ek ile adlandırılmalıdır. "Sunucu Çağrısı".
Örneğin: Sunucuyu Çağıran Dosyalarla Çalışmak

Bu tür ortak modüllerdeki dışa aktarma prosedürlerinin ve işlevlerinin değiştirilebilir tür parametreleri içermemesi gerektiğini unutmayın ( DizinNesnesi, Belgenesnesi vb.), çünkü müşteri kodundan (veya müşteri koduna) aktarımları imkansızdır.

Ayrıca bakınız:Ortak modüller için "Sunucu çağrısı" bayrağının ayarlanmasıyla ilgili kısıtlama

2.3. İstemci Paylaşılan Modüller müşteri iş mantığını içerir (yalnızca müşteri için tanımlanan işlev) ve aşağıdaki özelliklere sahiptir:

  • İstemci (yönetilen uygulama)
  • Müşteri (normal uygulama)

Bunun istisnası, istemci prosedürlerinin ve işlevlerinin yalnızca yönetilen uygulama modunda (yalnızca normal uygulama modunda veya yalnızca giden modda) kullanılabilir olması gerektiğidir. Bu gibi durumlarda, bu iki özelliğin başka bir kombinasyonu kabul edilebilir.

İstemci ortak modülleri bir postfix ile adlandırılır "Müşteri".
Örneğin: WorkFilesClient, Genel AmaçlıMüşteri

Ayrıca bkz: istemci tarafı kodunu en aza indirme

2.4. Bazı durumlarda, içeriği hem sunucuda hem de istemcide aynı olan prosedür ve işlevlere sahip istemci-sunucu ortak modülleri oluşturmak mümkündür. Bu tür prosedürler ve işlevler, aşağıdaki özelliklere sahip ortak modüllere yerleştirilir:

  • İstemci (yönetilen uygulama)
  • sunucu(onay kutusu sunucu çağrısı Sıfırla)
  • Müşteri (normal uygulama)
  • Dış birleştirme

Bu türden yaygın modüller bir son ek ile adlandırılır. "Müşteri sunucusu".
Örneğin: WorkFilesClient, Genel AmaçlıİstemciSunucu

Genel olarak, sunucu ve istemci (yönetilen uygulama) için aynı anda ortak modüller tanımlanması önerilmez. İstemci ve sunucu için tanımlanan işlevselliğin farklı ortak modüllerde uygulanması önerilir - bkz. s. 2.1 ve 2.3. İstemci ve sunucu iş mantığının bu şekilde açık bir şekilde ayrılması, uygulanan çözümün modülerliğini artırma, geliştiricinin istemci-sunucu etkileşimi üzerindeki kontrolünü basitleştirme ve istemci ve sunucu geliştirme gereksinimlerindeki temel farklılıklar nedeniyle hata riskini azaltma hususları tarafından belirlenir. kod (istemcide yürütülen kodu en aza indirme ihtiyacı, nesnelerin ve platform türlerinin farklı kullanılabilirliği vb.). Aynı zamanda, konfigürasyondaki ortak modüllerin sayısındaki kaçınılmaz artış akılda tutulmalıdır.

Karma istemci-sunucu modüllerinin özel bir durumu, sunucu ve istemci iş mantığını tek bir modülde uygulamak için özel olarak tasarlanmış form ve komut modülleridir.

3.1. Ortak modüllerin adlarının, meta veri nesnelerini adlandırmak için genel kurallara göre oluşturulması önerilir. Ortak bir modülün adı, prosedürlerini ve işlevlerini uyguladığı bir alt sistemin veya ayrı bir mekanizmanın adıyla eşleşmelidir. Ortak modüllerin adlarında "Prosedürler", "İşlevler", "İşleyiciler", "Modül", "İşlevsellik" vb. gibi yaygın sözcüklerden kaçınılması önerilir. ve bunları yalnızca istisnai durumlarda, modülün amacını daha tam olarak ortaya koyduklarında uygulayın.

Farklı bağlamlarda gerçekleştirilen prosedürleri ve işlevleri uygulamak için oluşturulan bir alt sistemin ortak modüllerini ayırt etmek için, bunlara paragraflarda daha önce açıklanan son eklerin verilmesi önerilir. 2.1-2.4.

1C:Enterprise sistem konfigürasyonlarının yeni sürümlerinde, birçok fonksiyon ve prosedür nesne modüllerinden (belgeler, dizinler vb.) yönetici modüllerine taşınmıştır. Şimdi bu iki modül arasındaki farklara bir göz atalım.

Nesne yönelimli programlama teorisine göre, nesnelerin yöntemleri iki gruba ayrılır: statik ve basit. Basit yöntemlerin yalnızca sınıfın belirli bir örneğine erişimi vardır. Statik yöntemlerin nesne verilerine erişimi yoktur, ancak bir bütün olarak sınıf üzerinde çalışır.

Tüm bunları 1C: Enterprise sistemi terimlerine çevirirsek, o zaman nesne modülü basit yöntemler içerir. Bunları kullanmak için önce belirli bir nesne edinmelisiniz: bir dizinin, belgenin vb. öğesi. Yönetici modülü statik yöntemler içerir. Kullanmak için her bir nesneyi ayrı ayrı almanıza gerek yoktur, tüm koleksiyonla aynı anda çalışmanıza izin verir.

nesne modülü harici olarak kullanılabilecek prosedürlere ve işlevlere sahip olabilir. Bunu yapmak için, böyle bir prosedür veya işlev kelimesi ile gösterilir. İhracat.

İşlev NewFunction() Dışa Aktarma

Bir nesne modülünden böyle bir işlevi kullanmak için, önce gerekli nesneye bir referansa sahip olmanız, onu işlevi kullanarak almanız gerekir. GetObject().



Per= Nesne. YeniFunction() ;

Benzer şekilde, çeşitli konfigürasyon nesnelerinden kullanılabilecek yeni değişkenler oluşturabilirsiniz.

Değişken YeniDeğişken Dışa Aktarma

DirectoryItem = Dizinler. isimlendirme. FindByCode("000000001" );
Nesne = Dizin Öğesi. GetObject() ;
Bir obje. YeniDeğişken= ) ;

Böylece nesnelerin standart prosedürlerini, işlevlerini ve özelliklerini (değişkenlerini) tamamlamak mümkündür. Bu tür değişkenler dinamiktir, bilgi tabanında saklanmazlar ve yalnızca alınan nesneyle çalışırken var olurlar.

Yönetici modülü hepsi aynı özelliklere sahiptir, tek fark, onu kullanmak için belirli bir nesne almanıza gerek olmamasıdır, yönetici modülü belirli bir türdeki tüm nesne koleksiyonuyla çalışmanıza izin verir.

Prosedür NewProcedure() Dışa Aktarma

DirectoryItem = Dizinler. isimlendirme. YeniProsedür() ;

Veya bir değişken için:

Değişken YeniDeğişken Dışa Aktarma

DirectoryItem = Dizinler. isimlendirme. yeniDeğişken;

Basılı bir belge formu oluşturma prosedürü örneğinde nesne modülünün ve yönetici modülünün kullanımındaki farklılıkları ele alalım.

Nesne modülünü kullanırken kod şöyle görünür:

İşlev PrintDocument (Bağlantı) Dışa Aktarma
//Bu işlev, belirli bir belgeye bir bağlantı iletilmelidir
TabDoc'u döndür;
EndFonksiyonlar

Belge formunda, belgenin bağlantısını yazdırma işlevine iletecek bir prosedür oluşturmanız gerekir.

&İstemci
Prosedür Yazdır(Komut)
TabDoc = PrintOnServer() ;
TabDoc. Göstermek() ;
İşlem Sonu
&Sunucuda
İşlev PrintOnServer()
Doc = FormAttributeToValue("Nesne" );
Belgeyi İade Et. PrintDocument(Nesne. Bağlantı) ;
EndFonksiyonlar

Bu yöntemin dezavantajı, yalnızca bir nesneyi yazdırmanıza izin vermesidir. Aynı anda birkaç belge yazdırmanız gerekiyorsa, her birini almanız ve ardından nesne modülünden işlevi çağırmanız gerekir. Bu, önemli sistem kaynakları gerektirir, çünkü bir nesne alındığında tamamen RAM'e sığar.

Performans açısından, mümkün olduğunda yönetici modülünü kullanmak çok daha iyidir. Örneğimizde, sorunun çözümü şöyle görünecektir.
İşlev PrintOnServer()
Belgeleri İade Edin. Belgemiz. PrintDocument(ArrayReferences) ;
EndFonksiyonlar

Yönetici modülünün kullanılması durumunda, yazdırma prosedürü hem belge formundan hem de liste formundan çağrılabilir ve dizideki birkaç belgeye bağlantılar iletilebilir. Bu durumda, sistemin diziden her belgeyi alması gerekmez, bu da sistem kaynaklarından önemli ölçüde tasarruf sağlar.

Peki nesne modülünü ne zaman ve yönetici modülünü ne zaman kullanmalısınız?

Her şey göreve bağlıdır. Yürütülmesi için bir nesneye referans yeterliyse (örneğin, bir yazdırma görevi), yönetici modülünü kullanmak daha iyidir. Görev, verileri değiştirmekse, örneğin bir belgeyi doldurmaksa, onu almanız ve nesne modülünü kullanmanız gerekir.

Yazılım modülleri, görsel geliştirme araçlarının yeterli olmadığı durumlarda sistemin veya kullanıcının eylemlerine belirli bir şekilde yanıt verebilmek için gerekli olan 1C dilinde yürütülebilir kod içerir. Ayrıca program modüllerinde kendi yöntemlerimizi (prosedürler ve fonksiyonlar) tanımlayabiliriz.

Tipik olarak, bir yazılım modülü üç bölümden oluşur:

  • değişken bildirim alanı;
  • prosedür ve fonksiyon açıklama alanı;
  • programın ana metni.

Bir program modülünün yapısına bir örnek:

//******************** DEĞİŞKEN BEYAN ALANI *************************

Rem Soyadı İhracatı; / /bu global bir değişkendir
Değişken Adı, Patronimik; //bu bir modül değişkenidir
İsmini değiştir; //bu da bir modül değişkenidir ve erişilebilir

//modülümüzün herhangi bir prosedüründen ve fonksiyonundan

//*************** PROSEDÜR VE FONKSİYON AÇIKLAMA ALAN ****************

Prosedür Prosedür1 ()
Değişken Toplam ; / /Toplam yerel bir değişkendir (prosedür değişkeni)

Toplam = Soyad + "" + Ad + " "+ Patronimik;

İşlem Sonu

İşlev İşlev1 ()

// fonksiyon ifadeleri

Return(Soyadı + " " + Adı );

EndFonksiyonlar

//************************* PROGRAM ANA METİN ******************** *

Soyadı = "İvanov";
İsim = "İvan";
Orta ad = "İvanoviç";

//******************************************************************************

Belirli bir program modülünde, alanlardan herhangi biri olmayabilir.
Değişken bildirim kapsamı modül metninin başlangıcından, Prosedürün veya İşlev ifadesinin veya herhangi bir yürütülebilir ifadenin ilk ifadesine yerleştirilir. Bu bölüm yalnızca değişken bildirim ifadeleri içerebilir.

Prosedürlerin ve fonksiyonların tanım alanı Bir Prosedürün veya İşlev ifadesinin ilk ifadesinden, bir prosedür veya işlev bildiriminin gövdesi dışındaki herhangi bir yürütülebilir ifadeye yerleştirilir.

Ana program metin alanı yordamlar veya işlevler gövdesinin dışındaki ilk yürütülebilir ifadeden modülün sonuna kadar yerleştirilir. Bu bölüm yalnızca yürütülebilir ifadeler içerebilir. Programın ana metninin alanı, modül başlatma sırasında yürütülür. Genellikle, ana program bölümünde, modülün prosedürlerine veya işlevlerine ilk çağrıdan önce atanması gereken bazı belirli değerlerle değişkenleri başlatmak için ifadeler yerleştirmek mantıklıdır.

Program modülleri, konfigürasyonda belirli işlem algoritmalarının tanımını gerektirebilecek yerlerde bulunur. Bu algoritmalar, önceden belirlenmiş durumlarda (örneğin, bir referans formu açarken, bir iletişim kutusunda bir düğmeye tıklandığında, bir nesneyi değiştirirken vb.) sistemin kendisi tarafından çağrılacak prosedürler veya işlevler olarak tasarlanmalıdır.

Her ayrı program modülü sistem tarafından bir bütün olarak algılanır, bu nedenle program modülünün tüm prosedürleri ve işlevleri tek bir bağlamda yürütülür.

Modüllerin yürütme bağlamı, istemci ve sunucu bağlamlarına bölünmüştür. Ayrıca bazı yazılım modülleri hem istemci tarafında hem de sunucu tarafında derlenebilir.

Uygulama modülü (yönetilen veya düzenli)

Uygulama modülü, sistemin başlangıcında ve sonunda başlatılan olayların prosedürlerini (işleyicileri) açıklar. Örneğin, bir uygulamayı başlattığınızda, bazı yapılandırma verilerini güncelleyebilirsiniz ve çıkış yaptığınızda, programdan çıkmanız gerekip gerekmediğini sorabilirsiniz. Ayrıca, bu modül, ticaret veya mali ekipman gibi harici ekipmanlardan gelen olayları yakalar. Uygulama modülünün yalnızca uygulamanın etkileşimli başlatılması durumunda, yani program penceresi başlatıldığında yürütüldüğünü belirtmekte fayda var. Uygulama modda başlatılırsa bu olmaz com bağlantıları.
1C 8 platformunda iki farklı uygulama modülü bulunmaktadır. Bunlar, Ortak Uygulama modülü ve Yönetilen Uygulama modülüdür. Farklı istemciler başlatıldığında tetiklenirler. Örneğin, Web istemcisi başlatıldığında Yönetilen Uygulama modülü tetiklenir, zayıf müşteri ve yönetilen uygulama modunda kalın istemci. Ve normal uygulama modülü, kalın istemci normal uygulama modunda başlatıldığında tetiklenir. Uygulama başlatma modu ayarı, "Ana başlatma modu" yapılandırma özelliğinde ayarlanır.

Uygulama modülü 3 bölümün tümünü içerebilir - değişkenlerin bildirimleri, prosedür ve işlevlerin açıklamaları ve programın ana metni. Uygulama modülü, birçok veri türünü kullanmamızı ciddi şekilde kısıtlayan istemci tarafında derlenmiştir. Bir uygulama modülünün bağlamını, Çağrı Sunucusu özelliği ayarlanmış olan paylaşılan modüllerin yöntemleriyle genişletebilirsiniz. Uygulama programı modülünün dışa aktarma olarak işaretlenen tüm değişkenleri ve yöntemleri, herhangi bir istemci tarafı yapılandırma modülünde mevcut olacaktır. Ancak, ne kadar cazip gelse de, çok sayıda prosedür ve işlevi buraya yerleştirmemelisiniz. Belirli bir modülde ne kadar çok kod varsa, derleme süresi o kadar uzun olur ve sonuç olarak uygulama başlatma süresi de o kadar uzun olur.

Yukarıda belirtildiği gibi, uygulama modülü, uygulamanın başlangıç ​​ve bitiş olaylarını yönetir. Uygulama modülünde bu olayların her birini işlemek için, Önce ... ve Ne Zaman ... adlı birkaç işleyici vardır. Aralarındaki farklar şunlardır: Önce ... işleyicisindeki kod yürütüldüğünde, eylem şu şekildedir: henüz gerçekleşmedi ve yürütmeyi reddedebiliriz. Reddetme seçeneği bunun içindir. İşleyicilerde, eylem zaten gerçekleşti ve uygulamayı başlatmayı veya uygulamadan çıkmayı reddedemeyiz.

Harici bağlantı modülü

  • 3 alanı da içerebilir
  • yapılandırmanın kök bölümünde bulunur

Modülün amacı, uygulama modülünün amacına benzer. Uygulamanın başlangıç ​​ve bitiş olaylarını işler. Uygulama com-bağlantı modunda başlatıldığında harici bağlantı modülü tetiklenir. Dış birleştirme işleminin kendisi etkileşimli bir işlem değildir. Bu modda, program aşağıdakilerle çalışır: bilgi tabanı ve uygulama penceresi açılmıyor, bu da etkileşimli çalışmaya yönelik yöntemlerin kullanımına belirli kısıtlamalar getiriyor. Bu modda, iletişim formlarına yapılan çağrıları, kullanıcıya yönelik uyarıları ve mesajları vb. kullanamazsınız. Sadece koşmayacaklar.

Uygulama modülünde olduğu gibi, burada üç alanın tümü mevcuttur: değişken bildirimleri, prosedür ve işlevlerin açıklamaları ve programın ana metni. Uygulama modülünden temel farkı, com-bağlantı modunda, bilgi tabanı ile yapılan tüm çalışmaların sunucu tarafında gerçekleşmesi, böylece harici bağlantı modülünün sunucu tarafında derlenmesidir. Buna göre, ortak istemci modüllerinin dışa aktarma değişkenleri ve yöntemleri içinde mevcut değildir.

oturum modülü

  • sunucu tarafında gerçekleştirilir
  • yapılandırmanın kök bölümünde bulunur

Bu, yalnızca oturum parametrelerini başlatmak için tasarlanmış oldukça özel bir modüldür. Bunun için neden kendi modülünüzü oluşturma ihtiyacı duydunuz? Kullanımı, uygulamanın kendisinin başlatılabilmesinden kaynaklanmaktadır. çeşitli modlar(yönetilen bir uygulama modülünün, normal bir uygulama modülünün veya bir dış bağlantı modülünün yürütülmesine neden olur) ve başlangıç ​​modundan bağımsız olarak oturum parametrelerinin başlatılması gerekir. Bu modüllerin üçünde de aynı program kodunu yazmamak için ek modül, uygulamanın başlangıç ​​modundan bağımsız olarak yürütülür.

Oturum modülünde, uygulama modülünün PreSystemBegin olayından önce bile ilk olarak tetiklenen tek bir "SetSessionParameters" olayı vardır. Değişken bildirim bölümü ve ana program bölümü yoktur. Ayrıca ihracat yöntemlerini bildirmek de imkansızdır. Modül sunucu tarafında derlenir.

Genel modüller

  • prosedürleri ve işlevleri tanımlamak için bir alan içerebilir
  • sunucu veya istemci tarafında yürütülür (modül ayarlarına bağlıdır)
  • "Genel" - "Genel modüller" yapılandırma nesneleri ağacının dalında bulunur

Ortak modüller, diğer konfigürasyon modüllerinden çağrılacak bazı ortak algoritmaları tanımlamayı amaçlamaktadır. Genel modül, değişken bildirim alanları ve programın gövdesini içermez. Kullanılabilirliği modül ayarları tarafından belirlenecek olan dışa aktarma yöntemlerini bildirebilirsiniz (hangi tarafta yürütülür: sunucu veya istemci tarafında). Değişken bildirimi bölümü mevcut olmadığı için paylaşımlı modüllerde global değişken tanımlamak mümkün değildir. Bunun için uygulama modülünü kullanabilirsiniz.

Paylaşılan modülün davranışı, ayarlanan parametrelere bağlıdır (genel veya değil, çeşitli derleme bayrakları, bir sunucu çağrısının mevcut olup olmadığı vb.). Paylaşılan modülleri kurmak için bazı ipuçları:

"Küresel" bayrağını her yerde kullanmamak iyi bir uygulamadır. Bu, uygulama başlatma süresini kısaltacak ve kodun okunabilirliğini artıracaktır (tabii ki ortak modülün tamamen anlamlı bir adı varsa);
- Birden fazla derleme bayrağı kullanılması tavsiye edilmez. Farklı bağlamlarda gerçekleştirilmesi gereken çok fazla yöntem yoktur ve bu tür yöntemlere yine de ihtiyaç duyulursa, bunlar için ayrı bir ortak modül tahsis edilebilir;
- "Sunucu çağrısı" bayrağı, yalnızca modül "Sunucuda" derlenmişse anlamlıdır. Bu nedenle, çeşitli sorunlardan kaçınmak için diğer tüm derleme bayrakları kaldırılmalıdır;
- modül yöntemlerinde verilerin toplu işlenmesi, veritabanına okuma ve yazma işlemi varsa, o zaman çalışma hızını artırmak için "Ayrıcalıklı" bayrağı ayarlayarak erişim kontrolünü devre dışı bırakmak daha iyidir. Bu mod, yalnızca sunucuda derlenen paylaşılan modüller için kullanılabilir.

Form modülü

  • 3 alanı da içerebilir
  • sunucu ve istemci tarafında gerçekleştirilir

Form modülü, bu formla (düğme tıklama olayını işleme, form özniteliğini değiştirme vb.) kullanıcı eylemlerini işlemek için tasarlanmıştır. Doğrudan formun kendisiyle ilgili olaylar da vardır (örneğin, açılması veya kapanması). Yönetilen ve düzenli formların modülleri, öncelikle modülün yönetilen form bağlam tarafından açıkça ayrılmıştır. Her prosedür veya fonksiyon bir derleme yönergesine sahip olmalıdır. Derleme yönergesi belirtilmemişse, bu prosedür veya işlev sunucu tarafında yürütülür. Her zamanki formda, tüm kodlar istemci tarafında yürütülür.

Yönetilen form yapısı, değişken bir bildirim bölümü, prosedür ve işlevlerin açıklamalarını ve programın gövdesini (form başlatıldığında yürütülür) içerir. Standart form olaylarına, formun beklenen prosedürleri ve işlevleri listesi aracılığıyla erişebiliriz. (Ctrl+Alt+P) veya formun kendisinin özellikler paleti aracılığıyla.

Ana öznitelik forma atanmışsa, ana öznitelik olarak kullanılan uygulama nesnesinin özellikleri ve yöntemleri form modülünde kullanılabilir hale gelir.

nesne modülü

  • 3 alanı da içerebilir
  • sunucu tarafında gerçekleştirilir

Bu modül çoğu konfigürasyon nesnesi için mevcuttur ve genel olarak nesneyle doğrudan ilgili olayları işlemek için tasarlanmıştır. Örneğin, nesneleri kaydetme ve silme olayları, bir nesnenin ayrıntılarının doldurulup doldurulmadığını kontrol etme, bir belge gönderme vb.

Bazı nesne modülü olayları, form modülü olaylarını çoğaltır. Örneğin, kayıtla ilgili olaylar. Ancak, form modülünün olaylarının yalnızca nesnenin belirli formunda, yani belirli form açıldığında yürütüleceği anlaşılmalıdır. Ve nesne modülünün olayları, her durumda, program nesneyle çalışırken bile çağrılacaktır. Bu nedenle, nesnenin belirli bir formuna bağlı kalmadan bir nesneyle ilişkilendirilmiş yöntemlere ihtiyacınız varsa, bunun için nesne modülünü kullanmak daha iyidir.

Nesne yöneticisi modülü

  • 3 alanı da içerebilir
  • sunucu tarafında gerçekleştirilir

Nesne yöneticisi modülü yalnızca 1C 8.2 sürümünden başlayarak ortaya çıktı. Yönetici modülü, tüm uygulama nesneleri için mevcuttur ve bu nesneyi bir yapılandırma nesnesi olarak yönetmek için tasarlanmıştır. Yönetici modülü, veritabanı nesnesinin belirli bir örneğine değil, yapılandırma nesnesinin kendisine uygulanan prosedürleri ve işlevleri tanıtarak (yazarak) bir nesnenin işlevselliğini genişletmenize olanak tanır. Nesne yöneticisi modülü, belirli bir nesne için ortak prosedürler ve işlevler yerleştirmenize ve bunlara örneğin işlemeden (tabii ki, bu prosedür veya işlev Export anahtar sözcüğüyle ise) dışarıdan erişmenize olanak tanır. Bu bize yeni ne veriyor? Genel olarak, prosedürleri nesnelere göre organize etmekten ve bunları ayrı yerlerde depolamaktan başka bir şey değil - Nesne Yöneticisi Modülleri. Bu prosedürleri ve işlevleri ortak modüllere de yerleştirebiliriz, ancak 1C, nesnelerin ortak prosedürlerinin ve işlevlerinin Nesne Yöneticisi Modülüne yerleştirilmesini önerir. Nesne Yöneticileri Modülünün prosedürlerini ve işlevlerini kullanma örnekleri: belirli koşullar altında bir rehber veya belgenin bireysel ayrıntılarının ilk kez doldurulması, belirli koşullar altında bir dizin veya belgenin ayrıntılarının doldurulmasının kontrol edilmesi vb.

Komut modülü

  • prosedürleri ve işlevleri açıklayan bir bölüm içerebilir
  • istemci tarafında yürütülür

Komutlar, uygulama nesnelerine veya bir bütün olarak yapılandırmaya bağlı nesnelerdir. Her komutun, o komutu yürütmek için önceden tanımlanmış bir CommandProcess() prosedürünü tanımlayabileceğiniz bir komut modülü vardır.

Modüller nedir ve tam olarak ne için tasarlanmıştır? Modül program kodunu içerir. Ayrıca, kodun hem form öğelerinin özelliklerinde hem de mizanpaj tablolarının hücrelerinde bulunabileceği 7.7 platformundan farklı olarak, 8.x platformunda herhangi bir kod satırının bulunması gerektiğini belirtmekte fayda var. bazı modüllerde. Tipik olarak, bir modül üç bölümden oluşur - değişkenleri tanımlayan bir bölüm, prosedürleri ve işlevleri tanımlayan bir bölüm ve ana program için bir bölüm. Bu yapı, bazı istisnalar dışında hemen hemen tüm platform modülleri için tipiktir. Bazı modüllerde değişken bildirim bölümü ve ana program bölümü yoktur. Örneğin, Oturum Modülü ve herhangi bir Genel Modül.

Modüllerin yürütme bağlamı genellikle istemci ve sunucu bağlamlarına bölünür. Ayrıca bazı modüller hem istemci tarafında hem de sunucu tarafında derlenebilir. Ve bazıları tamamen sunucu tarafı veya istemci tarafı. Yani:

Uygulama modülü

Modül, uygulama başlatma (yapılandırma yükleme) ve tamamlama anlarını yakalamak için tasarlanmıştır. Ve ilgili olaylarda doğrulama prosedürlerini düzenleyebilirsiniz. Örneğin, uygulamanın başında, herhangi bir yapılandırma referans verisini güncelleyin, işin sonunda, bırakmaya değer olup olmadığını sorun, belki iş günü henüz bitmedi. Ayrıca, ticaret veya mali ekipman gibi harici ekipmanlardan gelen olayları engeller. Uygulama modülünün açıklanan olayları yalnızca etkileşimli başlatma durumunda engellediğini belirtmekte fayda var. Şunlar. program penceresinin kendisi oluşturulduğunda. Uygulama com-bağlantı modunda başlatılırsa bu olmaz.

8.2 platformunda iki farklı uygulama modülü bulunmaktadır. Bunlar, Ortak Uygulama modülü ve Yönetilen Uygulama modülüdür. Farklı istemciler başlatıldığında tetiklenirler. Web istemcisi, ince istemci ve kalın istemci yönetilen uygulama modunda başlatıldığında yönetilen uygulama modülü bu şekilde tetiklenir. Ve normal uygulama modülü, kalın istemci normal uygulama modunda başlatıldığında tetiklenir.

Tüm bölümler uygulama modülüne yerleştirilebilir - değişkenlerin, prosedürlerin ve işlevlerin açıklamaları ile ana programın açıklamaları. Uygulama modülü istemci tarafında derlenir, bu nedenle bu, birçok veri türünün kullanılabilirliğini ciddi şekilde sınırlandırır. Bir uygulama modülünün bağlamını, Çağrı Sunucusu özelliği ayarlanmış olan paylaşılan modüllerin yöntemleriyle genişletebilirsiniz. Dışa aktarma olarak işaretlenen tüm değişkenler ve yöntemler, herhangi bir istemci tarafı yapılandırma modülünde mevcut olacaktır. Ancak, ne kadar cazip olursa olsun, buraya çok fazla yöntem koymayın. Ne kadar çok kod içerirse, derleme süresi o kadar uzun olur ve sonuç olarak kullanıcılar için çok can sıkıcı olan uygulama başlatma süresi o kadar uzun olur.

Yukarıda belirtildiği gibi, uygulama modülü, uygulamanın başlangıç ​​ve bitiş olaylarını yönetir. Uygulama modülünde bu olayların her birini işlemek için, Önce ... ve Ne Zaman ... adlı birkaç işleyici vardır. Aralarındaki fark, Before ... işleyicisindeki kod yürütüldüğünde, eylemin henüz gerçekleşmemiş olmasıdır. gerçekleşti ve yürütmeyi reddedebiliriz. Reddetme seçeneği bunun içindir. İşleyicilerde, eylem zaten gerçekleşti ve uygulamayı başlatmayı veya uygulamadan çıkmayı reddedemeyiz.

Harici bağlantı modülü

Modülün amacı, uygulama modülünün amacına benzer. Uygulamanın başlangıç ​​ve bitiş noktalarını işler. Uygulama com-bağlantı modunda başlatıldığında harici bağlantı modülü tetiklenir. Dış birleştirme işleminin kendisi etkileşimli bir işlem değildir. Bu modda, bilgi tabanı ile programlı çalışma gerçekleşir ve uygulama penceresi açılmaz, bu da etkileşimli çalışmaya yönelik yöntemlerin kullanımına belirli kısıtlamalar getirir. Bu modda iletişim formu çağrıları, uyarı mesajları vb. kullanamazsınız. Sadece çalışmayacaklar.

Uygulama modülünde olduğu gibi burada da değişkenleri, yöntemleri tanımlamaya yönelik bölümler ve ana program için bir bölüm mevcuttur. Ayrıca dışa aktarma değişkenlerini ve yöntemlerini de bildirebilirsiniz. Aradaki fark, com-bağlantı modunda, bilgi tabanı ile tüm çalışmaların sunucu tarafında gerçekleşmesidir, bu nedenle harici bağlantı modülü yalnızca sunucuda derlenir. Buna göre, ortak istemci modüllerinin dışa aktarma değişkenleri ve yöntemleri içinde mevcut değildir.

oturum modülü

Bu son derece uzmanlaşmış bir modüldür ve yalnızca oturum parametrelerinin başlatılması için tasarlanmıştır. Bunun için neden kendi modülünüzü oluşturma ihtiyacı duydunuz? Bunun nedeni, başlatma işleminin bazı kodların yürütülmesini gerektirebilmesi ve ayrıca uygulamanın farklı istemciler altında başlatılabilmesi (bu, farklı uygulama modüllerinin veya harici bağlantı modülünün yürütülmesine yol açar) ve oturum parametrelerinin herhangi bir başlatma modunda başlatılabilir. Bu nedenle, herhangi bir uygulama başlatma modunda yürütülen ek bir modül gerekliydi.

Oturum modülünde, uygulama modülünün BeforeSystemStart olayından önce bile ilk olarak tetiklenen tek bir "SetSessionParameters" olayı vardır. Değişken bildirim bölümü ve ana program bölümü yoktur. Ayrıca ihracat yöntemlerini bildirmek de imkansızdır. Modül sunucu tarafında derlenir.

Uygulamanın her başlatılışında bu modülün çalıştırılması cazibesinden kaçının ve içine, oturum parametrelerinin başlatılmasıyla doğrudan ilgili olmayan kodu yerleştirin. Bunun nedeni, SetSessionParameters işleyicisinin sistem çalışması sırasında tekrar tekrar çağrılabilmesidir. Örneğin, başlatılmamış parametrelere eriştiğimizde bu olur. Ve bu olayın ilk başlatıldığı anı yakalamak mümkün olsa da (RequiredParameters Undefined tipine sahiptir), ancak bu modülün ayrıcalıklı modda derlendiğine dikkat edilmelidir, yani. erişim haklarını kontrol etmez. Ve ikinci nokta, sistemin başlatılacağından hala yüzde yüz emin olamayız. Aniden, uygulama modülü başarısız olacak ve veritabanı ile bazı eylemler gerçekleştirmeye çalışıyoruz.

Genel modüller

Modüller, diğer konfigürasyon modüllerinden çağrılacak bazı ortak algoritmaları tanımlamayı amaçlamaktadır. Genel modül, bir değişken bildirim bölümü ve bir ana program bölümü içermez. Erişilebilirlik bağlamı derleme bayraklarıyla belirlenecek olan dışa aktarma yöntemlerini içinde bildirebilirsiniz. Değişken bildirimi bölümü mevcut olmadığı için paylaşımlı modüllerde global değişken tanımlamak mümkün değildir. Bunu yapmak için, dönüş değeri önbelleğe alma veya bir uygulama modülü ile ortak modüllerin işlevlerini kullanmanız gerekir. Ortak modülün yeniden kullanım özelliği "Oturum süresi boyunca" olarak ayarlansa bile, bu durumda önbelleğe alınan değerlerin kullanım süresinin, oldukları andan itibaren 20 dakikayı geçmediği unutulmamalıdır. son Erişim.
Paylaşılan modülün davranışı, ayarlanan parametrelere bağlıdır (genel veya değil, çeşitli derleme bayrakları, bir sunucu çağrısının mevcut olup olmadığı vb.). Bu makalede, özellik bayrakları makul olmayan bir şekilde ayarlandığında ortaya çıkan davranış özellikleri ve tuzakların yanı sıra her türlü ayarı ele almayacağız. Bu ayrı bir makale için bir konudur. Bayrakları ayarlarken uyulması gereken birkaç nokta üzerinde duralım:

  • Her yerde "Küresel" bayrağı kullanmamak iyi bir kuraldır. Bu, uygulama başlatma süresini kısaltacak ve aynı zamanda kodun okunabilirliğini artıracaktır (tabii ki ortak modülün tamamen anlamlı bir adı varsa).
  • Birden fazla derleme bayrağı kullanılması tavsiye edilmez. Farklı bağlamlarda gerçekleştirilmesi gereken çok fazla yöntem yoktur ve bu tür yöntemlere yine de ihtiyaç duyulursa, bunlar için ayrı bir ortak modül tahsis edilebilir.
  • "Çağrı Sunucusu" bayrağı, yalnızca modül "Sunucuda" derlenmişse anlamlıdır. Bu nedenle, çeşitli sorunlardan kaçınmak için diğer tüm derleme bayrakları kaldırılmalıdır.
  • Modül yöntemleri toplu veri işleme, veritabanına okuma ve yazma için kullanılıyorsa, işin hızını artırmak için "Ayrıcalıklı" bayrağı ayarlayarak erişim kontrolünü devre dışı bırakmak daha iyidir. Bu mod, yalnızca sunucuda derlenen paylaşılan modüller için kullanılabilir.

Form modülü

Kullanıcı eylemlerini işlemeye yöneliktir, yani. veri girişi ve girişlerinin doğruluğunun işlenmesi ile ilgili çeşitli olaylar. Modül normal şekil tamamen istemci üzerinde derlenmiştir. Öte yandan, yönetilen bir form modülü, yürütme bağlamı tarafından açıkça sınırlandırılmıştır, bu nedenle tüm değişkenler ve yöntemler bir derleme yönergesine sahip olmalıdır. Yönerge açıkça belirtilmemişse, bu değişken veya yöntem sunucu tarafında derlenecektir. Form modülünde, ana program için bir bölümün yanı sıra değişkenleri ve yöntemleri tanımlamak için bölümler mevcuttur.

nesne modülü

Bu modül birçok konfigürasyon nesnesi için tipiktir ve genel olarak nesne olaylarını işlemeye yöneliktir. Örneğin, nesneleri yazma ve silme olayları, belge gönderme olayı vb.

Bazı nesne modülü olayları, form modülü olaylarını çoğaltır. Örneğin, kayıtla ilgili olaylar. Ancak, form modülünün olaylarının yalnızca belirli bir form nesnesi üzerinde yürütüleceği anlaşılmalıdır. Genel olarak, bu formlardan birkaçı olabilir. Ve nesne modülünün olayları, her durumda, program nesneyle çalışırken bile çağrılacaktır. Bu nedenle, her durumda bazı kodların yürütülmesi gerekiyorsa, bunun için bir nesne modülü olayı kullanmak daha iyidir.

Nesne modülü, yalnızca sunucuda derlenir. İçinde, diğer yapılandırma modüllerinde kullanılabilecek dışa aktarma değişkenlerini ve yöntemlerini tanımlayabilirsiniz. Bu özelliklerin ve yöntemlerin yardımıyla nesnenin işlevselliğini önemli ölçüde genişletebiliriz.

Nesne yöneticisi modülü

Bu modül birçok konfigürasyon nesnesi için mevcuttur. Bu modülün temel amacı, satır satır giriş sırasında meydana gelen standart seçim olayını yeniden tanımlamak ve yöneticinin işlevselliğini genişletmektir. Modül sunucu tarafında derlenir. İhracat özelliklerini ve yöntemlerini tanımlamak mümkündür. Yöneticinin dışa aktarma yöntemlerini çağırmak, nesnenin kendisinin oluşturulmasını gerektirmez.

Yukarıdakilerin tümüne, yönetilen uygulama modunda yöntemleri karşılıklı olarak çağırmanın yollarını ve bazı yapılandırma modüllerinin bir resmini ekleyebilirsiniz. Ok, ilgili yöntemi çağırmak için gidebileceğiniz yönü gösterir. Diyagramdan da anlaşılacağı gibi, sunucu bağlamı tamamen kapalıdır. Ancak istemci bağlamından sunucu yöntemlerine erişmek mümkündür.

Şemadaki semboller: O.M. İstemci - İstemci ortak modülü; O.M. Sunucu - Sunucu ortak modülü; M.F. Müşteri - Form modülünün müşteri prosedürleri; M.F. Sunucu - Form modülünün sunucu prosedürleri.