ଡାଇନାମିକ୍ସ AX 2012 ରେ X++ ରୁ ସିଧାସଳଖ AIF ଦସ୍ତାବିଜ ସେବାକୁ କଲ୍ କରିବା
ପ୍ରକାଶିତ: 11:25:04 AM UTC ଠାରେ ଫେବୃଆରୀ 16, 2025
ଏହି ପ୍ରବନ୍ଧରେ, ମୁଁ ବର୍ଣ୍ଣନା କରୁଛି ଯେ ଡାଇନାମିକ୍ସ AX 2012 ରେ ଆପ୍ଲିକେସନ ଇଣ୍ଟିଗ୍ରେସନ ଫ୍ରେମୱାର୍କ ଡକ୍ୟୁମେଣ୍ଟ ସେବାଗୁଡିକୁ କିପରି ସିଧାସଳଖ X++ କୋଡ୍ ରୁ କଲ୍ କରିବେ, ଉଭୟ ଇନ୍ବାଉଣ୍ଡ ଏବଂ ଆଉଟବାଉଣ୍ଡ କଲ୍ ଅନୁକରଣ କରିବେ, ଯାହା ଏଆଇଏଫ୍ କୋଡ୍ ରେ ତ୍ରୁଟି ଖୋଜିବା ଏବଂ ଡିବଗ୍ କରିବା ଯଥେଷ୍ଟ ସହଜ କରିପାରେ।
Calling AIF Document Services Directly from X++ in Dynamics AX 2012
ଏହି ପୋଷ୍ଟରେ ଥିବା ସୂଚନା ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ୨୦୧୨ ଆର୩ ଉପରେ ଆଧାରିତ । ଏହା ଅନ୍ୟ ସଂସ୍କରଣ ପାଇଁ ବୈଧ ହୋଇପାରେ କିମ୍ବା ହୋଇନପାରେ।
ମୁଁ ନିକଟରେ ଜଣେ ଗ୍ରାହକଙ୍କୁ ଅନ୍ୟ ସିଷ୍ଟମରୁ ପ୍ରାପ୍ତ ଡାଟା ଆଧାରରେ ଗ୍ରାହକ ସୃଷ୍ଟି କରିବା ପାଇଁ ଏକ ଆପ୍ଲିକେସନ୍ ଇଣ୍ଟିଗ୍ରେସନ ଫ୍ରେମୱାର୍କ (ଏଆଇଏଫ) ଇନ୍ବାଉଣ୍ଡ ପୋର୍ଟ କାର୍ଯ୍ୟକାରୀ କରିବାରେ ସାହାଯ୍ୟ କରୁଥିଲି । ଯେହେତୁ ଡାଇନାମିକ୍ସ AX ପୂର୍ବରୁ କଷ୍ଟକଷ୍ଟୋମର ଡକ୍ୟୁମେଣ୍ଟ ସେବା ପ୍ରଦାନ କରେ, ଯାହା ଏଥିପାଇଁ ଯୁକ୍ତିକୁ କାର୍ଯ୍ୟକାରୀ କରେ, ଆମେ ଏହାକୁ ସରଳ ରଖିବାକୁ ଏବଂ ମାନକ ସମାଧାନ ବ୍ୟବହାର କରିବାକୁ ନିଷ୍ପତ୍ତି ନେଇଛୁ।
ତଥାପି, ଏହା ଶୀଘ୍ର ଜଣାପଡିଲା ଯେ ଏକ୍ସଏମଏଲ ଉତ୍ପାଦନ କରିବା ପାଇଁ ବାହ୍ୟ ସିଷ୍ଟମ ପାଇବାରେ ଅନେକ ସମସ୍ୟା ଅଛି ଯାହା ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ଗ୍ରହଣ କରିବ । ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ଦ୍ୱାରା ଉତ୍ପନ୍ନ ଏକ୍ସଏମଏଲ ସ୍କିମା ଏକ ବହୁତ ଜଟିଳ ଏବଂ ଏହା ମଧ୍ୟ ଦେଖାଯାଏ ଯେ ଡାଇନାମିକ୍ସ ଏଏକ୍ସରେ କିଛି ତ୍ରୁଟି ଅଛି ଯାହା ବେଳେବେଳେ ଏକ୍ସଏମଏଲକୁ ପ୍ରତ୍ୟାଖ୍ୟାନ କରିଥାଏ ଯାହା ଅନ୍ୟ ଉପକରଣ ଗୁଡିକ ଅନୁଯାୟୀ ସ୍କିମା-ବୈଧ ଅଟେ, ତେଣୁ ମୋଟାମୋଟି ଭାବରେ, ଏହା ମୁଁ ଭାବିଥିବା ତୁଳନାରେ କମ୍ ସରଳ ପ୍ରମାଣିତ ହୋଇଛି ।
ପ୍ରୟାସ ସମୟରେ, ମୁଁ ପ୍ରାୟତଃ କିଛି XML ଫାଇଲ୍ ରେ ପ୍ରକୃତରେ ସମସ୍ୟା କ'ଣ ତାହା ଜାଣିବାପାଇଁ ସଂଘର୍ଷ କରୁଥିଲି କାରଣ AIF ଦ୍ୱାରା ପ୍ରଦାନ କରାଯାଇଥିବା ତ୍ରୁଟି ବାର୍ତ୍ତାଗୁଡିକ ସୂଚନାମୂଳକ ଠାରୁ କମ୍ ଅଟେ। ଏହା ମଧ୍ୟ କଷ୍ଟଦାୟକ ଥିଲା, କାରଣ ମୋତେ ବାହ୍ୟ ସିଷ୍ଟମକୁ ଏମଏସଏମକ୍ୟୁ ଉପରେ ଏକ ନୂତନ ସନ୍ଦେଶ ପଠାଇବା ପାଇଁ ଅପେକ୍ଷା କରିବାକୁ ପଡିଥିଲା ଏବଂ ତା'ପରେ ମୁଁ ଏକ ତ୍ରୁଟି ଦେଖିବା ପୂର୍ବରୁ ସନ୍ଦେଶ ଉଠାଇବା ଏବଂ ଏହାକୁ ପ୍ରକ୍ରିୟା କରିବାକୁ ଏଆଇଏଫ ପାଇଁ ଅପେକ୍ଷା କରିବାକୁ ପଡିଥିଲା ।
ତେଣୁ ମୁଁ ଅନୁସନ୍ଧାନ କଲି ଯେ କିଛି ମାତ୍ରାରେ ଦ୍ରୁତ ପରୀକ୍ଷଣ ପାଇଁ ସ୍ଥାନୀୟ XML ଫାଇଲ୍ ସହିତ ସେବା କୋଡ୍ କୁ ସିଧାସଳଖ କଲ୍ କରିବା ସମ୍ଭବ କି ନାହିଁ ଏବଂ ଏହା ଜଣାପଡିଛି ଯେ ଏହା ହେଉଛି - ଏବଂ କେବଳ ସେତିକି ନୁହେଁ, ଏହା କରିବା ପ୍ରକୃତରେ ସହଜ ଏବଂ ପ୍ରକୃତରେ ଅଧିକ ଅର୍ଥପୂର୍ଣ୍ଣ ତ୍ରୁଟି ବାର୍ତ୍ତା ପ୍ରଦାନ କରେ ।
ନିମ୍ନରେ ଦିଆଯାଇଥିବା ଉଦାହରଣ ଚାକିରି ଏକ ସ୍ଥାନୀୟ XML ଫାଇଲ୍ ପଢିଥାଏ ଏବଂ ଗ୍ରାହକ ସୃଷ୍ଟି କରିବା ପାଇଁ ଏହାକୁ ଏକ୍ସଡିକସ୍ଟୋମର ଶ୍ରେଣୀ (ଯାହା କି କଷ୍ଟକଷ୍ଟୋମର ସେବା ଦ୍ୱାରା ବ୍ୟବହୃତ ଡକ୍ୟୁମେଣ୍ଟ ଶ୍ରେଣୀ) ସହିତ ବ୍ୟବହାର କରିବାକୁ ଚେଷ୍ଟା କରେ। ଯଦି ଆପଣ ଆବଶ୍ୟକ କରନ୍ତି ତେବେ ଆପଣ ଅନ୍ୟ ସମସ୍ତ ଦସ୍ତାବିଜ ଶ୍ରେଣୀପାଇଁ ସମାନ ଚାକିରି କରିପାରିବେ, ଉଦାହରଣ ସ୍ୱରୂପ, ଆକ୍ସଡ୍ସାଲେସର୍ଡର।
{
FileNameOpen fileName = @'C:\\TestCustomerCreate.xml';
AxdCustomer customer;
AifEntityKey key;
#File
;
new FileIoPermission(fileName, #IO_Read).assert();
customer = new AxdCustomer();
key = customer.create( XmlDocument::newFile(fileName).xml(),
new AifEndpointActionPolicyInfo(),
new AifConstraintList());
CodeAccessPermission::revertAssert();
info('Done');
}
ଗ୍ରାହକଙ୍କ ଦ୍ଵାରା ଫେରସ୍ତ କରାଯାଇଥିବା AIFEntityke ଉଦ୍ଦେଶ୍ୟ() ପଦ୍ଧତି (ଯାହା AIFରେ "ସୃଷ୍ଟି" ସେବା ଅପରେସନ୍ ସହିତ ମେଳ ଖାଉଛି) ରେ କେଉଁ ଗ୍ରାହକ ସୃଷ୍ଟି କରାଯାଇଥିଲା ସେ ବିଷୟରେ ସୂଚନା ରହିଛି, ଅନ୍ୟ ାନ୍ୟ ଜିନିଷ ସହିତ ସୃଷ୍ଟି ହୋଇଥିବା କଷ୍ଟଟେବୁଲ୍ ରେକର୍ଡର ରେକ୍ଆଇଡି ରହିଛି।
ଯଦି ଆପଣ ଯାହା ପରୀକ୍ଷା କରିବାକୁ ଚେଷ୍ଟା କରୁଛନ୍ତି ତାହା ଏହା ପରିବର୍ତ୍ତେ ଏକ ଆଉଟ୍ବାଉଣ୍ଡ ପୋର୍ଟ ଅଟେ କିମ୍ବା ଯଦି ଆପଣଙ୍କୁ କେବଳ ଇନବାଉଣ୍ଡ ପୋର୍ଟରେ XML କିପରି ଦେଖାଯିବା ଉଚିତ ତାହାର ଏକ ଉଦାହରଣ ଆବଶ୍ୟକ ହୁଏ, ତେବେ ଆପଣ ଏହା ବଦଳରେ ପଠନ () ପଦ୍ଧତି ("ପଢନ୍ତୁ" ସେବା ଅପରେସନ୍ ସହିତ ଅନୁରୂପ) କଲ୍ କରି ଏକ ଫାଇଲକୁ ଗ୍ରାହକଙ୍କୁ ରପ୍ତାନି କରିବାକୁ ଦସ୍ତାବିଜ ଶ୍ରେଣୀ ବ୍ୟବହାର କରିପାରିବେ। ସେମିତି:
{
FileNameSave fileName = @'C:\\TestCustomerRead.xml';
Map map = new Map( Types::Integer,
Types::Container);
AxdCustomer customer;
AifEntityKey key;
XMLDocument xmlDoc;
XML xml;
AifPropertyBag bag;
#File
;
map.insert(fieldNum(CustTable, AccountNum), ['123456']);
key = new AifEntityKey();
key.parmTableId(tableNum(CustTable));
key.parmKeyDataMap(map);
customer = new AxdCustomer();
xml = customer.read(key,
null,
new AifEndpointActionPolicyInfo(),
new AifConstraintList(),
bag);
new FileIoPermission(fileName, #IO_Write).assert();
xmlDoc = XmlDocument::newXml(xml);
xmlDoc.save(fileName);
CodeAccessPermission::revertAssert();
info('Done');
}
ଆପଣ ନିଶ୍ଚୟ '123456' ବଦଳରେ ଆପଣ ପଢ଼ିବାକୁ ଚାହୁଁଥିବା ଗ୍ରାହକଙ୍କ ଆକାଉଣ୍ଟ ନମ୍ବର ଲଗାନ୍ତୁ।