Sevk İrsaliyesi Tasarımı

Merhaba

Ax üzerinde sevk irsaliyesi ve fatura tasarımı gibi işler çetrefilli işlerdir.  Axaptada tasarımsal işlemler genelde zordur.

Ancak belli bazı noktaları bilip mudahalelerinizi yaparsanız kolay bir şekilde istediğiniz güncellemeyi yapmış olursunuz.

Biz bu makalemizde Ax uzerinde matbu bir sevk irsaliyesi tasarımının nasıl yapılabileceğinden bahsedeceğiz.

Öncelikle Ax’ta standart Sevk İrsaliyesi  “SalesPackingSlip”  raporudur. Denemek için  “CustPackingSlipJournal” formundan “Önizleme/Yazdır “  butonunda çıkan Kopya ve Orjinal butonundan  Sevk İrsaliyesi bastırabilirsiniz.

Asıl olan “SalesPackingSlip” raporunda değişiklik yapmayalım. Çogaltip  “ETGSalesPackingSlip” ismini verelim. Ve MenuItem  oluşturalım. Oluşturdğumuz item için multiselect özelliğini yes yapalım.

“ETGSalesPackingSlip” raporunda dizaynında “Generated Design” kısmında irsaliyemizin tasarımını görebilirsiniz.

Burada istenilen değişikler yapılabilir. İstenmeyen alanlar çıkartılıp yeni alanlar eklenebilir. Ancak bizim yapacağımız matbu tasarım standarttan çok farklı olduğu için ben “Generated Design” ‘da bulunan bütün alanaları siliyorum. Bu işlemden sonra raporu derleyip hata veren kısımları yorum satırı haline getiriyorum. Kendim 4 tane ProgramableSection açıyorum. Bunlar:

1.  Sct1 : Başlık bilgilerinin olacağı kısım.

2. Sct2 : İrsaliye satırlarının olacağı kısım.

3. Sperater : Satırlarda eksik kalan kısımları tamamlamak için kullacağım boş bir satır.

4. Sct3 : Toplam ve alt bilgilerin görüneceği kısım. 

Sct1 için örnek olarak iki tane display metod yazayım diğerlerini siz ihtiyacınıza göre ekleyebilirsiniz.

display name dispDeliveryName()
{
      return CustPackingSlipJour.DeliveryName;

}

Read more

Splitter Control

Merhaba

Axapta formlarda splitter kullanımı hakkında bir örnek yapacağız.

İşte  örneğimiz:

Formda 2 grubunuz olduğunu varsayalım,    LeftGroup ve RightGroup . Bu iki grubu yan yana görmek için design  property columns=2 yapalım. Şimdi bu iki grup arasında splitter olsun istiyoruz. Bu sayede istediğimiz gibi resize vb. kontrolleri yapabileceğiz. Bunu yapabilmek için şu adımları takip etmemiz gerekiyor:

1. Daha önce oluşturduğumuz iki grubun arasına  SplitterGroup adında yeni bir grup oluşturalım. bu grubu splitter için kullanacağız.

2. SplitterGroup parametreleri şunlar olsun :

    AlignChild       = No
    AlignControl     = Yes
    AutoDeclaration  = Yes
    FrameType        = Raised3D
    Height           = ColumnHeight
    HideIfEmpty      = No
    Width            = 4

3. LeftGroup parametreleri şunlar olsun :

    Width            = 250
    Height           = ColumnHeight
    AutoDeclaration  = Yes

4. Rightgroup parametreleri şunlar olsun :

    Height           = ColumnHeight
    Width            = ColumnWidth

5. Şu anda 3 grubumuz olduğu için  design  property columns=3 yapalım. 

6. Splitter bizim SplitterGroupa’a özellik eklemeizle elde edeceğimiz bir fonksiyon. Bunu axaptada yapabilmemizi sağlayan iki class var SysFormSplitter_X or SysFormSplitter_Y.

bizim durumda SysFormSplitter_X kullanmamız gerekiyor. formun class declaration’da Şu tanımlamayı yapalım:

public class FormRun extends ObjectRun
{
    SysFormSplitter_X sysFormSplitter_X;
}

7. Axapta clasını formumuzun initinde oluşturuyoruz. The StartupHeight parameter is often omitted since it is optional.
 

public void init()
{
   super();

   sysFormSplitter_X = new
   SysFormSplitter_X(SplitterGroup,LeftGroup,element,100);
}

8. Şimdi  plitterGroup için çeşitli mouse metodlarını yazmalıyız :

int mouseDown(int x, int y, int button, Boolean Ctrl, Boolean Shift)
{
    int ret = super(x,y,button,ctrl,shift);
    ;

    sysFormSplitter_X.mouseDown(x,y,button,ctrl,shift);
    return ret;
}

int mouseMove(int x, int y, int button, Boolean Ctrl, Boolean Shift)
{
    ;

    super(x,y,button,ctrl,shift);

    return sysFormSplitter_X.mouseMove(x,y,button,ctrl,shift);
}

int mouseUp(int x, int y, int button, Boolean Ctrl, Boolean Shift)
{
    int ret =  super(x,y,button,ctrl,shift);
    ;

    sysFormSplitter_X.mouseUp(x,y,button,ctrl,shift);
    return ret;
}

Evet oldu. X-Splitter artık düzgün bir şekilde çalışır.

 
Y-splitter da buna benzer şekilde tanımlayabilirsiniz.

Selamlar.

Ax ile belli bir klasordeki dosya ve klasorleri bulan metod

Merhaba

Ax ile belli bir konumdaki klasor ve dosyaları taramam gerekti. Bunun için farklı yöntemler kullanabilirsiniz. Ben Muammer arkadaşımın yardığıyla aşşağıdaki metodu yazdım. İşinize yarayabilir.

static void DosyaTarama(Args _args)
{
    FilePath    filePath;
    InteropPermission permission;
    int  i,j,maxx,  maxlenght;
    System.String[] strFileList;
    System.String[] strDrList;
    System.String   strDrLis;

    ;

    filePath = strfmt("C:\\fd"); // herhangi bir yol olabilir
//ama  yetkilerine dikkat etmek lazım

    permission = new InteropPermission(InteropKind::ClrInterop);
    permission.assert();

    strDrList = System.IO.Directory::GetDirectories(filePath);

    maxlenght =  strDrList.get_Length();

    for(i = 0 ; i < maxlenght; i++  )
    {
        info(strDrList.GetValue(i));
        strDrLis       = strDrList.GetValue(i);
        strFileList  = System.IO.Directory::GetFiles(strDrLis);
        maxx           =  strFileList.get_Length();

        for(j = 0 ; j < maxx; j++  )
        {
            info(strFileList.GetValue(j));
        }
    }
}

Selamlar.

Axapta belge ekleme işlemleri

Merhaba

Axapta standardında herhangi bir tablonun satırına istediğiniz kadar belge ekleyebilirsiniz.

Bunun için öncelikle Temel / Belge Yönetimi” altındaki tanımları yapmanız gerekmektedir.

Belge Yönetimi menüsü altında:

1.Belge Tipleri

Farklı belge tipleri tanımlayıp bunların farklı klasörlerde  tutulmasını sağlayabilirsiniz.

Genel sekmesinde bulunan tanımlarla birçok esnekliği otomatik şekilde tanımlayabilirsiniz. Örneğin silinen dosyanın sadece kaydını silme veya hem kaydı hemde fiziksel dosyayı sılme işlermlerini seçebilirsiniz.

2.Etkin belge tabloları

Burda Axtablolarının bir listesi var Belge ekleme ikonunun görünmesiniistediğiniz tabloyu burdan seçmelisiniz.

3.Parametreler

Parametrelerde Belge tiplerini numara serisinivbtanımları yapabilirsiniz.Burada bulunan arşiv dizini tnaımlamasını yapmayı unutmayın.

Burdaki tanımlamalar bittikten sonra Belge eklemenin etkin olduğu tablonun formunda Aşşağıdaki ikon görünür. İkona tıklayarak gerekli belgeleri ekleyebilir. Yeni Excel Word ve txt dosyayısı oluşturabilirsiniz. Daha Önce oluşturduğunuz dosyalarıda buradan takip edebilirsiniz.

Peki bu belge yönetiminde farklı isteklerle karşılaşırsanız neler yapabilirsiniz bunları konuşalım.

Read more

CompanyImage Tablosundan resmi fiziksel bir ortama aktarma

//Write EmplImage to File Path

public static void  writeCompanyImageToFilePath(EmplId _emplId, str _filePath)

{

    #macrolib.File

    CompanyImage companyImage;

    EmplTable emplTable;

    Image myImg ;

    FileIOPermission permission;

  ;

Read more

Dynamics AX 2009 Keyboard Shortcuts

Viewing/Navigation options 

Accelerator Keys Task Description
Alt+F1 Show Navigation Pane (if it is not in auto-hide mode)This shortcut works from both MDI & SDI windows, so it is a good shortcut to get back to the main workspace.
Shift+Alt+F1 Enable/Disable auto-hide for the Navigation Pane
Ctrl+Shift+D Toggles the Content Pane between Developer and Content modes.  Developer mode makes the content frame (where Area pages & List pages are viewed) restorable/minimizable so it is easier to work with developer windows.
Ctrl+F1 Open global search pane
Alt+F5 Toggle the docking status of a docking window
Alt+F6 Move to the next docked window
Alt+Shift+F6 Move to the previous docked window
Ctrl+F6 Move to the next MDI window
Ctrl+Shift+F6 Move to the previous MDI window
Ctrl+Shift+V Open “Version control parameters” form
Ctrl+W Open a new workspace
F11 Focus the Address Bar in edit mode (works from anywhere)
Alt+Left Arrow Shortcut for the Back button on the Address bar
Alt+Right Arrow Shortcut for the Forward button on the Address bar
From AreaPage, ListPage or developer (MDI) window  
Alt+M Show the Microsoft Dynamics AX Command Bar
Alt+W Show Windows menuHint: do this then press “a” to close all windows.
Alt+V Show View menu
Alt+H Show Help menu
Alt Show KeytipsPress the corresponding key to navigate directly to ActionPaneTab/Group/Button

There may be one or more ActionPaneTabs/Groups/Buttons with the same letter for a Keytip.  To execute a duplicate Keytip, keep pressing the letter until focus is on the one you want and then hit Enter.

Read more

Axaptada forma kodla çoklu range eklemek

Merhaba

Bir araç isteği geliştirmesi yaptığımızı düşünelim. Araç isteklerinin listelendiği bir form yapıyoruz.
Burada kişi bu formu açtığında kendi kayıtları ve kendisine bağlı olan pozisyondaki personelinin kayıtları görünsün istiyoruz.

init motudundan çağırabileceğimiz addrange metodumuz şöyle olabilir.

void addRange()
{

HRPPartyPositionTableRelationship HRPPartyPosition;
HRPPartyPositionTableRelationship HRPPartyPosition2;
QueryBuildRange rangeReqOwner;
emplId emplId;
str filterReqOwner;

;rangeReqOwner = VehicleRequest_ds.query().dataSourceTable(tablenum(VehicleRequest)).addRange(fieldNum(VehicleRequest, ReqOwner)); // range tanımlıyoruz

Read more

İyimser Eşzamanlı İstisnalar(Optimistic Concurrency Exceptions)

İyimser eşzamanlı kontrolü (optimistic concurrency check (OCC)) AX 2009 da performance arttırma işlevidir. Gerçek güncelleme anına kadar, veri tabanından alınan bir kayıt değiştirilmeyecek varsayılır. Bunun anlamı veri tabanında ki bu kayıt üzerinde daha az kilit olması ve diğer kullanıcıların daha hızlı erişmesidir.

Aynı zamanda bunun anlamı bir kullanıcı kaydı güncellerken diğeride bu kaydı ele alabilir. Bu da kayıt tutarsızlığına sebep olabilir. Şöyle ki; eğer ikinci kullanıcıda kaydı güncellemeyi dener ise bir hata fırlatılır. Bu durumda sistem şunu yapar; recVersion alanını kullanarak hangisi güncellendi ise bir kayıt için her seferinde bir güncelleme yapılır.

OCC İstisna Yönetimi

catch (Exception::UpdateConflict)        

Read more

Try ve Catch Komutları

 

Try komutu istisna yönetimi yapacağın kod bloğunun başladığını gösterir. Ve bu blok içinde herhangi bir istisna fırlatılır ise yakalanabilir ve buna göre yönetilebilir.

Catch ifadesi try bloğundan sonra gelir ve bir istisna fırlatıldığında yakalanıp hangi kodun işletileceğini tanımlar. Catch durumu tanımlanmak zorunda değildir ama yinede her try durumu bir catch durumuna sahip olmalıdır.

Retry komutu sistemin tekrar try bloğu içindeki kodu işlemesi anlamına gelir.

Read more

İstisnalar (Exceptions)

İstisna programın normal akışı kesildiğinde ortaya çıkan durumdur.  İstisna örnekleri:

  • Yazdırma sırasında printerin güç düğmesinin açık olmaması
  • Olmayan bir dosyaya erişmek
  • Olmayan bir kaydı güncellemek

Bu istisnalar meydana geldiğinde program bunları yönetmek için harekete geçmelidir. Örneğin, eğer kullanıcı olmayan bir dosyayı ele almayı istemiş ise sistem bu istisnayı yakalamalı ve yeni bir dosya oluşturmalı gibi.

Read more

Page 31 of 40« First...1020293031323340...Last »