Добавление формул и функций в InfoPath 2010

Применяется к
InfoPath 2010

Формулы позволяют получить больше от создаваемых правил, чем с помощью базовых предварительно определенных правил. Например, формулы используются для таких вещей, как вычисление текущей или будущей даты или даже объединение текста.

В этом разделе...

Обзор

Функции даты и времени

Функции полей

Математические функции

Текстовые функции

Функции URL-адресов

Функция userName

Обзор

Формула — это выражение XPath (язык XML-пути), состоящее из значений, полей или групп, функций и операторов, используемых для вычисления и отображения других значений. Формулу можно использовать для создания нового значения для поля и отображения этого значения в элементе управления, привязанном к его полю. Формулы можно использовать следующим образом:

Вычислите математическое значение на основе значений, указанных при разработке шаблона, или на основе значений, которые пользователь вводит при заполнении шаблона формы.

Выполните правило на основе значения, вычисляемого с помощью формулы.

Отображение текста только для чтения, вычисляемого из других элементов управления, или отображение значения другого элемента управления.

Функция — это выражение, возвращающее значение на основе результатов вычисления. Значения, используемые в функциях, называются аргументами. Вы можете использовать стандартные функции XPath 1.0, включенные в InfoPath, в дополнение к некоторым функциям InfoPath. Функции состоят из следующих трех частей:

  • Имя Имя функции обычно предоставляет подсказку о действии, которое будет выполнять функция.
  • Возвращаемое значение Результат функции.
  • Аргументы Значения, используемые функцией для выполнения вычисления.

Функция может требовать, чтобы аргументы возвращали значение. Если функции требуются аргументы, необходимо знать, сколько аргументов требуется и тип данных каждого аргумента. Функция не будет работать, если указать неправильное число или тип обязательных аргументов.

На следующем рисунке показана связь между функциями, выражениями и формулами.

046c2cb3-2a43-40c6-af65-5f7ee9c0e1a4

Добавление элемента управления вычисляемым значением

Элемент управления вычисляемым значением можно использовать для отображения текста только для чтения, отображения значения другого элемента управления в форме и создания формул на основе выражений XPath. Например, если вы разрабатываете шаблон формы отслеживания расходов, можно добавить элемент управления вычисляемым значением, чтобы отобразить общую сумму введенных расходов.

Примечание

Элемент управления вычисляемым значением отображает только данные и не сохраняет их, поэтому следует использовать элемент управления вычисляемым значением только в том случае, если вы не хотите сохранять его значение или ссылаться на него в другой формуле.

  1. Поместите курсор в то место шаблона формы, куда вы хотите вставить элемент управления.

  2. На вкладке Главная в группе Элементы управления щелкните элемент управления вычисляемым значением .

  3. В диалоговом окне Вставка вычисляемого значения выполните одно из следующих действий.

    • Чтобы ввести текст или выражение XPath непосредственно в вычисляемый элемент управления значением, введите в поле XPath .

    • Чтобы вставить формулу, нажмите кнопку Изменить формулу6aeee2be-ff9c-4a64-a987-2db942c81046 , а затем введите нужную формулу в текстовое поле Формула , при необходимости используйте следующее:

      • Чтобы вставить поле или группу в формулу, щелкните Вставить поле или группу, щелкните поле или группу в диалоговом окне Выбор поля или группы и нажмите кнопку ОК.
      • Чтобы вставить функцию в формулу, нажмите кнопку Вставить функцию, выберите функцию в диалоговом окне Вставка функции и нажмите кнопку ОК.
        Если для функции требуются параметры, выберите функцию в диалоговом окне Вставка функции , нажмите кнопку ОК, а затем в тексте формулы дважды щелкните место, где указано, и выберите нужный параметр, прежде чем нажать кнопку ОК.
      • Чтобы вставить в формулу значение или математический оператор, введите значение или символ для математической операции в поле Формула .
        Математические операторы включают сложение (+), вычитание (-), умножение (*) и деление (/).
        Математические формулы обычно зависят от целочисленных или десятичных значений в качестве аргументов. Чтобы избежать пустых значений в формуле, на вкладке Файл нажмите кнопку Параметры формы , а затем выберите Дополнительно и убедитесь, что выбран параметр Обрабатывать пустые значения как ноль .

Добавление формулы в элемент управления

Хотя элемент управления вычисляемым значением можно использовать для отображения результатов формулы, вы не ограничиваетесь использованием вычисляемого элемента управления значением. Можно также использовать формулу, чтобы задать значение по умолчанию для других элементов управления, таких как текстовые поля. Задать значение по умолчанию элемента управления можно двумя способами. Можно либо использовать статическое значение по умолчанию, просто введя нужное значение в поле Значение диалогового окна Свойства поля или группы , либо с помощью формулы задать значение поля по умолчанию на основе других значений в форме. Чтобы задать значение по умолчанию для поля на основе формулы, сделайте следующее:

  1. Выберите элемент управления, в который нужно добавить формулу, а затем в разделе Средства управления на вкладке Свойства в группе Свойства щелкните Значение по умолчанию.

  2. Щелкните Вставить формулу6aeee2be-ff9c-4a64-a987-2db942c81046 рядом с полем Значение .

  3. Введите нужную формулу в текстовое поле Формула , при необходимости используйте следующую формулу:

    • Чтобы вставить поле или группу в формулу, щелкните Вставить поле или группу, щелкните поле или группу в диалоговом окне Выбор поля или группы и нажмите кнопку ОК.

    • Чтобы вставить функцию в формулу, нажмите кнопку Вставить функцию, выберите функцию в диалоговом окне Вставка функции и нажмите кнопку ОК.
      Если для функции требуются параметры, выберите функцию в диалоговом окне Вставка функции , нажмите кнопку ОК, а затем в тексте формулы дважды щелкните место, где указано, и выберите нужный параметр, прежде чем нажать кнопку ОК.

    • Чтобы вставить в формулу значение или математический оператор, введите значение или символ для математической операции в поле Формула .
      Математические операторы включают сложение (+), вычитание (-), умножение (*) и деление (/).

      Совет

      Математические формулы обычно зависят от целочисленных или десятичных значений в качестве аргументов. Чтобы избежать пустых значений в формуле, на вкладке Файл нажмите кнопку Параметры формы, а затем выберите Дополнительно. Убедитесь, что выбран параметр Обрабатывать пустые значения как ноль .

  4. Чтобы изменить формулу как формулу XPath, выберите поле Изменить XPath (дополнительно) проверка, чтобы изменить формулу на версию выражения XPath формулы.

  5. Чтобы проверка формулу для правильного синтаксиса, нажмите кнопку Проверить формулу. Если формула содержит ошибки:

Щелкните Показать сведения в диалоговом окне Майкрософт InfoPath , чтобы увидеть ошибки в формуле. Ниже приведены некоторые рекомендации по устранению этих ошибок.

  • Если вы используете функцию в формуле, убедитесь, что для функции используются правильные аргументы. Для некоторых функций требуются поля или группы, в то время как для других функций в качестве аргументов требуются указанные значения.
  • При необходимости удалите и повторно введите формулу, чтобы убедиться, что она правильно введена.
  • Нажмите кнопку ОК.
  • Если вы хотите обновить значение поля по умолчанию при изменении значений, на основе которого оно основано, установите флажок Обновить значение при пересчете формулы проверка. В этом случае нажмите кнопку ОК и в разделе Средства управления на вкладке Свойства в группе Свойства выберите пункт Свойства элемента Управления. Перейдите на вкладку Отображение и выберите проверка только для чтения.

Использование формулы в правиле

При указании условий в правилах проверки, форматирования или действий можно использовать формулу для управления условием. Это можно сделать, выбрав использовать формулу из третьего раскрывающегося списка диалогового окна Условие при назначении правила элементу управления или шаблону формы.

К началу страницы

Функции даты и времени

addDays

Добавляет дни к дате или дате и времени.

Синтаксис

addDays(date, days)

Аргумент Описание
date Число дней во втором аргументе добавляется к дате в этом аргументе. Этот аргумент может быть типом данных Date (date) или Date and Time (dateTime).
дн. Количество дней, которые нужно добавить к дате в первом аргументе. Этот параметр должен быть типом данных Whole Number (integer). Если в этом аргументе используется отрицательное число, возвращаемое значение является более ранней датой.

Пример

Вы хотите, чтобы поле в шаблоне формы содержало дату 60 дней с сегодняшней даты. Шаблон формы содержит поле с именем fldToday с текущей датой в качестве значения по умолчанию. Чтобы вычислить новую дату с помощью этой функции, используйте следующую формулу в новом поле даты:

addDays(fldToday, 60)

addSeconds

Добавляет секунды к времени или дате и времени.

Синтаксис

addSeconds (время, секунды)

Аргумент Описание
time Значение даты и времени или значение времени, которое является ссылкой на другое поле в шаблоне формы или результатом функции даты или времени, например now() или today(). Количество секунд во втором аргументе добавляется к времени в этом аргументе. Этот аргумент может быть типом данных Date (date) или Date and Time (dateTime). Если это тип данных Time, то будет возвращен тип данных Time. Если это тип данных Date, будут возвращены типы данных Date и Time.
Секунд Количество секунд, которое требуется добавить к значению даты и времени или времени в первом аргументе. Поле в этом параметре должно быть типом данных Whole Number (integer). Если в этом аргументе используется отрицательное число, возвращаемым значением будет либо более ранняя дата и время, либо более раннее время.

Пример

Шаблон формы содержит поле с именем fldCurrentTime, которое использует текущее время в качестве значения по умолчанию, и второе поле, использующее функцию addSeconds в формуле для отображения времени в 120 секунд от текущего времени. Чтобы вычислить новое значение времени с помощью этой функции, введите во втором поле следующую формулу:

addSeconds(fldCurrentTime, 120)

Нво

Возвращает текущую системную дату и время.

Если вы хотите вернуть только текущую дату, используйте функцию сегодня.

Синтаксис

now()

Эта функция не использует аргументы.

Пример

Чтобы получить дату и время создания формы, основанной на шаблоне формы, используйте следующую формулу в поле:

now()

сегодня

Возвращает текущую системную дату. Для полей дат списка SharePoint используйте функцию now().

Если вы хотите вернуть дату и время, используйте функцию now.

Синтаксис

сегодня()

Эта функция не использует аргументы.

Пример

Чтобы получить дату создания формы, основанной на шаблоне формы, используйте следующую формулу в поле:

сегодня()

К началу страницы

Функции полей

count

Подсчитывает количество экземпляров поля или группы.

Синтаксис

count(field)

Аргумент Описание
поле Имя повторяющегося поля или повторяющейся группы для подсчета в форме.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться поставщиками для предоставления отчетов о своих продуктах и запасах. Шаблон формы содержит повторяющуюся группу grpProduct для продуктов, отправленных поставщиком. Каждая группа содержит сведения о продукте и его уровне запасов. Когда поставщик добавляет продукт в форму, основанную на этом шаблоне формы, InfoPath создает новый экземпляр повторяющейся группы.

Шаблон формы содержит поле в источнике данных, содержащее количество продуктов, отправленных поставщиком. Чтобы автоматически подсчитать количество продуктов, отправленных поставщиком, то есть количество экземпляров повторяющейся группы grpProduct, используйте следующую формулу в поле Количество продуктов:

count(grpProduct)

Последний

Возвращает последнее вхождение повторяющегося поля или группы.

Примечание

Если вы разрабатываете совместимый с браузером шаблон формы, эта функция не отображается в списке Функции диалогового окна Вставка функции.

Синтаксис

field_name[last()]

Хотя сама функция не имеет обязательных параметров, эту функцию можно использовать в качестве предиката для указанного имени поля.

Пример

Вы разрабатываете шаблон формы, который поставщики будут заполнять, чтобы сообщить о своих запасах продукции. Шаблон формы имеет подключение к данным веб-службе с методом, который проверяет, были ли заполнены сведения о продукте для всех продуктов от поставщика. Методу требуется последний продукт в списке продуктов, отправленных поставщиком.

Сведения о продукте хранятся в разных полях повторяющейся группы с именем grpProduct. Когда поставщик добавляет продукт в форму, InfoPath добавляет новую повторяющуюся группу grpProduct. Если поставщик сообщает о нескольких продуктах, источник данных формы будет содержать несколько экземпляров повторяющейся группы grpProduct.

Чтобы убедиться, что вы отправляете правильные сведения в веб-службу, добавьте поле, которое будет содержать сведения о последнем продукте в группе продуктов от поставщика. Чтобы настроить это поле для автоматического получения последнего продукта, используйте следующую формулу в качестве значения по умолчанию для последнего поля продукта:

grpProduct[last()]

local-name

Возвращает локальное имя поля или группы.

Примечание

  • Если аргумент является повторяющимся полем или повторяющейся группой, функция возвращает значение первого повторяющегося поля или повторяющейся группы.
  • Когда пользователь заполняет форму веб-браузера, формула, использующая эту функцию, отправляет данные формы на сервер для получения возвращаемого значения для этой функции.

Синтаксис

local-name(field)

Аргумент Описание
поле Имя поля, атрибут локального имени которого требуется вернуть.

Пример

Вы разрабатываете шаблон формы, который используется для приложений разрешений. Шаблон формы имеет подключение данных к методу в веб-службе. Для этого метода требуется значение атрибута local-name поля для номера лицензии подрядчика. Имя поля номера лицензии — fldLicenseNumber.

У вас есть поле, которое будет содержать значение атрибута локального имени. Чтобы автоматически получить значение атрибута локального имени поля номера лицензии, используйте следующую формулу в качестве значения по умолчанию для поля, которое будет содержать значение атрибута локального имени:

local-name(fldLicenseNumber)

имя

Возвращает префикс имени и пространства имен поля или группы.

Примечание

  • Если аргумент является повторяющимся полем или повторяющейся группой, функция возвращает имя и префикс первого повторяющегося поля или повторяющейся группы в форме.
  • Когда пользователь заполняет форму на основе шаблона формы с поддержкой браузера, формула, использующая эту функцию, отправляет данные формы на сервер для получения возвращаемого значения для этой функции.

Синтаксис

name(field)

Аргумент Описание
поле Имя поля, префикс пространства имен и имя которого требуется вернуть.

Пример

Вы разрабатываете шаблон формы, который используется для приложений разрешений. Шаблон формы имеет подключение данных к методу в веб-службе. Для этого метода требуется атрибут name поля для номера лицензии подрядчика. Имя поля номера лицензии — fldLicenseNumber.

У вас есть поле, которое будет содержать значение атрибута name. Чтобы автоматически получить значение атрибута name, используйте следующую формулу в качестве значения по умолчанию для поля:

name(fldLicenseNumber)

namespace-URI

Возвращает полное пространство имен поля или группы.

Примечание

  • Если аргумент является набором полей или групп, функция возвращает пространство имен первого поля или группы в форме.
  • Когда пользователь заполняет форму веб-браузера, формула, использующая эту функцию, отправляет данные формы на сервер для получения возвращаемого значения для этой функции.

Синтаксис

namespace-uri(field)

Аргумент Описание
поле Имя поля, URI пространства имен которого требуется извлечь.

Пример

Вы разрабатываете шаблон формы, который используется для приложений разрешений. Шаблон формы отправляет данные в веб-службу. Для обработки данных из формы на основе шаблона формы веб-службе требуется URI пространства имен из определенного поля элемента в источнике данных. Поле в шаблоне формы, содержащее данные URI пространства имен, называется fldComplete.

У вас есть поле, которое будет содержать универсальный код ресурса (URI) пространства имен поля элемента. Чтобы автоматически получить URI пространства имен, используйте следующую формулу в качестве значения по умолчанию для поля, которое будет содержать URI пространства имен:

namespace-uri(fldComplete)

позиция

Возвращает индекс (или позицию) поля или группы относительно других полей или групп в той же родительской группе.

Примечание

Эта функция недоступна в шаблонах форм веб-браузера.

Синтаксис

position()

Пример

Вы разрабатываете шаблон формы, который поставщики будут заполнять, чтобы сообщить о своих запасах продукции. Сведения о продукте хранятся в полях в повторяющейся группе. Повторяющаяся группа привязана к повторяющейся таблице, что позволяет поставщику добавлять новые или изменять существующие сведения о продукте.

В первом столбце повторяющейся таблицы необходимо отобразить номер строки в текстовом поле. Чтобы автоматически отобразить номер строки, когда поставщик добавляет новый продукт в повторяющуюся таблицу, используйте следующую формулу в качестве значения по умолчанию для текстового поля:

position()

К началу страницы

Математические функции

Для формул, содержащих математические функции, обычно требуются аргументы, которые являются целыми числами или десятичными значениями. Чтобы убедиться, что аргументы являются целочисленными или десятичными вместо значений NULL, щелкнитеПараметры> формы файла>Дополнительно, а затем убедитесь, что выбрано поле Обрабатывать пустые значения как ноль проверка.

Средняя

Вычисляет среднее значение числовых значений в поле, которое находится в повторяющейся группе.

Примечание

Повторяющееся поле должно быть числовым типом данных и включаться в группу.

Синтаксис

avg(field)

Аргумент Описание
поле Имена повторяющегося поля в группе, для которой требуется вычислить среднее значение.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться поставщиками для предоставления отчетов о своих продуктах и запасах. Шаблон формы содержит повторяющееся поле с именем fldPrice, которое находится в повторяющейся группе, содержащей данные о каждом продукте, проданном поставщиком. Группа привязана к повторяющимся табличным элементу управления.

У вас есть поле в шаблоне формы, которое будет содержать среднюю цену всех продуктов, продаваемых этим поставщиком. Чтобы вычислить среднюю цену, используйте следующую формулу в поле для средней цены:

avg(fldPrice)

Логических

Возвращает значение true, если поле или группа существуют. В противном случае возвращает значение false.

Это возвращает значение true, даже если элемент управления, связанный с полем, был удален, но поле все еще существует.

Синтаксис

boolean(field)

Аргумент Описание
поле Повторяющееся поле или повторяющаяся группа, проверяемая этой функцией.

Пример

Вы разрабатываете шаблон формы, который поставщики будут использовать для отчета о своих запасах продукции. Сведения о продукте хранятся в разных полях в повторяющейся группе с именем grpProduct. Каждая повторяющаяся группа содержит поля, содержащие сведения о каждом продукте. Если поставщик предоставляет сведения о семи продуктах, форма будет содержать семь повторяющихся групп.

Повторяющаяся группа привязана к элементу управления повторяющейся таблицы, что позволяет поставщику добавлять новые или изменять существующие сведения о продукте. Поставщик может добавлять или удалять строки из повторяющейся таблицы.

Вы хотите отобразить диалоговое окно, если пользователь удаляет все строки в повторяющейся таблице. В источник данных добавьте поле, содержащее слово true, если элемент управления повторяющейся таблицы содержит хотя бы одну строку, а слово false, если в элементе управления повторяющейся таблице нет строк.

Правило в элементе управления повторяющейся таблицей настраивается для отображения диалогового окна, если значение в поле равно false. Чтобы автоматически определить, содержит ли повторяющаяся таблица по крайней мере одну строку, используйте следующую формулу в качестве значения по умолчанию для поля, содержащего слово true или false:

boolean(grpProduct)

Потолка

Округляет число до ближайшего целого числа.

Синтаксис

ceiling(number)

Аргумент Описание
number Имя поля, которое имеет числовое значение.

Пример

Вы разрабатываете шаблон формы отчета о расходах для своей компании. Расходы отправляются в веб-службу, которая имеет параметр, принимаюющий только целочисленные числа. Сумма расходов, отправляемая в этот параметр, должна быть округлена до более высокого целочисленного значения. Сумма расходов хранится в поле с именем fldExpenseAmount, а целочисленное значение — в другом поле. Чтобы вычислить большее целочисленное значение, используйте следующую формулу в качестве значения по умолчанию для другого поля:

ceiling(fldExpenseAmount)

Если пользователь создает форму на основе шаблона формы и вводит 145.87 в поле fldExpenseAmount, значение в поле, содержащее формулу, будет равно 146.

Eval

Возвращает значения поля или группы. Второй аргумент определяет выражение для вычисления поля или группы. Обычно функция eval вложена в функцию, которая работает с полем или группой, например суммой или средой.

Синтаксис

eval(поле, выражение)

Аргумент Описание
поле Имя поля или группы, значения которых будут оцениваться выражением во втором аргументе.
выражение Выражение, которое будет применено к первому аргументу. Выражение может быть функцией XPath или выражением, заключенным в двойные кавычки (" ").

Пример

Вы разрабатываете шаблон формы отчета о расходах для своей компании. Шаблон формы содержит поле fldTotal, содержащее сумму расходов. Поле fldTotal является частью повторяющейся группы с именем grpExpenses. Другое поле привязано к текстовому полю, которое содержит сумму всех расходов. Чтобы отобразить сумму всех расходов при вводе пользователем суммы расходов, используйте следующую формулу в поле total expense:

eval(grpExpenses;sum(fldTotal))

ложь

Возвращает значение false.

Синтаксис

false()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявки на получение разрешений на строительство. Шаблон формы состоит из двух разделов: один — для контактных данных, а другой — для информации, связанной с разрешением на строительство. При заполнении этой формы подрядчики должны будут полностью заполнить раздел контактных данных, прежде чем они смогут заполнить раздел разрешения на строительство.

Для этого создайте правило, присвоив логическому полю значение false, если одно из полей в разделе контактных данных пусто. Поле логическое значение может иметь логическое значение true или логическое значение false. Вы также настраиваете условное форматирование, чтобы скрыть элемент управления разделом, содержащим сведения о разрешении на строительство, если значение логического поля равно false.

Чтобы скрыть элемент управления section, содержащий поля для сведений о разрешении на строительство, настройте правило для запуска этой функции в логическом поле, если одно из полей в разделе контактных данных пусто.

Этаже

Округляет число до ближайшего меньшего целого.

Синтаксис

floor(number)

Аргумент Описание
number Имя поля, которое имеет числовое значение.

Пример

Вы разрабатываете шаблон формы отчета о расходах для своей компании. Расходы отправляются в веб-службу, которая использует параметр, принимающий только целочисленные числа. Сумма расходов, отправляемая в этот параметр, должна быть округлена до нижнего целочисленного значения. Сумма расходов хранится в поле с именем fldExpenseAmount, а целочисленное значение — в другом поле. Чтобы вычислить меньшее целочисленное значение, используйте следующую формулу в качестве значения по умолчанию для другого поля:

floor(fldExpenseAmount)

Макс

Возвращает наибольшее число в поле или группе.

Синтаксис

max(field)

Аргумент Описание
поле Повторяющееся поле в группе или поле в повторяющейся группе, для которого требуется найти наибольшее значение.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться поставщиками для составления отчетов о запасах продуктов. Шаблон формы содержит повторяющуюся группу, включающую несколько полей, содержащих данные о продуктах поставщиков. Поле fldPrice в повторяющейся группе содержит цену продукта.

Другое поле в источнике данных шаблона формы будет содержать самую высокую цену из всех продуктов, продаваемых этим поставщиком. Чтобы вернуть самую высокую цену, используйте следующую формулу в поле самая высокая цена:

max(fldPrice)

min

Возвращает наименьшее число в поле или группе.

Синтаксис

min(field)

Аргумент Описание
поле Повторяющееся поле в группе или поле в повторяющейся группе, для которого требуется найти наибольшее значение.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться поставщиками для составления отчетов о запасах продуктов. Шаблон формы содержит повторяющуюся группу, включающую несколько полей, содержащих данные о продуктах поставщиков. Поле fldPrice в повторяющейся группе содержит цену продукта.

Другое поле в источнике данных шаблона формы будет содержать самую низкую цену из всех продуктов, продаваемых этим поставщиком. Чтобы вернуть самую низкую цену, используйте следующую формулу в поле наименьшей цены:

min(fldPrice)

делай

Возвращает значение true, если логическое значение равно false или NULL. Возвращает значение false, если логическое значение равно true или не null.

Синтаксис

not(boolean_value)

Аргумент Описание
boolean_value Поле с логическим типом данных.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявки на получение разрешений на строительство. Шаблон формы содержит один раздел для контактных данных и другой раздел для информации, связанной с разрешением на строительство. При заполнении этой формы подрядчики должны будут полностью заполнить раздел контактных данных, прежде чем они смогут заполнить раздел разрешения на строительство.

Для этого создайте правило, которое задает для логического поля значение false, если одно из полей в разделе контактных данных остается пустым. Поле логическое значение может иметь логическое значение true или логическое значение false. Затем вы используете ту же формулу, чтобы скрыть элемент управления section, содержащий сведения о разрешении на строительство, если значение логического поля равно false. Чтобы задать это правило, используйте следующую формулу, чтобы задать для логического поля значение false:

not(true())

Число

Преобразует значение в число.

Функция возвращает NaN, если значение в аргументе не может быть преобразовано в число.

Синтаксис

number(value)

Описание аргумента

value Поле со значением для преобразования в число.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявки на получение разрешений на строительство. Шаблон формы содержит раздел, в котором подрядчик может ввести свой бизнес-адрес. Чтобы убедиться, что подрядчик вводит допустимый адрес, используйте подключение данных к веб-службе, которая может проверить адрес. Если адрес проверен, подрядчик может отправить форму в базу данных SQL. База данных SQL использует текстовое поле как для номера адреса, так и для названия улицы. Веб-служба требует, чтобы номер адреса был числовым типом данных, а имя улицы — текстовым типом данных.

Чтобы отправить данные в веб-службу и базу данных SQL, адрес должен храниться как два разных типа данных:

  • Чтобы отправить адрес в веб-службу, номер адреса должен быть числовым типом данных, а название улицы — текстовым типом данных.
  • Чтобы отправить адрес в базу данных SQL, и номер адреса, и название улицы должны быть текстовыми типами данных.

Вы также хотите, чтобы подрядчик ввел свой адрес только один раз. Чтобы преобразовать адрес в правильные типы данных и убедиться, что подрядчик вводит свой адрес только один раз, шаблон формы содержит поле fldAddressNumber для ввода номера адреса и другое поле для ввода названия улицы. Оба поля настроены как текстовые типы данных.

Чтобы отправить номер адреса в веб-службу, необходимо преобразовать данные в поле fldAddressNumber (хранящиеся в виде текстового типа данных) в числовый тип данных. Значение номера адреса, преобразованного в числовой тип данных, хранится в другом поле, настроенном для хранения числовых типов данных.

Чтобы преобразовать номер адреса из текстового типа данных в числовой тип данных, используйте следующую формулу в качестве значения по умолчанию для поля fldAddressNumber:

number(fldAddressNumber)

nz

Возвращает поле или группу со всеми пустыми полями, замененными нулем (0).

Синтаксис

nz(field)

Аргумент Описание
поле Поле, которое необходимо проверка для значения.

Пример

Вы разрабатываете шаблон формы, который поставщики будут заполнять, чтобы сообщить о своих запасах продукции. Поставщик будет отправлять свои запасы продуктов в веб-службу через форму, основанную на шаблоне формы. Метод веб-службы требует, чтобы все элементы, содержащие числовые данные, имели числовое значение. Веб-служба отклоняет форму, содержащую пустой числовой элемент.

Шаблон формы содержит поле с именем fldAvailability, которое содержит число, соответствующее способности поставщика предоставить этот продукт. Поставщик может ввести число в этом поле. Чтобы убедиться, что поставщик может отправить форму на основе шаблона формы в веб-службу и автоматически задать для поля нулевое значение, если поставщик не введет число, используйте следующую формулу в качестве значения по умолчанию для этого поля:

nz(fldAvailability)

Круглый

Округляет число до ближайшего целого числа.

Если не целочисленное значение находится ровно на полпути между двумя округленными целыми числами, возвращаемым значением будет следующее наибольшее целочисленное значение.

Синтаксис

round(number)

Аргумент Описание
number Поле, содержащее число, которое будет округлено с помощью этой формулы.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться поставщиками для составления отчетов о запасах продуктов. Шаблон формы содержит повторяющуюся группу, включающую несколько полей, содержащих данные о продуктах поставщиков. Одно из полей, называемое fldPrice, в повторяющейся группе содержит цену продукта.

Шаблон формы имеет подключение отправки данных к веб-службе. Метод веб-службы требует округления каждой цены до целочисленного значения. Чтобы отправить соответствующее значение в метод веб-службы, добавьте повторяющееся поле в источник данных. В этом поле используется следующая формула для округления цены в поле fldPrice до целочисленного значения:

round(fldPrice)

Сумма

Возвращает сумму всех полей в поле или группе. Каждое поле сначала преобразуется в числовое значение.

Синтаксис

sum(field)

Аргумент Описание
поле Имя поля в повторяющейся группе или повторяющегося поля в группе, значения которой будут добавлены. Чтобы добавить поля из двух разных групп, используйте оператор union (|) для разделения аргументов. Например: sum( имя поля 1 | имя поля 2).

Пример

Вы разрабатываете шаблон формы отчета о расходах. Шаблон формы содержит группу, содержащую элементы расходов. Количество каждого элемента хранится в поле с именем fldExpenseAmount. Группа привязана к повторяющейся таблице, в котором каждая статья расходов отображается в виде строки. Шаблон формы содержит элемент управления "Текстовое поле", в котором отображаются общие расходы. Чтобы отобразить общую сумму расходов, элемент управления "Текстовое поле" содержит следующую формулу:

sum(fldExpenseAmount)

true

Возвращает значение true.

Синтаксис

true()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявки на получение разрешений на строительство. Шаблон формы содержит один раздел с контактными данными и другой раздел для информации, связанной с разрешением на строительство. При заполнении этой формы подрядчики должны будут полностью заполнить раздел контактных данных, прежде чем они смогут заполнить раздел разрешения на строительство.

Для этого создайте правило, которое задает значение логического поля в значение true, если все поля в разделе контактных данных содержат данные. Поле логического значения может иметь логическое значение true или false. Если логическое поле имеет значение true, отображается элемент управления section, содержащий сведения о разрешении на строительство.

Чтобы отобразить элемент управления разделом, содержащий сведения о разрешении на строительство, необходимо настроить правило для запуска этой функции в логическом поле, если все поля в разделе контактных данных содержат данные.

К началу страницы

Текстовые функции

Concat

Объединяет два или более полей текстовых строк в одну текстовую строку.

Синтаксис

concat(text1, text2, ...)

Аргумент Описание
text1 Поле, содержащее текст для объединения в одну строку текста с текстом в аргументе argument2.
text2, ... Ore или дополнительные поля, содержащие текст для объединения с предыдущим полем. Разделяйте текстовые поля запятыми.

Пример

Вы разрабатываете шаблон формы, содержащий поле fldFirstName и поле fldLastName. Добавьте следующую формулу в третье поле, чтобы оно содержало текст "Эта форма была заполнена по <><фамилии> имени".

concat("Эта форма была заполнена ", fldFirstName, " ", fldLastName, ".")

Примечание

Любой фактический текст, введенный в качестве текстового аргумента, включая пробелы или знаки препинания, необходимо вставить в кавычки (").

Содержит

Возвращает значение true, если первое поле или текстовая строка содержит второе. В противном случае возвращает значение false.

Синтаксис

contains(within_text, find_text)

Аргумент Описание
Просматриваемый_текст Поле, содержащее текст для поиска.
Искомый_текст Поле, содержащее текст или текст, заключенный в двойные кавычки (" ") для поиска в первом аргументе.

Пример

Вы разрабатываете шаблон формы с тремя текстовыми полями. Первый позволит пользователю ввести длинный объем текста в первом текстовом элементе управления с именем fldText. Второй позволит пользователю ввести короткий отрезок текста и называется fldFindText. Третье текстовое поле сравнивает второе текстовое поле с первым и указывает, находится ли значение во втором поле и отображается ли результат. Он будет иметь следующую формулу в качестве значения по умолчанию:

contains(fldText,fldFindText)

нормализация пространства

Удаляет пробелы из текстовой строки.

Примечание

Это приведет к удалению всех начальных, конечных и повторяющихся пустых пробелов из поля с текстовым типом данных.

Синтаксис

normalize-space(text)

Аргумент Описание
text Текст, содержащий начальные, конечные или повторяющиеся пробелы, которые требуется удалить. Заключите текст в двойные кавычки (" ").

Пример

Вы разрабатываете шаблон формы, содержащий поле с именем fldText (привязанное к элементу управления "Текстовое поле"). Чтобы нормализовать любой текст, введенный в первом поле, и отобразить значение в первом поле без лишних пробелов, добавьте второе поле со следующей формулой в качестве значения по умолчанию:

normalize-space(fldText)

начинается с

Возвращает значение true, если первое поле или текстовая строка начинается со второго. В противном случае возвращается значение false.

Синтаксис

starts-with(text, start_text)

Аргумент Описание
text Имя поля, содержащего текст для поиска. Разделите аргументы запятой.
start_text Текст, искомый в начале поля, указанного в первом аргументе. Этот аргумент может быть полем или текстом, заключенным в двойные кавычки (" ").

Пример

Вы разрабатываете шаблон формы с тремя текстовыми полями. Первый позволит пользователю ввести длинный объем текста в первом текстовом элементе управления с именем fldText. Второй позволит пользователю ввести короткий отрезок текста и называется fldFindText. Третье текстовое поле сравнивает второе текстовое поле с первым и указывает, начинается ли значение в первом поле со значения во втором поле и отображается результат. Он будет иметь следующую формулу в качестве значения по умолчанию:

starts-with(fldText, fldFindText)

строка

Преобразует значение в текстовую строку.

Синтаксис

string(value)

Аргумент Описание
значение Поле, содержащее значение для преобразования в текст.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявки на получение разрешений на строительство. Шаблон формы содержит раздел, в котором подрядчик может ввести свой бизнес-адрес. Чтобы убедиться, что подрядчик вводит допустимый адрес, шаблон формы имеет подключение к данным веб-службе, которая может проверить адрес. Если адрес проверен, подрядчик может отправить форму в базу данных SQL. База данных SQL использует текстовое поле для адреса улицы. Веб-служба требует, чтобы номер адреса был числовым типом данных, а имя улицы — текстовым типом данных.

Чтобы отправить данные в веб-службу и базу данных SQL, адрес должен храниться в двух разных типах данных:

  • Чтобы отправить адрес в веб-службу, номер адреса должен быть числовым типом данных.
  • Чтобы отправить адрес в базу данных SQL, и номер адреса, и название улицы должны быть текстовыми типами данных.

Вы также хотите, чтобы подрядчик ввел свой адрес только один раз. Чтобы преобразовать адрес в правильные типы данных и убедиться, что подрядчик вводит свой адрес только один раз, форма содержит поле для ввода номера адреса с именем fldAddressNumber и другое поле для ввода названия улицы. Поле fldAddressNumber является числовым типом данных, а поле имени улицы — текстовым типом данных.

Чтобы отправить полный адрес (как номер адреса, так и название улицы) в базу данных SQL, необходимо объединить значения в поле fldAddressNumber и поле street name в одно значение, которое является текстовым типом данных. Сначала необходимо преобразовать числовые данные в поле fldAddressNumber, в котором хранятся данные в виде числового типа данных, в текстовый тип данных. В источник данных добавляется поле, которое будет содержать полный адрес в качестве текстового типа данных.

Чтобы преобразовать текстовые данные в поле fldAddressNumber в текстовый тип данных, чтобы можно было использовать веб-службу, необходимо настроить другое поле, которое будет содержать номер адреса в качестве текстового типа данных. Чтобы преобразовать номер адреса из числового типа данных в текстовый, используйте следующую формулу в качестве значения по умолчанию для этого поля:

string(fldAddressNumber)

длина строки

Возвращает количество символов в текстовой строке.

Синтаксис

string-length(text)

Аргумент Описание
text Поле, значением которого является текст, который требуется подсчитать.

Пример

Вы разрабатываете шаблон формы, содержащий поле с именем fldText, привязанное к элементу управления "Текстовое поле". Шаблон формы содержит второе поле, которое используется для подсчета количества символов, введенных в первую форму. Для этого второе поле будет содержать следующую формулу в качестве значения по умолчанию:

string-length(fldText)

substring

Возвращает определенную часть текстовой строки. Второй аргумент указывает начальную позицию, а третий — количество символов.

Синтаксис

substring(text, start_position, char_count)

Аргумент Описание
text Поле с текстовым типом данных или текстом, заключенным в двойные кавычки (""). Функция выполняет поиск в этом тексте и возвращает все символы из позиции, указанной во втором аргументе, до количества символов, указанного в третьем аргументе, или до конца текста, в зависимости от того, что произойдет первым.
start_position Начальная позиция текста, извлекаемого из первого аргумента. Этот аргумент должен быть целым числом или ссылкой на поле, настроенное для хранения целочисленных типов данных.
char_count Число символов, которые требуется извлечь, начиная с начальной позиции, указанной во втором аргументе. Этот аргумент должен быть целым числом или ссылкой на поле, настроенное для хранения целочисленных типов данных.

Пример

Вы разрабатываете шаблон формы, содержащий следующие поля и элементы управления:

  • Поле с именем fldText, привязанное к элементу управления "Текстовое поле". Это поле содержит текст, который выполняет функция.
  • Поле с именем fldStartingPosition, привязанное к элементу управления "Текстовое поле". Это поле настроено как целое числовой тип данных. Поле содержит начальную позицию для функции.
  • Поле с именем fldNumberOfCharacters, привязанное к элементу управления "Текстовое поле". Это поле настроено как целое числовой тип данных. Поле содержит количество символов, возвращаемых функцией.
  • Элемент управления "Текстовое поле", отображающий результаты функции. Элемент управления "Текстовое поле" содержит следующую формулу:

substring(fldText, fldStartingPosition, fldNumberOfCharacters)

Если пользователь вводит сообщение "Эта форма была создана на основе шаблона формы InfoPath". в первом текстовом поле, затем 4 во втором и 16 в третьем, затем четвертое текстовое поле будет содержать "s form was creat".

подстрока после

Возвращает текст в первой текстовой строке, следующей за первым вхождением второй текстовой строки.

Синтаксис

substring-after(text, find_text)

Аргумент Описание
text Поле с текстовым типом данных или текстом, заключенным в двойные кавычки (""). Функция выполняет поиск текста в этом аргументе, а затем возвращает все символы, следующие за текстом во втором аргументе.
Искомый_текст Текст для поиска в тексте первого аргумента. Текст может быть значением в поле с текстовым типом данных или текстом, заключенным в двойные кавычки (""). Функция выполняет поиск текста в первом аргументе для этого текста, а затем возвращает все символы, следующие за текстом в этом аргументе.

Пример

Вы разрабатываете шаблон формы, содержащий следующие поля и элементы управления:

  • Поле с именем fldText, привязанное к элементу управления "Текстовое поле". Это поле содержит текст, который выполняет функция.
  • Поле с именем fldSubstringText, привязанное к элементу управления "Текстовое поле". Это поле содержит текст, который является вторым аргументом функции.
  • Элемент управления "Текстовое поле", отображающий результаты функции. Элемент управления "Текстовое поле" содержит следующую формулу:

substring-after(fldText, fldSubstringText)

Если пользователь вводит сообщение "Эта форма была создана на основе шаблона формы InfoPath". в поле fldText и InfoPath во втором элементе управления "Текстовое поле" будет содержаться "шаблон формы".

подстрока -before

Возвращает текст в первой текстовой строке, которая предшествует первому вхождаемости второй текстовой строки.

Синтаксис

substring-before(text, find_text)

Аргумент Описание
text Поле с текстовым типом данных или текстом, заключенным в двойные кавычки (""). Функция выполняет поиск текста в этом аргументе, а затем возвращает все символы перед текстом во втором аргументе, find_text.
Искомый_текст Значение для поиска в текстовом аргументе. Это значение может быть значением в поле с текстовым типом данных или текстом, заключенным в двойные кавычки (""). Функция выполняет поиск текста в первом аргументе (тексте) для этого текста, а затем возвращает все символы перед текстом в этом аргументе.

Пример

Вы разрабатываете шаблон формы со следующими полями и элементами управления:

  • Поле с именем fldText, привязанное к элементу управления "Текстовое поле". Это поле содержит текст, который выполняет функция.
  • Поле с именем fldSubstringText, привязанное к элементу управления "Текстовое поле". Это поле содержит текст, который является вторым аргументом функции.
  • Элемент управления "Текстовое поле Aa", отображающий результаты функции. Элемент управления "Текстовое поле" содержит следующую формулу:

substring-before(fldText, fldSubstringText)

Если пользователь вводит сообщение "Эта форма была создана на основе шаблона формы InfoPath". в поле fldText и "created" во втором элементе управления "Текстовое поле" будет содержаться "Эта форма была".

перевод

Возвращает первую текстовую строку с каждым символом во второй текстовой строке, замененным символом в соответствующей позиции в третьей текстовой строке.

Синтаксис

translate(text, find_chars, replace_chars)

Аргумент Описание
text Имя поля, содержащего текст, символы которого будут заменены. Разделяйте аргументы запятыми.
find_chars Символ или значение поля с текстовым типом данных, который будет заменен символами в третьем аргументе. Разделяйте аргументы запятыми.
replace_chars Символ или значение поля с текстовым типом данных, который заменит каждый экземпляр символа во втором аргументе.

Пример

Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявки на получение разрешений на строительство. Шаблон формы содержит раздел, в котором подрядчик может ввести свой бизнес-адрес. Раздел содержит поле fldStreetAddress, привязанное к элементу управления "Текстовое поле", в котором подрядчик может ввести свой адрес улицы.

Чтобы убедиться, что подрядчик вводит допустимый адрес, у вас есть подключение к веб-службе, которая может проверить адрес. Веб-службе требуются символы нижнего регистра в адресе.

Чтобы преобразовать любой символ верхнего регистра в адресе улицы в нижний регистр, добавьте в источник данных другое поле, содержащее адрес улицы, преобразованный в строчные буквы. Значение по умолчанию этого поля содержит следующую формулу:

translate(fldStreetAddress, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnoprstuvwxyz)

К началу страницы

Функции URL-адресов

SharePointListUrl

Возвращает адрес списка SharePoint или библиотеки форм, в которых размещена форма (только InfoPath 2010).

Синтаксис

SharePointListUrl()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на расположение, в котором размещен список, например "http://sharepointserver/site/list/". Для этого добавьте элемент управления гиперссылкой и задайте для него значение Только для чтения, а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:

SharePointListUrl()

Примечание

Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() вернет только "http://sharepointserver/site/list/".

SharePointServerRootUrl

Возвращает адрес сервера SharePoint, на котором размещена форма (только InfoPath 2010).

Синтаксис

SharePointServerRootUrl()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на корневой каталог сервера SharePoint, на котором размещен список, например "http://sharepointserver/site/list/". Для этого добавьте элемент управления гиперссылкой и задайте для него значение Только для чтения, а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:

SharePointServerRootUrl()

Примечание

Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() вернет только "http://sharepointserver/site/list/".

SharePointCollectionUrl

Возвращает адрес семейства веб-сайтов SharePoint, в котором размещена форма (только InfoPath 2010).

Синтаксис

SharePointCollectionUrl()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на семейство веб-сайтов сервера SharePoint, на котором размещен список, например "http://sharepointserver/sitecollection/". Для этого добавьте элемент управления гиперссылкой и задайте для него значение Только для чтения, а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:

SharePointCollectionUrl()

Примечание

Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() вернет только "http://sharepointserver/sitecollection/".

SharePointSiteUrl

Возвращает адрес сайта SharePoint, на котором размещена форма (только InfoPath 2010).

Синтаксис

SharePointSiteUrl()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на сайт SharePoint, на котором размещен список, например "http://sharepointserver/site/". Для этого добавьте элемент управления гиперссылкой и задайте для него значение Только для чтения, а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:

SharePointSiteUrl()

Примечание

Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() вернет только "http://sharepointserver/site/".

К началу страницы

Функция userName

Пользователя

Возвращает имя пользователя, заполнившего форму (Майкрософт InfoPath 2007 и более поздних версий).

Примечание

Если пользователь заполняет форму в веб-браузере, имя пользователя извлекается из Microsoft Windows SharePoint Services 3.0 или более поздней версии.

Синтаксис

userName()

Эта функция не использует аргументы.

Пример

Вы разрабатываете шаблон формы отчета о расходах для своей компании. Ваша кредитная карта компания отправляет записи о расходах ваших сотрудников в электронной форме в базу данных, которую ведет ваша компания. Чтобы получить записи о расходах для сотрудника, базе данных требуется имя пользователя сотрудника, который заполняет форму, основанную на шаблоне формы.

Вы добавляете поле в источник данных шаблона формы, чтобы сохранить имя пользователя сотрудника. Вы также создаете подключение к данным запроса, которое использует значение этого поля в запросе для получения затрат.

Чтобы убедиться, что сотрудник, заполняющий отчет о расходах, использует правильное имя пользователя, привязываете поле к элементу управления "Текстовое поле". Чтобы отобразить имя пользователя, создающего форму на основе этого шаблона формы, используйте следующую формулу в качестве значения по умолчанию поля, привязанного к элементу управления "Текстовое поле":

userName()

К началу страницы