====== Массовая активация полей ====== Любой человек который когда либо пробовал писать скрипт в 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|Детали тут]]