“How-to” manage NAV notifications by C/AL
i found this nice question\post on Dynamics Community NAV Forum.
Question
Does anyone know how to create a new record of notification by programming ?
What table should you create the record ?
If i look on pages, the part is a system part of notications id.
Source Post\Question
How To Create a notification by programming ?
https://community.dynamics.com/nav/f/34/t/198109
Microsoft links about Topic
Notification Entry Table
https://msdn.microsoft.com/en-us/library/dn951728(v=nav.90).aspx
Sent Notification Entry Table
https://msdn.microsoft.com/en-us/library/mt299614(v=nav.90).aspx
Solutions
by Saurav Dhyani
Refer Standard Codeunit 454 “Job Queue – Send Notification”.
-> This Codeunit creates Notification when you schedule posting of your Documents (Sales, Purchase) in Background.
by Piero Giacomelli
Great C/AL FunctionSolution by Piero Giacomelli here:
Example:
“i need on the table NC header to create a notification everytime the user generate a new non conformal product.
here is my piece of code that works like a charm into a codeunit”
Codeunit
LenChar := STRLEN(_Note);
_RecRef.GETTABLE(pNCHeader);
NewID := _RecRef.ADDLINK(GETURL(CLIENTTYPE::Current, COMPANYNAME, OBJECTTYPE::Page, PAGE::”NC Header”, pNCHeader));
RecordLink.GET(NewID);
RecordLink.CALCFIELDS(Note);
RecordLink.Note.CREATEOUTSTREAM(OStream);
SystemUTF8Encoder := SystemUTF8Encoder.UTF8Encoding;
SystemByteArray := SystemUTF8Encoder.GetBytes(_Note);
x := SystemByteArray.Length DIV 128;
IF x > 1 THEN
y := SystemByteArray.Length – 128 * (x – 1)
ELSE
y := SystemByteArray.Length;
c1 := y;
OStream.WRITE(c1);
IF x > 0 THEN BEGIN
c2 := x;
OStream.WRITE(c2);
END;
FOR i := 0 TO SystemByteArray.Length – 1 DO BEGIN
c1 := SystemByteArray.GetValue(i);
OStream.WRITE(c1);
END;
RecordLink.Type := RecordLink.Type::Note;
RecordLink.Notify := _Notify;
RecordLink.”To User ID” := USERID;
RecordLink.Created := CURRENTDATETIME;
RecordLink.Company:= COMPANYNAME;
RecordLink.MODIFY;
The parameters are
Var Name DataType Subtype Length
No pNCHeader Record NC Header
No _Descritption Text 250
No _Note Text 127
No _Notify Boolean
No _USERID Code 20
The local variables are
Name DataType Subtype Length
LenChar Integer
NewID Integer
RecordLink Record Record Link
OStream OutStream
_RecRef RecordRef
SystemUTF8Encoder DotNet System.Text.UTF8Encoding.’mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′
SystemByteArray DotNet System.Array.’mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′
c1 Char
c2 Char
x Integer
y Integer
i Integer
The hard part for me was to add text into the Note field because it is a blob field so I need to use the dot net library of the 4.5 framework and to stream the text.
2 thoughts on ““How-to” manage NAV notifications by C/AL”
Comments are closed.