При выполнении бизнес - процесса возникает ошибка в элементе Задание-сценарий:
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired)
в Terrasoft.Core.Process.UsrComingOnOrder.ScriptTask4Execute(ProcessExecutingContext context)
в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
Код сценария представляю ниже:
//берем все продукты из прихода
var stringVariable = "";
EntitySchema ProductInSHOperationschema = UserConnection.EntitySchemaManager.GetInstanceByName("UsrProductInSHOperation");// товары в складском документе
EntitySchemaQuery ProductInSHOperationesq = new EntitySchemaQuery(ProductInSHOperationschema);
ProductInSHOperationesq.AddAllSchemaColumns();
ProductInSHOperationesq.Filters.Add(ProductInSHOperationesq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrStoreHouseOperation", IdComing));
EntityCollection ProductInSHOperationentities = ProductInSHOperationesq.GetEntityCollection(UserConnection);
decimal kolvoComing=0.0m;//количество продукта в приходе
foreach (Entity ProductInSHOpEntity in ProductInSHOperationentities) {
kolvoComing = ProductInSHOpEntity.GetTypedColumnValuedecimal>("UsrQuantity");//количество продукта в приходе
var ProductComing = ProductInSHOpEntity.GetTypedColumnValueGuid>("UsrProductId");//продукт в приходе
stringVariable = "ИД который получили:" + Convert.ToString(ProductComing)+"\n" + "Заказ который получили:" + Convert.ToString(OrderId);
//Получим строки продуктов из нашего заказа
Custom.UsrDebug.Utils.SendMessage(UserConnection, "mishutina-julja@rambler.ru", stringVariable);
//берем продукты из заказа поставщика по приходу (номер заказа, по которому создан приход = номеру заказа поставщика, сортипрвка по дате заказа поставщика)-скрытая деталь
EntitySchema OrderProvidersProductschema = UserConnection.EntitySchemaManager.GetInstanceByName("UsrOrderProvidersProduct");// товары из заказа поставщика
EntitySchemaQuery OrderProvidersProductesq = new EntitySchemaQuery(OrderProvidersProductschema);
OrderProvidersProductesq.AddColumn("UsrQuantity");
OrderProvidersProductesq.AddColumn("UsrProduct");
OrderProvidersProductesq.AddColumn("UsrMust");
OrderProvidersProductesq.AddColumn("UsrOrderId");
OrderProvidersProductesq.AddColumn("UsrShipped");
OrderProvidersProductesq.AddColumn("UsrClientsOrderId");
OrderProvidersProductesq.AddColumn("UsrClientsOrderId.CreatedOn").OrderByAsc();
OrderProvidersProductesq.Filters.Add(OrderProvidersProductesq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrOrderId", OrderId));
OrderProvidersProductesq.Filters.Add(OrderProvidersProductesq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrProduct", ProductComing));
EntityCollection OrderProvidersProductentities = OrderProvidersProductesq.GetEntityCollection(UserConnection);
foreach (Entity OrderProvidersProductEntity in OrderProvidersProductentities) {
if (kolvoComing == 0) break;
decimal kolvoProvider = OrderProvidersProductEntity.GetTypedColumnValuedecimal>("UsrQuantity");//количество в заказе поставщику
var OrderProvidersProduct = OrderProvidersProductEntity.GetTypedColumnValueGuid>("UsrProductId");//продукт в скрытой детали
stringVariable = "ИД OrderProvidersProduct который получили:" + Convert.ToString(OrderProvidersProduct);
Custom.UsrDebug.Utils.SendMessage(UserConnection, "mishutina-julja@rambler.ru", stringVariable);
decimal Must = OrderProvidersProductEntity.GetTypedColumnValuedecimal>("UsrMust");// надо
decimal Shipped = OrderProvidersProductEntity.GetTypedColumnValuedecimal>("UsrShipped");//отгружено
decimal kolvoRealNeed = Must - Shipped; //надо - отгружено
stringVariable = "Must: " + Convert.ToString(Must)+" Shipped:" + Convert.ToString(Shipped)+" kolvoRealNeed:" + Convert.ToString(kolvoRealNeed);
Custom.UsrDebug.Utils.SendMessage(UserConnection, "mishutina-julja@rambler.ru", stringVariable);
//распределение количества из прихода в скрытую деталь
if (OrderProvidersProduct == Guid.Empty) break;
else {
if (kolvoComing >= kolvoRealNeed) {
OrderProvidersProductEntity.SetColumnValue("UsrShipped", Shipped + kolvoRealNeed);
OrderProvidersProductEntity.Save();
kolvoComing -= kolvoRealNeed;
} else {
OrderProvidersProductEntity.SetColumnValue("UsrShipped", Shipped + kolvoComing);
OrderProvidersProductEntity.Save();
kolvoComing = 0;
}
}//конец else
}//цикл по скрытой детали заказ поставщика
}//цикл по приходу
return true;
Для проверки используемых данных вставили код, по которому получаем сообщения на почту. Данные не пустые, сообщения приходят. Ошибка вылетает на само сохранение данных в процессе. Подскажите, пожалуйста, в чем может быть причина такой ошибки? Заранее огромное спасибо!!!