Важно
Поддержка Microsoft InfoPath 2013 была прекращена 14 июля 2026 г. Рекомендуется перенести существующие формы и рабочие процессы InfoPath в поддерживаемые решения Microsoft 365. Дополнительные сведения о прекращении поддержки InfoPath.
Благодаря формулам можно получить больше пользы от создаваемых правил, чем при использовании базовых, предопределенных правил. Например, формулы используются для вычисления текущей или будущей даты или даже для сцепления текста.
В этом разделе...
Обзор
Формула — это выражение XPath (язык пути XML), состоящее из значений, полей или групп, функций и операторов, которые используются для вычисления и отображения других значений. С помощью формулы можно создать новое значение для поля и отобразить его в элементе управления, связанном с этим полем. Формулы можно использовать следующим образом:
Вычислите математическое значение на основе значений, указанных при разработке шаблона, или на основе значений, которые пользователь вводит при заполнении шаблона формы.
Выполнение правила на основе значения, вычисленного с помощью формулы.
Отображение доступного только для чтения текста, который вычисляется из других элементов управления, или отображение значения другого элемента управления.
Функция — это выражение, возвращающее значение по результатам вычислений. Значения, используемые в функциях, называются аргументами. В дополнение к некоторым функциям InfoPath можно использовать стандартные функции XPath 1.0, включенные в InfoPath. Функции состоят из следующих трех частей:
- Name (Имя) Название функции обычно указывает на действие, которое она будет выполнять.
- Возвращаемое значение Результат функции.
- Аргументы Значения, используемые функцией для вычисления.
Для функции могут потребоваться аргументы для возврата значения. Если функции требуются аргументы, необходимо знать их количество и тип данных каждого аргумента. Функция не будет работать, если указать неверное количество или тип обязательных аргументов.
На следующем рисунке показана связь между функциями, выражениями и формулами.
Добавление элемента управления "Вычисляемое значение"
Элементы управления "вычисляемое значение" можно использовать для отображения текста только для чтения, отображения значения другого элемента управления в форме и создания формул на основе выражений XPath. Например, если разрабатывается шаблон формы отслеживания расходов, можно добавить элемент управления "вычисляемое значение" для отображения общей суммы введенных расходов.
Примечание
Такой элемент управления "вычисляемое значение" только отображает данные, но не сохраняет их, поэтому его следует использовать только в том случае, если необходимо не сохранять его значение или ссылаться на него в другой формуле.
Поместите курсор в то место шаблона формы, куда вы хотите вставить элемент управления.
На вкладке " Главная " в группе "Элементы управления " выберите элемент управления "Вычисленное значение ".
В диалоговом окне "Вставка вычисляемого значения " выполните одно из указанных ниже действий.
Чтобы ввести текст или выражение XPath непосредственно в элемент управления "Вычисляемое значение", введите запрос в поле XPath .
Чтобы вставить формулу, нажмите кнопку Изменить формулу
, а затем введите нужную формулу в текстовое поле Формула , используя при необходимости следующие элементы:- Чтобы вставить в формулу поле или группу, нажмите кнопку Вставить поле или группу, щелкните поле или группу в диалоговом окне Выбор поля или группы и нажмите кнопку ОК.
- Чтобы вставить в формулу функцию, нажмите кнопку "Вставить функцию", выберите функцию в диалоговом окне "Вставка функции" и нажмите кнопку "ОК".
Если функции требуются параметры, выберите ее в диалоговом окне "Вставка функции", нажмите кнопку ОК, а затем в тексте формулы дважды щелкните указанное место и выберите нужный параметр, прежде чем нажать кнопку ОК. - Чтобы вставить в формулу значение или математический оператор, введите в поле формулы значение или символ математической операции.
К математическим операторам относятся сложение (+), вычитание (-), умножение (*) и деление (/).
Математические формулы обычно используют целые или десятичные значения в качестве аргументов. Чтобы избежать пустых значений в формуле, на вкладке "Файл " щелкните "Параметры формы ", затем выберите "Дополнительно " и убедитесь, что установлен флажок "Обрабатывать пустые значения как ноль ".
Добавление формулы в элемент управления
Хотя элемент управления "вычисляемое значение" можно использовать для отображения результатов формулы, он не ограничивается им. Формулу можно также использовать для установки значений по умолчанию для других элементов управления, таких как текстовые поля. Задать значение по умолчанию для элемента управления можно двумя способами. Можно использовать фиксированное значение по умолчанию, просто введя нужное значение в поле "Значение " диалогового окна "Поле" или "Свойства группы ", или воспользоваться формулой, чтобы задать значение по умолчанию для поля на основе других значений в форме. Чтобы задать значение по умолчанию для поля на основе формулы, выполните указанные ниже действия.
Выберите элемент управления, в который нужно добавить формулу, а затем в разделе "Средства управления" на вкладке "Свойства " в группе "Свойства " щелкните "Значение по умолчанию".
Нажмите кнопку Вставить формулу
рядом с полем "Значение".Введите нужную формулу в текстовое поле «Формула », при необходимости используя следующие данные:
Чтобы вставить в формулу поле или группу, нажмите кнопку Вставить поле или группу, щелкните поле или группу в диалоговом окне Выбор поля или группы и нажмите кнопку ОК.
Чтобы вставить в формулу функцию, нажмите кнопку "Вставить функцию", выберите функцию в диалоговом окне "Вставка функции" и нажмите кнопку "ОК".
Если функции требуются параметры, выберите ее в диалоговом окне "Вставка функции", нажмите кнопку ОК, а затем в тексте формулы дважды щелкните указанное место и выберите нужный параметр, прежде чем нажать кнопку ОК.Чтобы вставить в формулу значение или математический оператор, введите значение или символ математической операции в поле "Формула ".
К математическим операторам относятся сложение (+), вычитание (-), умножение (*) и деление (/).Совет
Математические формулы обычно используют целые или десятичные значения в качестве аргументов. Чтобы избежать пустых значений в формуле, на вкладке "Файл " щелкните "Параметры формы" и выберите "Дополнительно". Убедитесь, что установлен флажок Обрабатывать пустые значения как ноль .
Чтобы отредактировать формулу как формулу XPath, выберите поле проверки Edit XPath (advanced), в результате чего формула будет изменена на версию выражения XPath формулы.
Чтобы выполнить проверку синтаксиса формулы, нажмите кнопку "Проверить формулу". Если формула содержит ошибки:
Чтобы просмотреть ошибки в формуле, щелкните " Показать подробности " в диалоговом окне Microsoft InfoPath . Ниже приведены некоторые рекомендации по устранению этих ошибок.
- При использовании функции в формуле убедитесь в правильности ее аргументов. Для некоторых функций требуются поля или группы, а для других — определенные значения в качестве аргументов.
- При необходимости удалите формулу и введите ее повторно, чтобы убедиться в правильности ее ввода.
- Нажмите кнопку ОК.
- Если требуется обновлять значение по умолчанию поля при изменении значений, проверка пересчете формулы, выберите параметр "Обновлять значение при пересчете формулы". В этом случае нажмите кнопку ОК и в разделе Средства управления на вкладке Свойства в группе Свойства щелкните Свойства элемента управления. Перейдите на вкладку "Дисплей" и установите флажок "Проверка только для чтения".
Использование формулы в правиле
При указании условий в проверке, форматировании или правилах действий можно использовать формулу для управления условием. Это можно сделать, выбрав Использовать формулу в третьем раскрывающемся списке в диалоговом окне Условие при назначении правила элементу управления или шаблону формы.
Функции даты и времени
addDays
Добавляет дни к дате или дате и времени.
Синтаксис
addDays(дата; дни)
| Аргумент | Описание |
|---|---|
| date | Количество дней во втором аргументе прибавляется к дате в этом аргументе. Этот аргумент может иметь тип данных Date (date) или Date and Time (dateTime). |
| дн. | Количество дней, которое требуется прибавить к дате в первом аргументе. Этот параметр должен быть целочисленным типом данных. Если в этом аргументе используется отрицательное число, возвращаемое значение будет более ранней датой. |
Пример
Вам нужно, чтобы поле в шаблоне формы содержало дату, отстоящую от текущей на 60 дней. Шаблон формы содержит поле fldToday, в котором по умолчанию используется текущая дата. Чтобы вычислить новую дату с помощью этой функции, используйте следующую формулу в поле новой даты:
addDays(fldToday, 60)
addSeconds
Добавляет секунды к времени или дате и времени.
Синтаксис
addSeconds(время; секунды)
| Аргумент | Описание |
|---|---|
| time | Значение даты и времени или значение времени, являющееся ссылкой на другое поле в шаблоне формы или результатом функции даты или времени, например now() или today(). Количество секунд во втором аргументе прибавляется ко времени в этом аргументе. Этот аргумент может иметь тип данных Date (date) или Date and Time (dateTime). Если это тип данных Time, возвращается тип данных Time. Если это тип данных Date, возвращается тип данных Date and Time. |
| секунды | Количество секунд, которое требуется прибавить к значению даты и времени или значению времени в первом аргументе. Поле в этом параметре должно иметь целочисленный тип данных. Если в этом аргументе используется отрицательное число, возвращаемое значение будет либо более ранней датой и временем, либо более ранним временем. |
Пример
Шаблон формы содержит поле fldCurrentTime, в котором по умолчанию используется текущее время, и второе поле, в котором используется функция addSeconds для отображения времени в 120 секундах от текущего. Чтобы вычислить новое значение времени с помощью этой функции, введите во втором поле следующую формулу:
addSeconds(fldCurrentTime, 120)
сейчас
Возвращает текущие системные дату и время.
Чтобы возвращалась только текущая дата, используйте функцию сегодня.
Синтаксис
сейчас()
Эта функция не использует аргументы.
Пример
Чтобы получить дату и время создания формы, основанной на вашем шаблоне, используйте следующую формулу в поле:
сейчас()
сегодня
Возвращает текущую системную дату. Для полей даты списка SharePoint используйте функцию now().
Если требуется вернуть как дату, так и время, используйте функцию NOW.
Синтаксис
сегодня()
Эта функция не использует аргументы.
Пример
Чтобы получить дату создания формы, основанной на вашем шаблоне, используйте в поле следующую формулу:
сегодня()
Функции поля
count
Подсчитывает количество вхождений поля или группы.
Синтаксис
count(field)
| Аргумент | Описание |
|---|---|
| поле | Имя повторяющегося поля или повторяющейся группы для подсчета в форме. |
Пример
Вы разрабатываете шаблон формы, формы которого поставщики будут использовать для отчетности о своей продукции и запасах. Шаблон формы содержит повторяющуюся группу grpProduct для продуктов, представленных поставщиком. Каждая группа содержит сведения о продукте и уровне его складских запасов. Когда поставщик добавляет продукт в форму, основанную на этом шаблоне формы, InfoPath создает новый экземпляр повторяющейся группы.
В источнике данных шаблона формы есть поле, содержащее количество продуктов, представленных поставщиком. Для автоматического подсчета количества товаров, отправленных поставщиком, которое является количеством экземпляров повторяющейся группы grpProduct, используйте следующую формулу в поле number of products:
count(grpProduct)
Последняя версия
Возвращает последнее повторение повторяющегося поля или группы.
Примечание
Если вы разрабатываете шаблон формы, совместимый с браузером, эта функция не отображается в списке "Функции" диалогового окна "Вставка функции".
Синтаксис
field_name[last()]
Хотя функция сама по себе не имеет обязательных параметров, ее можно использовать как предикат для указанного имени поля.
Пример
Вы разрабатываете шаблон формы, который поставщики будут заполнять для составления отчетов о своих запасах продукции. Шаблон формы имеет подключение к данным веб-службы, имеющей метод, проверяющий, были ли заполнены сведения обо всех продуктах от поставщика. Методу нужен последний товар в списке продуктов, который был представлен поставщиком.
Сведения о продукте хранятся в разных полях повторяющейся группы grpProduct. Когда поставщик добавляет продукт в форму, InfoPath добавляет новую повторяющуюся группу grpProduct. Если поставщик отчитывается по нескольким продуктам, источник данных формы будет содержать несколько экземпляров повторяющейся группы grpProduct.
Чтобы убедиться в правильности отправки информации в веб-службу, вы добавляете поле, которое будет содержать информацию о последнем продукте в группе продуктов от поставщика. Чтобы настроить в этом поле автоматическое получение последнего продукта, используйте следующую формулу в качестве значения по умолчанию для поля последнего продукта:
grpProduct[last()]
local-name
Возвращает локальное имя поля или группы.
Примечание
- Если аргумент является повторяющимся полем или повторяющейся группой, функция возвращает значение первого повторяющегося поля или повторяющейся группы.
- Когда пользователь заполняет форму в веб-браузере, формула, использующая эту функцию, отправляет данные формы на сервер, чтобы получить значение, возвращаемое этой функцией.
Синтаксис
local-name(поле)
| Аргумент | Описание |
|---|---|
| поле | Имя поля, локальное имя которого вы хотите вернуть. |
Пример
Вы разрабатываете шаблон формы, который используется для заявлений на получение разрешения. Шаблон формы имеет подключение к данным метода веб-службы. Для этого метода требуется значение атрибута local-name поля для лицензионного номера подрядчика. Имя поля номера лицензии — fldLicenseNumber.
У вас есть поле, которое будет содержать значение атрибута local name. Чтобы автоматически получить значение атрибута локального имени поля номера лицензии, используйте следующую формулу в качестве значения по умолчанию для поля, которое будет содержать значение атрибута локального имени:
local-name(fldLicenseNumber)
имя
Возвращает имя и префикс пространства имен поля или группы.
Примечание
- Если аргумент является повторяющимся полем или повторяющейся группой, функция возвращает имя и префикс первого повторяющегося поля или повторяющейся группы в форме.
- Когда пользователь заполняет форму на основе шаблона формы с поддержкой браузера, формула, в которой используется эта функция, отправляет данные формы на сервер, чтобы получить значение, возвращаемое этой функцией.
Синтаксис
name(field)
| Аргумент | Описание |
|---|---|
| поле | Имя поля, префикс и имя которого находятся в пространстве имен. |
Пример
Вы разрабатываете шаблон формы, который используется для заявлений на получение разрешения. Шаблон формы имеет подключение к данным метода веб-службы. Для этого метода требуется атрибут имени поля для номера лицензии подрядчика. Имя поля номера лицензии — fldLicenseNumber.
У вас есть поле, которое будет содержать значение атрибута name. Чтобы автоматически получить значение атрибута name, используйте следующую формулу в качестве значения по умолчанию для поля:
name(fldLicenseNumber)
namespace-uri
Возвращает полное пространство имен поля или группы.
Примечание
- Если аргумент является набором полей или групп, функция возвращает пространство имен первого поля или группы в форме.
- Когда пользователь заполняет форму в веб-браузере, формула, использующая эту функцию, отправляет данные формы на сервер, чтобы получить значение, возвращаемое этой функцией.
Синтаксис
namespace-uri(field)
| Аргумент | Описание |
|---|---|
| поле | Имя поля, URI пространства имен которого вы хотите получить. |
Пример
Вы разрабатываете шаблон формы, который используется для заявлений на получение разрешения. Шаблон формы передает данные веб-службе. Для обработки данных из формы, основанной на шаблоне формы, веб-службе требуется универсальный код ресурса (URI) пространства имен из поля определенного элемента в источнике данных. Поле в шаблоне формы, содержащее данные URI пространства имен, называется fldComplete.
У вас есть поле, которое будет содержать универсальный код ресурса (URI) пространства имен поля элемента. Чтобы автоматически получить универсальный код ресурса (URI) пространства имен, воспользуйтесь следующей формулой в качестве значения по умолчанию для поля, которое будет содержать URI пространства имен:
namespace-uri(fldComplete)
позиция
Возвращает индекс (или позицию) поля или группы относительно других полей или групп в той же родительской группе.
Примечание
Эта функция недоступна в шаблонах форм веб-браузера.
Синтаксис
position()
Пример
Вы разрабатываете шаблон формы, который поставщики будут заполнять для составления отчетов о своих запасах продукции. Сведения о продукте хранятся в полях повторяющейся группы. Повторяющаяся группа привязана к повторяющейся таблице, что позволяет поставщику добавлять новую или пересматривать существующую информацию о продукте.
В первом столбце повторяющейся таблицы нужно отобразить номер строки в текстовом поле. Чтобы автоматически отображать номер строки, когда поставщик добавляет новый товар в повторяющуюся таблицу, используйте следующую формулу в качестве значения по умолчанию для текстового поля:
position()
Математические функции
Для формул, содержащих математические функции, аргументы обычно являются целыми или десятичными значениями. Чтобы аргументы были целыми или десятичными значениями, а не пустыми, нажмите кнопку "Параметры>формы файла>"(Дополнительно) и убедитесь, что установлен флажок "Обрабатывать пустые значения как нулевую проверку".
ср.
Вычисляет среднее арифметическое числовых значений поля в повторяющейся группе.
Примечание
Повторяющееся поле должно быть числовым типом данных и быть включено в группу.
Синтаксис
avg(поле)
| Аргумент | Описание |
|---|---|
| поле | Имена повторяющегося поля в группе, для которой требуется вычислить среднее значение. |
Пример
Вы разрабатываете шаблон формы, формы которого поставщики будут использовать для отчетности о своих продуктах и запасах. Шаблон формы содержит повторяющееся поле fldPrice, входящее в повторяющуюся группу, содержащую данные о каждом продукте, продаваемом поставщиком. Группа привязана к элементу управления "Повторяющаяся таблица".
В шаблоне формы есть поле, которое будет содержать среднюю цену всех продуктов, продаваемых этим поставщиком. Чтобы вычислить среднюю цену, используйте следующую формулу в поле для средней цены:
avg(fldPrice)
логическое значение
Возвращает значение true, если есть поле или группа. В противном случае возвращает значение false.
Значение true возвращается, даже если элемент управления, связанный с полем, был удален, но поле по-прежнему существует.
Синтаксис
логическое значение(поле)
| Аргумент | Описание |
|---|---|
| поле | Повторяющееся поле или группа повторов, проверяемые этой функцией. |
Пример
Вы разрабатываете шаблон формы, который поставщики будут использовать для составления отчетов о своих запасах продукции. Сведения о продукте хранятся в разных полях в повторяющейся группе с именем grpProduct. Каждая повторяющаяся группа содержит поля, содержащие сведения о каждом продукте. Если поставщик предоставляет сведения о семи товарах, форма будет содержать семь повторяющихся групп.
Повторяющаяся группа привязана к элементу управления повторяющейся таблицей, который позволяет поставщику добавлять новую или пересматривать существующую информацию о продукте. Поставщик может добавлять или удалять строки из повторяющейся таблицы.
Если пользователь удалит все строки в повторяющейся таблице, должно отображаться диалоговое окно. В источник данных добавляется поле, содержащее слово "истина", если в элементе управления "повторяющаяся таблица" есть хотя бы одна строка, и слово "ложь", если в элементе управления "повторяющаяся таблица" нет строк.
Правило в элементе управления "Повторяющаяся таблица" настраивается для отображения диалогового окна, если значение в поле имеет значение ЛОЖЬ. Чтобы автоматически определить, содержит ли повторяющаяся таблица хотя бы одну строку, воспользуйтесь следующей формулой, поскольку значение по умолчанию для поля содержит слово "истина" или "ложь".
boolean(grpProduct)
Потолок
Округляет число до ближайшего целого числа.
Синтаксис
Потолок (число)
| Аргумент | Описание |
|---|---|
| number | Имя поля, которое имеет числовое значение. |
Пример
Вы разрабатываете шаблон формы отчета о расходах для своей компании. Расходы отправляются в веб-службу, которая имеет параметр, принимающий только целые числа. Сумма расходов, которая указывается на этот параметр, должна быть округлена до большего целого значения. Сумма расхода хранится в поле fldExpenseAmount, а целое значение — в другом поле. Чтобы вычислить старшее целое значение, воспользуйтесь следующей формулой в качестве значения по умолчанию для другого поля:
ceiling(fldExpenseAmount)
Если пользователь создает форму на основе вашего шаблона формы и вводит число 145,87 в поле fldExpenseAmount, значение в поле, содержащее формулу, будет 146.
Оценка
Возвращает значения поля или группы. Второй аргумент задает выражение, вычисляемое для поля или группы. Обычно функция eval вложена в функцию, которая работает с полем или группой, например sum или avg.
Синтаксис
eval(поле; выражение)
| Аргумент | Описание |
|---|---|
| поле | Имя поля или группы, значения которых вычисляются выражением во втором аргументе. |
| выражение | Выражение, которое будет применено к первому аргументу. Выражение может быть либо функцией XPath, либо выражением, заключенным в двойные кавычки (" "). |
Пример
Вы разрабатываете шаблон формы отчета о расходах для своей компании. Шаблон формы содержит поле fldTotal, содержащее сумму расходов. Поле fldTotal является частью повторяющейся группы grpExpenses. Другое поле привязано к текстовому полю, содержащему сумму всех расходов. Чтобы отобразить сумму всех расходов по мере ввода суммой расходов, используйте следующую формулу в поле общих расходов:
eval(grpExpenses,sum(fldTotal))
ложь
Возвращает значение false.
Синтаксис
false()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявок на получение разрешений на строительство. Шаблон формы состоит из двух разделов: один для контактных данных, а другой для информации, связанной с разрешением на строительство. При заполнении этой формы подрядчики должны будут полностью заполнить раздел контактной информации, прежде чем они смогут заполнить раздел разрешения на строительство.
Для этого создается правило, устанавливающее логическое поле со значением False, если хотя бы одно из полей в разделе контактных данных пусто. Логическое поле значения может иметь логическое значение True или логическое значение False. Кроме того, условное форматирование скрыто для элемента управления разделом, содержащего информацию о разрешении на строительство, если логическое значение поля равно FALSE.
Чтобы скрыть элемент управления разделом, содержащий поля для информации о разрешении на строительство, настройте правило для запуска этой функции в логическом поле, если хотя бы одно из полей в разделе контактной информации пусто.
этаж
Округляет число до ближайшего меньшего целого.
Синтаксис
этаж (число)
| Аргумент | Описание |
|---|---|
| number | Имя поля, которое имеет числовое значение. |
Пример
Вы разрабатываете шаблон формы отчета о расходах для своей компании. Расходы отправляются в веб-службу, которая использует параметр, принимающий только целые числа. Сумма расходов, которая указывается на этот параметр, должна быть округлена до меньшего целого значения. Сумма расхода хранится в поле fldExpenseAmount, а целое значение — в другом поле. Чтобы вычислить младшее целое значение, воспользуйтесь следующей формулой в качестве значения по умолчанию для другого поля:
floor(fldExpenseAmount)
макс
Возвращает наибольшее число в поле или группе.
Синтаксис
макс(поле)
| Аргумент | Описание |
|---|---|
| поле | Повторяющееся поле в группе или поле в повторяющейся группе, для которого требуется найти наибольшее значение. |
Пример
Вы разрабатываете шаблон формы, формы которого поставщики будут использовать для формирования отчетов о своих запасах продукции. Шаблон формы содержит повторяющуюся группу, включающую несколько полей, содержащих данные о продуктах поставщиков. Поле fldPrice в повторяющейся группе содержит цену продукта.
Другое поле в источнике данных шаблона формы будет содержать самую высокую цену среди всех продуктов, продаваемых этим поставщиком. Чтобы вернуть наибольшую цену, используйте следующую формулу в поле максимальной цены:
max(fldPrice)
min
Возвращает наименьшее число в поле или группе.
Синтаксис
мин(поле)
| Аргумент | Описание |
|---|---|
| поле | Повторяющееся поле в группе или поле в повторяющейся группе, для которого требуется найти наибольшее значение. |
Пример
Вы разрабатываете шаблон формы, формы которого поставщики будут использовать для формирования отчетов о своих запасах продукции. Шаблон формы содержит повторяющуюся группу, включающую несколько полей, содержащих данные о продуктах поставщиков. Поле fldPrice в повторяющейся группе содержит цену продукта.
Другое поле в источнике данных шаблона формы будет содержать наименьшую цену среди всех продуктов, продаваемых этим поставщиком. Чтобы вернуть наименьшую цену, используйте следующую формулу в поле наименьшей цены:
min(fldPrice)
делай
Возвращает значение true, если логическое значение равно false или null. Возвращает значение false, если логическое значение равно ИСТИНА или не равно NULL.
Синтаксис
not(boolean_value)
| Аргумент | Описание |
|---|---|
| boolean_value | Поле с логическим типом данных. |
Пример
Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявок на получение разрешений на строительство. В шаблоне формы есть один раздел для контактных данных, а другой раздел для информации, связанной с разрешением на строительство. При заполнении этой формы подрядчики должны будут полностью заполнить раздел контактной информации, прежде чем они смогут заполнить раздел разрешения на строительство.
Для этого вы создаете правило, которое задает логическое значение ЛОЖЬ, если хотя бы одно из полей в разделе контактных данных оставлено пустым. Поле логического значения может иметь логическое значение true или логическое значение false. Затем по той же формуле скрывается элемент управления разделом, содержащий сведения о разрешении на строительство, если логическое значение поля равно ЛОЖЬ. Чтобы установить это правило, воспользуйтесь следующей формулой, чтобы задать для логического поля значение false:
not(true())
Число
Преобразует значение в число.
Функция возвращает NaN, если значение аргумента невозможно преобразовать в число.
Синтаксис
Число(значение)
ArgumentDescription
valueПоле со значением, которое нужно преобразовать в число.
Пример
Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявок на получение разрешений на строительство. Шаблон формы содержит раздел, где подрядчик может ввести свой рабочий адрес. Чтобы убедиться, что подрядчик вводит действительный адрес, вы используете соединение для передачи данных с веб-службой, которая может проверить адрес. Если адрес проверен, подрядчик может отправить форму в базу данных SQL. База данных SQL использует текстовое поле как для номера адреса, так и для названия улицы. Для веб-службы требуется, чтобы номер адреса имел числовой тип данных, а название улицы — текстовый тип данных.
Чтобы отправить данные как в веб-службу, так и в базу данных SQL, адрес должен быть сохранен в виде двух разных типов данных:
- Чтобы отправить адрес в веб-службу, номер адреса должен быть числовым типом данных, а название улицы должно быть текстовым типом данных.
- Чтобы отправить адрес в базу данных SQL, и номер адреса, и название улицы должны быть текстовыми данными.
Вы также хотите, чтобы подрядчик вводил свой адрес только один раз. Чтобы преобразовать адрес в правильные типы данных и гарантировать, что подрядчик введет свой адрес только один раз, в шаблоне формы есть поле fldAddressNumber для ввода номера адреса и еще одно поле для ввода названия улицы. Оба поля настроены как текстовые типы данных.
Чтобы отправить номер адреса в веб-службу, необходимо преобразовать данные в поле fldAddressNumber (сохраненном как текстовый тип данных) в числовой тип данных. Значение адресного номера, преобразованного в числовой тип данных, хранится в другом поле, настроенном для хранения числовых типов данных.
Чтобы преобразовать номер адреса из текстового типа данных в числовой, используйте следующую формулу в качестве значения по умолчанию для поля fldAddressNumber:
число(fldAddressNumber)
nz
Возвращает поле или группу, в которой все пустые поля заменены нулем (0).
Синтаксис
nz(поле)
| Аргумент | Описание |
|---|---|
| поле | Поле, которое требуется проверить на значение. |
Пример
Вы разрабатываете шаблон формы, который поставщики будут заполнять для составления отчетов о своих запасах продукции. Поставщик отправляет свои перечни продукции в веб-службу через форму, основанную на вашем шаблоне формы. Метод веб-службы требует, чтобы все элементы, содержащие числовые данные, имели числовое значение. Веб-служба отклоняет форму, содержащую пустой числовой элемент.
Шаблон формы содержит поле fldAvailability, содержащее число, соответствующее возможности поставщика предоставить данный продукт. Поставщик может ввести в это поле число. Чтобы гарантировать, что поставщик сможет отправить свою форму на основе вашего шаблона формы в веб-службу и автоматически установить значение поля равным нулю, если поставщик не введет число, используйте следующую формулу в качестве значения по умолчанию для этого поля:
nz(fldAvailability)
круглые
Округляет число до ближайшего целого.
Если нецелое значение находится ровно на полпути между двумя округленными целыми значениями, возвращаемое значение является следующим наибольшим целым значением.
Синтаксис
Округление (число)
| Аргумент | Описание |
|---|---|
| number | Поле, содержащее число, которое округляется с помощью указанной формулы. |
Пример
Вы разрабатываете шаблон формы, формы которого поставщики будут использовать для формирования отчетов о своих запасах продукции. Шаблон формы содержит повторяющуюся группу, включающую несколько полей с данными о товарах поставщиков. Одно из полей fldPrice в повторяющейся группе содержит цену продукта.
Шаблон формы имеет подключение для отправки данных в веб-службу. Метод веб-службы требует, чтобы каждая цена была округлена до целого значения. Чтобы отправить соответствующее значение методу веб-службы, необходимо добавить в источник данных повторяющееся поле. В этом поле используется следующая формула, чтобы округлить цену в поле fldPrice до целого значения:
round(fldPrice)
Сумма
Возвращает сумму всех полей в поле или группе. Каждое поле сначала преобразуется в числовое значение.
Синтаксис
sum(поле)
| Аргумент | Описание |
|---|---|
| поле | Имя поля в повторяющейся группе или повторяющегося поля в группе, значения которой суммируются. Чтобы добавить поля из двух разных групп, используйте оператор объединения (|) для разделения аргументов. Например: sum( имя поля 1 | имя поля 2). |
Пример
Вы разрабатываете шаблон формы отчета о расходах. Шаблон формы содержит группу, содержащую статьи расходов. Сумма каждого элемента хранится в поле fldExpenseAmount. Группа привязана к повторяющейся таблице, в которой каждая статья расходов отображается в виде строки. Шаблон формы содержит элемент управления текстовым полем, отображающий общие расходы. Для отображения общих расходов элемент управления текстовым полем содержит следующую формулу:
sum(fldExpenseAmount)
true
Возвращает значение true.
Синтаксис
true()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявок на получение разрешений на строительство. Шаблон формы содержит один раздел для контактных данных, а другой раздел — для информации, связанной с разрешением на строительство. При заполнении этой формы подрядчики должны будут полностью заполнить раздел контактной информации, прежде чем они смогут заполнить раздел разрешения на строительство.
Для этого вы создаете правило, которое задает логическое значение поля в истину, если все поля в разделе контактной информации содержат данные. Поле логического значения может иметь логическое значение true или false. Если логическое значение поля равно ИСТИНА, отображается элемент управления разделом, содержащий информацию о разрешении на строительство.
Чтобы отобразить элемент управления разделом, содержащий информацию о разрешении на строительство, вы настраиваете правило для выполнения этой функции в логическом поле, если все поля в разделе контактной информации содержат данные.
Текстовые функции
СЦЕП
Объединение двух или нескольких полей текстовых строк в одну текстовую строку.
Синтаксис
СЦЕПИТЬ(текст1; текст2; ...)
| Аргумент | Описание |
|---|---|
| текст1 | Поле, содержащее текст, который нужно объединить в одну строку текста с текстом аргумента 2. |
| текст2, ... | Одно или несколько дополнительных полей, содержащих текст, который будет объединен с предыдущим полем. Текстовые поля разделяйте точкой с запятой. |
Пример
Вы разрабатываете шаблон формы, содержащий поля fldFirstName и fldLastName. Добавьте следующую формулу в третье поле, чтобы оно содержало текст "Эта форма была заполнена по <имени><, фамилии>".":
concat("Эта форма была заполнена ", fldFirstName, " ", fldLastName, ".")
Примечание
Любой текст, введенный в качестве текстового аргумента, включая пробелы или знаки препинания, должен быть заключен в кавычки (").
содержит
Возвращает значение true, если первое поле или текстовая строка содержит второе. В противном случае возвращает значение false.
Синтаксис
содержит(within_text; find_text)
| Аргумент | Описание |
|---|---|
| Просматриваемый_текст | Поле, содержащее искомый текст. |
| Искомый_текст | Поле, содержащее текст или текст, заключенный в двойные кавычки (" "), для поиска в первом аргументе. |
Пример
Вы разрабатываете шаблон формы с тремя текстовыми полями. Первый из них позволяет пользователю ввести длинный объем текста в первом текстовом элементе управления с именем fldText. Второй позволяет пользователю ввести короткий фрагмент текста с именем fldFindText. Третье текстовое поле сравнивает второе текстовое поле с первым, указывая, найдено ли значение во втором поле в первом поле, и отображает результат. По умолчанию в нем будет использоваться следующая формула:
contains(fldText,fldFindText)
normalize-space
Удаляет пробелы из текстовой строки.
Примечание
Это удалит все начальные, конечные и повторяющиеся пробелы в поле с текстовым типом данных.
Синтаксис
normalize-space(text)
| Аргумент | Описание |
|---|---|
| text | Текст, содержащий пробелы в начале, конце или повторяющихся пробелах, которые необходимо удалить. Текст должен быть заключен в двойные кавычки (" "). |
Пример
Вы создаете шаблон формы, содержащий поле fldText (связанное с элементом управления "текстовое поле"). Чтобы нормализовать текст, введенный в первом поле, и отобразить значение в первом поле без лишних пробелов, добавьте второе поле со следующей формулой в качестве значения по умолчанию:
normalize-space(fldText)
начинается с
Возвращает значение true, если первое поле или текстовая строка начинается со второго. В противном случае возвращается значение false.
Синтаксис
starts-with(text; start_text)
| Аргумент | Описание |
|---|---|
| text | Имя поля, содержащего текст для поиска. Аргументы разделяйте точкой с запятой. |
| start_text | Текст, который необходимо найти, в начале поля, указанного в первом аргументе. Этот аргумент может быть либо полем, либо текстом, заключенным в двойные кавычки (" "). |
Пример
Вы разрабатываете шаблон формы с тремя текстовыми полями. Первый из них позволяет пользователю ввести длинный объем текста в первом текстовом элементе управления с именем fldText. Второй позволяет пользователю ввести короткий фрагмент текста с именем fldFindText. Третье текстовое поле сравнивает второе текстовое поле со вторым и указывает, начинается ли значение в первом поле со значения во втором поле, и выводит результат. По умолчанию в нем будет использоваться следующая формула:
starts-with(fldText, fldFindText)
строка
Преобразует значение в текстовую строку.
Синтаксис
строка(значение)
| Аргумент | Описание |
|---|---|
| значение | Поле, содержащее значение, которое нужно преобразовать в текст. |
Пример
Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявок на получение разрешений на строительство. Шаблон формы содержит раздел, в котором исполнитель может ввести свой рабочий адрес. Чтобы убедиться, что подрядчик вводит допустимый адрес, шаблон формы подключается к данным веб-службы, которая может проверить адрес. Если адрес проверен, подрядчик может отправить форму в базу данных SQL. База данных SQL использует текстовое поле для почтового адреса. Для веб-службы требуется, чтобы номер адреса имел числовой тип данных, а название улицы — текстовый тип данных.
Чтобы отправить данные как в веб-службу, так и в базу данных SQL, адрес должен храниться в двух различных типах данных:
- Чтобы отправить адрес веб-службе, номер адреса должен быть числовым типом данных.
- Чтобы отправить адрес в базу данных SQL, и номер адреса, и название улицы должны быть текстовыми данными.
Вы также хотите, чтобы подрядчик вводил свой адрес только один раз. Чтобы преобразовать адрес в правильные типы данных и гарантировать, что подрядчик введет свой адрес только один раз, в форме есть поле для ввода номера адреса с именем fldAddressNumber и еще одно поле для ввода названия улицы. Поле fldAddressNumber является числовым типом данных, а поле названия улицы — текстовым типом.
Чтобы отправить полный адрес (как номер адреса, так и название улицы) в базу данных SQL, необходимо объединить значения в полях fldAddressNumber и названий улиц в одно значение, которое является текстовым типом данных. Сначала необходимо преобразовать числовые данные в поле fldAddressNumber, которое хранит данные как числовой тип данных, в текстовый тип данных. В источник данных добавляется поле, содержащее полный адрес в виде текстового типа данных.
Чтобы преобразовать текстовые данные в поле fldAddressNumber в текстовый тип данных для использования веб-службы, необходимо настроить другое поле, которое будет содержать номер адреса как текстовый тип данных. Чтобы преобразовать номер адреса из числового типа данных в текстовый, используйте следующую формулу в качестве значения по умолчанию:
строка(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 форма была создана".
подстрока после
Возвращает текст в первой текстовой строке, следующей за первым вхождением второй строки текста.
Синтаксис
substring-after(text, find_text)
| Аргумент | Описание |
|---|---|
| text | Поле с текстовым типом данных или текстом, заключенным в двойные кавычки (" "). Функция выполняет поиск в тексте этого аргумента, а затем возвращает все знаки, следующие за текстом во втором аргументе. |
| Искомый_текст | Текст для поиска в тексте первого аргумента. Текст может быть либо значением в поле с типом данных "текстовый", либо текстом, заключенным в двойные кавычки (" "). Функция ищет этот текст в первом аргументе, а затем возвращает все знаки, следующие за ним в этом аргументе. |
Пример
Вы разрабатываете шаблон формы, содержащий следующие поля и элементы управления:
- Поле с именем fldText, связанное с элементом управления текстовым полем. В этом поле содержится текст, который выполняет поиск.
- Поле с именем fldSubstringText, связанное с элементом управления текстовым полем. В этом поле содержится текст, который является вторым аргументом функции.
- Элемент управления текстовым полем, демонстрирующий результаты выполнения функции. Элемент управления "текстовое поле" содержит следующую формулу:
substring-after(fldText, fldSubstringText)
Если пользователь вводит "Эта форма была создана на основе шаблона формы InfoPath". в поле fldText и "InfoPath" во втором, тогда третий элемент управления текстового поля будет содержать "шаблон формы".
подстрока перед
Возвращает текст в первой текстовой строке, которая предшествует первому вхождению второй строки.
Синтаксис
substring-before(text; find_text)
| Аргумент | Описание |
|---|---|
| text | Поле с текстовым типом данных или текстом, заключенным в двойные кавычки (" "). Функция выполняет поиск в тексте с этим аргументом, а затем возвращает все знаки перед текстом во втором аргументе find_text. |
| Искомый_текст | Значение для поиска в текстовом аргументе. Это значение может быть либо значением в поле с текстовым типом данных, либо текстом, заключенным в двойные кавычки (" "). Функция ищет этот текст в первом аргументе (тексте), а затем возвращает все знаки перед текстом в этом аргументе. |
Пример
Вы разрабатываете шаблон формы со следующими полями и элементами управления:
- Поле с именем fldText, связанное с элементом управления текстовым полем. В этом поле содержится текст, который выполняет поиск.
- Поле с именем fldSubstringText, связанное с элементом управления текстовым полем. В этом поле содержится текст, который является вторым аргументом функции.
- Элемент управления текстовым полем, демонстрирующий результаты выполнения функции. Элемент управления "текстовое поле" содержит следующую формулу:
substring-before(fldText, fldSubstringText)
Если пользователь вводит "Эта форма была создана на основе шаблона формы InfoPath". в поле fldText и "created" во втором, то третий элемент управления текстовым полем будет содержать "Эта форма была".
перевод
Возвращает первую текстовую строку, в которой каждый символ второй строки заменяется знаком в соответствующей позиции третьей текстовой строки.
Синтаксис
translate(текст; find_chars; replace_chars)
| Аргумент | Описание |
|---|---|
| text | Имя поля, содержащего текст, знаки которого нужно заменить. Аргументы разделяйте точкой с запятой. |
| find_chars | Символ или значение поля с текстовым типом данных, которое будет заменено знаками в третьем аргументе. Аргументы разделяйте точкой с запятой. |
| replace_chars | Символ или значение поля с текстовым типом данных, которое заменяет все экземпляры знака во втором аргументе. |
Пример
Вы разрабатываете шаблон формы, формы которого будут использоваться подрядчиками для подачи заявок на получение разрешений на строительство. Шаблон формы содержит раздел, в котором исполнитель может ввести свой рабочий адрес. Раздел содержит поле с именем fldStreetAddress, которое привязано к элементу управления текстовым полем, в котором подрядчик может ввести свой почтовый адрес.
Чтобы убедиться, что подрядчик вводит действительный адрес, у вас есть соединение для передачи данных с веб-службой, которая может проверить адрес. Веб-служба требует, чтобы в адресе присутствовали строчные буквы.
Чтобы преобразовать любой верхний регистр в адресе в нижний регистр, добавьте в источник данных еще одно поле, содержащее почтовый адрес, который преобразуется в строчные буквы. Значение по умолчанию для этого поля содержит следующую формулу:
translate(fldStreetAddress, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz)
Функции URL
SharePointListUrl
Возвращает адрес списка SharePoint или библиотеки форм, в которых размещена форма (только в InfoPath 2010).
Синтаксис
SharePointListUrl()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на расположение, в котором находится список, например "https://sharepointserver/site/list/". Для этого добавьте элемент управления "Гиперссылка" и установите для него режим "Только для чтения", а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:
SharePointListUrl()
Примечание
Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() вернет только "https://sharepointserver/site/list/".
SharePointServerRootUrl
Возвращает адрес сервера SharePoint, на котором размещена форма (только InfoPath 2010).
Синтаксис
SharePointServerRootUrl()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на корневую папку сервера SharePoint, на котором размещен список, например "https://sharepointserver/site/list/". Для этого добавьте элемент управления "Гиперссылка" и установите для него режим "Только для чтения", а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:
SharePointServerRootUrl()
Примечание
Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() вернет только "https://sharepointserver/site/list/".
SharePointCollectionUrl
Возвращает адрес семейства веб-сайтов SharePoint, в котором размещена форма (только InfoPath 2010).
Синтаксис
SharePointCollectionUrl()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на семейство веб-сайтов сервера SharePoint, на котором размещен список, например "https://sharepointserver/sitecollection/". Для этого добавьте элемент управления "Гиперссылка" и установите для него режим "Только для чтения", а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:
SharePointCollectionUrl()
Примечание
Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() будет возвращать только "https://sharepointserver/sitecollection/".
SharePointSiteUrl
Возвращает адрес сайта SharePoint, на котором размещена форма (только в InfoPath 2010).
Синтаксис
SharePointSiteUrl()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы для списка SharePoint и хотите добавить ссылку на сайт SharePoint, на котором размещен список, например "https://sharepointserver/site/". Для этого добавьте элемент управления "Гиперссылка" и установите для него режим "Только для чтения", а затем задайте значение по умолчанию для поля, с которым связан элемент управления, следующим образом:
SharePointSiteUrl()
Примечание
Если шаблон формы не размещен на сервере SharePoint, функция SharePointListUrl() будет возвращать только "https://sharepointserver/site/".
Функция userName
имя пользователя
Возвращает имя пользователя, заполняющего форму (Microsoft InfoPath 2007 и более поздние версии).
Примечание
Если пользователь заполняет форму в веб-браузере, имя пользователя извлекается из Microsoft Windows SharePoint Services 3.0 или более поздней версии.
Синтаксис
userName()
Эта функция не использует аргументы.
Пример
Вы разрабатываете шаблон формы отчета о расходах для своей компании. Ваша кредитная карта компания отправляет записи о расходах ваших сотрудников в электронной форме в базу данных, которую ведет ваша компания. Чтобы получить записи о расходах сотрудника, база данных должна знать имя сотрудника, заполняющего форму, основанную на шаблоне формы.
В источник данных шаблона формы добавляется поле для хранения имени сотрудника пользователя. Вы также создаете подключение к данным запроса, которое использует значение этого поля в запросе для получения расходов.
Чтобы убедиться, что сотрудник, заполняющий авансовый отчет, использует правильное имя пользователя, следует привязать поле к элементу управления текстовым полем. Чтобы отобразить имя пользователя, который создает форму на основе этого шаблона формы, используйте следующую формулу в качестве значения по умолчанию для поля, связанного с элементом управления текстовым полем:
userName()