Cannot set a value for field %1 because it is not active. (SBL-EXL-00147)

If you get the following error, it means you’re trying to update the value of a field when it is not active. Active, meaning retrieved from the database and therefore available for manipulation from Siebel.

Cannot set a value for field %1 because it is not active. (SBL-EXL-00147)

You can find an explanation in Bookshelf of when a field is considered active: ActivateField Method.

Tracking down the source of the problem is not hard, all the answers are on the internet, but it helps to have a checklist of things that may be causing the error:

If the exception is thrown from a script, did you call ActivateField on the Business Component for that field before querying and attempting to set the field?

var bo = TheApplication().GetBusObject("Eg BO");
var bc = bo.GetBusComp("Eg BC");
bc.ClearToQuery();
bc.ActivateField("Eg Field");//This line must appear before ExecuteQuery
bc.ExecuteQuery(ForwardOnly);
if (bc.FirstRecord)
{
    bc.SetFieldValue("Eg Field", "ABC");
}

If the exception is thrown when calling this.BusComp().SetFieldValue(), has the field been added to the Applet?

If you’re operating on the Business Component on which the Applet is based via this.BusComp(), the field will only be active if it appears on the Applet. For performance reasons, Siebel will not activate fields that are not required by the Applet.

Does the field exist on the Business Component?

You may simply have misspelt the field name, or it may not be there at all.

Is it a calculated field?

It doesn’t make sense to set the field as there is no table column to write it to.

Is it a read only field or is there a read only BC User Property for the field?

It’s easy to miss this if the field is conditionally read only based on a User Property.

Are there any other scenarios you can think of?

This entry was posted in Programming and tagged , , . Bookmark the permalink.

One Response to Cannot set a value for field %1 because it is not active. (SBL-EXL-00147)

  1. Oscar says:

    hi, i read your article, to try to solve my problem, let me explain you, i’m trying to set a value in a field that is placed on a parent business component, from a child business component, and im getting this error, i try all that you can explain in this post, and it’s continue showing this error message, i’m trying to do the before explain, in the PreWriteRecord event, all fields are physicals, and all have active force.

Leave a Reply

Your email address will not be published. Required fields are marked *