Free cookie consent management tool by TermsFeed

Record Picker Component

Function

a!pickerFieldRecords( label, labelPosition, instructions, helpTooltip, placeholder, maxSelections, recordType, filters, value, saveInto, required, requiredMessage, readOnly, disabled, validations, validationGroup, accessibilityText, showWhen, showRecordLinks )

Displays an autocompleting input for the selection of one or more records, filtered by a single record type. Suggestions and picker tokens use the title of the record.

Parameters

Name Keyword Types Description

Label

label

Text

Text to display as the field label.

Label Position

labelPosition

Text

Determines where the label appears. Valid values:

  • "ABOVE" (default) Displays the label above the component.
  • "ADJACENT" Displays the label to the left of the component.
  • "COLLAPSED" Hides the label. The label will still be read by screen readers; see accessibility considerations for more information.
  • "JUSTIFIED" Aligns the label alongside the component starting at the edge of the page.

Instructions

instructions

Text

Supplemental text about this field.

Help Tooltip

helpTooltip

Text

Displays a help icon with the specified text as a tooltip. The tooltip displays a maximum of 500 characters. The help icon does not show when the label position is "COLLAPSED".

Placeholder

placeholder

Text

Text to display in the field when it is empty. Does not show if the field is read only.

Maximum Selections

maxSelections

Number (Integer)

Maximum number of allowed selections. Once this number is reached, further selections are blocked until a selection is removed.

Record Type

recordType

RecordType

Required, singular. Filters picker to select records of this type.

Filters

filters

Any Type

A single logical expression or a list of query filters can be provided to apply additional filters to the record set. Queries inherit the default filters defined on the referenced record type. Service-backed record types can only be filtered using a logical expression if data sync is enabled.

Display Value

value

Any Type

Array of currently selected records. This will be either a List of Text or a List of Number (Integer), depending on the recordType selected.

Save Input To

saveInto

List of Save

One or more variables that are updated with the array of selected records when the user selects or removes a record. Use a!save() to save a modified or alternative value to a variable.

Required

required

Boolean

Determines if a value is required to submit the form. Default: false.

Required Message

requiredMessage

Text

Custom message to display when the field's value is required and not provided.

Read-only

readOnly

Boolean

Determines if the field should display as not editable. Default: false.

Disabled

disabled

Boolean

Determines if the field should display as potentially editable but grayed out. Default: false.

Validations

validations

List of Text String

Validation errors to display below the field when the value is not null.

Validation Group

validationGroup

Text

When present, the requiredness of the field is only evaluated when a button in the same validation group is pressed. The value for this parameter cannot contain spaces. For example, “validation group” is not a valid value. You need to add an underscore between words: “validation_group”. See the following recipes for more information:

Accessibility Text

accessibilityText

Text

Additional text to be announced by screen readers. Used only for accessibility; produces no visible change.

Visibility

showWhen

Boolean

Determines whether the component is displayed on the interface. When set to false, the component is hidden and is not evaluated. Default: true.

Show Record Links

showRecordLinks

Boolean

Determines whether selected records display links to their summary views. Default: true.

Usage considerations

Suggestions and permissions

  • Suggestions are based on the fields used in the record title. However, if you use a service-backed record type without data sync enabled, the search is based on the search property configured in the source expression.
  • Only records that the viewing user has permissions to see appear in the suggestions list, as determined by the record-level security or the default filters in the record type.

Selections and placeholders

  • Any nulls in the array passed to selected records are not displayed. A [Not Available] token is displayed for any invalid identifiers in the selected records array.
  • The component always saves an array regardless of how many selections have been made.
  • By default, all selected record tokens include a link to the record unless showRecordLinks is false. Consider setting showRecordLinks to false when selecting reference data from the picker. See Select a record from a record type without a link to the record for an example.
  • This picker cannot be used to selected records of a rule-backed record type (deprecated).
  • Whether placeholder text clears on focus or input varies by device and browser.

Row limit for records-powered components

Interface components that use a record type as the data source are known as records-powered components.

Records-powered components can display a maximum of 5,000 rows. As a best practice, you should not display all 5,000 rows in a component since it may impact performance.

Service-backed record types

If you want to use a record picker with a service-backed record type, it should work as expected, without the need to change your record definition. But, in case something is not working as desired, here are a few notes on how the record picker works and how you can tweak your record design to optimize for a record picker.

  • When a user types text into the picker field, it is equivalent to a user typing text into the search bar of the record list. The difference is that every new letter in the picker is a new call to the web service, whereas in the record list, the user must hit enter before any calls are made. This means increased load on the web service.
  • Once a record is picked, the component makes one call to the web service for every picked item to get the information displayed in the label. This could be problematic because there is often overhead in web service calls. For that reason, only use the record picker when the number of items you expect users to pick at one time is low.
  • Filters applied in the component are processed in the same way that default filters and user filters are processed. This means that any new filters in the picker needed to be handled accordingly in your source expression and data retrieval rule.

If this picker does not meet your needs, use a custom picker.

Examples

Record type object references are specific to each environment. If you copy and paste these examples into an interface, they will not evaluate. Use them as a reference only.

Select a record from a record type

1
2
3
4
5
6
7
8
9
10
11
12
a!localVariables(
  local!storedRecord,
  a!pickerFieldRecords(
    label: "Choose an Employee Record",
    /* For the "recordType" parameter below, replace the record type reference (recordType!Employee)  
     * with a valid record type reference in your environment. 
     */
    recordType: recordType!Employee,
    value: local!storedRecord,
    saveInto: local!storedRecord
  )
)

Displays the following:

screenshot of a record picker with a record from a record type selected

Select a record from a record type with filters

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
a!localVariables(
  local!storedRecord,
  a!pickerFieldRecords(
    label: "Choose an Employee Record",
    /* For the "recordType" parameter below, replace the record type reference (recordType!Employee)  
     * with a valid record type reference in your environment. 
     */
    recordType: recordType!Employee,
    filters: a!queryLogicalExpression(
        operator: "AND",
        filters: {
          a!queryFilter(
            field: recordType!Employee.fields.department,
            operator: "=",
            value: "Engineering"
          ),
          a!queryFilter(
            field: recordType!Employee.fields.startDate,
            operator: ">",
            value: date(2022, 1, 1)
          )
        }
      ),
    value: local!storedRecord,
    saveInto: local!storedRecord
  )
)

Displays the following:

screenshot of a record picker with a filter and a record selected

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a!localVariables(
  local!storedRecord,
    a!pickerFieldRecords(
      label: "Choose a Case Priority",
    /* For the "recordType" parameter below, replace the record type reference (recordType!Priority)  
     * with a valid record type reference in your environment. 
     */
      recordType: recordType!Priority,
      value: local!storedRecord,
      saveInto: local!storedRecord,
    /* Since the Priority record type only contains reference data (the different case priority levels), 
     * we can hide the record links to prevent users from navigating to their summary views.
     */
      showRecordLinks: false,
    )
)

Displays the following:

screenshot of a record picker without a link to the selected record

Feature compatibility

The table below lists this component's compatibility with various features in Appian.
Feature Compatibility Note
Portals Incompatible
Offline Mobile Incompatible
Sync-Time Custom Record Fields Incompatible
Real-Time Custom Record Fields Incompatible

Custom record fields that evaluate in real time must be configured using one or more Custom Field functions.

Process Reports Incompatible

Cannot be used to configure a process report.

Process Events Incompatible

Cannot be used to configure a process event node, such as a start event or timer event.

Old versions

There are older versions of this interface component. You can identify older versions by looking at the name to see if there is a version suffix. If you are using an old version, be sure to refer to the corresponding documentation from the list below.

Old Versions Reason for Update
a!pickerFieldRecords_20r2

Supports updated record types that use record type field references.

a!pickerFieldRecords_22r1

Updated the filters parameter so it can now accept a single logical expression or a list of query filters to determine which records appear in the picker

To learn more about how Appian handles this kind of versioning, see the Function and Component Versions page.

Feedback