Доброго времени суток коллеги!

Следующий код создания нового экземпляра Entity возвращает Null.

EntitySchema contractSchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contract");
            Entity contract = contractSchema.CreateEntity(UserConnection);
            Guid guid = Guid.NewGuid();
            contract.SetDefColumnValues();
            contract.SetColumnValue("Id", guid);

Раньше такого не было. 

При попытке задать значение полей выдает ошибку "Ссылка на объект не указывает на экземпляр объекта.".

из за чего поведение кода могло измениться?

Спасибо за ранее!

Нравится

5 комментариев

Здравствуйте!

 

Где именно располагается данный пример кода? В бизнес-процессе, в веб-сервисе или в каком-то другом месте?

Что в стеке вызовов исключения?

Подозреваю, что проблема в UserConnection. Видимо, данная переменная не инициализирована.

Михаил Назыров,

Здравствуйте, этот код находится в исходном коде клиента внешнего веб-сервиса.

 

Стек:

в Terrasoft.Configuration.Hmb.ContactIntegration.HmbGetDepositsInfoRs.CreateContract(HmbGetDepositsInfoRsResponse result, Contract contract, Contact contact)

в Terrasoft.Configuration.Hmb.ContactIntegration.HmbGetDepositsInfoRs.SendRequest(HmbGetDepositsInfoRsRequest request)

в Terrasoft.Configuration.Hmb.ContactIntegration.HmbGetDepositsInfoRs.GetClientDeposits(Guid ContactId)

в Terrasoft.Configuration.Custom.TestService.Start() в SyncInvokeStart(Object , Object[] , Object[] )

в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)

в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)

в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

 

Насчет UserConnection: Оно инициализируется сразу конструктором и используется до возникновения ошибки несколько раз.

public partial class HmbGetDepositsInfoRs
    {

          ........

          private readonly UserConnection UserConnection;

          public HmbGetDepositsInfoRs(UserConnection userConn)
        {
                UserConnection = userConn;
        }

         ........

}

Добрый день

Такое ощущение, что у пользователя (того, кто стоит за UserConnection) нет прав на создание записей в объекте Contract

Артем Гура,

это супервизор. На всякий случай проверил, права есть

Rahimberdiyev Mirzohid Muhammadjon o'g'li,

Добрый день

1) Попробуйте отладить Ваш код и дополнительно проверить UserConnection. За ним должен стоять пользователь с правами админа и с доступом на операции по типу CanManageSolution и тд. 
2) Также рекомендую проверить логи приложения на наличие ошибок. 
3) + провести дополнительную генерацию и компиляцию.
4) Проверить будут ли создаваться другие объекты кроме Contract.

Если все эти рекомендации не помогут, то обратитесь в тех поддержку Terrasoft для более глубокого анализа.

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