ATC: IF condition | (table.field (operator value-expression | IsChanging))
If this command appears anywhere in the script, the entire script is run in the background (even if the command is in an ATC: IF command).
- condition is required if the field expression (described below) is not used and not allowed if the field expression is used. There are several possible conditions but you can use only one at a time.
- table.field (operator value-expression | IsChanging)
- table is optional; however, if it is omitted, the Document Header (DocMasterDetail) is assumed. It specifies the target of the assignment. You can use @ to reference the current row in a FOREACH loop, or TargetRow to reference a recent row manipulated by another command such as ATC: ADD COMMENT or ATC: ADD ITEM.
- . (period) is required only if table is specified. It separates table from field.
- field is required. It specifies the field to be evaluated.
- operator is optional but required with value-expression. Valid operators are
- =
- !=
- >
- <
- IN or NOTIN
- LIKE or NOTLIKE
- value-expression is optional but required with operator. The value can be any of the following:
- alphanumeric string
- alphanumeric value-list is required with the IN operator. The value-list should be in the form A, B, C and can contain bookmarks. See example.
- [bookmark] specifies a Microsoft Word bookmark. The square brackets are required.
- EMPTY indicates the field is empty
- NULL indicates that the field has never been set.
- LookupResult (dvname, value, dependson1, dependson2, dependson3) returns a value based on a scalar lookup (sort of like the Microsoft Excel VLookup function). See an example in ATC: SET.
- dvname is the name of a lookup result. See the Lookup Result Validation Names section of KBA-01535.
- value is the value to look up, either a bookmark or a variable.
- dependson1-3 are all optional and provide input values, either as bookmarks or variables
- NOW () specifies that the current date and time is to be used.
- +n.n can follow NOW () to add a number of days (with optional decimal) to the current date.
- IsChanging is optional. IsChanging is used in place of operator value-expression. It indicates that if the table.field has changed, the IF will be considered “true”.
- IsEmpty is optoinal. IsEmpty is used when you want to test if the value is DB NULL, a numeric zero or a string containing nothing except whitespace after HTML removal. A zero length string is obviously empty too!
Example
ATC: IF DUE < NOW() + 14 ATC: SET DocRevision.Notes=You have less than two weeks! ATC: ELSE ATC: SET DocRevision.Notes=You have more than two weeks. ATC:ENDIF
The example above means “if the due date is less than today plus 14 days, set the Note field to the message You have less than two weeks! Otherwise, set the Note field to the message You have more than two weeks.
ATC: IF DocDate IsChanging ATC: SET Title=Report for [DocHeader_DocDate] ATC: ENDIF
The example above means “if the document date field changes, use the new document date in the document title, beginning with Report for; otherwise, do nothing.”
ATC: IF ProjectSubtype = CC ATC: SET Location = Downtown ATC: ENDIF
The example above means “if the Project Subtype is equal to CC, set the Location on the document to Downtown; otherwise, do nothing.”
ATC: IF subtype IN FP, GMP ATC: SET Location = Contract Cap ATC: ENDIF
The example above means “if the Subtype is equal to either FP or GMP, set the Location on the document to Contract Cap; otherwise, do nothing.”
ATC: IF DocItem.Specification LIKE 16* ATC: SET Location = Sounds Electrical ATC: ENDIF
The example above means “if the first document item has a specification that begins with 33, then set the Location on the document to Sounds Electrical; otherwise, do nothing.” See this handy reference about the LIKE operator.
ATC: IF UserHas WORK Staff ATC: SET Location = The Staff Conference Room ATC: ENDIF
The example above means “if the current user has WORK Staff in any role, then set the Location on the document to The Staff Conference Room; otherwise, do nothing.”
See also the examples in ATC: ELSE and ATC: ENDIF.
Last updated: February 10, 2023 at 14:58 pm; green text = new