Soru – Cevap

Yorum kısmına sorularınızı yazabilirsiniz.

Her bir soruyu düzenleyerek ekleyeceğim.

Sorunuzun daha önce sorulup sorulmadığını ve soruldu ise cevabını da takip edebileceksiniz.

152 responses

  1. Merhaba Emre Bey,

    Bir tane Headerı bir tane bodysi ve bir tane de programmable sectionı olan bir raporu aynı sayfaya çift basmak için ne yapmak gerekir.

    Teşekkür ederim.

  2. Merhaba;

    Formlardaki datasource metodlarından refresh, refreshex, reread, redraw, research, reload, executeQuery arasındaki farklılıklar nelerdir acaba? Hangi durumlarda nerelerde kullanılır?
    Ayrıca, formda işlemleri yaptıktan sonra başka ekranı refresh ettirme yöntemi var mı?

  3. Emre Bey, Ben bir tekstil firmasında axapta programcısı olarak çalışıyorum.(3 Aydır.) Üniversiteden yeni mezun olmam hasebiyle, yazılım sektörüyle yeni tanışmış sayılırım.
    Axapta üzerine bir kursa gitmek istiyorum. Etg danışmanlığın eğitimlerinin olduğunu duydum. Vermiş olduğunuz eğitim programlarınız var mı?
    Eğitim süreçleri nasıl?
    Bu konuda beni bilgilendirirseniz sevinirim.

  4. Merhaba;
    Benim takıldığım bir konu var. Bir gridde kaç tane satır olduğunu nasıl saydırırız. Ama while select ile değil. Çünkü 1 milyon kayıda while select çekersek o form açılmaz. Display alanım, form açıldığında kaç kayıt olduğunu gösterecek. Filtre uygulandığında display alan kendini refresh edip griddeki satır kadar sonuç yazacak.
    İyi çalışmalar.

  5. Emre Bey,

    Tablolarda CacheLookup özelliğini ayrıntılı bir şekilde anlattığınız gibi TablegGroup özelliğini de analatabilir misiniz?

    Teşekkür ederim.

  6. Merhaba benim şöyle bir problemim var;
    Normalde Binaların amortismanını hesaplarken örnek bina 50 yılda kendini itfa etmesi gerekiyor.
    Ama itfa süresi sonunda binaların özel durumundan dolayı binanın değeri ile 50 yılın sonunda oluşan toplam amortisman değeri birbirine eşit olmaması gerekiyor.ama bu durum sadece bina için geçerli

    Ax’da program 49 yıl 11 ay boyunca doğru bir şekilde amortisman hesaplayıp kalan son ayda kalan bakiyenin tamamını amortisman giderine atıp sabit kıymet değeri ile amortisman değerini birbirine eşitliyor.
    Halbuki son ayda da önceki aylar gibi hesaplaması gerekiyordu.yani sabit kıymet değeri ile amortisman değerinin birbirine eşit olmaması gerekiyordu.
    Biz bu problemi çözemedik yardımcı olabilirseniz sevinirim.
    Teşekkürler.

    • Bu konu ile ilgili uygulama danışmanı arkadaşlarımın yazılarını incelemelisiniz.
      blog.etg-it.com’da Hasan Bilgin’in yazılarında ararsanız sonuç almanız mümkün olabilir.

  7. Merhaba Emre bey;
    Şöyle bir sorum olacaktı.
    Raporda interaktif yes olduğunda ve raporu çalıştırdığımızda rapor açılmadan önce dialog ekranı geliyor.
    Açılan dialog ekranında 3 tane standart buton var. Seç, varsayılan,seçenekler. Giren kişiye göre seç butonunu nasıl pasif yapabilirim.
    İyi çalışmalar.

  8. Hocam merhabalar,

    EP ile alakalı bir sorunum var. Biliyorsunuz ki aynı URL menu item ‘ı birçok farklı yere ekleyebiliyoruz. Eklediğimiz URL menu item ‘ın özelliklerinde “Parameters” alanı var ve bu alana istediğimiz değeri yazabiliyoruz. Fakat ben bir türlü açılan sayfanın init methodunda eklediğim değerleri elde edemedim.

    element.args().parm() tamamiyle boş geliyor. Ayrıca EP formlarında WebArgs şeklinde başka bir class’la karşılaştım.

    İstediğim değerleri nasıl elde edebilirim,

    Saygılarımla…

  9. Merhaba

    Satış siparişlerinde teslim tarihi geçtiği halde tüm siparişlerin teslim edilmemesi durumunda kullanıcıya mail göndermeyle ilgili bir batch yazmak istiyorum.Elinizde örnek varmı?Yardımcı olabilirmisiniz?

    • Selamlar.
      Elimde bu konuya tam uyan bir örnek yok. Ama parçalı bir yardımda bulunabilirim.
      İlk olarak Batch işlemleri tanımlamak için AOTClassesTutorial_RunbaseBatch örneğinden yararlanabilirsiniz.
      Bu class batch işlem tanımlamak için gereken şablon bir classtır. Bu classı çoğaltıp ismini değiştirin ve kullanın.

      Mail atmak için ise sysEmailBatch classını kullanabilirsiniz.
      Bu classı incelemek için http://osmankalender.wordpress.com/2011/05/04/axapta-mail-gondermesysemailbatch/
      Mail göndermenin tek yolu bu değildir, ama güzel bir yöntemdir.
      Ayrıca SysOutlookEmail, SysInetMail, SysMailer classları da kullanılabilir.
      herbirinin kendince avantaj ve dezavantajları bulunmaktadır.

      Teslim tarihi geçtiği halde tamamı teslim edilmeyen satış siparişlerini bulmak için CustInvoiceJour ve CustInvoiceTrans tablolarını incelemeniz gerekecek.

  10. Uyarı kuralı oluşturduğum bir tablo için, mesaj içerisine nasıl o tablonun istediğim bir alanını getirebilirim.

    İyi Çalışmalar,

  11. Sorularımı cevapladığınız için teşekkür ederim.
    Ben Dev 1 sınavına girmek istiyordum. Ama nerede, ne zaman, şartları nelerdir, Bunlar hakkında hiçbir bilgim yok. Bu konuda yardımcı olur musunuz?

    • Selamlar Mustafa.
      Öncelikle sorunun bir kısmının cevabı için İrşad Bey’e 27/12/2010 10:14 tarihinde verdiğim cevabı inceleyebilirsin.
      Girmek istediğin sınavın kodu MB6-819 Development Introduction‘dır.
      Bu sınavın içeriği Dev1 ve Dev2 konularını kapsar.

      Sınava girmek için herhangibir yetkili Prometric Test Center’i seçebilirsin.
      Sınava kendin kaydolabileceğin gibi Prometric yetkilisi aracılığı ile de kaydolabilirsin.
      Ücret bilgisini de oradan öğrenebilirsin.
      Eğer ETG’de girmek istersen Mete Bey yardımcı olacaktır. (mete.korkmaz@datatraining.net)

      Bu sınav hafta içi günlerden birinde gününü ve saatini senin belirlediğin bir test sınavı olacaktır.
      Ortalama 50 – 60 soru sorulur ve %70 başarı aranır.
      Yanlışlar doğruları götürmez.

      Çoktan seçmeli sorularda bazen tek bir şık doğrudur, bazen birden fazla seçmen istenebilir.
      Örneğin alttaki 5 seçenekten doğru olan ikisini seçiniz, ya da doğru olanların hepsini seçiniz şeklinde sorular gelebilir.

  12. Emre bey merhaba ;
    Ben vatan computerde calışıyorum. daha yeni tanıştık axapta ile depo konusunda bilmediğimiz bir çok şey var. mesela iç transfer nasıl çıkılır onu bilmiyoruz yine barkod nasıl basılır onu da bilemiyoruz gelen transferleri kabul etmeyide.
    Bu konuda bana yardımcı olur musunuz?

    • Selamlar Gökhan bey.
      ilk olarak tanışmanız hayırlı olsun, iyi günlerde kullanmanızı temenni ederim.
      Öncelikle sorularınız çok genel, uygulamanızın nasıl olduğuna bağlı olarak çok farklı olabilir.
      Ben yine de yardımcı olmaya çalışayım.

      Axaptada varsayılan bir barkod yazdırma ekranı yoktur.
      Bir geliştirme yapılmış olması gerekir.
      Ayrıca pek çok şeyin (stok kartı, ambar bilgisi, yükleme bilgisi, satış siparişi bilgisi vb) barkodu bastırılmak istenebilir.
      Sizin neyi barkod olarak bastırmak istediğiniz önemli.

      İç transfe için ise Stok Yönetimi Günlükler Transfer Günlüğü kullanılır.
      Ama ben yazılımcı olduğum için ancak bu kadar yardım edebilirim.
      Sizin Vatan Computer olarak bir firma ile ilişkiniz olması gerekir,
      Bu firmadan yardım istediniz mi?

  13. Emre Bey Merhaba,
    Şöyle bir sorunumuz var. Axta bildirimler var. İş akışda onaylanması için yöneticiye bildirim gidiyor.
    Bildirimler de ise kaynağa git butonu var. Bizim şirkette reklam ve seri ilanlar aynı tabloda tutuluyor ama farklı formları var. İki bildirimde de reklam formunu açmaya çalışıyor. Acaba EventContextDrillDown classında nerede hangi form a gideceğini anlıyor. Hangi kırılımda hangi form a gittiğini bulabilsek bir if ile çözülebilecek bir problem. Yardımcı olursanız sevinirim.
    İyi Çalışmalar ve yeni işinizde başarılar.

    • Öncelikle teşekkürler Mustafa Bey.
      Eğer soruyu doğru anladıysam, aynı tabloda tutulan iki farklı türde kayıt var. Ancak bunlar birbirine oldukça yakın alanlardan oluşmakta.

      Ax’taki kaynağına git özelliği EDT’nin ana tablo formuna git mantığı ile aynı şekilde çalışmaktadır. Dolayısı ile her iki kayıtta da aynı forma gidecektir. Yani AX kendi içinde tutarlı bir işlem gerçekleştiriyor.
      Bunu düzenlemek için herzaman açılan formun init metodunda args.record’a ulaşıp kaydın türüne göre ilgili formu kapatıp diğerini açmayı deneyebilirsiniz.

      Kodla form açmak ile ilgili bir makale blogda mevcut. Açık olan formu kapatmak için ise element.close() kullanılabilir.

      Bahsettiğiiniz class’ı değiştirmek tehlikeli olacaktır. Şahsi tavsiyem üstteki yöntemi ya da buna benzer yöntemleri denemeniz şeklinde olacaktır.
      İyi çalışmalar.

  14. Formlara grid eklendiğinde gridin header ına tıklandığında sıralama yapmamasını nasıl sağlayabilirim?

    Teşekkürler.

    • nasıl bir sıralama yapmamasını istiyorsunuz? Rasgele mi gelmesini istiyorsunuz?
      İndex varsa index e göre sıralama yapar.
      Eğer çok kayıt varsa indexsiz performans açısından sıkıntı çıkartabilir.

    • Mustafa Bey, sanırım Ali Bey grid’in interaktif çalışmamasını, yani alanlara tıklandığında sıralamanın değişmemesini istemekte. Muhtemelen gösterilen kayıtların sırası önemli ve değişmesi istenmiyor.
      Bunun için iki temel yöntem kullanılablir,
      ilki query’nin her seferde yeniden oluşturularak kullanıcıdan bağımsız hale getirilmesi,
      ikincisi ise gridin bazı özelliklerine müdahele ederek sıralamanın iptal edilmesi.

      Bu isteğe ilk kez rastladım ve biraz araştırma yapmam gerekiyor. İlk fırsatta yazacağım.
      Mustafa bey bu minvalde bir araştırma yapar mısınız?

      • Emre Bey;
        Dediğiniz doğrultuda araştırdığıma göre, formun Datasource nda özelliklerinden AutoQuery özelliğini No yapınca giridte sıralama yapması engelleniyor. Ama başka birşeyi engeller mi bilemiyorum.
        İyi çalışmalar.

  15. Emre Bey;
    Ax üzerinden birden çok kullanıcıya outlooktan takvim göndermek istiyoruz.
    Bunun nasıl yapabiliriz?
    Kullanıcıların direk olarak takvim olarak outlooklarına düşmesini istiyoruz.
    Ayrıca
    Gönderen kişi ise Outlook unu açmadan gönderme şansımız var mı? Çünkü gönderen kısmında insan kaynakları yazacak.

  16. Daha önceden yapılmış bir class ı her seferinde bir job içerinde manuel çalştırmak yerine bunu peryodige bağlanabilir mi?

    Teşekkürler..

  17. Bir form oluşturdum. realedit alan oluşturdum. Auto Decleration özelliğini YES yaptım.
    Sonra buton oluşturdum ve butona tıklayınca ana tablomu, bu alan içindeki değer ile güncellemek istiyorum. String x.text(); ile çekiliyor.integer y.value(); ile çekiliyor. Ama Real değerleri çekemiyorum. Nasıl Real değeri çekebilirim acaba?
    Şimdiden Teşekkürler…

  18. Selamlar. Kolay gelsin. Öncelikle ben kendi sitem için istatistik ve sayaç gibi bir bölüm yapmak istiyorum.
    Bunun için herhangi bir site önerisi veya bir kodlama verirseniz sevinirim e-posta’ma şimdiden kolaygelsin…

  19. Emre bey merhaba,
    benim form1 addında iş akışı formum var.gönder ,geri göner ,
    iptal durumlarınnda email atmasını istiyorum.bunun için email templati oluşturdum;
    ancak her durumda template farklı olacak bunu nasıl sağlayabilirim.,
    sysemaildistrubutor class ı çalışıyor; bu classa kod yazmak istemiorum.
    ya da iş akışı konfigürasyonlarında subject için kayıt iade edildi yerine kayıt iade edildi:123_201
    -benim tablomun idsi–yazsın

    yardımcı olursanız çok sevinirim.

  20. Merhaba Emre Bey,
    Ben TaxTrans tablosunu kullanarak Muhtasar adında bir rapor hazırladım.Raporda adres sütunu mevcut. Adres alanı addressing edt sinden türediğinden displayheight özelliği 5 olduğundan 5 satır geliyordu. adres alanını string olarak bastığımdan raporda tek satıra düşürebildim. Bu raporun amacı txt formatında basılıp beyanname programına aktarılmak.
    Rapor txt formatında basılıyor.Adres alanı tek satırda geliyor. Sorun yok.
    Fakat txt formatını excelle açtığımda bazı adresler yine 2- 3 satıra parçalanıyor.
    Bu sorunu nasıl çözeceğimi bilemiyorum. Yardımcı olabilirseniz memnun olurum.

    Txt formatına dönüştürdüğüm ksım:
    tio.write(strfmt(“%1t%2t%3t%4t%5t%6t%7”,lastName, firstName, tcNum, vatNum, address, sourceAmount, taxAmount));
    tio.write(“rn”);
    Teşekkür ederim.

    • Selamlar Yıldız Hanım.
      Yaptığınız işlemler genel olarak doğru.
      Ancak Excel otomatik formatlama yaptığından veriyi aktardığınızda kendi kriterlerine göre değiştirmektedir.
      Bu nedenle Txt dosyasını Excel ile açtığınızda istediğiniz sonucu elde edememeniz normal.

      Bundan kaçınmanın en kolay yolu, eğer ihtiyaçlarınıza uygunsa,
      Axapta’dan aldığınız veriyi bir Excel’e aktarmak olacak.
      Burada da direk ilk sayfaya aktarım yerine,
      Excel’in ikinci sayfasına aktarıp, formülle ilk sayfada göstermek işinizi kolaylaştırır.
      Böylece veriyi ilk sayfada istedğiniz gibi biçimlendirirsiniz, aktarım esnasında da bozulmaz.

      Tabi bu işlem için şablon kullanmanız gerekecektir,
      yani aktarım öncesi, tercihen paylaşılan bir konumda bulunan bir Excel şablununu açıp,
      gerekli bilgileri ikinci sayfaya doldurmak
      ve farklı kaydederek kullanıcıya vermek.

      Örneğin Excel’in ikinci sayfasındaki C3 hücresinde bulunan bilgiyi, birinci sayfadaki A1 hücresinde göstermek siterseniz
      A1 hücresine =Sheet2!C3 yazarsınız.

      Faydalı olması temennisi ile…

  21. Emre Bey Merhaba,

    Size bir sorum olacaktı. Ben kodla bir GM günlüğü oluşturup sonrada oluşturduğum bu günlüğün satırlarına gidip(LedgerJournalDaily formu) bu formda bulunan İşlevler>GenelMuhasebe hareketlerini yükle butonu tıklayarak açılacak pencerede seç düğmesiyle açılacak ekranda fiş alanına bir fiş no göndererek o fişin LedgerJournalTransda ki ters kayıdını oluşturacağım.
    Burda çalışan class LedgerJournalGetTrans. Bu classı kodla çağırıp, kendi kriterlerimi bu classı prompt yapmadan vermek istiyorum.
    Günlüğü oluşturdum. Classı çağırdım. Dialog ekranını açmadan parm metotlarla gönderdim parametreleri.Burada sorun yok.
    Fakat bu classda dialog ekranında yan tarafda LedgerTrans eklenmiş.
    Classı çok inceledim fakat LedgerTrans oraya nasıl iliştirilmiş anlamadım.
    Ben dialog ekranı açılmadan kodla başka bir classdan gelecek bir fiş numarasını bu classa göndermek istiyorum.
    Hem mevcut yapıya müdahale etmek istemiyorum. Hem de kendi işimi görecek değişikliği yapmak istiyorum.
    Umarım anlatabilmişimdir sorunumu:)
    Yardımcı olabilir misiniz?

    Teşekkür ederim.

    • Selamlar Yıldız Hanım. Muhtemelen anladım.
      Çözüm ile ilgili ise önerim şöyle olacak; bahsettiğiniz classta queryRun metodu var.
      Malumunuz QueryRun metodu ilgili kayıtlarda dolaşmak üzere oluşan sorguyu ifade etmektedir.
      Classı incelerseniz init metodunda
      queryRun = new QueryRun(querystr(LedgerJournalGetTrans));
      olduğunu göreceksiniz.

      Siz kendi kriterleriniz ile bu sorguyu değiştirip classa tekrar yollayabilirsiniz.
      Örneğin :

      qr = ledgerJournalGetTrans.queryrun();
      qr.dataSourceTable(tablenum(LedgerTrans)).addRange(………);
      ledgerJournalGetTrans.queryrun(qr);
      Umarım yardımcı olur.

      • Merhaba Emre Bey,

        Öncelikle ilgilendiğiniz için çok teşekkür ederim.
        Bu class sizin de söylediğiniz gibi init metodunda ki queryRun’nı kullanıyor.

        LedgerJournalGetTrans.queryRun() bir parametre kabul etmiyor.
        Parm metoduyla göndereyim dedim. Ama o zaman da sanırım classın gerçek işlevini bozmuş oluyorum değil mi?

        Bu durumda ledgerJournalGetTrans = new LedgerJournalGetTrans(); ifadesi final class LedgerJournalGetTrans extends RunBase metodunu değilde parmla oluşturulan queryRun ‘ı görmüş oluyor. Anlatamamış olabilirim….

        Bu durumda ne yapabilirim?

        Tekrardan teşekkürler.

      • Selamlar.
        parmQueryrun metodu ekleyin, sorun olmaz.
        Daha sonra alttaki gibi kullanabilirsinİz.

        .
        .
        qr = ledgerJournalGetTrans.parmQueryrun();
        qr.dataSourceTable(tablenum(LedgerTrans)).addRange(………);
        .
        .

        ledgerJournalGetTrans. parmQueryrun (qr);

        iyi çalışmalar.

      • Merhaba Emre Bey,

        LedgerJournalTrans tablosuna oluşturduğum kayıtları deftere nakledeceğim.
        LedgerJournalPost classının ayrı ayrı metotlarını çağırmak yerine bu classın direk main metodunu çağıramaz mıyım?

        main(Args args) metodunda bulunan args parametresinin tam olarak bir karşılığı yok mu?

        Muhtemelen main’i direk çağıramıyoruzdur ama yine de merak ettim.

        Teşekkür ederim.

  22. Merhaba Emre Bey,

    VendTransOpen formunun datasourcunda bulunan VendTransOpen datasourcunun CrossCompanyAutoQuery özelliği ‘yes’ yapılmış.
    CrossCompanyAutoQuery özelliği ne işe yarıyor?
    Ek olarak select crosscompany ifadesi ne anlama geliyor?
    select crossCompany count(RecId) from specTrans gibi……

    Ço teşekkür ederim.

    • Selamlar.
      CrossCompany özelliği AX’ta kullandığımız şirket hesapları bilgisinin sorgudan çıkarılmasını ya da yönetilmesini sağlamaktadır.
      Yani birden fazla şirket hesabınızdaki tüm müşterileri görmek isterseniz

      while select crossCompany custTable gibi bir sorgu yazabilirsiniz.

      Konu ile ilgili bir yazı ekledim. Dilerseniz inceleyebilirsiniz.

      http://emretufekci.wordpress.com/2012/04/24/sirket-hesaplari-ve-crosscompany/

      Bahsettiğiniz yerdeki kullanım şekli ise şirketler arası (Intercompany) ödemelerin de aynı formda kapatılabileceğini ifade etmektedir.
      Intercompany her firmada kullanılmaz. Sizin uygulamanızda var olup olmadığını danışman arkadaşlara sorarak öğrenmeniz mümkün.

  23. Emre Bey,

    Bir şey daha merak ediyorum.
    Yardımcı olabilirseniz çok sevinirim.
    Bir satıcının ya da alıcının açık hareketlerini incelediğimde SpecTrans diye bir tabloyla karşılaştım.
    Bir satıcının açık hareketlerini düzenle butonuna tıklandığında hata alınıyor.
    Kodları incelediğimde VendTransOpen ile SpecTrans arasında bazı ilişkilerin kurulduğunu gördüm.
    Ve sorun SpecTrans ile VendTransOpen arasında ki tutarsız veriler.
    SpecTransın orda ki işlevi nedir acaba?

    Teşekkür ederim.

    • Selamlar.
      Karışık bir yerle ilgili bir soru sormuşsunuz.
      Sorunuzun daha net anlaşılması için bir finans danışmanına “Müşteri ya da satıcı kapama nedir” sorusunu yöneltmeniz iyi olur.

      Teknik olarak incelersek;
      SpecTrans müşteri ya da satıcının faturaları ile bu faturalara karşılık ödemelerini (nakit, çek, senet, vb) işaretlenerek kaydedildiği tablodur.
      İlgili form üzerinde (CustTransOpen, VendTransOpen) düzenle dendiğinde işaretlenen bu kayıtlar birbiri ile eşleştirilip CustSettlement ya da VendSettlement kayıtları oluşur, custTrans ya da vendTrans kayıtları update edilir.
      Böylece hangi faturaya karşılık hangi tarihte kaç liralık ödeme yapıldığı, vade farkı, kur farkı, gecikmeler görülür.

      • Evet sanırım haklısınız daha iyi anlayabilmek için bir finans danışmanıyla var olan kayıtlar üzerinden gitmek daha mantıklı olacaktır. İşin tekniği yanında bir de muhasebe tarafı var.
        Açıklamalarınızdan dolayı çok teşekkür ederim.

  24. LedgerJournalTransDaily formında kullanılan LedgerJournalTrans data source daki correctedTaxAmount (düzeltilmiş kdv tutarı) metodunu bir report da kullanmak istiyorum. CorrectedTaxAmount
    metodu ben rapora ekledim fakat ekeldiğim metoda geldiğime program direk kırılıyor ax ortamından atıyor. Bu metodu report kısmında kullanma olasılığı varmı veya nasıl yapabilirim?

    • Selamlar.
      correctedTaxAmount metodu sadece o formda yer aldığı için bir raporda direk kullanamazsınız.
      Bunun yerine LedgerJournalEngine classının correctedTaxAmount metodunu incelerseniz, orada nasıl hesaplandığını görebilirsiniz.
      Düzeltilmiş vergi tutarı, günlüğün nakledilmesi ile başka bir tabloya taşınır.
      Bu nedenle bahsettiğim metodu inceleyip, aynı içerikte bir display metod yazıp kullanmalısınız.
      Bu metodu LedgerJournalTrans tablosuna yazarsanız daha kullanışlı olacaktır.

  25. Merhaba Emre Bey,

    Gaziantepte kurulu şirketimizde 5 yıldır axapta kullanıyoruz. yazılım uzmanımız ikinci yılda şehir değişikliği nedeni ile ayrıldı. bu zamana kadar danışman firmamızın kaynaklarını kullandık. ancak kendi bünyemizde axapta geliştirmesi yapabilen bir arakadaş arıyoruz. ya da sistemimizi inceleyip sözleşmeli olarak bize hizmet sunacak bir uzmanla çalışma şeklini de araştırmak istiyoruz.(maalesef bulamadık). yardım ve yönlendirmeniz olursa sevinirim.
    Saygılarımla

    • Selamlar.
      Öncelikle teveccühünüz için teşekkürler.
      Sorunuza maille cevap vermek biraz zor, elimden geldiğince yazıyorum.
      Telefonla görüşmek isterseniz mailin altında telefonum mevcut.

      Sorunuza gelince;
      Açıkçası bu işin kalbi İstanbulda attığından Anadolu şehirlerinde kaynak bulmak pek kolay olmamakta.
      Ben de Kahramanmaraşlı olmama rağmen bu işi ancak İstanbul’da yürütebiliyorum.

      İstanbul firmaları da elbette sadece İstanbul’da hizmet vermiyor
      ama bir danışmanın İstanbul’dan gelmesi,
      konaklaması ve gitmesi firmaya uzun vadede yüksek maliyet olarak görülebilir.

      Ayrıca Ax projesini sadece yazılım olarak görmek doğru olmaz, doğru danışmanlık pek çok geliştirmeyi engeller.
      Doğru yazılım geliştirme ise gerçekten ancak ehil ellerde güvenlidir.
      Bu bağlamda şirketiniz bünyesinde yazılımcılarınız olsa da, belirli aralıklarda yapılan işlerin kontrol edilmesi iyi olacaktır.

      Sizinle birkaç fikrimi paylaşabilirim, uygulanabilirliğine göre sıralamaya çalıştım:

      1. Uygun gördüğünüz çalışanlarınız, stajerleriniz ya da part time çalışanlarınız varsa bir eğitim takvimi belirleyip eğitmeni şehrinize çağırabilirsiniz.
      a. Eğitim sonunda sertifika sınavına girdirip başarılı olanları yazılım departmanınıza alabilirsiniz.
      b. Eğer bu yönde ilinizdeki üniversite ile birlikte bir organizasyon yapabilirseniz, Microsoft’tan destek alınabilmektedir.
      2. Uzaktan destek hizmeti alarak acil konuları çözdürebilir, ayın belli günlerinde de danışmanı firmanıza çağırıp yerinde destek alabilirsiniz.
      a. Anadolu şirketleri genelde bu şekilde hizmet almaktalar.
      b. Bir yandan da 1. Maddedeki gibi çalışanlarınız olursa işler daha rahat çözülür.
      3. Danışmanlık şirketi tavsiyesi için Microsoft’tan destek isteyebilirsiniz.
      a. Eğer firmanız büyükse ve bir başarı hikayesine konu olabilecekse Microsoft bazı konularda danışmanlık firmalarını destekleyebilir.

      Bunun haricinde telefonla olmasa da mail ya da blog’a soru sormak yoluyla her zaman bizden destek alabilirsiniz.
      İyi çalışmalar.

  26. EmreBey,

    Axaptada CRM modulu altında workflow formum var.Yeni bir tane daha form oluşturup konfigüre etmek istiyorum.

    Ancak iş akışı konfigürasyonu birbirinden farklı olacak.(birisi hiyerarşi temelli diğer formum rol tabanlı çalışacaktır.)

    İkinci formum için; template, approval , classslarını,menüitemlarıı ayrı oluşturdum.

    CRM –>Kurulum–>İş akışı konfigürasyonları ekranında konfigüre ettim.formumu açıpğ yeni kayıt dediğimde eylemler butonu görülmüyor; formumda isworkfow=yes; workflow datasource de seçmeme rağmen.

    Temel ve Yönetim –>Kurulum iş akışı ayarları vs. gibi işlemleri yapmama gerek var mı şu an zaten çalışan bir form var o formda başka işlemler yapılıyor.

    İkincisini nasıl çalıştıracağım.

    Yardımcı olur musunuz?Teşekkürler..

    at.

  27. Merhabalar, axapta ile tanışalı yaklaşık 2 ay oldu Ufak tefek uygulamalar geliştirmeye çalışıyorum. Bu süreçte bloğunuzdan da oldukça faydalandığı belirtmek isterim. Sorum büyük bir projeye başlamadan önce Axapta ile UML diyagramlarını kullanıp kullanamayacağımızı öğrenmek. İyi çalışmalar…

    • Merhaba Selim Bey.
      Öncelikle hayırlı olsun.

      Eğer sorunuzu doru anladıysam UML diyagramları oluşturup bunları AX’a aktarmak istiyorsunuz.
      AX içinde varolan bir nesneyi ML diyagramı halinde görüntülemek mümkündür.
      Bunun için Reverse Engineering toolu bulunmaktadır.
      Ama UML’den AX’a direk aktarım yapmak mümkün değil.

  28. Merhaba, Raporun datasource’na eklediğim 2 tabloda aldığım range’leri fetchde query nesneleri ile nasıl işlerim yardımcı olursanız sevinirim teşekkürler şimdiden.

    • Merhaba Hasan Bey.
      Datasource’daki rangeler direkt olarak fetchde de işlenirler.
      Siz fetch metodunda yeni bir query oluşturdu iseniz bunları taşımanız ya da varolan query’i baz almanız gerekir.
      sorunuza daha net cevap verebilmem için biraz daha detaylı bilgi verebilir misiniz?

  29. Emre Bey merhaba,
    PurchLine tablosunda purchid ve linenum kısmında bazı siparişlerde aynı purchId ye ait aynı linenum numarasını veriyor (ax 5). Bu bir bug mı yok sa farklı bir durum mu var. Linenum’u hangi aşamada veriyor?
    Teşekkürler.

    • Selamlar Ali Bey.
      ilk bakışta vermemesi gerekir gibi görünse de detaylı incelerseniz LineNum’u içeren index’te recId’nin de yer aldığını göreceksiniz.
      Muhtemelen bazı istisnai durumlar var. Bu durumlarda tekrarlıyor olabilir.

      LineNum için PurchLine::CreateLine metodundan çağırılan lastLineNum metedounu inceleyebilirsiniz.

  30. Emre Bey merhaba,
    .CSV uzantılı dosyadaki verileri direkt bir tabloya değil ilk olarak formdaki “Grid” e almak istiyorum. Bu mümkün müdür? mümkünse yöntemi nedir?
    Yardımlarınız için teşekkürler.

    • Selamlar Servet Bey.
      Sorunuzun cevabı maalesef doğrudan evet değil.

      En iyi ihtimalle csv dosyasındaki veriyi tmp tabloya atıp gösterebilirsiniz.
      Ax doğrudan harici veri kaynaklarından veri alıp göstermez.

      Diğer bir seçenek ise activex kontrolleri kullanmak olabilir ama bu da çok kolay bir yöntem olmayacaktır.

  31. Emre Bey Merhaba;

    Dynamics ax içerisinde İç verimlilik oranını beyaz sayfa raporlarında ve formlarda değerini göstermek istiyorum, Mic. Excell’de bu oranı hesaplayan bir XIRR fon. bulunmakta, ben bu excell fonksiyonunu sadece hesaplamada kullanarak sonuç bilgisini return etmek istiyorum. Bunu kullanabilmenin bir yolu var mı?

    Teşekkür ederim.

  32. Emre Bey merhaba,
    qbdsCustTable.addRange(fieldNum(CustTable, RecId)).value(_Custrans.RecId);
    şekilde range eklediğimde kriter alanı numeric veya real olduğunda hata düşüyor bunu nasıl önleyeblirim.

  33. Merhaba Emre Bey,

    Ben 10 aylık axapta geliştiricisiyim. Axaptaya ilk başladığımda sizin blogunuzdan oldukça faydalanmıştım. Hala da faydalanıyorum. Emeğiniz için Teşekkürler.

    Benim şöyle bir sorum olacaktı. Axapta da bir raporun dialog ekranına , sistemdeki bütün securitykey’leri gösterebilcek bir dialog alanı eklemek istiyorum. Bu konuyla ilgili olarak nasıl tüm securitykeyleri dialogfield olarak ekleyebileceğim konusunda beni bilgilendirirseniz sevinirim.

    Şimdiden Teşekkürler.

  34. Merhaba Emre bey,
    Axaptanın çoklu belge işleme özelliğini kullanmak istiyorum.
    temel modülünden->kurulum belge yönetiminden belge tiplerinden belge tipini ve burada arşiv dizinide belirttim.ikinci olarakta etkin belge tablolarından hangi tablo için kullanacağımı belirttim. bu tanımlamaları yaptıktan sonra. kullanmaya başladım fakat benim istediğim dizine değilde bir üst dizine attığını gördüm. Sizde belge tiplerindeki klasör tanımlamamı neden görmüyordur. aç dediğimde de orada arıyordur?
    eksik bir şey var ? Teşekkürler.

  35. Emre Bey merhaba,
    Axapata ortamında txtx dosyasına System.IO sınıfını kullanarak kayıt yapıyorum (sw = new System.IO.StreamWriter(“c:dosya.txt”); fakat kodlama olarak varsılan olarak utf8 olarak kayıt yapıyor ben bunu Ansi olarak kayıt yaptırmak istiyorum nasıl yapabilirim.
    Teşekkürler.

    • selamlar.
      .Net classlarını kullanmak yerine Ax classlarını kullanırsanız alttaki gibi yapmanız mümkün olur. Örneğin TextIO classı bu iş için kullanılabilir. 1252 codepage ansi anlamına geliyor.

      FileIOPermission permission;
      TextIO textIO = new TextIO(“c:dosya.txt”, ‘w’, 1252);
      ;
      textIO.write(“metinler”);
      gibi.

      .Net classlarını kullanarak da yapılabilecek yöntemler mutlaka vardır, ben Ax tarafındaki yöntemi paylaşmayı uygun buldum.

  36. Emre Bey,
    .net ile yazılmış web servisim var helloworld gibi bir metodum var.ax 2009 da referanslara ekledim.ve yeni class oluşturup main metoduna aş. kodu yazdım. ancak hata vermiyor.sadece a = soapClient.HelloWorld(); satırında bekliyor ve debug ilerlemiyor.a değişkenini bir tabloya insert etmeye çalıştım; sonuç alamadım.
    teşekkürler.

    InteropPermission permission;
    str a,endPointConfigurationName;
    //str endPointAddress = “http://IP:port/TestWSAxPublish/Service.asmx?op=HelloWorld”;
    TestAx.ServiceSoapClient soapClient;
    ServiceConfiguration_ conf = new ServiceConfiguration_();
    ;
    permission = new InteropPermission(InteropKind::ClrInterop);
    permission.assert();
    //conf.configureServiceReference(“TestAx”, endPointAddress);

    soapClient = new TestAx.ServiceSoapClient(“ServiceSoap”);
    a = soapClient.HelloWorld();
    CodeAccessPermission::revertAssert();
    info(a);

    • Selamlar.
      “WS’ler mutlaka server side çalışmalıdır. Bu nedenle bir class’a yazıp RunOn özelliğini server yazmak ya da metodların başına server static yazmak gerekir.
      maddesine dikkat ettiniz mi?

      Bundan dolayı çalıştıramayabilirsiniz.

      Ayrıca ServerSide çalışan metodları debug edebilmek için AX Server Config’de bir ayar yapmanız gerekir.

  37. http://emretufekci.wordpress.com/2012/06/20/enumun-degerleri-ve-reflection/
    Adresinde çok önemli bir konuya temas etmişsiniz.
    Ax tarafında pek çok enum tipli değişken olmasına karşın bunları c# tarafına çekmek için neredeyse hiç yol yok diyorken bu makaleyi okudum.

    Fakat uygulama çalışmalarım esnasında maalesef “SysDictEnum” clasını projeme implemente edemedim.

    Sizden ricam makaleleriniz de buna da değinir misiniz? Yani kullandığınız sınıfın sizin tarafınızdan mı türetildiği yoksa var olan bir sınıftan mı türediği konularına çok girmiyorsunuz.

    Bu konulara da girerseniz mutlu olurum.

    Aslında sorumu yukarıda sormuştum ama açık olsun diye yineleyim.
    Sorum şu :
    “SysDictEnum” clasını MSDN de de bahsetmiş ama bir türlü projeme implemente edemedim. Hani dll i yada kütüphaneyi eklemem gerektiği konusunda bilgi verir misiniz? Teşekkürler.

    • Selamlar.
      Ax ile ilgili en büyük sorun neyi nerede bulacağımızı bilememek olmuştur.
      Aslında sizin aradığınız sorunun cevabı AOT digger’dır.
      Yani AOT’de bulunan tüm nesneler parse edilerek bir proje oluşturulur ve .NET ile kullanılabilir.

      AOT digger için http://aotdigger.codeplex.com/releases/view/22208 adresini ziyaret edebilirsiniz.
      Ben bir önceki versiyonunu kullanmıştım, bu nedenle kullanım deneyiminizi de bizimle paylaşırsanız sevinirim.

      Bunun haricinde eğer kendi yazdığım bir kod parçası ya da class gerekli olursa projede bunu belirtiyorum.
      SysDictEnum standart bir class, ama kullanımı ile ilgili örnek yerine öncelikle AOT digger’ı bir denemenizi öneririm.

      iyi çalışmalar.

  38. Emre bey tekrar kolay gelsin.
    Size sorum şu olacaktır.
    TSQL =
    SELECT KategoriOzellik.OzellikID, Kategori.ID, Kategori.UstKategoriID
    FROM Kategori INNER JOIN
    KategoriOzellik ON Kategori.ID = KategoriOzellik.KategoriID
    WHERE (Kategori.ID = 1)

    Bunu normalde MsSql e bağlanırken yazdığım join sorgusu.

    Bunu Axaptaya bağlanıp sorgu çekerken nasıl kullanacağım?

    Bu konuda bazı yazılar yazmışsınız ancak tam olarak aradığım cevabı göremedim. Yardımcı olursanız mutlu olurum.

    Teşekkürler.

    • Selamlar.
      Sorunuzun cevabı doğrudan ne yapmak istediğiniz ile ilgili.
      Eğer sadece bir dış uygulamada, örneğin bir web sayfasında veri göstermek gibi bir amacınız varsa, Dynamics AX database’ine doğrudan aynı sorgu ile bağlanıp veri çekebilrisiniz. Sadece Dynamics AX database yapısında yer alan “DataAreaId” alanına dikkat etmeniz gerekir. Bu alan şirket hesaplarını karşılar.

      Eğer bu yöntemden ziyade Ax veriyi hazırlasın, bana versin derseniz o zaman bir class yazıp Ax içinde dataset oluşturup geri döndürmek mümkündür. Bu konu ile ilgili bir yazı yazmak gerekir. ilk fırsatta eklemeye çalışacağım.

  39. Emre Bey merhaba,
    Ax 2009 da iş akışları ile ilgili bilgi almak istediğim bir kaç nokta var:
    1. Satınalma siparişlerinde Siparişi onaya gönderdikten sonra iptal ettiğimizde siparişin onaya gönderilmedi şeklinde ayarlanması için eventhandler yazılmış.
    Benim sorum ise ben sipariş onaya gönderildikten sonra çıkan iptal seçeneğinin yanına başka bir seçenek ekleyebilir miyim?
    Teşekkürler

  40. Merhaba Emre Bey
    Alacak Hesapları-Müşteriler Satış kısmını açtığımızda ilk açılan ön sayfaya Müşterilerin İL ve İLÇE lerini de getirmek istiyorum ama sistem izin vermiyor. Bunun herhangi bir ayarı var mıdır? Müşteri adı ve MST lerin yanında görünmesini istiyorum illerin. Ya da en kötü ihtimal sayfanın en alt kısımına alabiliyorum o zaman da Müşteriler arasında geçiş yaptığımda ilk tıkladığım müşterinin adresi gözüküyor. Müşteriyi değiştirsem dahi adresi güncellemiyor. Yardımcı olabilir misiniz

    • Selamlar.
      Sorunuzun cevabı hangi versiyonu kullandığınızla ilgili olark değişebilir.
      Ama Ax 2009’dan bahsediyorsak hem müşteri bilgileri (CustTable) hem de alternatif adresler (Address) tablolarında alternatif adres bilgileri yer alır.
      Tabii CustTable’da tek bir adres bulunurken Address tablosunda 1:n kayıt bulunur.
      Siz bu istediğiniz işlemi yapmak için CustTable’daki adres bilgisini ya da Address tablosundaki adreslerden birini göstermek isteyebilirsiniz.
      Size tavsiyem CustTable’daki Address, City, Street ve CountryREgionId alanlarını deneyin.
      Tarifinizden anladığım kadarı ile Address tablosundaki alanları sürüklemişsiniz.

      • Alanlar sürüklenmiyor. Sorun orada. İl ve İlçe kısmını da arama sayfasında görmek istiyorum. İl ve İlçeyi sadece adreslerin kendi içerisinde sürükleyip yer değiştirebiliyorum. (Adress Grid) içerisinde kalıyor. ”Grid” in altına alamıyorum

  41. Merhaba Emre Bey.
    Benim sorunum Emel hanımınki ile hemen hemen aynı ben de müşteriler formunda adres ve genel alanını birleştirmek istiyorum ancak benim merak ettiğim başka bir konu var.
    CustTable formunda bir müşterinin birden fazla adresi olabilir ve içlerinden biri private adrestir. Benim yapmak istediğim de custtable formunda genel alanına müşterinin primary adresinin il, ilçe vs gibi alanlarını grid içine eklemek.
    Bir müşterinin primary adresini bulan bir job yazdım. Joba el ile müşteri numarasını(AccounNum) gönderiyorum ve primary adres satırına erişebiliyorum. Benim tıkandığım nokta şu :
    job ile aldığım bir bilgiyi forma nasıl aktarabilirim? Yani tek tek müşterilerin primary adresleri elimde var ama bu işi job’dan alıp forma ekleyemiyorum 🙂 primary adresi tutan bir temporary tables mı kullanmam gerekir yoksa başka bir yöntem var mıdır?

    Yardımcı olabilirseniz sevinirim, teşekkürler.

    • Epey ilerlemişsiniz ama azıcık yönlendirmeye ihtiyacınız var.
      Display metdoları bildiğinizi varsayıyorum.
      Gridde göstermek istediğiniz her bir alan için CustTable tablosuna birer display metod yazın.
      Sonra bunları Gride ekleyin.
      Display metodda adres bilgilerini bulma şekliniz hali hazırda jobda yazdığınız gibi olmalıdır.
      örneğin
      //BP Deviation Documented
      display AddressCountryRegionName invoiceCountryName()
      {
      Address invoiceAddress;
      ;
      invoiceAddress = Address::find(tableNum(CustTable), this.RecId, AddressType::Invoice);

      return AddressCountryRegion::find(invoiceAddress.CountryRegionId).Name;
      }

      • Display metodları şu ana kadar hep raporlarda kullandım. Display metodu kullanarak ekrana gelen alanlarda filtreleme yapılabilir mi? Son olarak bu problemimle ilgili view kullanmayla ilgili bir tavsiye aldım ancak bilgim çok eksik. View kullanarak sorgularımın sonucunu görebilir miyim?
        Teşekkürler.

      • Maalesef Display metodları ile filtreleme yapılamaz.

        View yaparak sorununuzu çözmeniz mümkün ama bu durumda da CustTable gibi temel bir formun DataSource’unu değiştirmeniz gerekir ki hiç tavsiye etmem.

        Daha farklı bir çözüm olarak private adres değerlerini CustTable tablosuna açacağınız yeni alanlara kopyalayabilirsiniz. Böylece girdde de gösterebilirsiniz. Ama bu durumda da Address tablosunda bir address değiştirildiğinde kontrol ederek CustTable’ı güncellemeniz gerekir.

      • Cevaplarınız için çok teşekkürler. Çok fazla kullanıcısı olan bir sistemde çalıştığım için CustTable kayıtlarını sürekli kontrol edemem. Her ne kadar DataSource ile oynamam doğru olmasa da bu işlemi yapmak zorunda olduğum için view kullanmaktan başka bir yol gözükmüyor. View kullanımına dair bir dökümanınız var mıdır? İnternette genel anlamda kaynaklar buldum hala kullanım şeklini anlamış değilim.
        Kolay Gelsin.

  42. Merhaba Emre bey Axapta 2009 da bir nakit akış formu yapmak istiyorum
    Tasarım tarafında pek bir problemim yok aslında yazılım tarafında bir sorum olacak
    bir tarih fieldim var ve bu tarih doldurulduğunda ilgili tarinteki verinin oluşturduğum fielda gelmesini istiyorum nasıl bir yol izlemem gerekli ?

    örnek olarak X alanına A tablosunda tutulan X başlıklı kayıtlarının seçili tarihte ki değerinin benim oluşturmuş olduğum formdaki X alanına gelmesini istiyorum

    Cevabınız için şimdiden teşekküerler
    Saygılarımla

    • Selamlar.
      Kendimi matematik sorusu ile karşı karşıya gibi hissettim. (x = y^2 + z)
      Sorudan anladığım kadarı ile dinamik bir sorgu ile formdaki bir alanı düzenlemek istiyorsunuz.
      Eğer tablo gerçek bir tablo ise ve öyle kalmak zorunda ise iki yöntem olabilir :
      1. Display metod.
      2. Tablodaki modifiedField() metodunda ilgili alan değiştiğinde alanı update etmek.
      1. yöntem daha iyi bir yoldur, çünkü diğerinde sürekli bir update işlemi gerekir, ayrıca birden fazla kullanıcı aynı formu kullanacakse update sorunları ortaya çıkar.

      En iyi yöntem ise aslında formda gösterdiğiniz tabloyu temp yapmak ve alanı tablonun modfied field metodu ile gerekli şekilde doldurmaktır. Böylece birden fazla kullanıcı aynı formda farklı değerlerle çalışabilir. Tabi temp tablo, modifiedField() ve display metod kavramlarından bazıları size yabancı gelmiş olabilir. Bu konuda sorularınız varsa lütfen sorun.

      • Soruyu sonradan okuduğumda banada matematik sorusu gibi geldi doğrusu 🙂
        Cevabınız için teşekkürler cevabınızı beklerken en iyi yöntem olarak belirttiğiniz yola benzer bir yol izledim ve mutlu sona ulaştım tekrar teşekkürler…

        Selamlar

  43. Merhaba Emre Bey;
    Bir formum var ve alanlardan ayrı olarak bir buton ile formda gösterilmeyen alanlar butona basılınca açılıyor yeni bir formda butona basılan dataların direk formun gridinde görünmesini istiyorum
    Nasıl bir yol izlemem gerekli yardımcı olursanız sevinirim
    Selamlar…

  44. Merhaba Emre Bey;
    Öncelikle böyle paylaşımlarda bulunduğunuz ve tüm bu soru cevapta dahil yardımlarınız için teşekkür ediyorum .Çukurova Üniversitesinde endüstri mühendisliği son sınıfta okumaktayım ve bitirme konum Dynamics Ax programı .
    Programı en baştan doldurarak kendi kendime öğrenmeye çalışmaktayım . Birinci sorum kurslarınız devam ediyor mu ?
    İkinci sorum ise , biz 5 kişi bu programı kullanıyoruz ve uzak masaüstü bağlantısı yaparak üniversitedeki bilgisayara giriş yapıp programı ordan kullanıyoruz.5 kişininde hesapları farklı ve aynı hesaba aynı anda 1 den fazla giriş yapıldığında program otomatik olarak diğer kişiyi atıyor.Aynı anda programı 1 den fazla kişi nasıl kullanabiliriz. Cevabınız için şimdiden teşekkür ederim .

    • Selamlar.
      Yorumunuzu geç farkettim, kusura bakmayın lütfen.

      Eğitim programları aralıklarla devam ediyor.
      Programına göre farklı arkadaşlar eğitim verebilmekteler.
      Eğitim ile ilgili konularda Microsoft’tan destek alabiliriz.
      Yıldız Teknik Üniversitesinde SEM kapsamında eğitimler verilebilmektedir.
      http://www.sem.yildiz.edu.tr/kisisel_egitim_detay.php?pID=6&eID=156

      Uzak masaüstü bağlantısına mutlaka farklı kullanıcı adları ile bağlanmalısınız.
      Eğer aynı anda en fazla 2 kişi sınırı ile karşılaşırsanız ki muhtemeldir, bu konu lisans ile ilgilidir.
      Windows lisansları konusunda Microsoft’tan akademik lisans talep edilerek bu sorun aşılabilir.
      İyi çalışmalar.

  45. Merhaba.X++ ile Xml ‘e yazma konusu icin bir örnek yapabilirmisiniz? x++ ile xml ‘den okuma örneğinizi yaptım gayet güzel calısıyor ama xml’e yazma kısmını yapamadım.Şimdiden teşekkürler

  46. Merhaba dynamics ax 2009 da test ortamı nasıl olmakta? Canlıda ki kullanılan data ları alıp test ortamına aktarmak mümkün müdür? Varsa nasıl yapılabilir, paylaşabilir misiniz?

    • Merhaba Hasan Bey.
      Ax istemci – sunucu mimarisi ile çalışmaktadır, dolayısı ile test ortamı ayrıca kurulabilir.
      Test ortamı için AOS dediğimiz sunucudan bir tane daha kurabiliriz.
      Bir fiziksel sunucuda birden çok AOS kurulabilir.
      Yeni Aos’un veri kaynağı için de bir veri tabanı eklemek gerekecektir.
      Bu işlem, geliştirme yapılmak istenen bir durumda mutlaka gerekli olacaktır.

      Ancak aynı kod üzerinde farklı datalarla test yapmak istersek şirket hesaplarını da kullanabiliriz.
      Bu durumda yeni kurulum yapmak gerekmez.

      Dynamics AX’ta geliştirmeler *.xpo dosyaları ile, veri ise Ax içinden *.dat uzantılı olarak ya da Excel ile aktarılabilir.

  47. Merhaba Emre Bey,
    Axapta 2009 kullanmaktayım. Muhasebe hesaplarında boyut doğrulamayı uygulamaya çalıştım. boyut kümelerinde yeni bir kume yarattım. lokasyon ve maliyet merkezi doğrulaması olacak. hiyerarşisinde de tüm lokasyonlarım için calışacakları maliyet merkezlerini tanımladım. ve diyorum ki tüm 8li hesaplarda bu boyut doğrulamaları uygulam. Genel Muhasebe modülü->kurulum->parametrelerinde deftere nakil ve güncelleştirmelerde boyut kümesini kullan diye seçeneği gidip işaretliyorum. ve gidip test ettiğimde çalışıyor. fakat şöyle bir dezavantaj oldu. benim hesap planında boyut tabında tanımladığım ‘Zorunlu giriş’,’Liste’ gibi tanımlamalarım pasif hale geldi. tüm hesaplar için boyut kümesini çalıştırıyor. ama sadece 8li hesapları içeri tanımlamıştır. bu durumda bunun önüne nasıl geçebilirim. Boyut doğrulamada baska bir yol var mıdır?
    biraz uzun yazdım ama umarım anlaşılmıştır.

    şimdiden teşekkürler

    • Merhaba Pınar Hanım.
      Sorunuz Ax’ın danışmanlık tarafı ile ilgili olduğundan benim bilgim dışında.
      Eğer hala çözemediyseniz danışman arkadaşlarıma sorarak bilgi verebilirim.

      İyi çalışmalar.

      • kodsal da çözemedim olayı.dediğiniz gibi danışmanlara iletebilirseniz çok çok sevinirim. cok teşekkür ederim..

        İyi Çalışmalar

  48. Formda display olarak gösterilen bir alana filtre koymak istiyorum.Bunun için display olarak gösterilen alanın visible:no yapıp tabloya benzer bir alan açıp tablo.alanadı = tablo::dispmethod(); şeklinde düşünüyorum.Yardımcı olabilirmisiniz?

    • Aslında kullandığınız versiyon önemli.
      Eğer 2009 ise display metodlarla filtreleme yapmanız mümkün değil. Ancak bahsettiğiniz gibi tabloya alan açarsanız ve kayıt oluşurken doldurusanız işe yarayacaktır.
      Bunun için modifiedField, initValue metodlarını kullanmanız gerekecek.

      • Emre Bey teşekkürler,2009 kullanıyorm ve tabloya alan açtıktan sonra tablonun init value ve modified field’inimi yoksa formunkilerimi kullanmam gerek? tablonun altına tabloadı.alanadı = tabloadı.dispmethod() şeklindemi yazmam lasım.Yazılıma yeni başladım öğrenmeye kod yazımlarını çok iyi bilmiyorum.Yardımlarınız için teşekkürler.

      • Sinan bey,
        initValue Tabloya yeni kayıt açılırken istediğiniz bir alana, istediğiniz bir değeri atamanız için kullaılan metoddur. ModifieldFiled ise tabloda bir alan değiştiğinde başka alanlarında otomatik olarak değişmesine olanak sağlar. Mesela siz müsteri ID si seçiyorsunuz, yanında o müşteriye ait ismi yazdırmak istiyorsunuz. Bunu için
        public void modifiedField(fieldId _fieldId)
        {
        switch(_fieldId)
        {
        case fieldnum(MyTable, custAccount):
        this.Name = CustTable::find(custAccount).name;
        break;
        default:
        super(_fieldId);
        }
        }
        gibi bir kod işini görür sanırım. Display metodlar bir tabloda bir alana veri atamak için kullanmayız.

      • Mustafa Bey yardımlarınız için teşekkürler.O halde benim zaten display method kullanmama gerek yok bunu modifieldField ilede yapabiliyorum ve Filtreleme probleminide çözmüş oluyorum.Örnek kod yardımcı oldu.Teşekkürler.

  49. Emre Bey Merhaba,Bir sorum olacaktı nette aradığımı bulamadım.Dynamics ax 2009 kullanıyorum.Form içerisinde bir alana lookup methodu yazdım.Lookup methoduna tıklayınca 4 alan açılıyor.Buradan istediğim kaydı seçiyorum.İstediğim şey bu lookupa tıkladıktan sonra seçim yapınca istediğim 4 alanında değerini form içerisinde alabileyim ve kullanabileyim.Örneğin lookupa tıklayınca başka bir tablodan id,ad,soyad,yas şeklinde alanlarım geliyor.istediğimi sectikten sonra bu kaydın adını soyadını veya yasının değerini alabileyim ve kullanabileyim.Yardımlarınız için teşekkürler.

    • CustTable içinde initFrom… ile başlayan metodlar mevcut. Bu metodlar, ilişkili tablo ile ilgili alanda bir işlem yapıldığında ana tabloda istediğimiz alaları güncellmek için kullanılr. mesela initFromSalesTable. SalesTable ile ilişkili bir işlem yapıldığında bu metod kullanılır. Sizde void initFromASDTable(ASDTable _asdTable) yapacaksınız.

      void initFromASDTable(ASDTable _asdTable)
      {
      this.name = _asdTable.name;
      this.Id = _asdTable.Id;
      }
      gibi olacak ve tablonun modifieldFieldında Lookup için yazdığınız alan içinde bu metodu çağıracaksınız. Metod içinde tabloyu göndermeyi unutmayın.

      public void modifiedField(fieldId _fieldId)
      {
      switch(_fieldId)
      {
      case fieldnum(MyTable, custAccount):
      this.initFromASDTable(ASDTable::find(this.custAccount));
      break;
      default:
      super(_fieldId);
      }
      }

      İyi çalışmalar.

  50. Merhaba.Ax içinde bir tabloda CreatedBy CreatedDateTime gibi sistem alanlarını update yapabiliyormuyuz?Job ile update yazmaya kalktığımda Alan atamaya izin verilmiyor şeklinde hata cıkıyor.Farklı bir yolu varmıdır yada bu mümkünmüdür?

  51. Merhaba.Ax 2009 için bir formdaki DocuView formunu acan dokuman butonu için kısayol yapmak istiyoruz.Örneğin Grid için filtreleme Ctrl + G ile yapılıyor.
    task macrosununa ,keyPressed ve ResAppl macrosuna baktık. #define.aaa(2837)
    gibi rakamlar veriliyor.Bu rakamların keyPressed macrosundaki rakamlara göre verildiğini düşündük ama istediğimizi yapamadık.Yardımcı olabilirmisiniz?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s