static void workflowUndefinedRecords(Args args)
{
    Common                      buffer;
    SysDictTable                dictTable;
    SysWorkflowTable            workflowTable;
    WorkflowMessageTable        workflowMessageTable;
    WorkflowWorkItemTable       workflowWorkItemTable;
    WorkflowTrackingStatusTable trackingStatus;
    boolean                     deleteifNotExist = true;
    ;
    ttsbegin;
    deleteifNotExist = Box::yesNo('Hatalı bulunan iş akış kayıtları silinsin mi?',DialogButton::No) == DialogButton::Yes ? true : false;
    setPrefix('SysWorkflowTable');
    while select forupdate workflowTable
    {
        changecompany(workflowTable.ContextCompanyId)
        {
            dictTable = new SysDictTable(workflowTable.ContextTableId);
            buffer = dictTable.makeRecord();
            select buffer where buffer.RecId == workflowTable.ContextRecId;
            if (!buffer)
            {
                 info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(workflowTable.ContextTableId),workflowTable.ContextRecId,workflowTable.ContextCompanyId));
                if(deleteifNotExist)
                {
                    trackingStatus = WorkflowTrackingStatusTable::findByCorrelation(workflowTable.RootCorrelationId,true);
                    trackingStatus.delete();
                    workflowTable.delete();
                    info(strfmt('%1 iş akış öğesi silindi',workflowTable.RootCorrelationId));
                }
            }
        }
   }
   setPrefix('WorkflowMessageTable');
   while select forupdate workflowMessageTable
    where workflowMessageTable.MessageLifeCycleState == WorkflowMessageLifeCycleState::Queued
    {
        changecompany(workflowMessageTable.WorkflowContextCompanyId)
        {
            dictTable = new SysDictTable(workflowMessageTable.WorkflowContextTableId);
            buffer = dictTable.makeRecord();
            select buffer where buffer.RecId == workflowMessageTable.WorkflowContextRecId;
            if (!buffer)
            {
                 info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(workflowMessageTable.workflowContextTableId),workflowMessageTable.workflowContextRecId,workflowMessageTable.workflowContextCompanyId));
                if(deleteifNotExist)
                {
                    trackingStatus = WorkflowTrackingStatusTable::findByCorrelation(workflowMessageTable.RootCorrelationId,true);
                    trackingStatus.delete();
                    workflowMessageTable.delete();
                    info(strfmt('%1 iş akış öğesi silindi',workflowMessageTable.RootCorrelationId));
                }
            }
        }
    }
   setPrefix('WorkflowMessageTable&StatusTable');
   while select forupdate workflowMessageTable
   // where workflowMessageTable.MessageLifeCycleState == WorkflowMessageLifeCycleState::Queued
         notexists join trackingStatus
            where trackingStatus.CorrelationId == workflowMessageTable.WorkflowCorrelationId
    {
        changecompany(workflowMessageTable.WorkflowContextCompanyId)
        {
            info(strfmt('WorkMessage %1 için TrackingStatus kaydı yok. statü:%2',workflowMessageTable.WorkflowCorrelationId,workflowMessageTable.MessageLifeCycleState));
                if(deleteifNotExist)
                {
                    workflowMessageTable.delete();
                    info(strfmt('%1 iş akış öğesi silindi',workflowMessageTable.WorkflowCorrelationId));
                }
        }
   }
   setPrefix('WorkflowWorkItemTable');
   while select forupdate workflowWorkItemTable
    {
        changecompany(workflowWorkItemTable.CompanyId)
        {
            dictTable = new SysDictTable(workflowWorkItemTable.RefTableId);
            buffer = dictTable.makeRecord();
            select buffer where buffer.RecId == workflowWorkItemTable.RefRecId;
            if (!buffer)
            {
                 info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(workflowWorkItemTable.refTableId),workflowWorkItemTable.refRecId,workflowWorkItemTable.CompanyId));
                if(deleteifNotExist)
                {
                    trackingStatus = WorkflowTrackingStatusTable::findByCorrelation(workflowWorkItemTable.CorrelationId,true);
                    trackingStatus.delete();
                    workflowWorkItemTable.delete();
                    info(strfmt('%1 iş akış öğesi silindi',workflowWorkItemTable.CorrelationId));
                }
            }
        }
   }
   setPrefix('WorkflowWorkItemTable&StatusTable');
   while select forupdate workflowWorkItemTable
        notexists join trackingStatus
            where trackingStatus.CorrelationId == workflowWorkItemTable.CorrelationId
    {
        changecompany(workflowWorkItemTable.CompanyId)
        {
            info(strfmt('WorkItem %1 için TrackingStatus kaydı yok. statü:%2',workflowWorkItemTable.CorrelationId,workflowWorkItemTable.Status));
                if(deleteifNotExist)
                {
                    workflowWorkItemTable.delete();
                    info(strfmt('%1 iş akış öğesi silindi',workflowWorkItemTable.CorrelationId));
                }
        }
   }
   setPrefix('WorkflowtrackingStatusTable');
    while select forupdate trackingStatus
    {
        changecompany(trackingStatus.ContextCompanyId)
        {
            dictTable = new SysDictTable(trackingStatus.ContextTableId);
            buffer = dictTable.makeRecord();
            select buffer where buffer.RecId == trackingStatus.ContextRecId;
            if (!buffer)
            {
                 info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(trackingStatus.ContextTableId),trackingStatus.ContextRecId,trackingStatus.ContextCompanyId));
                if(deleteifNotExist)
                {
                   trackingStatus.delete();
                   info(strfmt('%1 iş akış öğesi silindi',trackingStatus.RootCorrelationId));
                }
            }
        }
   }
   ttscommit;
}
21 Ocak 2019 Pazartesi
İş akışlarının ilerlememesi | Dynamics Ax
İş akışlarınız ilerlemiyorsa muhtemelen gereksiz kayıtlar kalmış ve ilgili tablolar şişmiş olabilir(gönderilmiş formdan silinmiş vs.). Aşağıdaki kod oluşan bu gereksiz kayıtları siler.
İş akışlarınız çalışmaya devam eder.
8 Ocak 2019 Salı
JumpRef kullanımı | Dynamics Ax
Aşağıdaki kodla ana tablo formuna git dediğimizde direkt olarak ilgili kayda gider.
public void jumpRef() // ilgili kayda gider
{
    DRT_EnvanterTable EnvanterTable;
    Args            args;
    MenuFunction    menuFunction;
    Common rec;
    ;
    rec = DRT_EnvanterTable::find(this.valueStr());
    args = new Args();
    args.record(rec);
    args.caller(element);
    menuFunction = new     MenuFunction(menuitemdisplaystr(DRT_EnvanterTable),MenuItemType::Display);
    menuFunction.run(args);
}
Serbest metin fatura iptali | Ters kayıt
Sebest metin faturasından fatura iptali yapılamıyor.İptal etmeye çalıştığınızda;
"Sadece Satış Siparişlerinden yapılanlara otomatik ters kayıt atabilirsiniz.." Şeklinde hata alırsınız.
Bu işlemi gerçekleştirmek için: 
Serbest metin faturası > Sorgulamalar > Fatura >
Hareketler > Ters
hareket
Ya da kısa yolu > Müşterinin hareketlerinden ilgili
hareketi bulup Ters
hareket yapabilirsiniz.
| Alınan hata! | 
Kaydol:
Yorumlar (Atom)
Total ciro
static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...
- 
Dynamics Ax Microsoft’un orta ve büyük ölçekli işletmelerin ihtiyaçlarını karşılamak için tasarladığı temel iş çözümüdür. Veritabanı yöne...
 - 
Veri Filtreleme CTRL+F Geçerli alanı filtrelemek için kullanılır. Ekran açılır. Hangi alan üzerine tıklandı ise o alan için filtreleme k...