Обновление StateCode в Dynamics CRM с ошибками веб-службы - PullRequest
2 голосов
/ 30 июня 2010

Я пытаюсь обновить "Код StatE" (Active | Inactive) до Active через веб-сервис CRM для продукта в базе данных.

...
crmProduct.statecode = new ProductStateInfo() { Value = ProductState.Active };
//crmProduct.statuscode = new Status() { Value = 1 };
crmProduct.name = "...";
service.Update(crmProduct);

Кажется, все в порядке, я не получаю ошибок и имя меняется, но оно все еще неактивно!

При попытке установить для параметра «Код StatUS» также значение «Активный», я получаю сообщение об ошибке, в котором говорится, что я не могу установить статус «Активный», когда состояние неактивно ... но я одновременно устанавливаю оба параметра на «Активный» ... хмммм .. не правда, что здесь не так ...

Есть какие-нибудь подсказки?

Ответы [ 2 ]

6 голосов
/ 02 июля 2010

Установка кода состояния в объекте не влияет на его сохранение. Вы должны использовать соответствующий запрос SetState. Как сказал Мэтт, для динамических сущностей это SetStateDynamicEntityRequest. В вашем случае я предполагаю, что вы используете объект "product", поэтому вам нужно использовать класс SetStateProductRequest.

var request = new SetStateProductRequest()
{
  EntityId = [GUID of product],
  ProductState = ProductState.Active,
  ProductStatus = -1
}
var response = (SetStateProductResponse)crmService.Execute(request);

Проверьте эту ссылку: http://msdn.microsoft.com/en-us/library/bb958061.aspx

-1 для ProductStatus указывает CRM использовать соответствующее значение кода состояния по умолчанию для кода состояния.

2 голосов
/ 01 июля 2010

Вы должны использовать SetStateDynamicEntityRequest , чтобы обновить состояние записи. Вы можете обновить код состояния с помощью обычного сообщения об обновлении, но только если код, который вы обновляете, находится в том же состоянии, в котором находится запись, как вы уже нашли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...