Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Используя формулы, можно создавать правила более эффективные, чем основные предопределенные правила. Например, с помощью формул можно рассчитать текущую или будущую дату и даже объединить строки текста.
В этой статье
Общие сведения
Формула — это выражение XPath, состоящее из значений, полей или групп, функций и операторов, с помощью которых рассчитываются и отображаются другие значения. С помощью формулы можно создать новое значение для поля и вывести его в элементе управления, связанном с этим полем. Ниже приведены некоторые примеры использования формул.
Расчет математического значения на основании данных, указанных при создании шаблона либо введенных пользователем при заполнении шаблона формы
Выполнение правила на основе значения, вычисленного по формуле.
Отображение текста только для чтения, рассчитываемого на основе других элементов управления, либо вывод значения из другого элемента управления.
Функция представляет собой выражение, которое возвращает значение, основанное на результатах вычисления. Значения, используемые в функциях, называются аргументами. Помимо функций, характерных для InfoPath, можно использовать стандартные функции XPath 1.0, включенные в состав InfoPath. Функция состоит из трех элементов, перечисленных ниже.
-
Имя Имя функции, обычно предоставляет подсказку как действие, которое будет выполнять функцию.
-
Возвращаемое значение. Результат функции.
-
Аргументы Значения, используемые с помощью функции для выполнения вычислений.
Некоторым функциям для вычисления возвращаемого значения требуются аргументы. В таком случае необходимо знать, сколько их нужно и каков тип данных каждого из них. При вводе неправильного количества или типа аргументов функция не будет работать.
На рисунке ниже показаны взаимосвязи между функциями, выражениями и формулами.
Добавление элемента управления "Вычисляемое значение"
Элемент управления "Вычисляемое значение" можно использовать для вывода текста, предназначенного только для чтения, и значений из других элементов управления формы, а также для создания формул, основанных на выражениях XPath. Например, при разработке шаблона формы учета расходов на него можно добавить элемент управления "Вычисляемое значение" для отображения общей суммы введенных расходов.
Примечание: Элемент управления "Вычисляемое значение" предназначен только для вывода данных, но не для их хранения, поэтому его нельзя использовать для сохранения полученного значения или его передачи в другую формулу.
-
На шаблоне формы установите курсор в то место, куда требуется вставить элемент управления.
-
На вкладке Главная в группе Элементы управления выберите элемент управления Вычисляемое значение.
-
В диалоговом окне Добавление вычисляемого значения выполните одно из указанных ниже действий.
-
Чтобы вставить текст или выражение XPath непосредственно в элемент управления "Вычисляемое значение", введите его в поле XPath:.
-
Чтобы вставить формулу, нажмите кнопку Изменить формулу и введите нужную формулу в текстовом поле Формула, с помощью следующих, при необходимости:
-
Чтобы вставить в формулу поле или группу, нажмите кнопку Вставить поле или группу, выберите поле или группу в диалоговом окне Выбор поля или группы и нажмите кнопку ОК.
-
Чтобы вставить в формулу функцию, нажмите кнопку Вставить функцию, выберите функцию в диалоговом окне Вставка функции и нажмите кнопку ОК.
Если функции необходимы параметры, выберите ее в диалоговом окне Вставка функции и нажмите кнопку ОК, а затем в поле Формула дважды щелкните соответствующую область, выберите нужные параметры и снова нажмите кнопку ОК.
-
Чтобы вставить в формулу значение или математический оператор, в поле Формула введите значение или знак математической операции.
К числу математических операторов относятся операторы сложения (+), вычитания (-), умножения (*) и деления (/).
Математические формулы обычно зависит от целые или десятичные числа в качестве аргументов. Чтобы избежать пустых значений в формуле, на вкладке " файл " нажмите кнопку Параметры формы, затем выберите Дополнительно и убедитесь, что выбран обрабатывать пустые значения как нули.
-
-
Добавление формулы в элемент управления
Для вывода результатов формулы необязательно использовать элемент управления "Вычисляемое значение". С помощью формулы можно задавать значения по умолчанию для других элементов управления, таких как текстовые поля. Задать для элемента управления значение по умолчанию можно двумя способами. Во-первых, можно использовать статическое значение по умолчанию, просто введя его в поле Значение в диалоговом окне Свойства поля или группы. Во-вторых, задать для поля значение по умолчанию можно с помощью формулы на основе других значений в форме. Чтобы установить значение поля по умолчанию с помощью формы, выполните указанные ниже действия.
-
Выделите элемент управления, для которого нужно добавить формулу, а затем в разделе Работа с элементами управления на вкладке Свойства в группе Свойства нажмите кнопку Значение по умолчанию.
-
Нажмите кнопку Вставить формулу рядом с полем значение.
-
Введите формулу в текстовое поле Формула, воспользовавшись при необходимости приведенными ниже инструкциями.
-
Чтобы вставить в формулу поле или группу, нажмите кнопку Вставить поле или группу, выберите поле или группу в диалоговом окне Выбор поля или группы и нажмите кнопку ОК.
-
Чтобы вставить в формулу функцию, нажмите кнопку Вставить функцию, выберите функцию в диалоговом окне Вставка функции и нажмите кнопку ОК.
Если функции необходимы параметры, выберите ее в диалоговом окне Вставка функции и нажмите кнопку ОК, а затем в поле Формула дважды щелкните соответствующую область, выберите нужные параметры и снова нажмите кнопку ОК.
-
Для вставки в формулу значения или математического оператора в поле Формула введите значение или знак математической операции.
К числу математических операторов относятся операторы сложения (+), вычитания (-), умножения (*) и деления (/).
Совет: Математические формулы обычно зависит от целые или десятичные числа в качестве аргументов. Чтобы избежать пустых значений в формуле, на вкладке " файл " нажмите кнопку Параметры формы и нажмите кнопку Дополнительно. Убедитесь в том, что выбран обрабатывать пустые значения как нули.
-
-
Чтобы редактировать формулу как формулу XPath, установите флажок Изменить XPath (дополнительно), в результате чего формула будет представлена в виде выражения XPath.
-
Чтобы проверить правильность синтаксиса формулы, нажмите кнопку Проверить формулу. Если формула содержит ошибки, выполните указанные ниже действия.
Чтобы просмотреть ошибки в формуле, нажмите кнопку Показать подробности в диалоговом окне Microsoft InfoPath. Ниже приведены некоторые рекомендации по устранению ошибок.
-
Если формула содержит функцию, необходимо проверить, правильные ли аргументы используются в этой функции. Некоторым функциям требуются поля или группы, в то время как другие используют в качестве аргументов заданные значения.
-
При необходимости удалите формулу и введите ее заново, чтобы убедиться, что она введена правильно.
-
Нажмите кнопку ОК.
-
Если нужно, чтобы значение поля по умолчанию обновлялось при изменении значений, на основе которых оно вычисляется, установите флажок Обновлять значение при пересчете формулы. Сделав это, нажмите кнопку ОК, а затем в разделе Работа с элементами управления на вкладке Свойства в группе Свойства выберите команду Свойства элемента управления, откройте вкладку Отображение и установите флажок Только для чтения.
Использование формул в правилах
Это возможно, задавая условия в правилах проверки, Форматированиеи действия , чтобы использовать формулу для определения условие. Это можно сделать, нажав кнопку использовать формулу третий раскрывающегося списка в диалоговом окне условие при назначении правило к элементу управления или шаблона формы.
Функции даты и времени
addDays
Добавляет указанное число дней к значению даты или даты и времени.
Синтаксис
addDays(дата, дни)
Аргумент |
Описание |
дата |
К этой дате добавляется число дней, указанное во втором аргументе. Этот аргумент может иметь тип данных "Дата" (date) или "Дата и время" (dateTime). |
дни |
Количество дней, которое требуется добавить к дате, заданной первым аргументом. Этот параметр должен иметь тип данных "Целое число" (integer). Если в этом аргументе передать отрицательное число, формула вернет более раннюю дату. |
Пример
Предположим, необходимо задать для поля на шаблоне формы значение даты, которая отстоит от текущей на 60 дней. Шаблон формы содержит поле "ПолеСегодня", в котором в качестве значения по умолчанию задана текущая дата. Чтобы рассчитать новую дату с помощью этой функции, можно ввести в поле даты следующую формулу:
addDays(ПолеСегодня, 60)
addSeconds
Добавляет указанное число секунд к значению времени или даты и времени.
Синтаксис
addSeconds(время, секунды)
Аргумент |
Описание |
время |
Значение даты и времени или времени, которое является ссылкой на другое поле шаблона формы или результатом функции даты и времени (например, тдата() или сегодня()). Число секунд, указанное во втором аргументе, добавляется к этому значению времени. Этот аргумент может иметь тип данных "Дата" (date) или "Дата и время" (dateTime). Для аргумента типа "Время" возвращается значение типа "Время", а для аргумента типа "Дата" — значение типа "Дата и время". |
секунды |
Количество секунд, которое требуется добавить к значению даты и времени или времени в первом аргументе. Этот параметр должен иметь тип данных "Целое число" (integer). Если в этом аргументе передать отрицательное число, формула вернет более ранние дату и время либо время. |
Пример
Шаблон формы содержит поле "ПолеТекВремя", в котором в качестве значения по умолчанию задано текущее время, а также еще одно поле, в котором формула с функцией addSeconds используется для вывода времени, отстоящего от текущего на 120 секунд. Чтобы рассчитать новое значение времени с помощью этой функции, можно ввести во второе поле следующую формулу:
addSeconds(ПолеТекВремя, 120)
тдата
Возвращает текущую системную дату и время.
Чтобы получить только текущую дату, используйте функцию сегодня().
Синтаксис
тдата()
У этой функции нет аргументов.
Пример
Чтобы получить дату и время создания формы на основе данного шаблона, можно ввести в поле следующую формулу:
тдата()
сегодня
Возвращает текущую системную дату. Для полей дат списка SharePoint используйте функцию тдата().
Чтобы получить значения даты и времени, используйте функцию тдата().
Синтаксис
сегодня()
У этой функции нет аргументов.
Пример
Чтобы получить дату создания формы на основе данного шаблона, можно ввести в поле следующую формулу:
сегодня()
Функции полей
количество
Возвращает число экземпляров поля или группы.
Синтаксис
количество(поле)
Аргумент |
Описание |
поле |
Имя повторяющегося поля или группы, количество экземпляров которых в форме требуется вернуть. |
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться поставщиками для предоставления сведений о своих товарах и складских запасах. Шаблон формы содержит повторяющуюся группу "ГрпТовар" для отправки поставщиком сведений о товарах. Каждая такая группа содержит данные об определенном товаре и соответствующем уровне запасов. Когда поставщик добавляет товар в форму, основанную на этом шаблоне, в приложении InfoPath создается новый экземпляр повторяющейся группы.
В шаблоне формы имеется поле из источника данных, содержащее количество товаров, сведения о которых были отправлены поставщиком. Для автоматического подсчета числа товаров, о которых отправлены данные (то есть количества экземпляров повторяющейся группы "ГрпТовар"), можно ввести в это поле следующую формулу:
количество(ГрпТовар)
последний
Возвращает последний экземпляр повторяющегося поля или группы.
Примечание: При разработке шаблона формы веб-браузера эта функция не отображается в списке "Функции" в диалоговом окне "Вставка функции".
Синтаксис
имя_поля[последний()]
Сама эта функция не имеет обязательных параметров, однако ее можно использовать в качестве предиката для указанного имени поля.
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Этот шаблон подключен к веб-службе, в которой имеется метод, проверяющий, указаны ли сведения обо всех товарах поставщика. Этот метод использует последний товар в списке, данные о котором отправил поставщик.
Сведения о товаре хранятся в различных полях повторяющейся группы "ГрпТовар". Когда поставщик добавляет в форму товар, в приложении InfoPath создается новая повторяющаяся группа "ГрпТовар". Если поставщик передает сведения о нескольких товарах, источник данных формы содержит несколько экземпляров повторяющейся группы "ГрпТовар".
Чтобы обеспечить передачу в веб-службу правильных данных, можно добавить поле, содержащее сведения о последнем товаре в группе товаров поставщика. Чтобы настроить это поле для автоматического получения данных о последнем товаре, можно ввести в него в качестве значения по умолчанию следующую формулу:
ГрпТовар[последний()]
локальное-имя
Возвращает локальное имя поля или группы.
Примечания:
-
Если аргумент является повторяющимся полем или группой, эта функция возвращает значение первого такого поля или группы.
-
Когда пользователь заполняет форму веб-браузера, формула, использующая эту функцию, отправляет данные формы на сервер для получения значения функции.
Синтаксис
локальное-имя(поле)
Аргумент |
Описание |
поле |
Имя поля, атрибут локального имени которого нужно получить. |
Пример
Предположим, требуется разработать шаблон формы, который будет использоваться для подачи заявок на получение разрешений. Шаблон формы подключен к методу веб-службы. Этот метод использует значение атрибута локального имени поля с номером лицензии подрядчика (имя этого поля — "ПолеНомерЛицензии").
Имеется поле, содержащее значение атрибута локального имени. Для автоматического получения значения атрибута локального имени поля с номером лицензии можно ввести указанную ниже формулу. Она будет задавать значение по умолчанию для поля, содержащего значение атрибута локального имени.
локальное-имя(ПолеНомерЛицензии)
имя
Возвращает имя и префикс пространства имен поля или группы.
Примечания:
-
Если аргумент является повторяющимся полем или группой, эта функция возвращает имя и префикс первого такого поля или группы в форме.
-
Когда пользователь заполняет форму, основанную на шаблоне для веб-браузера, формула, использующая эту функцию, отправляет данные формы на сервер для получения значения функции.
Синтаксис
имя(поле)
Аргумент |
Описание |
поле |
Имя поля, префикс пространства имен и имя которого нужно получить. |
Пример
Предположим, требуется разработать шаблон формы, который будет использоваться для подачи заявок на получение разрешений. Шаблон формы подключен к методу веб-службы. Этот метод использует атрибут имени поля с номером лицензии подрядчика (имя этого поля — "ПолеНомерЛицензии").
Имеется поле, содержащее значение атрибута имени. Для автоматического получения значения атрибута имени можно ввести следующую формулу, задающую для поля значение по умолчанию:
имя(ПолеНомерЛицензии)
uri-пространства-имен
Возвращает полное пространство имен поля или группы.
Примечания:
-
Если аргументом является набор полей или групп, то функция возвращает пространство имен первого поля или группы в форме.
-
Когда пользователь заполняет форму веб-браузера, формула, использующая эту функцию, отправляет данные формы на сервер для получения значения функции.
Синтаксис
uri-пространства-имен(поле)
Аргумент |
Описание |
поле |
Имя поля, URI пространства имен которого требуется получить. |
Пример
Предположим, требуется разработать шаблон формы, который будет использоваться для подачи заявок на получение разрешений. Этот шаблон передает данные веб-службе. Для обработки данных формы, основанной на этом шаблоне, веб-службе требуется URI пространства имен из поля определенного элемента в источнике данных. Поле в шаблоне формы, содержащее данные URI пространства имен, называется "ПолеПолное".
Шаблон содержит поле с URI пространства имен поля элемента. Для автоматического получения URI пространства имен можно ввести следующую формулу, задающую значение по умолчанию для поля, которое должно содержать URI:
uri-пространства-имен(ПолеПолное)
положение
Возвращает индекс (или позицию) поля или группы относительно других полей или групп в той же родительской группе.
Примечание: Эта функция недоступна в шаблонах форм веб-браузера.
Синтаксис
положение()
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Сведения о товарах хранятся в полях повторяющейся группы. Повторяющаяся группа связана с повторяющейся таблицей, с помощью которой поставщик может добавлять новые данные о товарах и редактировать уже существующие.
В первом столбце повторяющейся таблицы планируется отображать номер строки в текстовом поле. Для автоматического вывода номера строки при добавлении поставщиком нового товара в повторяющуюся таблицу можно ввести следующую формулу, задающую значение по умолчанию для текстового поля:
положение()
Математические функции
Формулы, содержащие математические функции обычно требуются аргументы, которые являются целыми числами или десятичные значения. Чтобы обеспечить аргументы целое число или десятичные значения, замененные значениями null, выберите файл > Параметры формы > Дополнительно и затем убедитесь, что установлен флажок обрабатывать пустые значения как нули.
срзнач
Рассчитывает среднее всех числовых значений в поле повторяющейся группы.
Примечание: Повторяющееся поле должно иметь числовой тип данных и входить в группу.
Синтаксис
срзнач(поле)
Аргумент |
Описание |
поле |
Имя повторяющегося поля в группе, для которого требуется получить среднее значение. |
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться поставщиками для предоставления сведений о своих товарах и складских запасах. Этот шаблон содержит повторяющееся поле "ПолеЦена", которое входит в повторяющуюся группу с данными обо всех товарах, проданных поставщиком. Эта группа связана с элементом управления "Повторяющаяся таблица".
Шаблон формы содержит поле со средней ценой всех товаров, проданных поставщиком. Для расчета средней цены можно ввести в это поле следующую формулу:
срзнач(ПолеЦена)
логический
Возвращает значение "истина", если поле или группа существует. В противном случае возвращает значение "ложь".
Эта функция возвращает значение "истина" даже в том случае, если элемент управления, связанный с данным полем, был удален, но поле до сих пор существует.
Синтаксис
логический(поле)
Аргумент |
Описание |
поле |
Повторяющееся поле или группа, проверяемые этой функцией. |
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Сведения о товарах хранятся в различных полях повторяющейся группы "ГрпТовар". Каждая повторяющаяся группа содержит поля с данными об одном из товаров. Если поставщик указал сведения о семи товарах, форма будет содержать семь повторяющихся групп.
Повторяющаяся группа связана с элементом управления "Повторяющаяся таблица", с помощью которого поставщик может добавлять новые данные о товарах и редактировать уже существующие. Поставщик может добавлять и удалять строки в этой повторяющейся таблице.
При попытке пользователя удалить из повторяющейся таблицы все строки на экран планируется выводить диалоговое окно. В источник данных нужно добавить поле, содержащее слово "истина", если в элементе управления "Повторяющаяся таблица" есть хотя бы одна строка, и слово "ложь" в противном случае.
В элементе управления "Повторяющаяся таблица" нужно настроить правило, выводящее диалоговое окно, если поле содержит значение "ложь". Для автоматического определения наличия в повторяющейся таблице хотя бы одной строки можно задать значение по умолчанию для поля со словом "истина" или "ложь" с помощью следующей формулы:
логический(ГрпТовар)
окрвверх
Округляет число до ближайшего большего целого.
Синтаксис
окрвверх(число)
Аргумент |
Описание |
число |
Имя поля с числовым значением. |
Пример
Предположим, требуется разработать шаблон формы отчета о расходах организации. Данные о расходах отправляются веб-службе, в которой есть параметр, принимающий только целые числа. Сумма расходов, передаваемая в этот параметр, должна округляться до ближайшего большего целого. Сумма расходов хранится в поле "ПолеСуммаРасходов", а целое значение — в другом поле. Для расчета ближайшего большего целого можно ввести в качестве значения по умолчанию для второго поля следующую формулу:
окрвверх(ПолеСуммаРасходов)
Если пользователь создает форму на основе шаблона и вводит в поле "ПолеСуммаРасходов" число 145,87, в поле с формулой подставляется значение 146.
оценка
Возвращает значения поля или группы. Второй аргумент определяет выражение, вычисляемое для поля или группы. Обычно функция оценка() вкладывается в функцию, которая оперирует соответствующим полем или группой, такую как сумма() или срзнач().
Синтаксис
оценка(поле, выражение)
Аргумент |
Описание |
поле |
Имя поля или группы, значения которых требуется оценить с помощью выражения во втором аргументе. |
выражение |
Выражение, применяемое к первому аргументу. Оно может быть функцией XPath или выражением, заключенным в двойные кавычки (" "). |
Пример
Предположим, требуется разработать шаблон формы отчета о расходах организации. Этот шаблон содержит поле "ПолеИтого" с суммой расходов. Поле "ПолеИтого" входит в повторяющуюся группу "ГрпРасходы". Еще одно поле связано с текстовым полем, содержащим итоговую сумму всех расходов. Для вывода на экран итоговой суммы всех расходов при добавлении пользователем определенной суммы по одной из статей можно ввести в поле итоговой суммы следующую формулу:
оценка(ГрпРасходы,сумма(ПолеИтого))
ложь
Возвращает значение "ложь".
Синтаксис
ложь()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться подрядчиками для запроса разрешений на строительство. Этот шаблон формы содержит два раздела — с контактными данными и со сведениями о разрешении. При заполнении формы подрядчику потребуется указать все контактные данные, прежде чем он сможет приступить к заполнению раздела, посвященного разрешению.
Для этого нужно создать правило, устанавливающее для логического поля значение "ложь", если какое-либо из полей в разделе контактных данных пусто. Логическое поле может содержать логическое значение "истина" или логическое значение "ложь". Кроме того, можно настроить параметры условного форматирования таким образом, чтобы раздел со сведениями о разрешении на строительство был скрыт, если логическое поле содержит значение "ложь".
Чтобы скрыть элемент управления "Раздел", содержащий поля со сведениями о разрешении на строительство, нужно настроить в логическом поле правило, выполняющее эту функцию, если какое-либо из полей раздела контактных данных пусто.
окрвниз
Округляет число до ближайшего меньшего целого.
Синтаксис
окрвниз(число)
Аргумент |
Описание |
число |
Имя поля с числовым значением. |
Пример
Предположим, требуется разработать шаблон формы отчета о расходах организации. Данные о расходах отправляются веб-службе, в которой используется параметр, принимающий только целые числа. Сумма расходов, передаваемая в этот параметр, должна округляться до ближайшего меньшего целого. Сумма расходов хранится в поле "ПолеСуммаРасходов", а целое значение — в другом поле. Для расчета ближайшего меньшего целого можно ввести в качестве значения по умолчанию для второго поля следующую формулу:
окрвниз(ПолеСуммаРасходов)
максимум
Возвращает наибольшее значение в поле или группе.
Синтаксис
максимум(поле)
Аргумент |
Описание |
поле |
Повторяющееся поле в группе или поле в повторяющейся группе, для которого требуется определить наименьшее значение. |
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Этот шаблон содержит повторяющуюся группу с несколькими полями, которые, в свою очередь, содержат данные о товарах поставщика. Поле "ПолеЦена" в повторяющейся группе содержит цену товара.
Еще одно поле в источнике данных шаблона формы содержит наибольшую цену среди всех товаров, проданных этим поставщиком. Чтобы получить наибольшую цену, можно ввести в это поле следующую формулу:
максимум(ПолеЦена)
минимум
Возвращает наименьшее значение поля или группы.
Синтаксис
минимум(поле)
Аргумент |
Описание |
поле |
Повторяющееся поле в группе или поле в повторяющейся группе, для которого требуется определить наименьшее значение. |
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Этот шаблон содержит повторяющуюся группу с несколькими полями, которые, в свою очередь, содержат данные о товарах поставщика. Поле "ПолеЦена" в повторяющейся группе содержит цену товара.
Еще одно поле в источнике данных шаблона формы содержит наименьшую цену среди всех товаров, проданных этим поставщиком. Чтобы получить наименьшую цену, можно ввести в это поле следующую формулу:
минимум(ПолеЦена)
не
Возвращает значение "истина" для логического значения "ложь" и значения NULL; возвращает значение "ложь" для логического значения "истина" и NOT NULL.
Синтаксис
не(логическое_значение)
Аргумент |
Описание |
логическое_значение |
Поле логического типа. |
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться подрядчиками для запроса разрешений на строительство. Этот шаблон формы содержит два раздела — с контактными данными и со сведениями о разрешении. При заполнении формы подрядчику потребуется указать все контактные данные, прежде чем он сможет приступить к заполнению раздела, посвященного разрешению.
Для этого нужно создать правило, устанавливающее для логического поля значение "ложь", если какое-либо из полей в разделе контактных данных оставлено пустым. Логическое поле может содержать логическое значение "истина" или логическое значение "ложь". Затем можно с помощью той же формулы скрыть раздел со сведениями о разрешении на строительство, если логическое поле содержит значение "ложь". Чтобы задать это правило, можно ввести следующую формулу, устанавливающую для логического поля значение "ложь":
не(истина())
число
Преобразует значение в число.
Если аргумент не удается преобразовать в число, эта функция возвращает значение "не число".
Синтаксис
число(значение)
АргументОписание
значениеПоле, значение которого требуется преобразовать в число.
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться подрядчиками для запроса разрешений на строительство. Этот шаблон содержит раздел, в котором подрядчик указывает свой юридический адрес. Для подтверждения действительности этого адреса используется подключение к данным веб-службы, которая выполняет необходимую проверку. Если адрес подтверждается, подрядчику разрешается отправить форму в базу данных SQL. В этой базе данных для хранения названия улицы и номера дома используется текстовое поле. Веб-службе необходимо, чтобы номер дома имел числовой тип данных, а название улицы — текстовый.
Для передачи данных веб-службе и их отправки в базу данных SQL адрес должен храниться в виде двух значений разных типов.
-
Для передачи адреса веб-службе номер дома должен иметь числовой тип данных, а название улицы — текстовый.
-
Для отправки адреса в базу данных SQL как номер дома, так и название улицы должны иметь текстовый тип данных.
Подрядчик должен вводить адрес только один раз. Чтобы обеспечить преобразование адреса в нужные типы данных и избавить подрядчика от необходимости вводить адрес повторно, в шаблон формы нужно включить поле "ПолеНомерДома", в которое вводится номер дома, и еще одно поле для названия улицы. Для обоих полей выбран текстовый тип данных.
Для передачи номера дома веб-службе необходимо преобразовать данные в поле "ПолеНомерДома" (которые хранятся в текстовом виде) в числовой тип данных. Значение номера дома, преобразованное в число, хранится в другом поле, для которого выбран числовой тип данных.
Чтобы преобразовать номер дома из текстового типа данных в числовой, в качестве значения по умолчанию для поля "ПолеНомерДома" можно ввести следующую формулу:
число(ПолеНомерДома)
встнули
Возвращает поле или группу, в которой все пустые поля заменены нулями (0).
Синтаксис
встнули(поле)
Аргумент |
Описание |
поле |
Поле, в котором требуется проверить значение. |
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Поставщик передает сведения о запасах товаров веб-службе с помощью формы, основанной на этом шаблоне. Метод веб-службы требует, чтобы все элементы числового типа действительно содержали числовые данные. Веб-служба отклоняет форму, содержащую пустые числовые элементы.
Шаблон формы содержит поле "ПолеДоступность" с числом, соответствующим способности поставщика обеспечить поставку данного продукта. Поставщик может ввести в это поле число. Чтобы поставщик всегда мог передать в веб-службу форму на основе этого шаблона, для поля, в которое не введено число, автоматически устанавливается нулевое значение. Для этого в качестве значения поля по умолчанию можно ввести следующую формулу:
встнули(ПолеДоступность)
округл
Округляет число до ближайшего целого.
Если дробное значение находится точно посередине между двумя целыми числами, результатом округления является ближайшее большее целое.
Синтаксис
округл(число)
Аргумент |
Описание |
число |
Поле с числом, которое требуется округлить с помощью этой формулы. |
Пример
Предположим, требуется разработать шаблон формы, с помощью которой поставщики смогут сообщать о своих складских запасах. Этот шаблон содержит повторяющуюся группу с несколькими полями, которые, в свою очередь, содержат данные о товарах поставщика. Одно из полей повторяющейся группы ("ПолеЦена") содержит цену товара.
Шаблон формы подключен к веб-службе для отправки данных. Метод веб-службы требует, чтобы все цены были округлены до целых чисел. Для отправки правильного значения методу веб-службы нужно добавить в источник данных повторяющееся поле. В это поле для округления цены из поля "ПолеЦена" до целого значения можно ввести следующую формулу:
округл(ПолеЦена)
сумма
Возвращает сумму всех полей в поле или группе. При этом каждое из полей сначала преобразуется в числовое значение.
Синтаксис
сумма(поле)
Аргумент |
Описание |
поле |
Имя поля в повторяющейся группе или имя повторяющегося поля в группе, значения которого требуется сложить. Для сложения полей из двух разных групп используется оператор объединения (|), разделяющий аргументы, например: сумма(имя_поля_1 | имя_поля_2). |
Пример
Предположим, требуется разработать шаблон формы отчета о расходах. Этот шаблон содержит группу со статьями расходов. Сумма по каждой из статей хранится в поле "ПолеСуммаРасходов". Группа связана с повторяющейся таблицей, в которой каждая из статей отображается в виде строки. Шаблон формы содержит текстовое поле, в котором отображается итоговая сумма расходов. Для вывода итоговой суммы можно ввести в текстовое поле следующую формулу:
сумма(ПолеСуммаРасходов)
истина
Возвращает значение "истина".
Синтаксис
истина()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться подрядчиками для запроса разрешений на строительство. Этот шаблон формы содержит два раздела — с контактными данными и со сведениями о разрешении. При заполнении формы подрядчику потребуется указать все контактные данные, прежде чем он сможет приступить к заполнению раздела, посвященного разрешению.
Для этого нужно создать правило, устанавливающее для логического поля значение "истина", если все поля в разделе контактных данных содержат данные. Логическое поле может содержать логическое значение "истина" или "ложь". Если это поле содержит значение "истина", раздел со сведениями о разрешении на строительство отображается.
Чтобы показать элемент управления "Раздел", содержащий сведения о разрешении на строительство, нужно настроить в логическом поле правило, выполняющее эту функцию, если все поля раздела контактных данных содержат значения.
Текстовые функции
объединить
Объединяет два или несколько полей с текстовыми строками в одну строку.
Синтаксис
объединить(текст1, текст2, ...)
Аргумент |
Описание |
текст1 |
Поле с текстом, который необходимо объединить в общую строку с текстом во втором аргументе. |
текст2, … |
Одно или несколько дополнительных полей, содержащих текст, который требуется объединить с предыдущим полем. Текстовые поля разделяются запятыми. |
Пример
Предположим, требуется разработать шаблон формы с полями "ПолеИмя" и "ПолеФамилия". В третье поле можно ввести указанную ниже формулу, формирующую строку “Эта форма была заполнена пользователем <имя> <фамилия>”.
объединить("Эта форма была заполнена пользователем ", ПолеИмя, " ", ПолеФамилия, ".")
Примечание: Все текстовые строки, передаваемые в качестве текстовых аргументов, включая пробелы и знаки препинания, должны быть заключены в двойные кавычки (").
содержит
Возвращает значение "истина", если первое поле или текстовая строка содержит значение второго поля или строки. В противном случае возвращает значение "ложь".
Синтаксис
содержит(просматриваемый_текст, искомый_текст)
Аргумент |
Описание |
просматриваемый_текст |
Поле с текстом, в котором выполняется поиск. |
искомый_текст |
Поле с текстом или текстовая строка в двойных кавычках, которую требуется найти в первом аргументе. |
Пример
Предположим, требуется разработать шаблон формы с тремя текстовыми полями. Первое поле позволяет пользователю ввести длинный текст в первый текстовый элемент управления "ПолеТекст". С помощью второго поля пользователь вводит короткую текстовую строку, и это поле называется "ПолеИскомыйТекст". Третье поле используется для сравнения второго текстового поля с первым и отображения результата, указывающего, содержится ли значение второго поля в первом. В качестве значения по умолчанию для третьего поля можно ввести следующую формулу:
содержит(ПолеТекст,ПолеИскомыйТекст)
нормализация-пробелов
Удаляет пробелы из текстовой строки.
Примечание: Эта функция удаляет все начальные, конечные и повторяющиеся пробелы из поля с текстовым типом данных.
Синтаксис
нормализация-пробелов(текст)
Аргумент |
Описание |
текст |
Текст, содержащий начальные, конечные и повторяющиеся пробелы, которые требуется удалить. Он должен быть заключен в двойные кавычки (" "). |
Пример
Предположим, требуется разработать шаблон формы с полем "ПолеТекст", которое связано с элементом управления "Текстовое поле". Чтобы выполнить нормализацию текста в этом поле и вывести его без лишних пробелов, нужно добавить второе поле и ввести для него в качестве значения по умолчанию следующую формулу:
нормализация-пробелов(ПолеТекст)
начиная-с
Возвращает значение "истина", если значение первого поля или текстовой строки начинается со значения второго поля или строки. В противном случае возвращает значение "ложь".
Синтаксис
начиная-с(текст, нач_текст)
Аргумент |
Описание |
текст |
Имя поля с текстом, в котором выполняется поиск. Аргументы разделяются запятыми. |
нач_текст |
Текст, который требуется найти в начале значения поля, заданного в первом аргументе. Этот аргумент может представлять собой поле или текст, заключенный в двойные кавычки (" "). |
Пример
Предположим, требуется разработать шаблон формы с тремя текстовыми полями. Первое поле позволяет пользователю ввести длинный текст в первый текстовый элемент управления "ПолеТекст". С помощью второго поля пользователь вводит короткую текстовую строку, и это поле называется "ПолеИскомыйТекст". Третье поле используется для сравнения второго текстового поля с первым и отображения результата, указывающего, начинается ли значение первого поля со значения второго. В качестве значения по умолчанию для третьего поля можно ввести следующую формулу:
начиная-с(ПолеТекст, ПолеИскомыйТекст)
строка
Преобразует значение в текстовую строку.
Синтаксис
строка(значение)
Аргумент |
Описание |
значение |
Поле со значением, которое требуется преобразовать в текст. |
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться подрядчиками для запроса разрешений на строительство. Этот шаблон содержит раздел, в котором подрядчик указывает свой юридический адрес. Для подтверждения действительности этого адреса в шаблоне формы используется подключение к данным веб-службы, которая выполняет необходимую проверку. Если адрес подтверждается, подрядчику разрешается отправить форму в базу данных SQL. В этой базе данных для хранения адреса используется текстовое поле. Веб-службе необходимо, чтобы номер дома имел числовой тип данных, а название улицы — текстовый.
Для передачи данных веб-службе и их отправки в базу данных SQL адрес должен храниться в виде двух значений разных типов.
-
Для передачи адреса веб-службе номер дома должен иметь числовой тип данных.
-
Для отправки адреса в базу данных SQL как номер дома, так и название улицы должны иметь текстовый тип данных.
Подрядчик должен вводить адрес только один раз. Чтобы обеспечить преобразование адреса в нужные типы данных и избавить подрядчика от необходимости вводить адрес повторно, в форму нужно включить поле "ПолеНомерДома", в которое вводится номер дома, и еще одно поле для названия улицы. Поле "ПолеНомерДома" имеет числовой тип данных, а поле с названием улицы — текстовый.
Для отправки полного адреса (названия улицы и номера дома) в базу данных SQL необходимо объединить значения в поле "ПолеНомерДома" и поле с названием улицы в одно значение текстового типа. Сначала необходимо преобразовать числовые данные в поле "ПолеНомерДома" в текстовый тип. В источник данных нужно добавить поле с текстовым типом данных, содержащее полный адрес.
Чтобы преобразовать числовые данные из поля "ПолеНомерДома" в текстовый тип и затем использовать веб-службу, нужно настроить еще одно поле, в котором номер дома будет храниться в текстовом виде. Для преобразования номера дома из числового типа в текстовый в это поле в качестве значения по умолчанию можно ввести следующую формулу:
строка(ПолеНомерДома)
длина-строки
Возвращает количество знаков в текстовой строке.
Синтаксис
длина-строки(текст)
Аргумент |
Описание |
текст |
Поле с текстовой строкой, длину которой требуется найти. |
Пример
Предположим, требуется разработать шаблон формы с полем "ПолеТекст", связанным с элементом управления "Текстовое поле". Этот шаблон содержит второе поле, которое используется для подсчета числа знаков, введенных в первое. Во второе поле в качестве значения по умолчанию можно ввести следующую формулу:
длина_строки(ПолеТекст)
подстрока
Возвращает определенную часть текстовой строки. Во втором аргументе указана начальная позиция, а в третьем — количество включаемых в подстроку знаков.
Синтаксис
подстрока(текст, нач_позиция, число_знаков)
Аргумент |
Описание |
текст |
Поле с данными текстового типа или текст, заключенный в двойные кавычки (" "). Функция проверяет этот текст и возвращает знаки, начиная с позиции, заданной во втором аргументе. Подстрока содержит столько знаков, сколько указано в третьем аргументе, либо все знаки до последнего знака текста, если его длина недостаточна. |
нач_позиция |
Начальная позиция текстовой строки, извлекаемой из первого аргумента. Этот аргумент должен быть целым числом или ссылкой на поле, в котором хранятся целые числа (integer). |
число_знаков |
Число знаков, которые требуется получить, начиная с начальной позиции, указанной во втором аргументе. Этот аргумент должен быть целым числом или ссылкой на поле, в котором хранятся целые числа (integer). |
Пример
Предположим, требуется разработать шаблон формы с перечисленными ниже полями и элементами управления.
-
Поле "ПолеТекст", связанное с элементом управления "Текстовое поле". Это поле содержит текст, в котором функция выполняет поиск.
-
Поле "ПолеНачПозиция", связанное с элементом управления "Текстовое поле". Это поле настроено для хранения целых чисел и содержит начальную позицию, с которой функция начинает поиск.
-
Поле "ПолеЧислоЗнаков", связанное с элементом управления "Текстовое поле". Это поле настроено для хранения целых чисел и содержит число знаков, возвращаемых функцией.
-
Элемент управления "Текстовое поле", в котором отображается результат функции. Этот элемент управления содержит следующую формулу:
подстрока(ПолеТекст, ПолеНачПозиция, ПолеЧислоЗнаков)
Если пользователь вводит в первое текстовое поле строку “Эта форма создана на основе шаблона формы InfoPath.”, во второе — значение 4, а в третье — 16, то в четвертом текстовом поле отображается строка “ форма создана н”.
подстрока-после
Возвращает часть первой текстовой строки, которая следует за первым вхождением второй текстовой строки.
Синтаксис
подстрока-после(текст, искомый_текст)
Аргумент |
Описание |
текст |
Поле с данными текстового типа или текст, заключенный в двойные кавычки (" "). Функция проверяет текст из этого аргумента и возвращает все знаки, следующие за текстом из второго аргумента. |
искомый_текст |
Текст, который требуется найти в тексте первого аргумента. Это может быть значение поля с данными текстового типа или текст, заключенный в двойные кавычки (" "). Функция ищет этот текст в тексте из первого аргумента и возвращает все следующие за ним знаки. |
Пример
Предположим, требуется разработать шаблон формы с перечисленными ниже полями и элементами управления.
-
Поле "ПолеТекст", связанное с элементом управления "Текстовое поле". Это поле содержит текст, в котором функция выполняет поиск.
-
Поле "ПолеПодстрока", связанное с элементом управления "Текстовое поле". Это поле содержит текст второго аргумента функции.
-
Элемент управления "Текстовое поле", в котором отображается результат функции. Этот элемент управления содержит следующую формулу:
подстрока-после(ПолеТекст, ПолеПодстрока)
Если пользователь вводит в поле "ПолеТекст" строку “Эта форма создана на основе шаблона формы InfoPath.”, а во второе поле — строку “шаблона”, то в третьем текстовом поле отображается строка " формы InfoPath.”.
подстрока-до
Возвращает часть первой текстовой строки, которая предшествует первому вхождению второй текстовой строки.
Синтаксис
подстрока-до(текст, искомый_текст)
Аргумент |
Описание |
текст |
Поле с данными текстового типа или текст, заключенный в двойные кавычки (" "). Функция проверяет текст из этого аргумента и возвращает все знаки, предшествующие тексту второго аргумента (искомый_текст). |
искомый_текст |
Значение, которое требуется найти в аргументе "текст". Это может быть значение поля с данными текстового типа или текст, заключенный в двойные кавычки (" "). Функция ищет это значение в строке из первого аргумента (текст) и возвращает все предшествующие ему знаки. |
Пример
Предположим, требуется разработать шаблон формы с перечисленными ниже полями и элементами управления.
-
Поле "ПолеТекст", связанное с элементом управления "Текстовое поле". Это поле содержит текст, в котором функция выполняет поиск.
-
Поле "ПолеПодстрока", связанное с элементом управления "Текстовое поле". Это поле содержит текст второго аргумента функции.
-
Управления AA текстовым полем, отображающий результаты функции. Элемент управления текстовым полем содержит следующую формулу:
подстрока-до(ПолеТекст, ПолеПодстрока)
Если пользователь вводит в поле "ПолеТекст" строку “Эта форма создана на основе шаблона формы InfoPath.”, а во второе поле — строку “создана”, то в третьем текстовом поле отображается строка "Эта форма ”.
перевести
Возвращает первую текстовую строку, в которой все знаки из второй текстовой строки заменены знаками в соответствующих позициях из третьей текстовой строки.
Синтаксис
перевести(текст, искомые_знаки, знаки_для_замены)
Аргумент |
Описание |
текст |
Имя поля с текстом, знаки в котором требуется заменить. Аргументы разделяются запятыми. |
искомые_знаки |
Знак или значение поля с данными текстового типа, которые будут заменены знаками из третьего аргумента. Аргументы разделяются запятыми. |
знаки_для_замены |
Знак или значение поля с данными текстового типа, которыми нужно заменить все вхождения знака из второго аргумента. |
Пример
Предположим, требуется разработать шаблон, формы на основе которого будут использоваться подрядчиками для запроса разрешений на строительство. Этот шаблон содержит раздел, в котором подрядчик указывает свой юридический адрес. В этом разделе есть поле "ПолеАдрес", связанное с элементом управления "Текстовое поле", в которое подрядчик вводит свой адрес.
Для подтверждения действительности адреса используется подключение к данным веб-службы, которая выполняет необходимую проверку. Веб-службе требуется, чтобы в строке адреса содержались только строчные буквы.
Для преобразования всех прописных букв адреса в строчные нужно добавить в источник данных еще одно поле, в котором будет содержаться почтовый адрес, преобразованный в строчные буквы. В качестве значения по умолчанию для этого поля можно ввести следующую формулу:
перевести(ПолеАдрес, АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ, абвгдеёжзийклмнопрстуфхцчшщъыьэюя)
Функции для работы с URL-адресами
SharePointListUrl
Возвращает адрес списка или библиотеки форм SharePoint, в которых размещена форма (только в приложении InfoPath 2010).
Синтаксис
SharePointListUrl()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон формы для списка SharePoint и добавить в него ссылку на расположение этого списка, например http://sharepointserver/site/list/. Для этого нужно добавить элемент управления "Гиперссылка", задать для него параметр Только для чтения, а в качестве значения по умолчанию для поля, с которым он связан, ввести следующую формулу:
SharePointListUrl()
Примечание: Если шаблон формы не размещена на сервере SharePoint server, функция SharePointListUrl() только вернет «http://sharepointserver/site/list/».
SharePointServerRootUrl
Возвращает адрес сервера SharePoint Server, на котором размещена форма (только в приложении InfoPath 2010).
Синтаксис
SharePointServerRootUrl()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон формы для списка SharePoint и добавить в него ссылку на корень сервера SharePoint Server, на котором размещен этот список, например http://sharepointserver/site/list/. Для этого нужно добавить элемент управления "Гиперссылка", задать для него параметр Только для чтения, а в качестве значения по умолчанию для поля, с которым он связан, ввести следующую формулу:
SharePointServerRootUrl()
Примечание: Если шаблон формы не размещена на сервере SharePoint server, функция SharePointListUrl() только вернет «http://sharepointserver/site/list/».
SharePointSiteCollectionUrl
Возвращает адрес семейства сайтов SharePoint, в котором размещена форма (только в приложении InfoPath 2010).
Синтаксис
SharePointSiteCollectionUrl()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон формы для списка SharePoint и добавить в него ссылку на семейство веб-сайтов на сервере SharePoint Server, в котором размещен этот список, например http://sharepointserver/sitecollection/. Для этого нужно добавить элемент управления "Гиперссылка", задать для него параметр Только для чтения, а в качестве значения по умолчанию для поля, с которым он связан, ввести следующую формулу:
SharePointSiteCollectionUrl()
Примечание: Если шаблон формы не размещена на сервере SharePoint server, функция SharePointListUrl() только вернет «http://sharepointserver/sitecollection/».
SharePointSiteUrl
Возвращает адрес сайта SharePoint, на котором размещена форма (только в приложении InfoPath 2010).
Синтаксис
SharePointSiteUrl()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон формы для списка SharePoint и добавить в него ссылку на сайт SharePoint, на котором размещен этот список, например http://sharepointserver/site/. Для этого нужно добавить элемент управления "Гиперссылка", задать для него параметр Только для чтения, а в качестве значения по умолчанию для поля, с которым он связан, ввести следующую формулу:
SharePointSiteUrl()
Примечание: Если шаблон формы не размещена на сервере SharePoint server, функция SharePointListUrl() только вернет «http://sharepointserver/site/».
Функция имяПользователя()
имяПользователя
Возвращает имя пользователя, заполняющего данную форму (в Microsoft InfoPath 2007 и более поздних версиях приложения).
Примечание: Если пользователь заполняет форму в веб-браузере, его имя извлекается из служб Microsoft Windows SharePoint Services 3.0 или более поздней версии.
Синтаксис
имяПользователя()
У этой функции нет аргументов.
Пример
Предположим, требуется разработать шаблон формы отчета о расходах организации. Компания-эмитент кредитных карт отправляет в электронном виде данные о расходах сотрудников организации в ее базу данных. Для извлечения сведений о расходах сотрудника, который заполняет форму, основанную на этом шаблоне, базе данных требуется его имя пользователя.
В источник данных шаблона формы нужно добавить поле для хранения имени пользователя сотрудника. Также нужно создать подключение к базе данных, в котором значение в этом поле будет использоваться для получения сведений о расходах.
Чтобы гарантировать получение правильного имени пользователя сотрудника, заполняющего отчет о расходах, нужно привязать поле к элементу управления "Текстовое поле". Для вывода имени пользователя, который создал форму, основанную на этом шаблоне, можно ввести в поле, связанное с элементом управления "Текстовое поле", в качестве значения по умолчанию следующую формулу:
имяПользователя()