Инструменты пользователя

Инструменты сайта


escript:mass_activation_fields

Массовая активация полей

Любой человек который когда либо пробовал писать скрипт в Siebel CRM eScript сталкивался с необходимостью массовой активации полей в определенном бизнес компоненте (Bussines Component) как правило это выглядит следующим образом:

Объявляем необходимый бизнес компонент и активируем необходимые нам поля (Siebel CRM eScript examples):

var bo = TheApplication().ActiveBusObject();
var bc = bo.GetBusComp("List Of Values");
bc.ActivateField("Language");
bc.ActivateField("Value");
bc.ActivateField("Type");

Так выглядит Siebel CRM eScript ActivateField.

Но этот вариант является не всегда удобным поскольку в больших скриптах бывает необходимость в активации 20 и более полей. В результате код очень быстро вырастает в размере.

Я предлагаю использовать следующий вариант.

Функция активации полей Вариант №1:

myexample.js
function ActivField()
{
for (var ssk = 1; ssk < arguments.length; ssk++)
{arguments[0].ActivateField(arguments[ssk]);}
return;
}
 
var bo = TheApplication().ActiveBusObject();
var bc = bo.GetBusComp("List Of Values"); 
ActivField(bc, "Type","Value","Language");

Итак теперь немного подробней. О функции Массовой активации полей в Siebel CRM (Massive ActivateField in Siebel CRM)

Как говорится в BoockShelf property arguments[] это массив аргументов вставленных в функцию. Первая переменная начинается с arguments[0], все последующие с arguments[1] и выше. Именно это мы и используем.

Начинаем цикл по аргументам (поля в бизнес компоненте) которые начинаются с arguments.[1]-го значения и до arguments.[n] аргумента. Напомню в arguments.[0]-м аргументе содержится бизнес компонент

Функция активации полей Вариант №2:

myexample.js
var ContactBO = TheApplication().GetBusObject(«Contact»);
var ContactBC = ContactBO.GetBusComp(«Contact»);
with (ContactBC)
{
SetViewMode(AllView);
var fieldsPS = TheApplication().NewPropertySet();
var valuesPS = TheApplication().NewPropertySet();
fieldsPS.SetProperty("Last Name", "");
fieldsPS.SetProperty("First Name", "");
ActivateMultipleFields(fieldsPS);
ClearToQuery();
ExecuteQuery(ForwardBackward);
if (FirstRecord())
{
GetMultipleFieldValues(fieldsPS, valuesPS);
var slName = valuesPS.GetProperty("Last Name");
var sfName = valuesPS.GetProperty("First Name");
}
}

Вариант №2 Детали тут

escript/mass_activation_fields.txt · Последние изменения: 2016/11/04 14:05 (внешнее изменение)