Создать NewRecord с помощью Siebel Business Service eScript
Я пытаюсь создать новую запись, используя скрипт сервера BS.
Поскольку процесс происходит внутри BS, контекст Parent отсутствует, поэтому я не могу получить Parent Row_Id, который мне нужно явно пометить против создаваемой дочерней записи для видимости.
Первоначально я пытался передать Parent Row_Id из апплета в качестве профиля, но это не удается, если в дочернем апплете нет записей, т.е. this.BusComp().ParentBusComp().GetFieldValue возвращает "Эта операция недопустима, если нет записей Настоящий "как" этот "контекст недоступен.
Какие-либо предложения?
2 ответа
Я смог достичь желаемого с помощью приведенного ниже кода
sId = TheApplication().ActiveBusObject().GetBusComp("Q").ParentBusComp().GetFieldValue("Id");
if(this.BusComp().CountRecords() > 0)
{
sA = TheApplication().ActiveBusObject().GetBusComp("Q").GetFieldValue("A");
sB = TheApplication().ActiveBusObject().GetBusComp("Q").GetFieldValue("B");
}
sEntity = TheApplication().ActiveBusObject().GetBusComp("Q").Name();
Именно по этим причинам Siebel предоставляет настройки по умолчанию на уровне поля бизнес-компонента. Если вы хотите сделать это полностью с помощью сценариев, вам нужно будет найти активный контекст, вы должны знать, какой BC является родительским.
Допустим, вы знаете, что родительский BC должен быть аккаунтом. Так
ActiveBusObject().GetBusComp("Account").GetFieldValue("Id") предоставит вам идентификатор строки выбранной в настоящий момент записи BC Account. Но убедитесь, что этот скрипт запускается только в этом контексте. Поэтому проверьте ActiveViewName, чтобы проверить это.
if(TheApplication().GetProfileAttr("ActiveViewName")=="Custom View")
{
//put the scripting here.
}