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:
Kayıtlar (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...