There are certain conventions which must be followed in order to construct a valid, complete qualifier expression for a custom field of type Custom Object. In order to create your own qualifier, you must understand both the syntax and the possible data types for an expression.
The following points describe the syntax of expressions for qualifiers in custom fields of the type Custom Object:
•The syntax for paths is the same as in the fields where paths are created with Object Navigator, such as rule qualifiers added through the user interface. Namely, the expression you write in the Qualifier field essentially consists of object attributes, separated by periods.
•The Qualifier field is case-sensitive. Object attributes must be typed exactly as they appear in Object Navigator (see Using Object Navigator) or using the reference tables in Object Model: Read This First plus the tables it points you to. Also, custom field names must be typed exactly as they are defined in the Custom Fields tab of the object definition.
•There are two keywords that can be used when writing qualifiers. Always start a path with one of these keywords:
othis
Refers to the project the user selects in the custom field of type Custom Object. The left side of your expression always starts with this.
ocontainer
Refers to the record where the custom field of type Custom Object is located. Typically, the right side of your expression starts with container, unless you need to type in a literal value rather than identify an object attribute.
•System fields are identified with the use of a path that identifies the object attribute, like this:
this.parent.parent.primaryKey
For complete examples of system fields in paths, see the Examples of Qualifiers for Custom Fields of the Type Custom Object table.
•Custom fields are identified with the use of a path that includes the category tree position and custom field name in parentheses, like this:
this.detailList(FullTreePosition).detailNumbValueList(FieldName).detailValue
where FullTreePosition is the full tree position of the category under which the custom field is created, and FieldName is the name (not label) of the custom field itself.
Important: Make sure to type the full category tree position, NOT the name, of the category.
•When identifying custom field values with a path, you must use the correct path based on the field type, as shown in the Syntax for Identifying Custom Field Values in Paths table. This is because the path changes slightly depending on the type of value you are identifying (number, date, list, and so on), as indicated in bold in the table.
For detailed examples of custom fields in paths, see the Examples of Qualifiers for Custom Fields of the Type Custom Object table.
Syntax for Identifying Custom Field Values in Paths
Custom field type |
Path syntax to identify custom field value |
Text |
detailList(FullTreePosition).detailTextValueList(FieldName).detailValue |
Memo Text |
detailList(FullTreePosition).detailMemoValueList(FieldName).detailValue |
Number |
detailList(FullTreePosition).detailNumbValueList(FieldName).detailValue |
Date |
detailList(FullTreePosition).detailDateValueList(FieldName).detailValue |
List (lookup items) |
detailList(FullTreePosition).detailObjeValueList(FieldName).detailValue |
Custom Object |
detailList(FullTreePosition).detailObjfValueList(FieldName).detailValueFID Important: detailValueFID is the primary key of the project record selected in the identified custom field. |
Check-Box |
detailList(FullTreePosition).detailNumbValueList(FieldName).detailValue Important: Values for custom fields of the type check-box are stored as numbers, where checked=1 and not checked=0. |
Involved |
detailList(FullTreePosition).detailInvlValueList(FieldName).detailValue.contact.primaryKey Important: This path identifies the primary key of the contact selected in the Involved custom field. |
When constructing an expression for a qualifier, you must ensure that the type of data identified by the path on each side of the expression is the same. For example, you cannot compare a name and a number or a primary key, a string and a decimal, a date and a complex type, or object.
The Data Types and Operators for Custom Fields of the Type Custom Object table lists the types of data that you can use in the Qualifier field of a custom field of type Custom Object. It also lists the operators that you can use in the expression for each data type. To find out the data type of a specific attribute, see Object Model: Read This First plus the additional reference tables this reference points you to.
It is important to understand that each side of your expression must identify one of these simple types of data values. Specifically, you cannot compare attributes marked as "bridges" in Object Model: Read This First (and the additional reference tables it points to). These values identify other records, rather than simple data values. For example, parent, createdBy, mainAssignee, and project are all bridges rather than simple data values.
Therefore, when you need to compare records, you must use one of the attributes of the record that is a simple data type and that uniquely identifies it. For example, if you want to compare a parent record to another parent or grandparent record, compare their primary keys. Similarly, if you want to compare a user to another user, compare the username (a text value). For other examples, see the Examples of Qualifiers for Custom Fields of the Type Custom Object table.
Data Types and Operators for Custom fields of the type Custom Object
Data type |
Operator |
Values |
Examples |
Text |
= |
•Path that identifies a text value •A literal text value that you type manually in the Qualifier field |
this.parent.name=container.name this.currentPhaseType.uniqueCode=LITI |
Number |
= < > <= >= |
•Path that identifies a numeric value •A literal numeric value that you type manually in the Qualifier field |
this.parent.primaryKey=container.parent.parent.primaryKey this.parent.primaryKey=container.detailList(CLAM_AUTO).detailObjfValueList(Vehicle).detailValueFID this.detailList(RESE).detailNumbValueList(AppraisalAmt).detailValue>=500000 |
Date |
•Path that identifies a date value •TODAY (typed manually in the Qualifier field) •TODAYX For dates, > means after today and < means before today. |
this.createdOn>=container.createdOn this.closedOn=container.detailList(CLAM_AUTO).detailDateValueList(CompletionDate).detailValue this.createdOn<=TODAY30 |
|
Lookup table item (from a system or custom lookup table) |
= |
•Path that identifies a lookup item selected in a field •A full tree position of a lookup item that you type manually in the Qualifier field For an explanation of how tree positions of lookup items are formed for custom lookup tables, see Custom Lookup Tables. |
thisdetailList(CLAM_AUTO).detailObjeValueList(LossCode).detailValue=LOSS_ROOT_VDRE |
Boolean (true/ false values) |
= |
•Path that identifies a boolean value •true or false typed manually in the Qualifier field |
this.isClosed=false |