Form modülünün içeriği
Her modül yapılandırmanın geri kalanıyla bağlantılıdır. Bu ilişki module context (modül içeriği) olarak adlandırılır.
Modül içeriği, çalışma zamanında mevcut olan nesneler, değişkenler, prosedürler ve fonksiyonlar kümesini tanımlar.
Bir sonraki bölüm form modülünde yazdığımız işleyici hakkında olacağından, form modülünün içeriğinin nelerden oluştuğuna daha yakından bakalım.
Form modülünün içeriği aşağıdakilerden oluşturulur:
- form modülünün kendi yerel içeriği;
- modülün "ait olduğu" formun öznitelikleri;
- 1C:Enterprise dilinin ManagedForm nesnesinin özellikleri ve yöntemleri;
- varsayılan form özniteliğinde verileri bulunan nesne türü tarafından tanımlanan form uzantısının özellikleri ve yöntemleri;
- global olmayan ortak modüller ve global ortak modüllerin dışa aktarılabilir işlevleri ve prosedürleri dahil olmak üzere global içerik;
- yönetilen uygulama modülünün dışa aktarılan değişkenleri, prosedürleri ve işlevleri.
Şimdi bu bileşenlerin her birinin neyi temsil ettiğine daha detaylıca bakalım.
- Form modülünün yerel içeriği.
Bir form modülünün yerel içeriği, o modülde bildirilen değişkenler, prosedürler ve fonksiyonlardır.
Örneğin, bir form modülü içinde, aynı modül içinde bildirilen GetTotal() prosedürüne doğrudan isimle başvurabilirsiniz (Liste 5.2):
Liste 5.2. Form modülü
&AtClient
Procedure Command1()
GetTotal();
EndProcedure
&AtServerNoContext
Procedure GetTotal()
…
EndProcedure
Ya da bir form modülü içinde, o modülde bildirilen InternalVariable değişkenine doğrudan adıyla başvurabilirsiniz (Liste 5.3):
Liste 5.3. Form modülü
&AtClient
Var InternalVariable;
&AtClient
Procedure Command1()
InternalVariable = 3;
EndProcedure
- Modülün "ait olduğu" formun öznitelikleri.
Örneğin, bir formun InternalAttribute özniteliği varsa (Şekil 5.8), buna doğrudan adıyla başvurulabilir (Liste 5.4):
Şekil 5.8. Form özniteliği – "InternalAttribute"
Liste 5.4. Form modülü
&AtClient
Procedure Command1()
InternalAttribute =3;
EndProcedure
- ManagedForm nesnesinin özellikleri ve yöntemleri.
1C:Enterprise dil nesnesi ManagedForm'un özellikleri ve yöntemleri sözdizimi asistanında açıklanmıştır: Interface (managed) > ManagedForm (Şekil 5.9).
Şekil 5.9. Sözdizimi asistanında yönetilen form özellikleri
Kendilerine doğrudan isimleriyle hitap edilebilir. Örneğin, formun başlığını ayarlayabilirsiniz (Liste 5.5).
Liste 5.5. Form modülü
&AtClient
Procedure Command1()
Title = "Yeni form başlığı";
EndProcedure
Ya da form kapatılabilir (Liste 5.6).
Liste 5.6. Form modülü
&AtClient
Procedure Command1()
Close();
EndProcedure
- Form uzantısının özellikleri ve yöntemleri, verileri varsayılan form özniteliğinde bulunan nesnenin türüne göre tanımlanır.
Form özniteliklerinden biri, öznitelikler listesinde kalın olarak gösterilen ana öznitelik olabilir. Genel olarak, formun ana özniteliği formda görüntülenen nesnenin verilerini içerir. Örneğin, eğer bu bir katalog formu ise, ana öznitelik CatalogObject.<Ad> nesnesinin verilerini içerecektir (Şekil 5.10).
Şekil 5.10. Formun ana özniteliği
Ve eğer bu bir belge formu ise, formun ana özniteliği DocumentObject.<Ad> nesnesinin verilerini içerecektir (Şekil 5.11).
Şekil 5.11. Formun ana özniteliği
Bu noktada öznitelik listesinde ana öznitelik türünün neden parantez içinde gösterildiği açıklanmalıdır: (DocumentObject.Document1). Mesele şu ki, bu "gerçek" türde bir öznitelik değildir. Bu durumda gerçek tür şöyle olacaktır FormDataStructure (Şekil 5.12).
Şekil 5.12. Formun ana öznitelik nesnesi türü
Ancak FormDataStructure, çeşitli uygulama nesnelerinden veri içerebilen genel bir türdür. Bu nedenle, form editöründe bu formun hangi uygulama nesnesi verilerini gösterdiğine "uyum sağlamak" için, editörün Type sütunu form özniteliğinin türü (FormDataStructure) değil, verileri bu öznitelikte bulunan nesnenin türünü gösterir. Ve bu "sahte" tür parantez içinde gösterilmiştir.
Verileri formun ana özniteliğinde bulunan nesnenin türü, formun davranışının birkaç özelliğini belirler.
Örneğin, formun ana özniteliği belge verilerini içeriyorsa, böyle bir form kapatılırken, sistem bu belgenin saklanması ve kaydedilmesi için onay isteyecektir. Formun ana özniteliği katalog verilerini içeriyorsa, form kapatıldığında böyle bir onay talebi olmayacaktır.
Verileri ana öznitelikte bulunan nesnenin türüne bağlı olarak, ilgili uzantının içeriği ManagedForm program nesnesinin içeriğine eklenir.
Örneğin, ana öznitelik CatalogObject.<Ad> ise, katalog için 1C:Enterprise dili Managed Form Extension'ın özellikleri, nesne yöntemleri form modülünde kullanılabilir hale gelir (Syntax Assistant – Interface (managed) > Managed form > Managed form extension for catalogs), Şekil. 5.13.
Şekil 5.13. Sözdizimi Asistanı'ndaki nesnelerin açıklaması
Ana öznitelik DynamicList ise (Şekil 5.14), Dinamik Liste için yerleşik 1C:Enterprise Managed Form Extension dil nesnesinin özellikleri ve yöntemleri form modülünde kullanılabilir hale gelir (Syntax Assistant - Interface (managed) > Managed form > Managed form extension for dynamic lists), Şekil 5.15.
Şekil 5.14. Formun ana özniteliği
Şekil 5.15. Sözdizimi Asistanı'ndaki nesnelerin açıklaması
Böylece, ana özniteliğin belge verilerini içerdiği bir form modülünde (Şekil 5.16), AutoTime belgesi için yönetilen form uzantısı özelliğine başvurabilirsiniz (Liste 5.7).
Şekil 5.16. Formun ana özniteliği
Liste 5.7. Form modülü
&AtClient
Procedure Command1()
AutoTime = AutoTimeMode.First;
EndProcedure
Veya Yaz() belgesi için yönetilen form uzantı yöntemini kullanarak belgeyi yazın, Liste 5.8:
Liste 5.8. Form modülü
&AtClient
Procedure Command1()
Write(DocumentWriteMode.Posting);
EndProcedure
- Global olmayan ortak modüller ve global ortak modüllerin dışa aktarılabilir işlevleri ve prosedürleri dahil olmak üzere global içerik.
Form modülünde, sistem tarihi yerleşik CurrentDate() işlevi çağrılarak elde edilebilir, Liste 5.9.
Liste 5.9. Form modülü
&AtClient
Procedure Command1()
Message(CurrentDate());
EndProcedure
Veya kullanıcının iş geçmişi UserWorkHistory global içerik özelliğine erişerek alınabilir (Liste 5.10).
Liste 5.10. Form modülü
&AtClient
Procedure Command1()
History = UserWorkHistory.Get();
EndProcedure
GetNumberPrefix() dışa aktarma prosedürü global ortak modülde (örneğin DataExchange) tanımlanmışsa (Liste 5.11), form modülünde adıyla anılabilir (Liste 5.12).
Liste 5.11. Global ortak modül
Function GetNumberPrefix() Export
Return Constants.NumberingPrefix.Get();
EndFunction
Liste 5.12. Form modülü
&AtClient
Procedure Command1(Prefix)
Prefix = GetNumberPrefix();
EndProcedure
Böyle bir genel modül global olmayan bir modülse (örneğin DocumentProcessing), prosedür adı modül adından sonra bir nokta ile belirtilmelidir (bkz. Liste 5.13).
Liste 5.13. Form modülü
&AtClient
Procedure QuantityOnChange(Item)
DocumentProcessing.CalculateTotal(TabularSectionRow);
EndProcedure
İkinci yöntem tercih edilir çünkü global olmayan ortak modüller, global modüller gibi sistem başlangıcında değil, erişildiklerinde derlenirler.
Doğal olarak, prosedürün form modülünde nasıl tanımlandığı (&AtClient, &AtServer, vb.) ve ortak modülde hangi onay kutularının işaretlendiği (Client (managed application), Server, vb.) konusunda tutarlılık sağlanmalıdır.
- Yönetilen uygulama modülünün dışa aktarılabilir değişkenleri, prosedürleri ve fonksiyonları.
TestMessage() dışa aktarma prosedürü uygulama modülünde (Liste 5.14) tanımlanmışsa, form modülünde (Liste 5.15) bu prosedüre adıyla erişilebilir.
Liste 5.14. Uygulama modülü
Procedure TestMessage() Export
Message("Test mesajı");
EndProcedure
Liste 5.15. Form modülü
&AtClient
Procedure Command1()
TestMessage();
EndProcedure