“How-to” manage NAV notifications by C/AL

“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

Leave a Reply

Your email address will not be published. Required fields are marked *

11 − six =

Privacy Preference Center

Close your account?

Your account will be closed and all data will be permanently deleted and cannot be recovered. Are you sure?

Enjoy this blog? Please spread the word :)