The Values() collection

1 minute read time.

The Values() collection can be used in all serverside scripts to examine the passed in Values from a form.

  • Create Scripts
  • Validate Scripts
  • Tablelevel Scripts
  • Workflow Scripts

The Values() collection must always have an argument passed to it.
The Values() collection can not be examined using a for...in statement or used directly with an enumerator.

Using the example of the CommunicationSchedulingBox

If in a validation script you examine the value of a field with a value defined, e.g.

Valid = false;
ErrorStr=Values('cmli_comm_userid');

The value is returned.

If you examine the value of a field without a value defined, e.g.

Valid = false;
ErrorStr='comm_taskreminder='+Values('comm_taskreminder');

The value is reported as 'undefined'.

If you examine the value of a field that does not exist on the form, e.g.

Valid = false;
ErrorStr='comm_notafield='+Values('comm_notafield');

The value is also reported as 'undefined'.

There is no way of distinguishing between a field that does not exist on the form and one that exists but does not have a value to pass.

To enumerate Values() for a particular screen we can do the following: (Code can be entered into the validation script of a field in the CommunicationSchedulingBox).

Valid = false;
ErrorStr ='';
var CommunicationSchedulingBox = CRM.GetBlock('CommunicationSchedulingBox');
var myE = new Enumerator(CommunicationSchedulingBox);
while (!myE.atEnd())
{
ErrorStr += myE.item()+'='+Values(myE.item())+'
';
myE.moveNext();
}

This is only a partial solution and does not include hidden fields that are not defined within the block, CommunicationSchedulingBox.

You can use the FormValues() collection to access all fields on a page as the Values() collection only returns the fields that are in the block not the fields in the html .

Where a field is a multi select (e.g. cmli_comm_userid) then it is only possible to obtain the first value with Values('cmli_comm_userid').

In a table level script you can also extend the Values() collection for the current table