2015-03-23 3 views
0

В настоящее время я имею дело с проблемой при использовании массовой функциональности редактирования. Я пытаюсь достичь ниже. Я также дал код ниже.CRM 2011 Bulk Изменить форму: как обновить некоторые поля формы с разными значениями для каждой записи записи?

  1. На основной форме редактирования выберите значения из 2 наборов опций.
  2. В событии изменения значения2 он вызывает функцию javascript.

В этой функции я извлекаю все записи, выбранные для массового редактирования, используя window.dialogArguments, в переменную. Теперь в цикле for я беру записи по одному, а затем для каждой записи делаю следующее: a. Для каждой записи, используя обе значения параметров набора параметров и некоторые другие значения из текущих данных записи, она проверяет условия и определяет набор конечных значений, которые должны быть установлены. b. Он пытается установить эти конечные значения для некоторых (пусть говорят, 5) полей, доступных в форме объемного редактирования, для этой конкретной записи, используя обновление OData.

Выполняет цикл, извлекает записи, назначает объект объекту, выполняет вызов OData и обновляет значения, выбранные на шаге 1 (то есть значения параметров), которые одинаковы для всех записей. Для этих 5 полей он должен установить значения в соответствии с условиями и окончательным значением, установленным на шаге b.

Вместо этого он устанавливает 5 значений полей для всех записей, эквивалентных значениям, полученным на этапе b, для последней записи.

То, что я подозреваю, в конце перед закрытием формы объемного редактирования, переписывает эти 5 значений полей для всех записей с одинаковыми значениями (что по функциональности дефалумента массовой редакции, я понимаю).

Как я могу предотвратить эту последнюю перезапись значений данных и сохранить значения, которые я обновил с помощью OData ранее?

Я как бы застрял с этим сейчас. Любая помощь действительно ценится. Ниже приведен пример кода:

if (Xrm.Page.ui.getFormType() == 6) { 
    var records = window.dialogArguments; 
    for(i=0; i<records.length;i++){ 
    // oDataEndpointUrl Fetch 
    var requestResultsOpp= fetchData(...); 

    var optionset1 = Xrm.Page.getAttribute("optionset1").getValue(); 
    var optionset2 = Xrm.Page.getAttribute("optionset2").getValue(); 

    if (requestResultsOpp != null) { 
     var case_value = requestResultsOpp.field; 
     var entityObject = new Object(); 

    /* Check values from optionset and perform some condition checks */ 

    if (some condition) { 
     switch (case_value) { 
     case 3 /* XYZ */: 
     case 4 /* ABCD */: 
     case 5 /* PQR */: 
     if (optionset1 == 1 && optionset2 == 11) 
       Set the 5 fields values 
     if (optionset1 == 1 && optionset2 == 12) 
       Set the 5 fields values 
     break; 
    default: 
     if (optionset1 == 2 && optionset2 == 12) 
      Set the 5 fields values 
     break; 
    } 
    } 

    entityObject.optionset1 = {Value: optionset1}; 
    entityObject.optionset2 = {Value: optionset2}; 
    entityObject.Field1 = {Value: field1}; 
    entityObject.Field2 = {Value: field2}; 
    entityObject.Field3 = {Value: field3}; 
    entityObject.Field4 = {Value: field4}; 
    entityObject.Field5 = {Value: field5}; 

    // oDataEndpointUrl update 
    updateRecordSync("entityName", record[i] , entityObject); 
    } 
} 
} 

ответ

0

Короткий ответ нет, вы можете выполнить Javascript в виде насыпной редактирования (OData предполагает JavaScript в CRM). Хорошей новостью является то, что вы можете выполнить именно эту логику в плагине, который будет выполняться, как ожидается, для массового редактирования. Внутри плагинов вы можете использовать изображения перед и после объекта для сравнения до и после значений, поэтому у вас есть огромная гибкость в отношении того, какую логику вы хотите выполнять.

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

 Смежные вопросы

  • Нет связанных вопросов^_^