====== Массовая активация полей ======
Любой человек который когда либо пробовал писать скрипт в 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: =====
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: =====
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 [[http://docs.oracle.com/cd/B40099_02/books/OIRef/OIRefInterfaceRef86.html#wp1010570|Детали тут]]