Важно
Поддръжката за Microsoft InfoPath 2013 приключи на 14 юли 2026 г. Препоръчваме мигриране на съществуващи формуляри и работни потоци на InfoPath към поддържани решения на Microsoft 365. Научете повече за оттеглянето на InfoPath.
Формулите ви дават възможност да получите повече от правилата, които създавате, отколкото при използване на основни, предварително дефинирани правила. Например формулите се използват за неща като изчисляване на текущата или бъдещата дата или дори за обединяване на текст.
В тази статия
Общ преглед
Формулата е XPath (XML Path Language) израз, който се състои от стойности, полета или групи, функции и оператори, които се използват за изчисляване и показване на други стойности. Можете да използвате формула, за да създадете нова стойност за поле и да покажете тази стойност в контрола, която е обвързана с това поле. Формулите могат да се използват по следния начин:
Изчисляване на математическа стойност на базата на стойности, които сте задали при проектирането на шаблона, или на базата на стойности, които потребителят въвежда, когато попълва шаблона за формуляр.
Изпълнение на правило на базата на стойност, която се изчислява с помощта на формула.
Показване на текст само за четене, изчислен от други контроли, или показване на стойността на друга контрола.
Функция е израз, който връща стойност въз основа на резултатите от изчисление. Стойностите, използвани във функциите, се наричат аргументи. Можете да използвате стандартните функции на XPath 1.0, които са включени в InfoPath, в допълнение към някои функции, специфични за InfoPath. Функциите се състоят от следните три части:
- Име Името на функцията обикновено дава представа за действието, което функцията ще изпълни.
- Върната стойност Резултатът от функцията.
- Аргументи Стойностите, използвани от функцията за извършване на изчислението.
Една функция може да изисква аргументи, за да върне стойност. Ако функцията изисква аргументи, трябва да знаете колко аргумента са необходими и типа на данните на всеки аргумент. Функцията няма да работи, ако зададете грешен брой или тип задължителни аргументи.
Следващата илюстрация показва връзката между функции, изрази и формули.
Добавяне на контрола за изчисляема стойност
Можете да използвате контрола на изчисляема стойност, за да показвате текст само за четене, да показвате стойността на друга контрола във формуляра и да създавате формули, базирани на XPath изрази. Например ако разработвате шаблон на формуляр за проследяване на разходи, можете да добавите контрола на изчисляема стойност, за да покажете общата сума на разходите, които са въведени.
Забележка
Контролата за изчисляема стойност само показва данните, без да ги съхранява, така че трябва да използвате контрола на изчисляема стойност само ако не искате да запишете нейната стойност или да я препращате към друга формула.
В шаблона за формуляр поставете курсора там, където искате да вмъкнете контролата.
В раздела Начало , в групата Контроли щракнете върху контролата на изчисляема стойност .
В диалоговия прозорец "Вмъкване на изчисляема стойност " направете едно от следните неща:
За да въведете текст или XPath израз директно в контролата за изчисляема стойност, въведете текст в полето XPath .
За да вмъкнете формула, щракнете върху "Редактиране на формула
и след това въведете желаната формула в текстовото поле " Формула ", като използвате следното, ако е необходимо:- За да вмъкнете поле или група във формулата, щракнете върху "Вмъкване на поле или група", щракнете върху полето или групата в диалоговия прозорец " Избор на поле или група " и след това щракнете върху OK.
- За да вмъкнете функция във формулата, щракнете върху "Вмъкване на функция", изберете функцията в диалоговия прозорец "Вмъкване на функция " и след това щракнете върху OK.
Ако функцията изисква параметри, изберете функцията в диалоговия прозорец "Вмъкване на функция ", щракнете върху OK и след това в текста на формулата щракнете двукратно там, където е посочено, и изберете желания параметър, преди да щракнете върху OK. - За да вмъкнете стойност или математически оператор във формулата, въведете стойността или символа за математическата операция в полето "Формула ".
Математическите оператори включват събиране (+), изваждане (-), умножение (*) и деление (/).
Математическите формули обикновено зависят от цели или десетични стойности като аргументи. За да избегнете празни стойности във вашата формула, в раздела "Файл " щракнете върху "Опции за формуляри ", след което изберете "Разширени " и се уверете, че е избрано "Считай празните стойности като нула ".
Добавяне на формула към контрола
Въпреки че можете да използвате контрола на изчисляема стойност за показване на резултатите от формула, не сте ограничени до използването на контрола на изчисляема стойност. Можете също да използвате формула, за да зададете стойността по подразбиране на други контроли, например текстови полета. Има два начина, по които можете да зададете стойността по подразбиране на контрола. Можете да използвате статична стойност по подразбиране, като просто въведете желаната стойност в полето "Стойност " на диалоговия прозорец "Свойства на полето" или "Свойства на групата ", или да използвате формула, за да зададете стойността по подразбиране на поле на базата на други стойности във формуляра. За да зададете стойността по подразбиране на поле, базирано на формула, направете следното:
Изберете контролата, към която искате да добавите формулата, след което под "Инструменти за контрола", в раздела "Свойства ", в групата "Свойства " щракнете върху "Стойност по подразбиране".
Щракнете върху "Вмъкване на формула
до полето " Стойност ".Въведете желаната формула в текстовото поле "Формула ", като използвате следното, ако е необходимо:
За да вмъкнете поле или група във формулата, щракнете върху "Вмъкване на поле или група", щракнете върху полето или групата в диалоговия прозорец " Избор на поле или група " и след това щракнете върху OK.
За да вмъкнете функция във формулата, щракнете върху "Вмъкване на функция", изберете функцията в диалоговия прозорец "Вмъкване на функция " и след това щракнете върху OK.
Ако функцията изисква параметри, изберете функцията в диалоговия прозорец "Вмъкване на функция ", щракнете върху OK и след това в текста на формулата щракнете двукратно там, където е посочено, и изберете желания параметър, преди да щракнете върху OK.За да вмъкнете стойност или математически оператор във формулата, въведете стойността или символа за математическата операция в полето "Формула ".
Математическите оператори включват събиране (+), изваждане (-), умножение (*) и деление (/).Съвет
Математическите формули обикновено зависят от цели или десетични стойности като аргументи. За да избегнете празни стойности във вашата формула, в раздела "Файл " щракнете върху "Опции за формуляри" и след това изберете "Разширени". Уверете се, че е избрано "Считай празните стойности като нула ".
За да редактирате формулата като XPath формула, отметнете квадратчето Редактиране на XPath (разширени ), което ще промени формулата на XPath за израз на формулата.
За да проверите дали е правилен синтаксисът на формулата, щракнете върху бутона "Проверка на формулата ". Ако формулата ви съдържа грешки:
Щракнете върху "Покажи подробните данни " в диалоговия прозорец Microsoft InfoPath , за да видите грешките във формулата. Следват някои предложения за отстраняване на тези грешки:
- Ако използвате функция във вашата формула, проверете дали използвате правилните аргументи за функцията. Някои функции изискват полета или групи, докато други изискват указани стойности като аргументи.
- Ако е необходимо, изтрийте и въведете повторно формулата, за да се уверите, че е правилно въведена.
- Щракнете върху OK.
- Ако искате да актуализирате стойността по подразбиране на полето, когато се променят стойностите, на които се базира, отметнете квадратчето Обновявай стойността при преизчисляване на формула . Ако направите това, щракнете върху OK и под Инструменти за контрола, в раздела Свойства , в групата Свойства щракнете върху Свойства на контролата. Щракнете върху раздела "Показване " и след това изберете квадратчето за отметка "Само за четене ".
Използване на формула в правило
Възможно е при задаване на условия в правилата за проверка, форматиране или действие да се използва формула, която да управлява условието. Можете да направите това, като изберете "Използвай формула от третия падащ списък" в диалоговия прозорец "Условие ", когато присвоявате правило на контрола или шаблон за формуляр.
Функции за дата и час
addDays
Добавя дни към дата или дата и час.
Синтаксис
addDays(дата; дни)
| Аргумент | Описание |
|---|---|
| date | Броят на дните във втория аргумент се добавя към датата в този аргумент. Този аргумент може да бъде данни от тип "Дата" (дата) или "Дата и час" (dateTime). |
| дни | Броя дни, които искате да добавите към датата в първия аргумент. Този параметър трябва да бъде тип данни от тип цяло число (цяло число). Ако използвате отрицателно число в този аргумент, върнатата стойност е по-ранна дата. |
Пример
Искате дадено поле във вашия шаблон за формуляр да съдържа дата, която е 60 дни след днешната дата. Вашият шаблон за формуляр съдържа поле с име fldToday, с днешната дата като стойност по подразбиране. За да изчислите новата дата с помощта на тази функция, използвайте следната формула в полето за нова дата:
addDays(fldToday, 60)
addSeconds
Добавя секунди към час или дата и час.
Синтаксис
addSeconds(време; секунди)
| Аргумент | Описание |
|---|---|
| time | Стойност на дата и час или стойност за час, която е препратка към друго поле в шаблона на формуляр или резултат от функция за дата или час, като например now() или today(). Броят на секундите във втория аргумент се добавя към часа в този аргумент. Този аргумент може да бъде данни от тип "Дата" (дата) или "Дата и час" (dateTime). Ако това е тип данни за време, ще бъде върнат тип данни за време. Ако това е от тип данни "Дата", ще бъде върнат тип данни "Дата" и "Час". |
| секунди | Броят секунди, който искате да добавите към стойността за дата и час или стойността за час в първия аргумент. Полето в този параметър трябва да е от тип данни "Цяло число" (цяло число). Ако използвате отрицателно число в този аргумент, върнатата стойност е или по-стара дата и час, или по-ранен час. |
Пример
Вашият шаблон на формуляр съдържа поле с име fldCurrentTime, което използва текущия час като стойност по подразбиране, и второ поле, което използва функцията addSeconds във формула, за да покаже времето на 120 секунди от текущия час. За да изчислите новата стойност за време с помощта на тази функция, въведете следната формула във второто поле:
addSeconds(fldCurrentTime, 120)
сега
Връща текущата системна дата и час.
Ако искате да се върне само текущата дата, използвайте функцията today.
Синтаксис
now()
Тази функция не използва аргументи.
Пример
За да получите датата и часа, когато е създаден формуляр, базиран на вашия шаблон за формуляр, използвайте следната формула в едно поле:
now()
днес
Връща текущата системна дата. За списъчни полета за дати на SharePoint използвайте функцията now().
Ако искате да се върнат и датата, и часът, използвайте функцията now.
Синтаксис
today()
Тази функция не използва аргументи.
Пример
За да получите датата, на която е създаден формулярът, базиран на вашия шаблон за формуляр, използвайте следната формула в едно поле:
today()
Функции за полета
count
Преброява броя на екземплярите на поле или група.
Синтаксис
count(поле)
| Аргумент | Описание |
|---|---|
| поле | Името на повтарящото се поле или повтарящата се група, която трябва да се брои във формуляра. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от доставчиците за отчитане на техните продукти и наличности. Шаблонът за формуляр съдържа повтаряща се група с име grpProduct за продуктите, подадени от доставчика. Всяка група съдържа информация за продукта и неговото ниво на наличност. Когато доставчик добавя продукт във формуляр, базиран на този шаблон за формуляр, InfoPath създава нов екземпляр на повтарящата се група.
Вашият шаблон на формуляр има поле в източника на данни, което съдържа броя продукти, подадени от доставчика. За автоматично преброяване на продуктите, подадени от доставчика, което е броят на екземплярите на повтарящата се група grpProduct, използвайте следната формула в полето "Брой продукти":
count(grpProduct)
последна страница
Връща последното повторение на повтарящо се поле или група.
Забележка
Ако проектирате съвместим с браузър шаблон за формуляр, тази функция не се показва в списъка с функции в диалоговия прозорец "Вмъкване на функция".
Синтаксис
field_name[last()]
Въпреки че самата функция няма задължителни параметри, можете да използвате тази функция като предикат, за определено име на поле.
Пример
Проектирате шаблон на формуляр, който доставчиците ще попълват, за да докладват своите продуктови наличности. Шаблонът за формуляр има връзка за данни към уеб услуга, която има метод, който проверява дали информацията за продуктите за всички продукти от доставчик е попълнена. Методът се нуждае от последния продукт в списъка с продукти, предоставен от доставчика.
Информацията за продукта се съхранява в различни полета на повтаряща се група, която се нарича grpProduct. Когато доставчик добави продукт във формуляра, InfoPath добавя нова повтаряща се група, наречена grpProduct. Ако доставчикът отчита за няколко продукта, източникът на данни на формуляра ще съдържа няколко екземпляра на повтарящата се група grpProduct.
За да сте сигурни, че подавате правилната информация към уеб услугата, можете да добавите поле, което ще съдържа информация за последния продукт в групата продукти от доставчика. За да конфигурирате това поле да извлича автоматично последния продукт, използвайте следната формула като стойност по подразбиране за последното поле за продукт:
grpProduct[last()]
локално име
Връща локалното име на поле или група.
Забележка
- Ако аргументът е повтарящо се поле или повтаряща се група, функцията връща стойността на първото повтарящо се поле или повтаряща се група.
- Когато потребител попълва формуляр за уеб браузър, формула, използваща тази функция, изпраща данни на формуляра до сървъра, за да получи върнатата стойност за тази функция.
Синтаксис
local-name(поле)
| Аргумент | Описание |
|---|---|
| поле | Името на полето, чийто атрибут на локално име искате да върнете. |
Пример
Проектирате шаблон на формуляр, който се използва за заявления за разрешителни. Шаблонът за формуляр има връзка за данни към метод в уеб услуга. Този метод изисква стойността на атрибута local-name на полето за номера на лиценза на изпълнителя. Името на полето за номер на лиценз е fldLicenseNumber.
Имате поле, което ще съдържа стойността на атрибута local name. За да извлечете автоматично стойността на атрибута local name на полето за номер на лиценз, използвайте следната формула като стойност по подразбиране за полето, което ще съдържа стойността на атрибута local name:
local-name(fldLicenseNumber)
име
Връща префикса "име и пространство на имената" на поле или група.
Забележка
- Ако аргументът е повтарящо се поле или повтаряща се група, функцията връща името и префикса на първото повтарящо се поле или повтаряща се група във формуляра.
- Когато потребител попълва формуляр, базиран на шаблон за формуляр, разрешен за браузър, формула, използваща тази функция, изпраща данни за формуляр на сървъра, за да получи върнатата стойност за тази функция.
Синтаксис
name(field)
| Аргумент | Описание |
|---|---|
| поле | Името на полето, чийто префикс и име на пространство на имена искате да върнете. |
Пример
Проектирате шаблон на формуляр, който се използва за заявления за разрешителни. Шаблонът за формуляр има връзка за данни към метод в уеб услуга. Този метод изисква атрибута name на полето за номера на лиценза на изпълнителя. Името на полето за номер на лиценз е fldLicenseNumber.
Имате поле, което ще съдържа стойността на атрибута "име". За да извлечете автоматично стойността на атрибута name, използвайте следната формула като стойност по подразбиране за полето:
name(fldLicenseNumber)
пространство от имена – URI
Връща пълното пространство на имената на поле или група.
Забележка
- Ако аргументът е набор от полета или групи, функцията връща пространството на имената на първото поле или група във формуляра.
- Когато потребител попълва формуляр за уеб браузър, формула, използваща тази функция, изпраща данни на формуляра до сървъра, за да получи върнатата стойност за тази функция.
Синтаксис
namespace-uri(поле)
| Аргумент | Описание |
|---|---|
| поле | Името на полето, чийто URI на пространство на имената искате да извлечете. |
Пример
Проектирате шаблон на формуляр, който се използва за заявления за разрешителни. The form template подава данни на уеб услуга. За да обработи данните от формуляр, базиран на вашия шаблон за формуляр, уеб услугата изисква URI на пространство на имена от конкретно поле на елемент в източника на данни. Полето във вашия шаблон за формуляр, което съдържа URI данните за пространството на имената, се нарича fldComplete.
Имате поле, което ще съдържа URI на пространството на имената на полето на елемента. За да извлечете автоматично URI на пространството на имената, използвайте следната формула като стойност по подразбиране за полето, което ще съдържа URI на пространството на имената:
namespace-uri(fldComplete)
Позиция
Връща индекса (или позицията) на поле или група по отношение на другите полета или групи в същата родителска група.
Забележка
Тази функция не е налична в шаблони на формуляри за уеб браузър.
Синтаксис
position()
Пример
Проектирате шаблон на формуляр, който доставчиците ще попълват, за да докладват своите продуктови наличности. Информацията за продукта се съхранява в полета в повтаряща се група. Повтарящата се група е обвързана с повтаряща се таблица, която позволява на доставчика да добавя нова или да променя съществуваща информация за продуктите.
В първата колона на повтарящата се таблица искате да покажете номера на реда в текстово поле. За да се показва автоматично номерът на реда, когато доставчикът добавя нов продукт към повтарящата се таблица, използвайте следната формула като стойност по подразбиране за текстовото поле:
position()
Математически функции
Формулите, които съдържат математически функции, обикновено изискват аргументи, които са цели числа или десетични стойности. За да се уверите, че аргументите са цели или десетични стойности, а не празни, щракнете върху "Разширени>опции на формуляр за файл>" и след това се уверете, че в квадратчето "Считай празните стойности като нула" има отметка.
средно
Изчислява средната стойност на числовите стойности в поле, което е в повтаряща се група.
Забележка
Повтарящото се поле трябва да е от числов тип данни и да е включено в група.
Синтаксис
AVG(поле)
| Аргумент | Описание |
|---|---|
| поле | Имената на повтарящото се поле в групата, за което искате да изчислите средната стойност. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от доставчиците за отчитане на техните продукти и наличности. Шаблонът за формуляр съдържа повтарящо се поле с име fldPrice, което е в повтаряща се група, съдържаща данните за всеки продукт, продаден от доставчика. Групата е обвързана с контрола на повтаряща се таблица.
Имате поле в шаблона за формуляр, което ще съдържа средната цена на всички продукти, които се продават от този доставчик. За да изчислите средната цена, използвайте следната формула в полето за средната цена:
avg(fldPrice)
Boolean
Връща "Истина", ако поле или група съществува. В противен случай връща false.
Това ще върне TRUE дори ако контрола, която е била свързана с полето, е изтрита, но полето все още съществува.
Синтаксис
boolean(поле)
| Аргумент | Описание |
|---|---|
| поле | Повтарящо се поле или повтаряща се група, които ще бъдат проверени от тази функция. |
Пример
Проектирате шаблон на формуляр, който доставчиците ще използват, за да отчитат своите продуктови наличности. Информацията за продукта се съхранява в различни полета в повтаряща се група, която се нарича grpProduct. Всяка повтаряща се група съдържа полета, които имат информация за всеки продукт. Ако доставчикът предостави информация за седем продукта, формулярът ще съдържа седем повтарящи се групи.
Повтарящата се група е обвързана с контрола на повтаряща се таблица, която позволява на доставчика да добавя нова или да променя съществуващата информация за продуктите. Доставчикът може да добавя или изтрива редове от повтарящата се таблица.
Искате да се покаже диалогов прозорец, ако потребителят премахне всички редове в повтарящата се таблица. Добавяте поле към източника на данни, което съдържа думата "true", ако контролата на повтарящата се таблица има поне един ред, и думата "false", ако контролата на повтарящата се таблица няма редове.
Конфигурирате правило в контролата на повтарящата се таблица за показване на диалогов прозорец, ако стойността в полето е невярна. За автоматично определяне дали повтарящата се таблица съдържа поне един ред, използвайте следната формула, тъй като стойността по подразбиране за полето, съдържащо думата "true" или "false":
boolean(grpProduct)
таван
Закръглява число до най-близкото цяло число.
Синтаксис
ceiling(number)
| Аргумент | Описание |
|---|---|
| число | Името на полето, което има числова стойност. |
Пример
Проектирате шаблон на формуляр за отчет на разходите за вашата фирма. Разходите се подават към уеб услуга, която има параметър, който приема само цели числа. Сумата на разходите, подавана на този параметър, трябва да се закръгли до по-голямата целочислена стойност. Сумата на разходите се записва в поле с име fldExpenseAmount, а цялата стойност се записва в друго поле. За да изчислите по-голямата целочислена стойност, използвайте следната формула като стойност по подразбиране за другото поле:
ceiling(fldExpenseAmount)
Ако потребител създаде формуляр, базиран на вашия шаблон за формуляр, и въведе 145,87 в полето fldExpenseAmount, стойността в полето, съдържащо формулата, ще бъде 146.
eval
Връща стойностите на поле или група. Вторият аргумент определя израза, който трябва да се изчисли за полето или групата. Обикновено функцията eval е вложена във функция, която работи върху поле или група, например SUM или AVG.
Синтаксис
eval(поле; израз)
| Аргумент | Описание |
|---|---|
| поле | Името на полето или групата, чиито стойности ще бъдат оценени от израза във втория аргумент. |
| израз | Изразът, който ще бъде приложен към първия аргумент. Изразът може да бъде или XPath функция, или израз, който е ограден с двойни кавички (" "). |
Пример
Проектирате шаблон на формуляр за отчет на разходите за вашата фирма. Шаблонът за формуляр съдържа поле с име fldTotal, което съдържа сума на разходите. Полето fldTotal е част от повтаряща се група, озаглавена grpExpenses. Другото поле е обвързано с текстово поле, което съдържа сумата на всички разходи. За да показвате сумата от всички разходи, докато потребителят въвежда сума на разходите, използвайте следната формула в полето "Общ разход":
eval(grpExpenses;sum(fldTotal))
false
Връща false.
Синтаксис
false()
Тази функция не използва аргументи.
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от изпълнителите при кандидатстване за разрешителни за строеж. Шаблонът на формуляр има две секции: една секция за информация за контакт и друга секция за информация, свързана с разрешението за строеж. Когато попълват този формуляр, изпълнителите ще трябва да попълнят напълно секцията с информация за контакт, преди да могат да попълнят раздела за разрешение за строеж.
За тази цел създавате правило за задаване на стойност на булево поле на false, ако някое от полетата в секцията "информация за контакт" е празна. Едно поле за булева стойност може да има или булева стойност "истина", или булева стойност "неистина". Можете също да конфигурирате условното форматиране така, че да скриете контролата на раздел, съдържаща информацията за разрешителното за строеж, ако булевата стойност на полето е false.
За да скриете контролата на секция, която съдържа полетата за информация за разрешителното за строеж, конфигурирайте правило за изпълнение на тази функция в булевото поле, ако някое от полетата в секцията "Информация за връзка" е празна.
етаж
Закръглява число надолу до най-близкото цяло число.
Синтаксис
floor(number)
| Аргумент | Описание |
|---|---|
| число | Името на полето, което има числова стойност. |
Пример
Проектирате шаблон на формуляр за отчет на разходите за вашата фирма. Разходите се подават към уеб услуга, която използва параметър, приемащ само цели числа. Сумата на разходите, която се подава на този параметър, трябва да се закръгли до най-малката целочислена стойност. Сумата на разходите се записва в поле с име fldExpenseAmount, а цялата стойност се записва в друго поле. За да изчислите по-малката целочислена стойност, използвайте следната формула като стойност по подразбиране за другото поле:
floor(fldExpenseAmount)
Максимум
Връща най-голямото число в поле или група.
Синтаксис
MAX(поле)
| Аргумент | Описание |
|---|---|
| поле | Повтарящо се поле в група или поле в повтаряща се група, за които искате да намерите най-високата стойност. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от доставчиците за отчитане на техните продуктови наличности. Шаблонът на формуляр съдържа повтаряща се група, която включва няколко полета, съдържащи данни за продуктите на доставчиците. Поле с име fldPrice в повтарящата се група съдържа цената на продукта.
Друго поле в източника на данни на шаблона за формуляр ще съдържа най-високата цена от всички продукти, продадени от този доставчик. За да върнете най-високата цена, използвайте следната формула в полето за най-висока цена:
max(fldPrice)
мин
Връща най-малкото число в поле или група.
Синтаксис
min(поле)
| Аргумент | Описание |
|---|---|
| поле | Повтарящо се поле в група или поле в повтаряща се група, за които искате да намерите най-високата стойност. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от доставчиците за отчитане на техните продуктови наличности. Шаблонът за формуляр съдържа повтаряща се група, която включва няколко полета, съдържащи данни за продуктите на доставчиците. Поле с име fldPrice в повтарящата се група съдържа цената на продукта.
Друго поле в източника на данни на шаблона за формуляр ще съдържа най-ниската цена от всички продукти, продадени от този доставчик. За да върнете най-ниската цена, използвайте следната формула в полето за най-ниска цена:
min(fldPrice)
не
Връща "истина", ако булева стойност е false или null. Връща false, ако булевата стойност е true или не е null.
Синтаксис
NOT(boolean_value)
| Аргумент | Описание |
|---|---|
| boolean_value | Поле с булев тип данни. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от изпълнителите при кандидатстване за разрешителни за строеж. Шаблонът на формуляр има една секция за информация за връзка и друга секция за информация, свързана с разрешението за строеж. Когато попълват този формуляр, изпълнителите ще трябва да попълнят напълно секцията с информация за контакт, преди да могат да попълнят раздела за разрешение за строеж.
За тази цел създавате правило, което задава стойността на булево поле да е false, ако някое от полетата в секцията "Информация за контакт" остане празно. Едно поле за булева стойност може да има или булева стойност true, или булева стойност false. След това използвайте същата формула, за да скриете контролата на секция, която съдържа информацията за разрешителното за строеж, ако стойността на булевото поле е false. За да зададете това правило, използвайте следната формула, за да зададете булевото поле на false:
not(true())
число
Преобразува стойност в число.
Функцията връща NaN, ако стойността в аргумента не може да бъде преобразувана в число.
Синтаксис
число(стойност)
Описание на аргумент
valueПолето със стойност, която да се преобразува в число.
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от изпълнителите при кандидатстване за разрешителни за строеж. Шаблонът за формуляр съдържа секция, където изпълнителят може да въведе служебния си адрес. За да проверите дали доставчикът въвежда валиден адрес, можете да използвате връзка за данни към уеб услуга, която може да провери адреса. Ако адресът е проверен, доставчикът може да подаде формуляра към SQL база данни. SQL базата данни използва текстово поле за номера на адреса и името на улицата. Уеб услугата изисква номерът на адресът да бъде от цифров тип данни и името на улицата да е текстов тип данни.
За да подадете данни както към уеб услугата, така и към SQL базата данни, адресът трябва да бъде съхранен като два различни типа данни:
- За да подадете адреса към уеб услугата, номерът на адреса трябва да е от цифров тип данни, а името на улицата трябва да е от текстов тип данни.
- За да подадете адреса в базата данни на SQL, номерът на адреса и името на улицата трябва да са от тип данни в текст.
Освен това искате изпълнителят да въведе адреса си само веднъж. За да преобразува адреса във правилните типове данни и да е сигурно, че доставчикът ще въведе адреса си само веднъж, шаблонът за формуляр съдържа поле с име fldAddressNumber за въвеждане на адреса и друго поле за въвеждане на името на улицата. И двете полета са конфигурирани като текстови типове данни.
За да подадете адресния номер на уеб услугата, трябва да преобразувате данните в полето fldAddressNumber (съхранено като текстов тип данни) в числов тип данни. Стойността на адресния номер, преобразуван в числов тип данни, се записва в друго поле, което е конфигурирано да съхранява числови типове данни.
За да конвертирате адресния номер от текстов тип данни в числов тип данни, използвайте следната формула като стойност по подразбиране за полето fldAddressNumber:
number(fldAddressNumber)
nz
Връща поле или група, в които всички празни полета са заместени с нула (0).
Синтаксис
Nz(поле)
| Аргумент | Описание |
|---|---|
| поле | Полето, което искате да проверите за стойност. |
Пример
Проектирате шаблон на формуляр, който доставчиците ще попълват, за да докладват своите продуктови наличности. Доставчикът ще подава продуктовите си описи към уеб услуга чрез формуляр, базиран на вашия шаблон за формуляр. Методът на уеб услугата изисква всички елементи, които съдържат числови данни, да имат числова стойност. Уеб услугата отхвърля формуляр, съдържащ празен числов елемент.
Вашият шаблон за формуляр съдържа поле с име fldAvailability, което съдържа число, съответстващо на възможността на доставчика да предостави този продукт. Доставчикът може да въведе число в това поле. За да сте сигурни, че доставчикът може да подаде своя формуляр, базиран на вашия шаблон за формуляр, към уеб услугата и автоматично да задава стойността на полето на нула, ако доставчикът не въведе число, използвайте следната формула като стойност по подразбиране за това поле:
nz(fldAvailability)
кръгъл
Закръглява число до най-близкото цяло число.
Ако нецелочислената стойност е точно по средата между две закръглени цели числа, върнатата стойност е следващата по големина целочислена стойност.
Синтаксис
round(число)
| Аргумент | Описание |
|---|---|
| число | Полето, съдържащо числото, което ще се закръгли с помощта на тази формула. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от доставчиците за отчитане на техните продуктови наличности. Шаблонът за формуляр съдържа повтаряща се група, която включва няколко полета, съдържащи данни за продуктите на доставчиците. Едно от полетата, наречено fldPrice, в повтарящата се група съдържа цената на продукта.
Шаблонът за формуляр има връзка за подаване на данни към уеб услуга. Методът на уеб услугата изисква всяка цена да се закръгли до цяла стойност. За да изпратите подходящата стойност към метода на уеб услугата, можете да добавите повтарящо се поле към източника на данни. Това поле използва следната формула, за да закръгли цената в полето fldPrice до цяла стойност:
round(fldPrice)
Сума
Връща сумата на всички полета в поле или група. Всяко поле първо се конвертира в числова стойност.
Синтаксис
sum(поле)
| Аргумент | Описание |
|---|---|
| поле | Името на поле в повтаряща се група или на повтарящо се поле в група, чиито стойности ще се сумират. За да добавите полета от две различни групи, използвайте оператора за обединение (|), за да разделите аргументите. Например: sum( име на поле 1 | име на поле 2). |
Пример
Проектирате шаблон за формуляр за отчет на разходите. Шаблонът за формуляр има група, която съдържа елементи на разходи. Сумата на всеки елемент се съхранява в поле с име fldExpenseAmount. Групата е обвързана с повтаряща се таблица, която показва всеки елемент на разхода като ред. Шаблонът за формуляр съдържа контрола текстово поле, която показва общите разходи. За да покаже общите разходи, контролата за текстово поле съдържа следната формула:
sum(fldExpenseAmount)
true
Връща true.
Синтаксис
true()
Тази функция не използва аргументи.
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от изпълнителите при кандидатстване за разрешителни за строеж. Шаблонът на формуляр съдържа една секция за информация за връзка и друга секция за информация, свързана с разрешението за строеж. Когато попълват този формуляр, изпълнителите ще трябва да попълнят напълно секцията с информация за контакт, преди да могат да попълнят раздела за разрешение за строеж.
За тази цел създавате правило, което задава стойност на булево поле на true, ако всички полета в секцията "Информация за контакт" съдържат данни. Едно поле за булева стойност може да има или булевата стойност True, или False. Ако стойността на булевото поле е true, показва се контролата на раздел, която съдържа информацията за разрешителното за строеж.
За да покажете контролата на секция, която съдържа информацията за разрешителното за строеж, конфигурирате правило за изпълнение на тази функция в булевото поле, ако всички полета в секцията "Информация за контакт" съдържат данни.
Текстови функции
concat
Комбинира две или повече полета с текстови низове в един текстов низ.
Синтаксис
CONCAT(текст1; текст2; ...)
| Аргумент | Описание |
|---|---|
| текст1 | Поле, което съдържа текст, който трябва да бъде комбиниран в един ред текст с текста в аргумент2. |
| текст2, ... | Или повече допълнителни полета, които съдържат текст, които да се комбинират с предишното поле. Разделяйте текстовите полета със запетая. |
Пример
Проектирате шаблон за формуляр, съдържащ поле с име fldFirstName и поле с име fldLastName. Добавете следната формула към трето поле, за да накарате то да съдържа текста "Този формуляр е попълнен със <собствено име><, фамилноиме>.":
concat("Този формуляр е попълнен от ", fldFirstName, " ", ", fldLastName, ".")
Забележка
Всеки действителен текст, въведен като текстов аргумент, включително интервалите или препинателните знаци, трябва да бъде вмъкнат в кавички (").
Съдържа
Връща "истина", ако първото поле или текстов низ съдържа второто. В противен случай връща false.
Синтаксис
Contains(within_text; find_text)
| Аргумент | Описание |
|---|---|
| в_текст | Полето, съдържащо текста, който ще бъде търсен. |
| намери_текст | Полето, съдържащо текста или текста, заграден с двойни кавички (" "), за търсене в първия аргумент. |
Пример
Проектирате шаблон за формуляр с три текстови полета. Първата ще позволи на потребителя да въведе дълъг текст в първата текстова контрола, наречена fldText. Вторият ще позволи на потребителя да въведе кратък сегмент от текст и се нарича fldFindText. Третото текстово поле ще сравни второто текстово поле с първото и ще покаже дали стойността във второто поле се намира в първото поле и ще покаже резултата. Стойността по подразбиране ще има следната формула:
contains(fldText,fldFindText)
нормализиране на пространството
Премахва интервали от текстов низ.
Забележка
Това ще премахне всички начални, крайни и повтарящи се празни интервали от поле с текстов тип данни.
Синтаксис
normalize-space(text)
| Аргумент | Описание |
|---|---|
| text | Текстът, съдържащ началните, крайните или повтарящите се празни интервали, които искате да премахнете. Поставете текста в двойни кавички (" "). |
Пример
Проектирате шаблон за формуляр, съдържащ поле с име fldText (което е обвързано с контрола текстово поле). За да нормализирате всеки текст, въведен в първото поле, и да покажете стойността в първото поле без излишни интервали, добавете второ поле със следната формула като стойност по подразбиране:
normalize-space(fldText)
започва с
Връща "Истина", ако първото поле или текстов низ започва с второто. В противен случай връща FALSE.
Синтаксис
starts-with(text; start_text)
| Аргумент | Описание |
|---|---|
| text | Името на полето, съдържащо текста, който ще бъде търсен. Разделяйте аргументите със запетая. |
| start_text | Текстът, който трябва да се търси, в началото на полето, зададено в първия аргумент. Този аргумент може да е поле или текст, ограден с двойни кавички (" "). |
Пример
Проектирате шаблон за формуляр с три текстови полета. Първата ще позволи на потребителя да въведе дълъг текст в първата текстова контрола, наречена fldText. Вторият ще позволи на потребителя да въведе кратък сегмент от текст и се нарича fldFindText. Третото текстово поле ще сравни второто текстово поле с първото и ще покаже дали стойността в първото поле започва със стойността във второто поле и ще покаже резултата. Стойността по подразбиране ще има следната формула:
starts-with(fldText, fldFindText)
низ
Преобразува стойност в текстов низ.
Синтаксис
String(стойност)
| Аргумент | Описание |
|---|---|
| стойност | Полето, съдържащо стойността, която се преобразува в текст. |
Пример
Проектирате шаблон на формуляр, чиито формуляри ще се използват от изпълнителите при кандидатстване за разрешителни за строеж. Шаблонът за формуляр съдържа секция, в която изпълнителят може да въведе своя служебен адрес. За да се увери, че доставчикът въвежда валиден адрес, шаблонът на формуляр има връзка за данни към уеб услуга, която може да провери адреса. Ако адресът е проверен, доставчикът може да подаде формуляра към SQL база данни. SQL базата данни използва текстово поле за улица. Уеб услугата изисква номерът на адресът да бъде от цифров тип данни и името на улицата да е текстов тип данни.
За да подадете данни както към уеб услугата, така и към SQL базата данни, адресът трябва да се съхранява в два различни типа данни:
- За да подадете адреса към уеб услугата, номерът на адреса трябва да е от числов тип данни.
- За да подадете адреса в базата данни на SQL, номерът на адреса и името на улицата трябва да са от тип данни в текст.
Освен това искате изпълнителят да въведе адреса си само веднъж. За да преобразува адреса в правилните типове данни и да е сигурно, че доставчикът ще въведе адреса си само веднъж, формулярът съдържа поле за въвеждане на адресния номер, който се нарича fldAddressNumber, и друго поле за въвеждане на името на улицата. Полето fldAddressNumber е числов тип данни, а полето за име на улица е текстов тип данни.
За да подадете пълния адрес (както номера на адреса, така и името на улицата) към SQL базата данни, трябва да комбинирате стойностите в полето fldAddressNumber и полето за име на улица в една стойност, която е текстов тип данни. Трябва първо да преобразувате числовите данни в полето fldAddressNumber, което съхранява данните като числов тип данни, в текстов тип данни. Ще добавите поле към източника на данни, което ще съдържа пълния адрес като текстов тип данни.
За да преобразувате текстовите данни в полето fldAddressNumber в текстови тип данни, така че да можете да използвате уеб услугата, конфигурирайте друго поле, което ще съдържа номера на адреса като текстов тип данни. За да конвертирате адресния номер от числов тип данни в текстов тип данни, използвайте следната формула като стойност по подразбиране за това поле:
string(fldAddressNumber)
дължина на низ
Връща броя на знаците в текстов низ.
Синтаксис
дължина на низ(текст)
| Аргумент | Описание |
|---|---|
| text | Полето, чиято стойност е текстът, който искате да преброите. |
Пример
Проектирате шаблон за формуляр, съдържащ поле с име fldText, което е обвързано с контрола на текстово поле. Вашият шаблон за формуляр включва второ поле, което се използва за преброяване на броя на знаците, въведени в първия формуляр. За да направите това, второто поле ще съдържа следната формула като стойност по подразбиране:
string-length(fldText)
подниз
Връща определена част от текстов низ. Вторият аргумент задава началната позиция, а третият аргумент задава колко знака да бъдат включени.
Синтаксис
substring(текст; start_position; char_count)
| Аргумент | Описание |
|---|---|
| text | Поле с тип данни "текст" или с текст, ограден с двойни кавички (" "). Функцията претърсва този текст и връща всички знаци от позицията, зададена във втория аргумент, до броя на знаците, указан в третия аргумент, или до края на текста, което от двете се случи първо. |
| start_position | Началната позиция на текста, който да се извлече от първия аргумент. Този аргумент трябва да е цяло число или препратка към поле, конфигурирано да съхранява типове данни за цели числа (цели числа). |
| char_count | Броят на знаците, които искате да извлечете, започвайки от началната позиция, зададена във втория аргумент. Този аргумент трябва да е цяло число или препратка към поле, конфигурирано да съхранява типове данни за цели числа (цели числа). |
Пример
Проектирате шаблон на формуляр, съдържащ следните полета и контроли:
- Поле с име fldText, което е обвързано с контрола текстово поле. Това поле съдържа текста, който се търси от функцията.
- Поле с име fldStartingPosition, което е обвързано с контрола на текстово поле. Това поле е конфигурирано като тип данни "цяло число". Полето съдържа началната позиция за функцията.
- Поле с име fldNumberOfCharacters, което е обвързано с контрола на текстово поле. Това поле е конфигурирано като тип данни "цяло число". Полето съдържа броя на знаците, които функцията връща.
- Контрола текстово поле, която показва резултатите от функцията. Контролата за текстово поле съдържа следната формула:
substring(fldText, fldStartingPosition, fldNumberOfCharacters)
Ако потребител въведе "Този формуляр е създаден от шаблон за формуляр на InfoPath". В първото текстово поле, последвано от 4 във второто и 16 в третото, след това четвъртото текстово поле ще съдържа "S формулярът е създаден".
подниз след
Връща текста в първия текстов низ, който следва първата среща на втория текстов низ.
Синтаксис
substring-after(текст, find_text)
| Аргумент | Описание |
|---|---|
| text | Поле с тип данни "текст" или с текст, ограден с двойни кавички (" "). Функцията претърсва текста в този аргумент и след това връща всички знаци, които следват текста във втория аргумент. |
| намери_текст | Текстът, който трябва да се търси в текста на първия аргумент. Текстът може да бъде или стойността в полето с текстов тип данни, или текст, ограден с двойни кавички (" "). Функцията претърсва текста в първия аргумент за този текст и след това връща всички знаци, които следват след текста в този аргумент. |
Пример
Проектирате шаблон на формуляр, съдържащ следните полета и контроли:
- Поле с име fldText, което е обвързано с контрола текстово поле. Това поле съдържа текста, който се търси от функцията.
- Поле с име fldSubstringText, което е обвързано с контрола на текстово поле. Това поле съдържа текста, който е вторият аргумент на функцията.
- Контрола текстово поле, която показва резултатите от функцията. Контролата за текстово поле съдържа следната формула:
substring-after(fldText, fldSubstringText)
Ако потребител въведе "Този формуляр е създаден от шаблон за формуляр на InfoPath". в полето fldText и "InfoPath" във второто, след това третата контрола за текстово поле ще съдържа "шаблон на формуляр".
подниз-преди
Връща текста в първия текстов низ, който предхожда първото появяване на втория текстов низ.
Синтаксис
substring-before(текст; find_text)
| Аргумент | Описание |
|---|---|
| text | Поле с тип данни "текст" или с текст, ограден с двойни кавички (" "). Функцията претърсва текста в този аргумент и след това връща всички знаци преди текста във втория аргумент find_text. |
| намери_текст | Стойността, която трябва да се търси в аргумента "текст". Тази стойност може да бъде или стойността в поле с текстови тип данни, или текст, ограден с двойни кавички (" "). Функцията търси текста в първия аргумент (текст) за този текст и след това връща всички знаци преди текста в този аргумент. |
Пример
Проектирате шаблон на формуляр със следните полета и контроли:
- Поле с име fldText, което е обвързано с контрола текстово поле. Това поле съдържа текста, който се търси от функцията.
- Поле с име fldSubstringText, което е обвързано с контрола на текстово поле. Това поле съдържа текста, който е вторият аргумент на функцията.
- Aa контрола за текстово поле, която показва резултатите от функцията. Контролата за текстово поле съдържа следната формула:
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()