Вопрос

Уведомления через Бизнес процессы

Добрый день Комрады.

В общем пытаюсь реализовать отправку уведомления.

Проблема в том что та инструкция которая есть не подходит для моего случая.

https://academy.terrasoft.ru/documents/technic-sdk/7-12/kak-sozdavat-po…

В Бизнес процессе происходит следующее, стоит событие на изменение стадии Продажи.

Потом идет Скрипт-таск. Интерпретируемый.

Проблема в том что при вызове 

var remindingConfig = new RemindingConfig(campaign);

Ругается на ошибку 

System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в Terrasoft.Core.Entities.Entity.get_PrimaryColumnValue()
   в Terrasoft.Configuration.RemindingConfig..ctor(Entity entity)
   в Terrasoft.Core.Process.UsrProcess4MethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

var id = Get<Guid>("ProcessSchemaParameter1");
Set("Par2",id.ToString());
var userConnection = context.UserConnection;
 
var campaignESQ = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Opportunity");
var campaignTitle = campaignESQ.AddColumn("Title").Name;
var campaignid = campaignESQ.AddColumn("Id").Name;
var campaign = campaignESQ.GetEntity(userConnection, id);
 
 
if (campaign == null) 
{
   return false;	
}
DateTime remindTime = DateTime.Now;
 
IRemindingTextFormer textFormer = ClassFactory.Get<UsrLeadRemindingTextFormer1>(
	                                 new ConstructorArgument("userConnection", userConnection));
 
string leadName = campaign.GetTypedColumnValue<string>(campaignTitle);
string subjectCaption = textFormer.GetBody(new Dictionary<string, object> {
            {"LeadName", leadName}
        });
 
string popupTitle = textFormer.GetTitle(null);
 
var remindingConfig = new RemindingConfig(campaign);
remindingConfig.AuthorId = userConnection.CurrentUser.ContactId;
remindingConfig.ContactId = userConnection.CurrentUser.ContactId;
remindingConfig.NotificationTypeId = RemindingConsts.NotificationTypeRemindingId;
remindingConfig.RemindTime = remindTime;
remindingConfig.Description = subjectCaption;
remindingConfig.PopupTitle = popupTitle;
var remindingUtilities = ClassFactory.Get<RemindingUtilities>();
remindingUtilities.CreateReminding(userConnection, remindingConfig);
 
 
return true;

 

Может кто  нибудь сделать внятную инструкцию как отправлять уведомления через БП скриптом ???

Нравится

4 комментария

Добрый день!

Судя по call stack у вас campaign == null

Проверьте

Артем Гура,

А нет, не заметил проверку :)

Для того, чтобы понять что не так, нужно произвести debug. С виду все нормально. Обратитесь в поддержку, но для отладки нужна будет ссылка на обезличенную копию БД. Только таким образом можно будет установить причину, т.к. отладка по картинке сложная штука :)

Спасибо!

Показать все комментарии