none
event receiver for notification RRS feed

  • Question

  • i have three fields:'Обрађивач - одобрење','Вођа тима - одобрење','Врховни ревизор - одобрење'. those fields is using when user finished with editing document that he chooses 'Да' or 'Не' for approving documents. The document is approved when user choosed 'Да', the document is not approved when user choosed 'Не'.Also my code sends notification with mail and set value in field 'Статус документа'. This code works in test environment but in production not. where is error

      // ODOBRAVANJE DOKUMENTA 3 NIVOA ZAPOSLENI, VODJA TIMA, VRHOVNI
                            var obradjivac = properties.ListItem["Обрађивач - одобрење"] == null ? "Изабери" : properties.ListItem["Обрађивач - одобрење"].ToString();
                            var vodjatima = properties.ListItem["Вођа тима - одобрење"] == null ? "Изабери" : properties.ListItem["Вођа тима - одобрење"].ToString();
                            var vrhovni = properties.ListItem["Врховни ревизор - одобрење"] == null ? "Изабери" : properties.ListItem["Врховни ревизор - одобрење"].ToString();
                            string vracanjenaobraduvodjatima = properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"].ToString();
                           string vracanjenaobraduvrhovnirevizor = properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"].ToString();
    
                       //odobrenje obradjivac
                           if (obradjivac.ToString() == "Да" && (vodjatima.ToString() == "Изабери" || vodjatima.ToString() == "") && (vrhovni.ToString() == "Изабери" || vrhovni.ToString() == ""))
                           {
                               properties.ListItem["Статус документа"] = "Документ треба да одобри Вођа тима";
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       string mailtowithsymbol = properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString();
                                       string[] mailto = mailtowithsymbol.Split('#');
                                       // myemail@test.com is obviously replaced with a real working email
                                       SendMail(web, "podrska@domain.com", mailto[1], "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + imedokumentazaodobravanje + ", локација за одобрење " + properties.WebUrl, "", "");
                                       //    SendMail(web, "podrska@domain.com", properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString(), "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + properties.ListItem["Име"].ToString() + ", локација за одобрење " + properties.WebUrl, "", "");
    
                                   }
                               }
                             
                           }
    
                       //odobrenje vodja tima
                           if (obradjivac.ToString() == "Да" && vodjatima.ToString() == "Да" && vrhovni.ToString() == "Изабери")
                           {
                               properties.ListItem["Статус документа"] = "Документ треба да одобри Врховни ревизор";
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       // myemail@test.com is obviously replaced with a real working email
                                       string mailtovrwithsymbol = properties.ListItem["Субјект ревизије:Врховни ревизор - Е-маил"].ToString();
                                       string[] mailto = mailtovrwithsymbol.Split('#');
                                       SendMail(web, "podrska@domain.com", mailto[1], "Обавештење о одобрењу документа - Врховни ревизор", "Потребно је одобрити документ" + " " + properties.ListItem["Име"] + ", локација за одобрење " + properties.WebUrl + "/" + properties.List.Views["Сви документи"].Url, "", "");
                                   }
                               }
                               
                           }
                           else if (vodjatima.ToString() == "Не")
                           {
                               properties.ListItem["Статус документа"] = "Вођа тима - Документ није одобрен!";
                               properties.ListItem["Обрађивач - одобрење"] = "Не";
                               properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                               properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                               double broj_v = Convert.ToDouble(vracanjenaobraduvodjatima);
                               broj_v = broj_v + 1;
                               properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"] = broj_v;
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
    
    
                                       SendMail(web, "podrska@domain.com", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен од стране Вође тима. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");
    
                                       // myemail@test.com is obviously replaced with a real working email
                                   }
                               }
                               
                           }
                       //odobrenje vrhovni revizor
                           if (vrhovni.ToString() == "Да" && vodjatima.ToString() == "Да" && obradjivac.ToString() == "Да")
                           {
                               properties.ListItem["Статус документа"] = "Документ je одобрен";
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
    
                                       // myemail@test.com is obviously replaced with a real working email
                                       SendMail(web, "podrska@domain.com", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " је одобрен. Локација одобреног документа је " + properties.WebUrl, "", "");
                                  }
                               }
                              
                           }
                           else if (vrhovni.ToString() == "Не")
                           {
                               properties.ListItem["Статус документа"] = "Врховни ревизор - Документ није одобрен!";
                               properties.ListItem["Обрађивач - одобрење"] = "Не";
                               properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                               properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                               double broj_vr = Convert.ToDouble(vracanjenaobraduvrhovnirevizor);
                               broj_vr = broj_vr + 1;
                               properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"] = broj_vr;
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
    
    
                                       SendMail(web, "podrska@domain.com", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен од стране Врховног ревизора. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");
    
                                       // myemail@test.com is obviously replaced with a real working email
                                   }
                               }
                              
                           }



    • Edited by gogi1000 Monday, August 12, 2019 6:11 AM edit
    Monday, August 12, 2019 6:08 AM

All replies

  • Hey

    What errors do you meet when it run in production?


    Justin Liu Office Apps & Services MVP, MCSE
    Senior Software Engineer
    Please Vote and Mark as Answer if it helps you.

    Monday, August 12, 2019 7:11 AM
  • I'dont receive error, then the fields 'Вођа тима - одобрење','Врховни ревизор - одобрење' are empty like 'Статус документа' when i select in field 'Обрађивач - одобрење' value 'Да'. Default values for fields ,'Вођа тима - одобрење','Врховни ревизор - одобрење' are 'Изабери'
    Monday, August 12, 2019 8:43 AM
  • I remember the error will not pop up when in event receiver. Please try to add some diagnosticLog to check the issue location.

    Justin Liu Office Apps & Services MVP, MCSE
    Senior Software Engineer
    Please Vote and Mark as Answer if it helps you.

    Monday, August 12, 2019 9:19 AM
  • where i can get diagnostic log in my code?
    Monday, August 12, 2019 12:27 PM
  • when i choose field 'Обрађивач - одобрење' value 'Да' and 'Вођа тима - одобрење','Врховни ревизор - одобрење' are 'Изабери', in test environment if statement is works like picture below

    but in product environment if statement is not working. why?



    • Edited by gogi1000 Monday, August 12, 2019 1:34 PM edit
    Monday, August 12, 2019 1:16 PM
  • If you are sure that the if statement doesn't work in production, please check them.

    Justin Liu Office Apps & Services MVP, MCSE
    Senior Software Engineer
    Please Vote and Mark as Answer if it helps you.

    Tuesday, August 13, 2019 1:11 AM
  • multiple times i tryed but nothing. why if statement does not works?

    if(obradjivac.equals("Да") && vodjatima.equals("Изабери") && vrhovni.equals("Изабери"))

    i tryed with next code but nothing

    if(obradjivac.toString()=="Да" && vodjatima.toString()=="Изабери" && vrhovni.toString()=="Изабери")

    Tuesday, August 13, 2019 5:42 AM
  • if statement does not works. i tested them. why?
    Tuesday, August 13, 2019 7:20 AM
  • Hi

    Please confirm what the obradjivac, vodjatima and vrhovni values are in production.


    Justin Liu Office Apps & Services MVP, MCSE
    Senior Software Engineer
    Please Vote and Mark as Answer if it helps you.

    Tuesday, August 13, 2019 7:42 AM
  • Hi,

    It’s good practice to write log when developing solution, it will helpful for troubleshooting when issue occurs.

    https://blog.mastykarz.nl/logging-uls-sharepoint-2010/

    For this case

    Confirm is any other logic cause confliction in prod.

    Try to test with same data as production in dev environment.

    Try to check ULS log in prod to find helpful information for troubleshooting.

    Best Regards,

    Lee


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Tuesday, August 13, 2019 7:55 AM
  • in production default values of  obradjivac, vodjatima and vrhovni values are Изабери. when user choose in field 'Обрађивач - одобрење' value 'Да'  the variable obradjivac has value 'Да' and 'Вођа тима - одобрење','Врховни ревизор - одобрење' have values 'Изабери'. but when if statement go to check this statement is not working

    if(obradjivac.equals("Да") && vodjatima.equals("Изабери") && vrhovni.equals("Изабери"))

    i tested with same data from test environment and production environment.

    i don't know which values have variable obradjivac, vodjatima and vrhovni in production. how i check this?

    how check ULS log in prod to find helpful information for troubleshooting?

    Tuesday, August 13, 2019 8:25 AM
  • Hi,

    I’m not so clear about “i don't know which values have variable obradjivac, vodjatima and vrhovni in production.” as you had shared the code mapping for variable and list column.

    var obradjivac = properties.ListItem["Обрађивач - одобрење"] == null ? "Изабери" : properties.ListItem["Обрађивач - одобрење"].ToString();
    var vodjatima = properties.ListItem["Вођа тима - одобрење"] == null ? "Изабери" : properties.ListItem["Вођа тима - одобрење"].ToString();
    var vrhovni = properties.ListItem["Врховни ревизор - одобрење"] == null ? "Изабери" : properties.ListItem["Врховни ревизор - одобрење"].ToString();
                           

    Default ULS log path:

    C:\Program Files\Common Files\microsoft shared\Web Server Extensions\14\LOGS

    Best Regards,

    Lee


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Tuesday, August 13, 2019 8:41 AM
  • i changed this code above in

    string obradjivac = properties.ListItem["Обрађивач - одобрење"].ToString();
                            string vodjatima = properties.ListItem["Вођа тима - одобрење"].ToString();
                            string vrhovni = properties.ListItem["Врховни ревизор - одобрење"].ToString();

    i set those values in ItemAdded

    public override void ItemAdded(SPItemEventProperties properties)
            {
    
                this.EventFiringEnabled = false;
                SPFile f = properties.ListItem.File;
              //  string spfileName = new FileInfo(f.Name).Name;
                string spfileExt = new FileInfo(f.Name).Extension;
                 if (properties.ListItem == null)
                    {
                        throw new ArgumentNullException("listItem");
                    }
               //  string naslov = properties.BeforeProperties["Име"].ToString();
               //   string naslov = properties.ListItem.File.Name;
              //      properties.ListItem["Наслов"] = spfileName;
                    properties.ListItem["Некласификовано"] = "Некласификовано";
                    properties.ListItem["Име"] = "Некласификовано-" + properties.ListItemId + spfileExt;
                    properties.ListItem["Обрађивач - одобрење"] = "Изабери";
                    properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                    properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                    properties.ListItem.SystemUpdate();
    
                
    
                base.ItemAdded(properties);
                this.EventFiringEnabled = true;
    
            }
    but problem again


    • Edited by gogi1000 Tuesday, August 13, 2019 10:19 AM edit
    Tuesday, August 13, 2019 10:16 AM
  • in uls log i cannot find something for my document library and event receiver for notification.
    Tuesday, August 13, 2019 10:44 AM
  • all code in itemupdate is

     public override void ItemUpdated(SPItemEventProperties properties)
            {
    
                this.EventFiringEnabled = false;
                
                    SPFile f = properties.ListItem.File;
                    string spfileExt = new FileInfo(f.Name).Extension;
    
                    if (properties.ListItem == null)
                    {
                        throw new ArgumentNullException("listItem");
                    }
                    string metodologija;
                    string vrstadokumenta = null;
                    //dodela vrednosti polju nekalsifikovano na bazi da li su polјa vrsta dokumenta, metodologija i subjekt revizije prazni
                    if (properties.ListItem["Врста документа"] == null || properties.ListItem["Субјект ревизије"] == null || properties.ListItem["Методологија"] == null)
                    {
                        properties.ListItem["Некласификовано"] = "Некласификовано";
                    }
                    else
                    {
                        properties.ListItem["Некласификовано"] = "Класификовано";
                    }            
                    
                // id broj dokumenta iz sharepointa
                    string brojdokumenta = properties.ListItemId.ToString();
              
                
                //KLASIFIKACIJA PO METODOLOGIJI, VRSTI DOKUMENTA, SUBJEKTU REVIZIJE
                //odvajanje guid-a od metodologije
                    string subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"] == null ? "000#NK" : properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();
                    string subjektrevizijesvrsishodnostsadonjcrtom = properties.ListItem["Субјект ревизије - сврсисходност"] == null ? "Изабери_1" : properties.ListItem["Субјект ревизије - сврсисходност"].ToString();
                //   subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString() == "0;#" ? "000#NK" : properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();    
                   
                string metodologijasaguid = properties.ListItem["Методологија"].ToString();
                        string metodologijabezguid;
                        string vrstadokumentasaguid = properties.ListItem["Врста документа"] == null ? "NK" : properties.ListItem["Врста документа"].ToString();
                        string vrstadokumentabezguid;
                        string vrstarevizijesaguid = properties.ListItem["Врста ревизије"] == null ? "Изабери|NNNN" : properties.ListItem["Врста ревизије"].ToString();
                        string vrstarevizijebezguid;
                 //separatori koji se koriste za razdvajanje  
                            char[] SEPuspravnalinija = new char[] { '|' };
                            char[] SEPdvetacke = new char[] { ':' };
                            char[] SEPdonjacrta = new char[] { '_' };
                            string[] metGUID = metodologijasaguid.Split(SEPuspravnalinija);
                            string[] vrdokGUID = vrstadokumentasaguid.Split(SEPuspravnalinija);
                            string[] vrrevGUID = vrstarevizijesaguid.Split(SEPuspravnalinija);
                //metapodatak bez GUID-a
                            metodologijabezguid = metGUID[0];
                            vrstadokumentabezguid = vrdokGUID[0];
                            vrstarevizijebezguid = vrrevGUID[0];
                //revizija svrsishodnosti bez donje crte
                            string[] revsvrsBDC = subjektrevizijesvrsishodnostsadonjcrtom.Split(SEPdonjacrta);
                            string revizijasvrsishodnostiBDC = revsvrsBDC[0];
                //subjekt revizije  samo skracenica
                            string[] subjektrevizijeizdvojeno = subjektrevizijesaguid.Split('#');
                             string    subjektrevizijeskracenica = subjektrevizijeizdvojeno[1]; 
                //odredivanje da li je vrsta dokumenta klasifikovana i ako jeste dodela simbola
                            if (vrdokGUID[0] == "")
                            {
                                vrstadokumenta = "NK";
                            }
                            else
                            {
                              //  string metavrstadokumenta = metodologijanivo[0];
                                string[] simboldokumenta = vrstadokumentabezguid.Split(SEPdonjacrta);
                                vrstadokumenta = simboldokumenta[0];
                            }
                            //subjekti revizije za reviziju svrsishodnost poslovanja
                            string subjektrevizije = "NK";
                            if (revizijasvrsishodnostiBDC != "Изабери")
                            {
                                subjektrevizije = revizijasvrsishodnostiBDC;
                            }
                            else 
                            {
                                subjektrevizije = subjektrevizijeskracenica;
                            }
                    //  string subjektrevizijesvrs = vrstarevizijebezguid == "Сврсисходности пословања" && properties.ListItem["Субјект ревизије - сврсисходност"] != "Изабери" ? revizijasvrsishodnostiBDC : subjektrevizije;
                       //     subjektrevizije = vrstarevizijebezguid == "Сврсисходности пословања" && properties.ListItem["Субјект ревизије - сврсисходност"] == "Изабери" ? subjektrevizijeizdvojeno[1] : subjektrevizije;
             
                   //   if (vrstarevizijebezguid == "Сврсисходности пословања" && properties.ListItem["Субјект ревизије - сврсисходност"].ToString() == "Изабери")
                   //   {
                       //   subjektrevizije = subjektrevizijeizdvojeno[1];
                     // }
                    //  else
                   //   {
                    //      subjektrevizije = subjektrevizijesvrs;
                  //    }
                //odredjivanje nivoa u metapodatku, kao hijerarhija foldera                                  
                            string[] metodologijanivo = metodologijabezguid.Split(SEPdvetacke);
                            int brojnivoa = metodologijanivo.Length;
                            
                            if(metodologijanivo[0] == "" && brojnivoa == 1)
                               {
                                properties.ListItem["Име_за_маил"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem["Име"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem.Update();
                                }
                             else if (brojnivoa == 1)
                                {
                                 string Inivo = metodologijanivo[0];
                                 string [] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                 string metodologija1_O = metodologijaInivo[0];
                                 metodologija = metodologija1_O;
                                 properties.ListItem["Име_за_маил"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem["Име"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem.Update();
                                }
                             
                
                            if (brojnivoa == 2)
                             {
                                 string Inivo = metodologijanivo[0];
                                 string IInivo = metodologijanivo[1];
                                 string[] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                 string[] metodologijaIInivo = IInivo.Split(SEPdonjacrta);
                                 string metodologija1_O = metodologijaInivo[0];
                                 string metodologija2_O = metodologijaIInivo[0];
                                 metodologija = metodologija2_O;
                                properties.ListItem["Име"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                
                                 properties.ListItem["Име_за_маил"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem.Update();
                                
                             }
                             
                            if (brojnivoa == 3)
                             {
    
                                 string Inivo = metodologijanivo[0];
                                 string IInivo = metodologijanivo[1];
                                 string IIInivo = metodologijanivo[2];
                                 string[] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                 string[] metodologijaIInivo = IInivo.Split(SEPdonjacrta);
                                 string[] metodologijaIIInivo = IIInivo.Split(SEPdonjacrta);
                                 string metodologija1_O = metodologijaInivo[0];
                                 string metodologija2_O = metodologijaIInivo[0];
                                 string metodologija3_O = metodologijaIIInivo[0];
                                 metodologija = metodologija2_O + metodologija3_O;
                                 properties.ListItem["Име_за_маил"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem["Име"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem.Update();
                             }
                            if (brojnivoa == 4)
                            {
    
                                string Inivo = metodologijanivo[0];
                                string IInivo = metodologijanivo[1];
                                string IIInivo = metodologijanivo[2];
                                string IVnivo = metodologijanivo[3];
                                string[] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                string[] metodologijaIInivo = IInivo.Split(SEPdonjacrta);
                                string[] metodologijaIIInivo = IIInivo.Split(SEPdonjacrta);
                                string[] metodologijaIVnivo = IVnivo.Split(SEPdonjacrta);
                                string metodologija1_O = metodologijaInivo[0];
                                string metodologija2_O = metodologijaIInivo[0];
                                string metodologija3_O = metodologijaIIInivo[0];
                                string metodologija4_O = metodologijaIVnivo[0];
                                metodologija = metodologija2_O + metodologija3_O + metodologija4_O;
                                properties.ListItem["Име_за_маил"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem["Име"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem.Update();
                            }
                       //     if (properties.BeforeProperties["Име"] != properties.AfterProperties["Име"])
                        //    {
                        //        properties.ListItem["Име"] = properties.AfterProperties["Име"];
                        //    }
                            string imedokumentazaodobravanje = properties.ListItem["Име_за_маил"].ToString();
                // ODOBRAVANJE DOKUMENTA 3 NIVOA ZAPOSLENI, VODJA TIMA, VRHOVNI
                            string obradjivac = properties.ListItem["Обрађивач - одобрење"].ToString();
                            string vodjatima = properties.ListItem["Вођа тима - одобрење"].ToString();
                            string vrhovni = properties.ListItem["Врховни ревизор - одобрење"].ToString();
                            //string obradjivac = properties.ListItem["Обрађивач - одобрење"] == null ? "Изабери" : properties.ListItem["Обрађивач - одобрење"].ToString();
                            //string vodjatima = properties.ListItem["Вођа тима - одобрење"] == null ? "Изабери" : properties.ListItem["Вођа тима - одобрење"].ToString();
                            //string vrhovni = properties.ListItem["Врховни ревизор - одобрење"] == null ? "Изабери" : properties.ListItem["Врховни ревизор - одобрење"].ToString();
                            string vracanjenaobraduvodjatima = properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"].ToString();
                           string vracanjenaobraduvrhovnirevizor = properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"].ToString();
    
    
                           //odobrenje obradjivac
                           if (properties.ListItem["Обрађивач - одобрење"].ToString()=="Да")
                           {
                               if(properties.ListItem["Вођа тима - одобрење"].ToString()=="Изабери")
                               {
                                    if(properties.ListItem["Врховни ревизор - одобрење"].ToString()=="Изабери")
                                    {
                               properties.ListItem["Статус документа"] = "Документ треба да одобри Вођа тима";
                               properties.ListItem.Update();
                                    }
                               }
                        // +      string url = properties.WebUrl;
                       // +       using (SPSite site = new SPSite(url))
                       // +       {
                       // +           using (SPWeb web = site.OpenWeb())
                       // +           {
                             // +         string mailtowithsymbol = properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString();
                            // +          string[] mailto = mailtowithsymbol.Split('#');
                                       // myemail@test.com is obviously replaced with a real working email
                             //+          SendMail(web, "podrska@domain", mailto[1], "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + imedokumentazaodobravanje + ", локација за одобрење " + properties.WebUrl, "", "");
                                       //    SendMail(web, "podrska@domain", properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString(), "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + properties.ListItem["Име"].ToString() + ", локација за одобрење " + properties.WebUrl, "", "");
    
                              //+     }
                          //+     }
    
                           }
    
                           //odobrenje vodja tima
                           if (obradjivac.ToString() == "Да" && vodjatima.ToString() == "Да" && vrhovni.ToString() == "Изабери")
                           {
                               properties.ListItem["Статус документа"] = "Документ треба да одобри Врховни ревизор";
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       // myemail@test.com is obviously replaced with a real working email
                                       string mailtovrwithsymbol = properties.ListItem["Субјект ревизије:Врховни ревизор - Е-маил"].ToString();
                                       string[] mailto = mailtovrwithsymbol.Split('#');
                                       SendMail(web, "podrska@domain", mailto[1], "Обавештење о одобрењу документа - Врховни ревизор", "Потребно је одобрити документ" + " " + properties.ListItem["Име"] + ", локација за одобрење " + properties.WebUrl + "/" + properties.List.Views["Сви документи"].Url, "", "");
                                   }
                               }
    
                           }
                           else if (vodjatima.ToString() == "Не")
                           {
                               properties.ListItem["Статус документа"] = "Вођа тима - Документ није одобрен!";
                               properties.ListItem["Обрађивач - одобрење"] = "Не";
                               properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                               properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                               double broj_v = Convert.ToDouble(vracanjenaobraduvodjatima);
                               broj_v = broj_v + 1;
                               properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"] = broj_v;
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
    
    
                                       SendMail(web, "podrska@domain", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен од стране Вође тима. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");
    
                                       // myemail@test.com is obviously replaced with a real working email
                                   }
                               }
    
                           }
                           //odobrenje vrhovni revizor
                           if (vrhovni.ToString() == "Да" && vodjatima.ToString() == "Да" && obradjivac.ToString() == "Да")
                           {
                               properties.ListItem["Статус документа"] = "Документ je одобрен";
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
    
                                       // myemail@test.com is obviously replaced with a real working email
                                       SendMail(web, "podrska@domain", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " је одобрен. Локација одобреног документа је " + properties.WebUrl, "", "");
                                   }
                               }
    
                           }
                           else if (vrhovni.ToString() == "Не")
                           {
                               properties.ListItem["Статус документа"] = "Врховни ревизор - Документ није одобрен!";
                               properties.ListItem["Обрађивач - одобрење"] = "Не";
                               properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                               properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                               double broj_vr = Convert.ToDouble(vracanjenaobraduvrhovnirevizor);
                               broj_vr = broj_vr + 1;
                               properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"] = broj_vr;
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
    
    
                                       SendMail(web, "podrska@domain", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен од стране Врховног ревизора. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");
    
                                       // myemail@test.com is obviously replaced with a real working email
                                   }
                               }
    
                           }
    
                    
                          
                properties.ListItem.SystemUpdate();
    
                this.EventFiringEnabled = true;
    
             }

    Tuesday, August 13, 2019 11:56 AM
  • i used next code

        public override void ItemUpdated(SPItemEventProperties properties)
            {
                try
                {
                    this.EventFiringEnabled = false;
    
    
                    // ODOBRAVANJE DOKUMENTA 3 NIVOA ZAPOSLENI, VODJA TIMA, VRHOVNI
                    string obradjivac = properties.ListItem["Обрађивач - одобрење"].ToString();
                    string vodjatima = properties.ListItem["Вођа тима - одобрење"].ToString();
                    string vrhovni = properties.ListItem["Врховни ревизор - одобрење"].ToString();
                    //string obradjivac = properties.ListItem["Обрађивач - одобрење"] == null ? "Изабери" : properties.ListItem["Обрађивач - одобрење"].ToString();
                    //string vodjatima = properties.ListItem["Вођа тима - одобрење"] == null ? "Изабери" : properties.ListItem["Вођа тима - одобрење"].ToString();
                    //string vrhovni = properties.ListItem["Врховни ревизор - одобрење"] == null ? "Изабери" : properties.ListItem["Врховни ревизор - одобрење"].ToString();
                    string vracanjenaobraduvodjatima = properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"].ToString();
                    string vracanjenaobraduvrhovnirevizor = properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"].ToString();
    
    
                    //odobrenje obradjivac
                    if (properties.ListItem["Обрађивач - одобрење"].ToString() == "Да")
                    {
                        if (properties.ListItem["Вођа тима - одобрење"].ToString() == "Изабери")
                        {
                            if (properties.ListItem["Врховни ревизор - одобрење"].ToString() == "Изабери")
                            {
                                properties.ListItem["Статус документа"] = "Документ треба да одобри Вођа тима";
                                properties.ListItem.Update();
                            }
                        }
                        // +      string url = properties.WebUrl;
                        // +       using (SPSite site = new SPSite(url))
                        // +       {
                        // +           using (SPWeb web = site.OpenWeb())
                        // +           {
                        // +         string mailtowithsymbol = properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString();
                        // +          string[] mailto = mailtowithsymbol.Split('#');
                        // myemail@test.com is obviously replaced with a real working email
                        //+          SendMail(web, "podrska@domain", mailto[1], "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + imedokumentazaodobravanje + ", локација за одобрење " + properties.WebUrl, "", "");
                        //    SendMail(web, "podrska@domain", properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString(), "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + properties.ListItem["Име"].ToString() + ", локација за одобрење " + properties.WebUrl, "", "");
    
                        //+     }
                        //+     }
    
                    }
    
                    //odobrenje vodja tima
                    if (obradjivac.ToString() == "Да" && vodjatima.ToString() == "Да" && vrhovni.ToString() == "Изабери")
                    {
                        properties.ListItem["Статус документа"] = "Документ треба да одобри Врховни ревизор";
                        string url = properties.WebUrl;
                        using (SPSite site = new SPSite(url))
                        {
                            using (SPWeb web = site.OpenWeb())
                            {
                                // myemail@test.com is obviously replaced with a real working email
                                string mailtovrwithsymbol = properties.ListItem["Субјект ревизије:Врховни ревизор - Е-маил"].ToString();
                                string[] mailto = mailtovrwithsymbol.Split('#');
                                SendMail(web, "podrska@domain", mailto[1], "Обавештење о одобрењу документа - Врховни ревизор", "Потребно је одобрити документ" + " " + properties.ListItem["Име"] + ", локација за одобрење " + properties.WebUrl + "/" + properties.List.Views["Сви документи"].Url, "", "");
                            }
                        }
    
                    }
                    else if (vodjatima.ToString() == "Не")
                    {
                        properties.ListItem["Статус документа"] = "Вођа тима - Документ није одобрен!";
                        properties.ListItem["Обрађивач - одобрење"] = "Не";
                        properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                        properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                        double broj_v = Convert.ToDouble(vracanjenaobraduvodjatima);
                        broj_v = broj_v + 1;
                        properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"] = broj_v;
                        string url = properties.WebUrl;
                        using (SPSite site = new SPSite(url))
                        {
                            using (SPWeb web = site.OpenWeb())
                            {
                                SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                string user = users.User.Email;
    
    
                                SendMail(web, "podrska@domain", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен од стране Вође тима. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");
    
                                // myemail@test.com is obviously replaced with a real working email
                            }
                        }
    
                    }
                    //odobrenje vrhovni revizor
                    if (vrhovni.ToString() == "Да" && vodjatima.ToString() == "Да" && obradjivac.ToString() == "Да")
                    {
                        properties.ListItem["Статус документа"] = "Документ je одобрен";
                        string url = properties.WebUrl;
                        using (SPSite site = new SPSite(url))
                        {
                            using (SPWeb web = site.OpenWeb())
                            {
                                SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                string user = users.User.Email;
    
                                // myemail@test.com is obviously replaced with a real working email
                                SendMail(web, "podrska@domain", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " је одобрен. Локација одобреног документа је " + properties.WebUrl, "", "");
                            }
                        }
    
                    }
                    else if (vrhovni.ToString() == "Не")
                    {
                        properties.ListItem["Статус документа"] = "Врховни ревизор - Документ није одобрен!";
                        properties.ListItem["Обрађивач - одобрење"] = "Не";
                        properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                        properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                        double broj_vr = Convert.ToDouble(vracanjenaobraduvrhovnirevizor);
                        broj_vr = broj_vr + 1;
                        properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"] = broj_vr;
                        string url = properties.WebUrl;
                        using (SPSite site = new SPSite(url))
                        {
                            using (SPWeb web = site.OpenWeb())
                            {
                                SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                string user = users.User.Email;
    
    
                                SendMail(web, "podrska@domain", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен од стране Врховног ревизора. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");
    
                                // myemail@test.com is obviously replaced with a real working email
                            }
                        }
    
                    }
    
    
    
                    properties.ListItem.SystemUpdate();
    
                    this.EventFiringEnabled = true;
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("OBAVESTENJE", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
             }

    and i receive in ULS log

    Tuesday, August 13, 2019 12:30 PM
  • Hi,

    The exception shows there is null object reference, so you need check which property has NULL value and you use it directly.

    If properties.ListItem["property"] is NULL, ToString() will cause exception.

    properties.ListItem["property"].ToString()

    You could use String.Format to convert the property value to string.

    https://www.c-sharpcorner.com/UploadFile/mahesh/format-string-in-C-Sharp/

    Or init a default value if the property is null.

    properties.ListItem["Обрађивач - одобрење"] == null ? "Изабери" : properties.ListItem["Обрађивач - одобрење"].ToString();

    Best Regards,

    Lee


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Thursday, August 15, 2019 5:28 AM
  • Hi,

    I am checking to see how things are going there on this issue. Please let us know if you would like further assistance.

    You can mark the helpful post as answer to help other community members find the helpful information quickly.

    You can also share your own solution here and mark it as answer, so it may help others who has similar requirement.

    Best Regards,

    Lee


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Monday, August 19, 2019 6:27 AM