Зміст
DrillDown Object на Form Applet
Первоисточник bookshelf
DrillDown Object предоставляет пользователю возможность создать на поле List Applet Hyperlink при нажатии на который произойдет переход на другой View.
Важной оговоркой является что You can configure Drilldown objects for list applets only.
Но не стоит унывать, ниже я опишу как реализовать Driildown Object на Form Applet.
Properties
Property | Description/Usage |
---|---|
Business Component | Название BC1) в который будет проваливаться пользователь |
Destination Field | Название Field в Destination BC 2) значение которого должно быть равно значению в Source BC 3). Если не указано никакого значение значит указано значение Id. |
Hyperlink Field | Filed в BC 4) на котором появится Drilldown. |
Menu Text | Не используется |
Name | Название Drilldown objects. |
Sequence | Числовое значение определяющее последовательность сортировки |
Source Field | Название поля, значение которого используется как Search Specification Destination Field. Если вы не указываете business component Property не указывайте Source Field |
View | View которое отобразиться после того как пользователь перейдет по Hyperlink |
Visibility Type | A property that, when row ID-based drilldown is employed from an applet to a specific destination record, specifies a different visibility type (All, Sales Rep, Manager, or Personal) than the default visibility for the destination business component. |
Создание Drilldown Object
Прежде чем создать Drilldown Object на Form Applet необходимо добавить следующие Control:
Name | Field | Caption - String Override | HTML Type | Method Invoked |
---|---|---|---|---|
Campaign Name | Campaign Name | Маркетинговое предложение | Text | |
Campaign Name2 | Campaign Name | Маркетинговое предложение | Link | Drilldown |
Создаем Drilldown Object:
Name | Hiperlink Field | View |
---|---|---|
Campaign Name | Campaign Name | Call Center View |
Добавляем Control на Web Template и все компилируем.
При нажатии на Hyperlink “Маркетинговое предложение” мы перейдем на вид Call Center View.
Создание нескольких Drilldown Object
Для создания двух Drilldown object добавляем следующие Control:
Name | Field | Caption - String Override | HTML Type | Method Invoked |
---|---|---|---|---|
Campaign Name | Campaign Name | Маркетинговое предложение | Text | |
Campaign Name2 | Campaign Name | Маркетинговое предложение | Link | Drilldown |
BCC Quote Name | BCC Quote Name | Коммерческое предложение | Text | |
BCC Quote Name2 | BCC Quote Name | Коммерческое предложение | Link | Drilldown |
Без обработки Server Script
Далее создаем необходимые нам Drilldown Object на соответствующие Field:
Name | Hiperlink Field | View |
---|---|---|
Campaign Name | Campaign Name | Call Center View |
BCC Quote Name | BCC Quote Name | Last Call Center View |
При необходимости надо указать дополнительные Property
При необходимости обработки Server Script
Browser Script
function Applet_PreInvokeMethod (name, inputPropSet) { if(name=="Drilldown") { var SWEFieldParts = inputPropSet.GetProperty("SWEField").split("_"); theApplication().SetProfileAttr("BCC_Drilldown_Field",SWEFieldParts[3]); //alert(theApplication().GetProfileAttr("BCC_Drilldown_Field")); } return ("ContinueOperation"); }
Manifest File
На примере AL Service Request List Applet With Navigation
//Regenerate using:https://duncanford.github.io/prpm-code-generator/?prpm=PM&object=DesktopList&name=ALServiceRequestListAppletWithNavigation&userprops=&comments=Yes&logging=No if (typeof(SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM) === "undefined") { SiebelJS.Namespace("SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM"); define("siebel/custom/ALServiceRequestListAppletWithNavigationPM", ["siebel/listpmodel"], function () { SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM = (function () { function ALServiceRequestListAppletWithNavigationPM(pm) { SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM.superclass.constructor.apply(this, arguments); } SiebelJS.Extend(ALServiceRequestListAppletWithNavigationPM, SiebelAppFacade.ListPresentationModel); ALServiceRequestListAppletWithNavigationPM.prototype.Init = function () { // Init is called each time the object is initialised. // Add code here that should happen before default processing SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM.superclass.Init.apply(this, arguments); // Add code here that should happen after default processing this.AddMethod("InvokeMethod", PreInvokeMethod, {sequence: true, scope: this}); } ALServiceRequestListAppletWithNavigationPM.prototype.Setup = function (propSet) { // Setup is called each time the object is initialised. // Add code here that should happen before default processing SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM.superclass.Setup.apply(this, arguments); // Add code here that should happen after default processing } function PreInvokeMethod(methodName, psInp, lp, returnStructure) { //console.log("methodName=" + methodName); //console.log("psInp=" + psInp); //console.log("SWEField=" + psInp.GetProperty("SWEField")); if(methodName=="Drill"+"down"){ var SWEFieldParts = psInp.GetProperty("SWEField").split("_"); theApplication().SetProfileAttr("BCC_Drilldown_Field",SWEFieldParts[3]); SiebelApp.S_App.uiStatus.Free(); returnStructure["ContinueOperation"] = true; } } return ALServiceRequestListAppletWithNavigationPM; }() ); return "SiebelAppFacade.ALServiceRequestListAppletWithNavigationPM"; }) }
1. Скопировать файл 'ALServiceRequestListAppletWithNavigationPM.js' в папку 'applicationcontainer_external/siebelwebroot/scripts/siebel/custom' 2. Администрирование - Приложения → Manifest Files - добавить новую запись
- Inactive Flag = false
- Наименование 'siebel/custom/ALServiceRequestListAppletWithNavigationPM.js'
3. Администрирование - Приложения → Manifest Administration - добавить новую запись
- Inactive Flag = false
- Type = Applet
- Usage Type = Presentation Model
- Наименование = 'AL Service Request List Applet With Navigation'
4. Администрирование - Приложения → Object Expression
- Inactive Flag = false
- Level = 1
4. Администрирование - Приложения → Files
- Inactive Flag = false
- Последовательность = 1
- Наименование = 'siebel/custom/ALServiceRequestListAppletWithNavigationPM.js'
Создаем необходимые нам Drilldown Object на соответствующие Field:
Name | Hiperlink Field | View |
---|---|---|
Campaign Name | Campaign Name | |
BCC Quote Name | BCC Quote Name |
Property View оставляем пустым
Создаем Server script в котором используем GotoView Method
if (MethodName=="Drilldown") { switch (TheApplication().GetProfileAttr("Drilldown_Field")) { case "24": TheApplication().GotoView("Call Center View"); break; case "25": TheApplication().GotoView("Last Call Center View"); break; default: return (ContinueOperation); break; } return (CancelOperation); }
— wiki_admin 2014/12/02 09:05 Drilldown