C/AL

“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.

Annunci

2 risposte »

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...