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

Следующий код создания нового экземпляра 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 для более глубокого анализа.

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

Привет, есть очень странное поведение программы.

В карточке "Контрагентов" есть деталька "Адреса контрагентов" в этой же карточке есть справочное поле "Адрес контрагента" которое ссылается на ту же детальку.
Сразу после компиляции какое-то время все работает хорошо, но как только это "какое-то время" проходит(от часа до суток) у нас при заходе в карточку Контрагента деталь перестает работать:
1. Не отображаются записи на детальке.
2. При попытке добавить запись открывается карточка добавления, но при попытке сохранения получаем ошибку равной той, что указана в заголовке темы. 

Ошибка в консоли: 

*Cloud.
**7.14.4.1046

Нравится

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

Попробуйте смотреть в Fiddler, какие запросы идут из браузера на сервер, одинаковые ли. Вообще, время после последней компиляции не должно влиять, нужно искать настоящую причину: интеграция, время суток, одновременные доработки в это же время другими людьми и др.

Больше информации о причине можно было узнать из логов сайта на стороне сервера, где будет непосредственно видно стек в коде C# при ошибке 500. Но, поскольку это Cloud, их можно получить только через поддержку.

Вопрос закрыт.
Проблема была в коллизии названия полей в таблице "Адреса контрагентов" и "Контрагентах". Изменил название поля в Адресах и все заработало.

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

Подскажите, пожалуйста, куда копать?

При входе:

Exception Message: Object reference not set to an instance of an object.
Exception Type: System.NullReferenceException
Exception Source: Terrasoft.Messaging.Common

Exception Stack Trace:
   at Terrasoft.Messaging.Common.ClientChannelHelper.GetConnectionParamsInitScript(Uri appUrl)
   at Terrasoft.WebApp.Nui.ViewModule.SetupWebSocketConnectionParams()
   at Terrasoft.WebApp.Nui.ViewModule.Page_Load(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Нравится

1 комментарий

Проблема была тут:

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" encrypted="true" portForClientConnection="443" defaultPort="" />

defaultPort=""

был пустой

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