Создать 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.
}
Другие вопросы по тегам