В настоящее время я имею дело с проблемой при использовании массовой функциональности редактирования. Я пытаюсь достичь ниже. Я также дал код ниже.CRM 2011 Bulk Изменить форму: как обновить некоторые поля формы с разными значениями для каждой записи записи?
- На основной форме редактирования выберите значения из 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);
}
}
}