При обновлении сущности в MS CRM 2015 появляется сообщение об ошибке - PullRequest
0 голосов
/ 11 июня 2018

У меня есть форма инцидента в crm 2015. После операций spme объект инцидента становится пассивным.В моей базе данных пассивный инцидент следует понимать, просматривая столбцы состояния и статуса.Если инцидент пассивен, код состояния становится 1, а код статуса - 5.

После инцидента становится пассивным.Я хочу что-то сделать с этим объектом инцидента.

Как оператор, я хочу изменить состояние и статус, чтобы активировать инцидент.(состояние = 0, состояние = 1)

В случае успеха я хочу обновить поле new_anketgonderildi (битовое поле) на true.Затем сделайте инцидент снова пассивным и обновите объект.

Но при обновлении объекта я получил ошибку.

Это дело уже разрешено.Закройте и снова откройте запись дела, чтобы увидеть обновления.

Я понял, что если инцидент активен, я могу изменить поле new_anketgonderildi.Когда инцидент находится в пассивной ситуации, я не могу измениться.Чтобы изменить поле значения бита, я должен активировать инцидент, изменить битовое поле и затем снова деактивировать инцидент.

Как я могу достичь этой ситуации? код введите описание изображения здесь

1 Ответ

0 голосов
/ 11 июня 2018

Так работает CRM.Существует ряд сущностей (включая случай / инцидент), которые после того, как они стали неактивными (пассивными), больше не могут быть отредактированы.

Вам потребуется либо:

  1. Обновить new_anketgonderildiперед закрытием дела.
  2. Повторно активируйте закрытое дело, обновите new_anketgonderildi, а затем снова закройте дело.

В последнем примере приведен пример: Проверить состояние записи и установить состояние записи .

private void SetState(EntityReference caseReference)
{
    // Open the incident

    // Create the Request Object
    SetStateRequest state = new SetStateRequest();

    // Set the Request Object's Properties
    state.State = new OptionSetValue((int)IncidentState.Active);
    state.Status = new OptionSetValue((int)incident_statuscode.WaitingforDetails);

    // Point the Request to the case whose state is being changed
    state.EntityMoniker = caseReference;

    // Execute the Request
    SetStateResponse stateSet = (SetStateResponse)_serviceProxy.Execute(state);  
}


private void CloseIncident(EntityReference caseReference)
{
    // Close the Incident

    // Create resolution for the closing incident
    IncidentResolution resolution = new IncidentResolution
    {
        Subject = "Case Closed",
    };

    resolution.IncidentId = caseReference;

    // Create the request to close the incident, and set its resolution to the 
    // resolution created above
    CloseIncidentRequest closeRequest = new CloseIncidentRequest();
    closeRequest.IncidentResolution = resolution;

    // Set the requested new status for the closed Incident
    closeRequest.Status = new OptionSetValue((int)incident_statuscode.ProblemSolved);

    // Execute the close request
    CloseIncidentResponse closeResponse = (CloseIncidentResponse)_serviceProxy.Execute(closeRequest);
}
...