3.22.5. Döngüsel referanslarla ilgili bilgilerin yazılması


<< Prev   Next >>

Karmaşık uygulama çözümleri geliştirilirken döngüsel referanslara yol açacak çeşitli hatalar yapılması mümkündür. Döngüsel referanslar, bir programda herhangi bir verinin doğrudan veya dolaylı olarak kendi kendine referans içerdiği bir veri yapısıdır. Böyle bir döngüsel referansın en basit örneği:

Structure1 = New Structure("Structure2Ref");
Structure2 = New Structure("Structure1Ref");
Structure1.Structure2Ref = Structure2;
Structure2.Structure1Ref = Structure1;

Bu tür veriler tarafından kullanılan bellek, örneğin yerleşik dilde böyle bir program kodunu içeren bir form gibi, iş tamamlandıktan sonra sistem tarafından serbest bırakılamaz. Sonuç olarak, bu tür kodu içeren bir formun her açılışı, uygulama oturum sürecinin daha fazla RAM kullanmasına ve kullanımdan sonra bırakmamasına neden olur. Sonunda, uygulama ya anormal bir şekilde sonlandırılır ya da aşırı RAM kullanmaya başlar. Bir uygulama tarafından artan RAM kullanımı, diğerlerinin yanı sıra, genel bilgisayar yavaşlamasına, değişiklikler yapıldıktan sonra harici veri işlemcilerinin açılamamasına vb. neden olabilir.

Döngüsel referansların ortadan kaldırılması gerektiği açıktır. Yapılandırmalarda döngüsel referanslara yol açan hataları bulmak için çeşitli araçlar kullanılabilir:

  1. Teknolojik günlüğün bir yapılandırma dosyasını değiştirme.
  2. Bir istemci veya sunucu uygulamasını başlatmak için komut satırını kullanma.
  3. conf.cfg dosyasının bir parametresini kullanma.
  4. 1C:Enterprise dil yöntemini kullanma.

Sistemin döngüsel referansları algıladığındaki davranışı seçilen moda göre değişecektir:

  • Teknolojik günlük kullanılırken, SCRIPTCIRCREFS olayları günlüğe yerleştirilecektir. Böylelikle, bir uygulama çözümünün yürütülmesi kesintiye uğramaz.
  • Diğer araçların kullanılması, bir uygulama çözümünün çalışmasının kesintiye uğramasına neden olur ve ilgili bir mesaj tetiklenir. Böyle bir mesaj verildikten sonra çalışmaya devam edilemeyecektir.

Döngüsel referanslar aşağıdaki durumlarda kontrol edilir:

  • 1C:Enterprise dil yöntemini tamamlarken: yöntemin tüm yerel değişkenleri ve parametreleri analiz edilir.
  • Bir oturum parametresi ayarlanırken: oturum parametre değeri olarak ayarlanan bir değer analiz edilir.
  • 1C:Enterprise dilinin özel bir yöntemini çağırırken.

Döngüsel referanslar hakkında bilgileri teknolojik günlüğe dahil etmek için, teknolojik günlük yapılandırma dosyasında (logcfg.xml) <scriptcircrefs> öğesinin belirtilmesi gerekir. Bu durumda 1C:Enterprise döngüsel referansları analiz etmeye başlayacaktır. SCRIPTCIRCREFS olaylarının teknolojik günlüğe yazılıp yazılmayacağı, teknolojik günlüğün diğer ayarlarına bağlıdır.

Bir ince veya kalın istemci uygulaması başlatılırken başlatma komutunun EnableCheckScriptCircularRefs parametresi kullanılırsa bu, sistemin bir uygulama çözümünün istemci kodunda döngüsel referansları arayacağı anlamına gelir. Designer ayarlarında 1C:Enterprise komut dosyası döngüsel referanslarını algıla onay kutusu (Ana menü - Servis - Parametreler - 1C:Enterprise başlatma - Ek) seçiliyse bu parametre ayrıca istemci uygulama başlatılırken komut satırına girer.

1C:Enterprise sisteminin sunucu tarafında döngüsel referans aramayı etkinleştirmek için sunucuyu / enableCheckScriptCircularRefs parametresi ile başlatmak gerekir. Bu durumda, başvurulan parametre ile başlatılan sunucu tarafından hizmet verilen tüm oturumlarda döngüsel referanslar aranacaktır.

conf.cfg dosyasının EnableCheckScriptCircularRefs parametresinin true olarak ayarlanması, 1C:Enterprise sisteminin belirtilen parametreye sahip conf.cfg dosyası kullanan tüm örnekleri tarafından yerleşik 1C:Enterprise dilinde kod yürütülürken döngüsel referanslar için arama gerçekleştirileceği anlamına gelir.

Döngüsel referanslar için genel bağlam yöntemini kullanarak bir arama başlatmak mümkündür CheckCircularReferencesOf1CLanguage(). Bu yöntem çağrıldığında yöntemin parametresi olarak belirtilen değişken ya da yöntemin yürütüldüğü anda kullanılabilir olan tüm yerel değişkenler kontrol edilir.

Ayrıca bkz.:

<< Prev   Next >>

Icon/Social/001 Icon/Social/006 Icon/Social/005 Icon/Social/004 Icon/Social/002