Normally in D365, there is a common table where your attachments are saved that is DocuRef, and it also stores the reference of table in field "RefTableId" field. Suppose we want to retrieve all the attachments specific to a table. We can simple achieve this using the RefTableId. Next important this is using the buffer of DocuRef table, we have multiple available options using this buffer. for example we can simple retrieve the container using the function as below:
container _data = DocumentManagement::getAttachmentAsContainer(docRef)"
This container can further be passed on to method as provided below
Enjoy and I hope the post will help you.
References:
https://rahulmsdax.blogspot.com/2018/08/email-ssrs-report-as-attachment-d365fo.html
container _data = DocumentManagement::getAttachmentAsContainer(docRef)"
This container can further be passed on to method as provided below
public static void sendPDFEamilAttachment( SysEmailId _emailId,
LanguageId _language,
SysEmailAddress _emailAddr,
Map _mappings,container _data,str _fileName)
{
SysEmailItemId nextEmailItemId;
SysEmailTable sysEmailTable;
SysEmailMessageTable sysEmailMessageTable;
SysEmailContents sysEmailContents;
SysOutgoingEmailTable outgoingEmailTable;
SysOutgoingEmailData outgoingEmailData;
Filename filename, FileExtension;
FileExtension=".pdf";
select sysEmailTable
join sysEmailMessageTable
where sysEmailMessageTable.EmailId==sysEmailTable.EmailId
&& sysEmailMessageTable.EmailId== _emailId
&& sysEmailMessageTable.LanguageId==_language;
if(sysEmailTable.RecId>0)
{
sysEmailContents=SysEmailMessage::stringExpand(sysEmailMessageTable.Mail, _mappings);
nextEmailItemId = EventInbox::nextEventId();
filename =strFmt("%1_%2.pdf",nextEmailItemId,_fileName);
outgoingEmailTable.clear();
outgoingEmailTable.Origin=sysEmailTable.Description;
outgoingEmailTable.EmailItemId = nextEmailItemId;
outgoingEmailTable.IsSystemEmail = NoYes::Yes;
outgoingEmailTable.Sender = sysEmailTable.SenderAddr;
outgoingEmailTable.SenderName = sysEmailTable.SenderName;
outgoingEmailTable.Recipient = _emailAddr;
outgoingEmailTable.Subject =SysEmailMessage::stringExpand(sysEmailMessageTable.Subject, _mappings);
outgoingEmailTable.Priority = eMailPriority::High;
outgoingEmailTable.WithRetries = NoYes::NO;
outgoingEmailTable.RetryNum = 0;
outgoingEmailTable.UserId = curUserId();
outgoingEmailTable.Status = SysEmailStatus::Unsent;
outgoingEmailTable.Message = sysEmailContents;
outgoingEmailTable.LatestStatusChangeDateTime =DateTimeUtil::getSystemDateTime();
outgoingEmailTable.TemplateId= _emailId;
outgoingEmailTable.insert();
if(conLen(_data)>0)
{
outgoingEmailData.clear();
outgoingEmailData.EmailItemId = nextEmailItemId;
outgoingEmailData.DataId = 1;
outgoingEmailData.EmailDataType = SysEmailDataType::Attachment;
outgoingEmailData.Data = _data;
outgoingEmailData.FileName = filename;
outgoingEmailData.FileExtension =FileExtension;
outgoingEmailData.insert();
}
}
}
}
Enjoy and I hope the post will help you.
References:
https://rahulmsdax.blogspot.com/2018/08/email-ssrs-report-as-attachment-d365fo.html
The Best of the Blogs You have Mentioned here.
ReplyDeleteD365 AX Technical Online Training