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...