All Archives in this blog may be used for the Junior,Dummies or someone who just started for career at Dynamics Ax ... A Place Where U can Start ur Code - right here ...
Jumat, 22 Agustus 2014
Number sequence ******** has been exceeded
Hai,... maaf nih baru update lagi,...
sudah hampir sepuluh bulan di tempat baru ...
Kali ini kita akan membahas number sequence yang telah habis.
Jika teman-teman mendapatkan error message "Number sequence ******** has been exceeded" pada saat posting Packing Slip, Invoice dsb bisa jadi number sequence yang akan berjalan lebih besar dari number sequence yang terbesar yang telah kita setup.
Cek ******.. tersebut di table Numbersequencetable, lihat number sequence codenya.
Back to form Number sequence dan pilih sequence codenya, klik edit/double click numbersequence tersebut. Selanjutnya kita bisa setup kembali numbersequence terbesarnya di field Largest. Klik OK.
Selasa, 15 April 2014
Cannot update LogisticPostalAddress
Hallo
saat ini aku sedang mencoba untuk mengupdate record yang ada di table LogisticsPostalAddress. Tetapi system malah mengeluarkan error seperti dibawah ini "Cannot edit a record in Addresses (LogisticsPostalAddress). Update on a valid time state table is not allowed without specifying a ValidTimeStateUpdateMode."
what u have todo is,... make sure u call validTimeStateUpdateMode method.
here is the example
static void Job12(Args _args)
{
RecId _recid;
LogisticsPostalAddress _dlvadress;
;
ttsBegin;
_dlvadress.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
select forUpdate _dlvadress where _dlvadress.RecId == 5637147898;
// _dlvadress = LogisticsPostalAddress::findRecId(5637147898,true); or ucan try this
_dlvadress.Address = "Cirebon";
_dlvadress.update();
ttsCommit;
}
OK...
selamat mencoba
saat ini aku sedang mencoba untuk mengupdate record yang ada di table LogisticsPostalAddress. Tetapi system malah mengeluarkan error seperti dibawah ini "Cannot edit a record in Addresses (LogisticsPostalAddress). Update on a valid time state table is not allowed without specifying a ValidTimeStateUpdateMode."
what u have todo is,... make sure u call validTimeStateUpdateMode method.
here is the example
static void Job12(Args _args)
{
RecId _recid;
LogisticsPostalAddress _dlvadress;
;
ttsBegin;
_dlvadress.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
select forUpdate _dlvadress where _dlvadress.RecId == 5637147898;
// _dlvadress = LogisticsPostalAddress::findRecId(5637147898,true); or ucan try this
_dlvadress.Address = "Cirebon";
_dlvadress.update();
ttsCommit;
}
OK...
selamat mencoba
Kamis, 13 Maret 2014
Import Data dari file excel .CSV ke table AX2012
Di AX2012 ini memang bikin kita senewen, terutama untuk kita yang sudah terbiasa dengan fasilitas import Data Excel ke table AX, karena fasilitas ini dihilangkan oleh si mihkocok.
Belum lagi kita dibikin mumet dengan Addin kita yang gaaaaa solve solve errornya.
Ok.
Kali ini saya mau berbagi script untuk meimport data dari file excel terutama yang berformat .CSV.
1.Asumsikan kita mempunyai file excel dengan data yang sudah dimasukna ke kolom2nya.
Oh iya, script ini saya buat untuk mengimport data ke table custom kita bukan table standard AX.(ane masih mumet cuuuy dengan struktur table AX2012 ini :( )
2.Asumsikan kamu mempunyai table custom yang sudah kamu buat.
lalu buat lah job seperti ini.
Di job ini sebelumnya saya sudah membuat table bernama HYNImportTable.
Dan saya juga sudah maping kolom mana saja yang akan saya ambil nilainya dan selanjutnya saya tembak ke field2 yang sesuai dengan field yang ada ditable saya itu.
static void HYNimporttable(Args _args)
{
#File
CommaTextIo commaTextIo;
FileIOPermission permission;
container containFromRead;
int x;
int cols;
PurchId purchid;
AccountingDate accountingdate;
VendAccount vendaccount;
Line line;
TaxGroup taxgroup;
TaxItemGroup taxitemgroup;
PurchPoolId poolid;
LogisticsDeliveryName Dlvaname;
Addressing dlvaddress;
DlvDate dlvdate;
CurrencyCode currencycode;
ItemId itemid;
EcoResCategoryName procurementcategory;
PurchQty purchQty;
PurchUnit purchunit;
PurchPrice purchPrice;
AmountCur lineAmount;
PurchReqId PRid;
PurchQtyOrdered deliveryremainder;
ProjCategoryId ProjCategoryId;
VersioningDocumentState Approvalstatus;
PurchReqAttention Attention;
ItemFreeTxt POtext;
AmountCur progpaymamount;
Name PaymTermId;
ProjId ProjId;
EcoResItemConfigurationName configId;
InventLocationId warehouseid;
InventSiteId siteId;
EcoResItemSizeName inventSizeid;
EcoResItemColorName inventColorid;
EcoResItemStyleName inventStyleid;
HYNImportTable hynimporttable;
;
permission = new FileIOPermission('d:\\Upload data PTG\\PO Open Part2 4.csv',#io_read);//D:\Upload data PTG
permission.assert();
commaTextIo = new CommaTextIO('d:\\Upload data PTG\\PO Open Part2 4.csv','R');
containFromRead = commaTextIo.read();
ttsBegin;
while(containFromRead)
{
cols = conLen(containFromRead);
for(x=1;x<=cols;x++)
{
//accounting date
if(x == 1)
{
accountingdate = str2Date(conPeek(containFromRead,x),-1);
}
//PO number
if(x == 2)
{
purchid = strLTrim(conpeek(containFromRead,x));
}
//vendaccount
if(x == 3)
{
vendaccount = strLTrim(conPeek(containFromRead,x));
}
//line
if(x==4)
{
line = conPeek(containFromRead,x);
}
//taxgroup
if(x==5)
{
taxgroup = conPeek(containFromRead,x);
}
//taxitemgroup
if(x==6)
{
taxitemgroup = conPeek(containFromRead,x);
}
//pool
if(x==8)
{
poolid = conPeek(containFromRead,x);
}
//Dlvname
if(x==9)
{
Dlvaname = conPeek(containFromRead,x);
}
//dlvaddress
if(x==10)
{
dlvaddress = conPeek(containFromRead,x);
}
//dlvdate
if(x==12)
{
dlvdate = str2Date(conPeek(containFromRead,x),-1);
}
//currencycode
if(x==13)
{
currencycode = conPeek(containFromRead,x);
}
//Payemtermid
if(x==14)
{
PaymTermId = conPeek(containFromRead,x);
}
//ItemId
if(x==15)
{
itemid = conPeek(containFromRead,x);
}
//Procurementcategory
if(x==16)
{
procurementcategory = conPeek(containFromRead,x);
}
//configId
if(x==17)
{
configId = conPeek(containFromRead,x);
}
//inventSizeId
if(x==18)
{
inventSizeid = conPeek(containFromRead,x);
}
//inventCOlorId
if(x==19)
{
inventColorid = conPeek(containFromRead,x);
}
//inventStyleId
if(x==20)
{
inventStyleid = conPeek(containFromRead,x);
}
//inventSiteId
if(x==21)
{
siteId = conPeek(containFromRead,x);
}
//inventLocationId
if(x==22)
{
warehouseid = conPeek(containFromRead,x);
}
//Qty
if(x==23)
{
purchQty = conPeek(containFromRead,x);
}
//PurchUnit
if(x==24)
{
purchunit = conPeek(containFromRead,x);
}
//PurchPrice
if(x==25)
{
purchPrice = conPeek(containFromRead,x);
}
//lineamount
if(x==26)
{
lineAmount = conPeek(containFromRead,x);
}
//PR
if(x==27)
{
PRid = strLTrim(conPeek(containFromRead,x));
}
//deliveryremainder
if(x==28)
{
deliveryremainder = conPeek(containFromRead,x);
}
//ProjId
if(x==30)
{
ProjId = conPeek(containFromRead,x);
}
//ProjCategoryId
if(x==31)
{
ProjCategoryId = conPeek(containFromRead,x);
}
//Approvalstatus
if(x==38)
{
Approvalstatus = str2enum(Approvalstatus,conPeek(containFromRead,x));
}
//Attention
if(x==39)
{
Attention = conPeek(containFromRead,x);
}
//POtext
if(x==40)
{
POtext = conPeek(containFromRead,x);
}
if(x==42)
{
progpaymamount = conPeek(containFromRead,x);
}
}
hynimporttable.AccountingDate = accountingdate;
hynimporttable.PurchId = purchid;
hynimporttable.VendAccount = vendaccount;
hynimporttable.Line = line;
hynimporttable.TaxGroup = taxgroup;
hynimporttable.TaxItemGroup = taxitemgroup;
hynimporttable.PurchPoolId = poolid;
hynimporttable.DlvName = Dlvaname;
hynimporttable.DlvAddress = dlvaddress;
hynimporttable.DlvDate = dlvdate;
hynimporttable.CurrencyCode = currencycode;
hynimporttable.PaymTermId = PaymTermId;
hynimporttable.ItemId = itemid;
hynimporttable.ProcurementCategory = procurementcategory;
hynimporttable.ConfigId = configId;
hynimporttable.InventSiteId = siteId;
hynimporttable.InventLocationId = warehouseid;
hynimporttable.InventSizeId = inventSizeid;
hynimporttable.InventColorId = inventColorid;
hynimporttable.InventStyleId = inventStyleid;
hynimporttable.PurchQty = purchQty;
hynimporttable.PurchUnit = purchunit;
hynimporttable.PurchPrice = purchPrice;
hynimporttable.LineAmount = lineAmount;
hynimporttable.PurchReqId = PRid;
hynimporttable.DeliverRemainder = deliveryremainder;
hynimporttable.ProjId = ProjId;
hynimporttable.ProjCategoryId = ProjCategoryId;
hynimporttable.ApprovalStatus = Approvalstatus;
hynimporttable.Attention = Attention;
hynimporttable.POText = POtext;
hynimporttable.ProgPaymAmount = progpaymamount;
hynimporttable.insert();
containFromRead = commaTextIo.read();
}
ttsCommit;
info("done");
}
Ok selamat mencoba
Belum lagi kita dibikin mumet dengan Addin kita yang gaaaaa solve solve errornya.
Ok.
Kali ini saya mau berbagi script untuk meimport data dari file excel terutama yang berformat .CSV.
1.Asumsikan kita mempunyai file excel dengan data yang sudah dimasukna ke kolom2nya.
Oh iya, script ini saya buat untuk mengimport data ke table custom kita bukan table standard AX.(ane masih mumet cuuuy dengan struktur table AX2012 ini :( )
2.Asumsikan kamu mempunyai table custom yang sudah kamu buat.
lalu buat lah job seperti ini.
Di job ini sebelumnya saya sudah membuat table bernama HYNImportTable.
Dan saya juga sudah maping kolom mana saja yang akan saya ambil nilainya dan selanjutnya saya tembak ke field2 yang sesuai dengan field yang ada ditable saya itu.
static void HYNimporttable(Args _args)
{
#File
CommaTextIo commaTextIo;
FileIOPermission permission;
container containFromRead;
int x;
int cols;
PurchId purchid;
AccountingDate accountingdate;
VendAccount vendaccount;
Line line;
TaxGroup taxgroup;
TaxItemGroup taxitemgroup;
PurchPoolId poolid;
LogisticsDeliveryName Dlvaname;
Addressing dlvaddress;
DlvDate dlvdate;
CurrencyCode currencycode;
ItemId itemid;
EcoResCategoryName procurementcategory;
PurchQty purchQty;
PurchUnit purchunit;
PurchPrice purchPrice;
AmountCur lineAmount;
PurchReqId PRid;
PurchQtyOrdered deliveryremainder;
ProjCategoryId ProjCategoryId;
VersioningDocumentState Approvalstatus;
PurchReqAttention Attention;
ItemFreeTxt POtext;
AmountCur progpaymamount;
Name PaymTermId;
ProjId ProjId;
EcoResItemConfigurationName configId;
InventLocationId warehouseid;
InventSiteId siteId;
EcoResItemSizeName inventSizeid;
EcoResItemColorName inventColorid;
EcoResItemStyleName inventStyleid;
HYNImportTable hynimporttable;
;
permission = new FileIOPermission('d:\\Upload data PTG\\PO Open Part2 4.csv',#io_read);//D:\Upload data PTG
permission.assert();
commaTextIo = new CommaTextIO('d:\\Upload data PTG\\PO Open Part2 4.csv','R');
containFromRead = commaTextIo.read();
ttsBegin;
while(containFromRead)
{
cols = conLen(containFromRead);
for(x=1;x<=cols;x++)
{
//accounting date
if(x == 1)
{
accountingdate = str2Date(conPeek(containFromRead,x),-1);
}
//PO number
if(x == 2)
{
purchid = strLTrim(conpeek(containFromRead,x));
}
//vendaccount
if(x == 3)
{
vendaccount = strLTrim(conPeek(containFromRead,x));
}
//line
if(x==4)
{
line = conPeek(containFromRead,x);
}
//taxgroup
if(x==5)
{
taxgroup = conPeek(containFromRead,x);
}
//taxitemgroup
if(x==6)
{
taxitemgroup = conPeek(containFromRead,x);
}
//pool
if(x==8)
{
poolid = conPeek(containFromRead,x);
}
//Dlvname
if(x==9)
{
Dlvaname = conPeek(containFromRead,x);
}
//dlvaddress
if(x==10)
{
dlvaddress = conPeek(containFromRead,x);
}
//dlvdate
if(x==12)
{
dlvdate = str2Date(conPeek(containFromRead,x),-1);
}
//currencycode
if(x==13)
{
currencycode = conPeek(containFromRead,x);
}
//Payemtermid
if(x==14)
{
PaymTermId = conPeek(containFromRead,x);
}
//ItemId
if(x==15)
{
itemid = conPeek(containFromRead,x);
}
//Procurementcategory
if(x==16)
{
procurementcategory = conPeek(containFromRead,x);
}
//configId
if(x==17)
{
configId = conPeek(containFromRead,x);
}
//inventSizeId
if(x==18)
{
inventSizeid = conPeek(containFromRead,x);
}
//inventCOlorId
if(x==19)
{
inventColorid = conPeek(containFromRead,x);
}
//inventStyleId
if(x==20)
{
inventStyleid = conPeek(containFromRead,x);
}
//inventSiteId
if(x==21)
{
siteId = conPeek(containFromRead,x);
}
//inventLocationId
if(x==22)
{
warehouseid = conPeek(containFromRead,x);
}
//Qty
if(x==23)
{
purchQty = conPeek(containFromRead,x);
}
//PurchUnit
if(x==24)
{
purchunit = conPeek(containFromRead,x);
}
//PurchPrice
if(x==25)
{
purchPrice = conPeek(containFromRead,x);
}
//lineamount
if(x==26)
{
lineAmount = conPeek(containFromRead,x);
}
//PR
if(x==27)
{
PRid = strLTrim(conPeek(containFromRead,x));
}
//deliveryremainder
if(x==28)
{
deliveryremainder = conPeek(containFromRead,x);
}
//ProjId
if(x==30)
{
ProjId = conPeek(containFromRead,x);
}
//ProjCategoryId
if(x==31)
{
ProjCategoryId = conPeek(containFromRead,x);
}
//Approvalstatus
if(x==38)
{
Approvalstatus = str2enum(Approvalstatus,conPeek(containFromRead,x));
}
//Attention
if(x==39)
{
Attention = conPeek(containFromRead,x);
}
//POtext
if(x==40)
{
POtext = conPeek(containFromRead,x);
}
if(x==42)
{
progpaymamount = conPeek(containFromRead,x);
}
}
hynimporttable.AccountingDate = accountingdate;
hynimporttable.PurchId = purchid;
hynimporttable.VendAccount = vendaccount;
hynimporttable.Line = line;
hynimporttable.TaxGroup = taxgroup;
hynimporttable.TaxItemGroup = taxitemgroup;
hynimporttable.PurchPoolId = poolid;
hynimporttable.DlvName = Dlvaname;
hynimporttable.DlvAddress = dlvaddress;
hynimporttable.DlvDate = dlvdate;
hynimporttable.CurrencyCode = currencycode;
hynimporttable.PaymTermId = PaymTermId;
hynimporttable.ItemId = itemid;
hynimporttable.ProcurementCategory = procurementcategory;
hynimporttable.ConfigId = configId;
hynimporttable.InventSiteId = siteId;
hynimporttable.InventLocationId = warehouseid;
hynimporttable.InventSizeId = inventSizeid;
hynimporttable.InventColorId = inventColorid;
hynimporttable.InventStyleId = inventStyleid;
hynimporttable.PurchQty = purchQty;
hynimporttable.PurchUnit = purchunit;
hynimporttable.PurchPrice = purchPrice;
hynimporttable.LineAmount = lineAmount;
hynimporttable.PurchReqId = PRid;
hynimporttable.DeliverRemainder = deliveryremainder;
hynimporttable.ProjId = ProjId;
hynimporttable.ProjCategoryId = ProjCategoryId;
hynimporttable.ApprovalStatus = Approvalstatus;
hynimporttable.Attention = Attention;
hynimporttable.POText = POtext;
hynimporttable.ProgPaymAmount = progpaymamount;
hynimporttable.insert();
containFromRead = commaTextIo.read();
}
ttsCommit;
info("done");
}
Ok selamat mencoba
SSRS (rsAccessDenied)
Baiklah Seminggu ini kami dihadapkan persiapan Go Live dan menghadapi kendala pada Report yang tidak bisa dibuka oleh user.
Kendalanya seperti berikut : Report yang ada di menu AX2012 bisa running/terbuka oleh user yang masuk group administrator. User yang tidak termasuk didalamnya tidak bisa membukanya, system mengeluarkan message error seperti berikut
"Error while setting server report parameters. Error message: The permissions granted to user '[DOMAIN\USERNAME]' are insufficient for performing this operation. (rsAccessDenied)"
untuk mengatasi hal ini kita bisa menambahkan permision untuk user2 tersebut di
http://(SSRSREPORTSERVERNAME)/Reports/Pages/Folder.aspx
anda bisa membukanya dibrowser anda.
SSRSREPORTSERVERNAME : nama server/ip address SSRS anda.
Jika sudah terbuka :
1.
pilih folder Report AXnya
2.
klik tombol Folder Setting
3.
Setelah itu klik menu Security yang ada di panel kiri, maka terbuka halaman list user yang mempunyai akses ke report2 AX2012. Anda bisa menambahkan user2 yang lainnya dengan mengklik tombol New Role Assignment.
Selanjutnya anda tinggal memasukan username user-user anda dan memilih report mana saja yang bisa dibuka oleh mereka.
Selamat mencoba.
Jumat, 29 November 2013
Import Data from Excel Office add-in to Dynamics AX2012
Hi, ...
dah lama ya ta jumpa...
Tiba-tiba sudah AX2012 lagi :( ...
Kali ini i want to share a simple way and... of course a simple sample how to import data from Excel Office add-in to Dynamics AX2012.
I take a sample from my machine
Sebelumnya Ms.Office saya adalah versi 2007. lalu saya install Office Add-in dan hasilnya prerequisite AX12 tidak menemukan adanya Ms.Office 2007... well thats is weird. Then i go check to the internet and found that i have to upgrade my MS.Office 2007 to SP1,...so i updgrade la... but ... its still doesnt work... its more weird rite? ... OK,.. next ... i am very mad, ta' tanggung2 aku upgrade aja sampe SP3.. dan itu teman ku juga menyarankan seperti itu. n the Result is ... The Prerequisite can read my MS.Office :).
after you installed the Office Add-in,... u must go to AX2012-System Administration-Periodic-Compile into .NET Framework CIL, ... wait(its quite long) until the proces is done. and give an information like this.
why we must generate the .NET CIL? .. coz if u r not u will got an error like this "Document Generic document could not be created. Error details:" this is error will appear when u import data to AX2012. but for some reason in technically... i dont know ...heheheh
Ok now open ur Excel and find the Dynamics AX menu ...(found it? ... god boy!)
Click new blank document, go up to the menu then click Add-data-> Add table
Here,... i have create a VetSpeciestable for my sample..u can choice ur tables off course.
click OK.
and this is the view of my Worksheet of VetSPeciesTable.
Click Menu 'Fields' to hide the navigator of table
then u can put ur record at the couloms.
click Publish at the up Menu,...
then u will get information from the Excel about the result.
dah lama ya ta jumpa...
Tiba-tiba sudah AX2012 lagi :( ...
Kali ini i want to share a simple way and... of course a simple sample how to import data from Excel Office add-in to Dynamics AX2012.
I take a sample from my machine
Sebelumnya Ms.Office saya adalah versi 2007. lalu saya install Office Add-in dan hasilnya prerequisite AX12 tidak menemukan adanya Ms.Office 2007... well thats is weird. Then i go check to the internet and found that i have to upgrade my MS.Office 2007 to SP1,...so i updgrade la... but ... its still doesnt work... its more weird rite? ... OK,.. next ... i am very mad, ta' tanggung2 aku upgrade aja sampe SP3.. dan itu teman ku juga menyarankan seperti itu. n the Result is ... The Prerequisite can read my MS.Office :).
after you installed the Office Add-in,... u must go to AX2012-System Administration-Periodic-Compile into .NET Framework CIL, ... wait(its quite long) until the proces is done. and give an information like this.
why we must generate the .NET CIL? .. coz if u r not u will got an error like this "Document Generic document could not be created. Error details:" this is error will appear when u import data to AX2012. but for some reason in technically... i dont know ...heheheh
Ok now open ur Excel and find the Dynamics AX menu ...(found it? ... god boy!)
Click new blank document, go up to the menu then click Add-data-> Add table
Here,... i have create a VetSpeciestable for my sample..u can choice ur tables off course.
click OK.
and this is the view of my Worksheet of VetSPeciesTable.
Click Menu 'Fields' to hide the navigator of table
then u can put ur record at the couloms.
click Publish at the up Menu,...
then u will get information from the Excel about the result.
Sabtu, 02 Februari 2013
Membuat sequence number di Ms.Dynamics AX 2012
Hi Guys, ...
(hhhmmm its been along time i am not using "SPAAXXRTAN!!" ...)
This time i wanna share about ... how to create a new Sequence number in AX 2012, ...wait,... AX 2012?! ... tidak salah ni? ... yes, now i am on my project n using AX 2012.
So far there's not a big different between AX 2012 coding and AX 2009 coding...(i hope so .. Amin)
Ok lets we start.
datatype.parmDatatypeId(extendedTypeNum(Car Id));
datatype.parmReferenceHelp(literalStr("@SYS334483"));
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmWizardHighest(999999);
datatype.parmSortField(20);
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
}
3.client server static NumberSequenceReference numRefcarId()
{
return NumberSeqReference::findReference(extendedTypeNum(car Id));
}
4.static void Carid(Args _args)
{
NumberSeqModuleProject NumberSeqModuleProject = new NumberSeqModuleProject();
;
NumberSeqModuleProject.load();
}
6.static void number(Args _args)
{
NumberSeq numberSeq;
CarId num;
;
numberSeq = NumberSeq::newGetNum(ProjParameters::numRefcarId());
num = numberSeq.num();
info(num);
}
7. public class FormRun extends ObjectRun
{
NumberSeqFormHandler numberSeqFormHandler;
}
8. NumberSeqFormHandler numberSeqFormHandler()
{
if (!numberSeqFormHandler)
{
numberSeqFormHandler = NumberSeqFormHandler::newForm(ProjParameters::numRefcarId ().NumberSequenceId,
element,
CarTable_DS,
fieldNum(CarTable, Car Id)
);
}
return numberSeqFormHandler;
}
9. void close()
{
if (numberSeqFormHandler)
{
numberSeqFormHandler.formMethodClose();
}
super();
}
10.
Create()
void create(boolean append = false,
boolean extern = false) // If created externally
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(append);
if (!extern)
{
element.numberSeqFormHandler().formMethodDataSourceCreate(true);
}
}
Delete()
public void delete()
{
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
}
Write()
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
Validate Write()
public boolean validateWrite()
{
boolean ret;
ret = super();
ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;
if (ret)
{
CarTable.validateWrite();
}
return ret;
}
Link Active()
public void linkActive()
{
;
element.numberSeqFormHandler().formMethodDataSourceLinkActive();
super();
}
Yup, ... semoga bisa membantu infonya, ...ini aku dapat di http://swathidynamicsax.blogspot.com dan sudah aku test dan ... BerHasil! BerHasil! HOREE!! ...
(hhhmmm its been along time i am not using "SPAAXXRTAN!!" ...)
This time i wanna share about ... how to create a new Sequence number in AX 2012, ...wait,... AX 2012?! ... tidak salah ni? ... yes, now i am on my project n using AX 2012.
So far there's not a big different between AX 2012 coding and AX 2009 coding...(i hope so .. Amin)
Ok lets we start.
- Buat EDT dari String, ... kita ambil contoh SNId
- Cari dan buka method Loadmodule() di Class NumberSeqModuleProject, lalu tambahkan code berikut. Tentu saja kamu bisa mengkopi dan paste code tersebut dari code yang sudah ada lalu ubah sedikit. ( hello ... buat apa ada fasilitas Copy Paste kalo tidak dimanfaatkan?!)
- Buat method di tabel Projparameters
- Lalu buat Job berikut
- Jalankan Wizard sequence number, Organization Administration >> CommonForms >> Numbersequences >> Numbersequence >> Generate >> run Wizard
- Sekarang kita test, Apakah number sequncenya berfungsi atau tidak. buat Job sebagai berikut.
- Sequence number ini pasti kita akan gunakan di sebuah form. Buat formnya lalu tambahkan deklarasi berikut di method publicnya
- Setelah itu, di form itu juga buat method berikut
- Buat method close di formnya
- Terakhir tambahkan method dibawah ini di DataSourcenya
datatype.parmDatatypeId(extendedTypeNum(Car Id));
datatype.parmReferenceHelp(literalStr("@SYS334483"));
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmWizardHighest(999999);
datatype.parmSortField(20);
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
}
3.client server static NumberSequenceReference numRefcarId()
{
return NumberSeqReference::findReference(extendedTypeNum(car Id));
}
4.static void Carid(Args _args)
{
NumberSeqModuleProject NumberSeqModuleProject = new NumberSeqModuleProject();
;
NumberSeqModuleProject.load();
}
6.static void number(Args _args)
{
NumberSeq numberSeq;
CarId num;
;
numberSeq = NumberSeq::newGetNum(ProjParameters::numRefcarId());
num = numberSeq.num();
info(num);
}
7. public class FormRun extends ObjectRun
{
NumberSeqFormHandler numberSeqFormHandler;
}
8. NumberSeqFormHandler numberSeqFormHandler()
{
if (!numberSeqFormHandler)
{
numberSeqFormHandler = NumberSeqFormHandler::newForm(ProjParameters::numRefcarId ().NumberSequenceId,
element,
CarTable_DS,
fieldNum(CarTable, Car Id)
);
}
return numberSeqFormHandler;
}
9. void close()
{
if (numberSeqFormHandler)
{
numberSeqFormHandler.formMethodClose();
}
super();
}
10.
Create()
void create(boolean append = false,
boolean extern = false) // If created externally
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(append);
if (!extern)
{
element.numberSeqFormHandler().formMethodDataSourceCreate(true);
}
}
Delete()
public void delete()
{
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
}
Write()
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
Validate Write()
public boolean validateWrite()
{
boolean ret;
ret = super();
ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;
if (ret)
{
CarTable.validateWrite();
}
return ret;
}
Link Active()
public void linkActive()
{
;
element.numberSeqFormHandler().formMethodDataSourceLinkActive();
super();
}
Yup, ... semoga bisa membantu infonya, ...ini aku dapat di http://swathidynamicsax.blogspot.com dan sudah aku test dan ... BerHasil! BerHasil! HOREE!! ...
Senin, 29 Oktober 2012
Error "illegal reference"
Mungkin anda mengalami error "illegal reference" saat menyimpan Item yang didaftarkan pada SO.
Ini bisa di pecahkan dengan menset next number pada sequencenumber form untuk inventransId.
caranya ... anda buka dulu inventrans table. pada field inventransId anda sort nomor yang paling akhir.
setelah itu anda buka Basic-SequenceNumber form dan cari data untuk Inventtrans. Setelah dapat recordnya, lihat field next numbernya. Isi field tersebut dengan record berikutnya dari nomor inventransId yang tadi.
selamat mencoba .... :)
Ini bisa di pecahkan dengan menset next number pada sequencenumber form untuk inventransId.
caranya ... anda buka dulu inventrans table. pada field inventransId anda sort nomor yang paling akhir.
setelah itu anda buka Basic-SequenceNumber form dan cari data untuk Inventtrans. Setelah dapat recordnya, lihat field next numbernya. Isi field tersebut dengan record berikutnya dari nomor inventransId yang tadi.
selamat mencoba .... :)
Langganan:
Komentar (Atom)
Cloud hosted environment di D365
Biasanya kita menginginkan sebuah environment yang sama dengan LIVE/PROD untuk mengtest sebuah proses. Maka kita bisa menggunakan fitur Clou...
-
When we work with entries data that contain sequence number sometime we need an improvement to create in another way, a Generate perhaps. ...
-
Biasanya kita menginginkan sebuah environment yang sama dengan LIVE/PROD untuk mengtest sebuah proses. Maka kita bisa menggunakan fitur Clou...
-
Kali ini saya mendapatkan erorr dengan code CS1963, padahal sebelumnya saya sudah mendefinisikan 'var item in Model' di @foreach(var...