Найти разницу в днях между двумя полями даты в Infopath

Может ли кто-нибудь помочь мне определить разницу в днях между двумя полями даты в формах InfoPath.

Обычное вычитание не работает с полями даты. как DateField1 - DateField2. Любой код или кодовое решение высоко ценится.

2 ответа

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

Вот источник файла Excel для списка, содержащего данные за 2018-2020 годы: https://1drv.ms/x/s!ApLhBloaS1wVgsUOMRrRfbekFftY9Q

шаги:

  1. Импортируйте первый лист вышеуказанного файла Excel как новый список в Sharepoint.
  2. Добавьте соединение для получения данных в этот список из формы InfoPath.
  3. Для первой даты создайте действие для преобразования даты в число в формате ГГГГММДД. Предполагая, что дата хранится как DateTime, вы можете использовать эту формулу: floor(number(translate(substring-before(../my:endDate, "T"), "-", "")))
  4. Запросите список для числового значения первой даты. Сохраните этот номер в поле (столбце) в вашей форме. (Это поле не нужно показывать в вашей форме.)
  5. Повторите шаги 3 и 4 для второго свидания.
  6. Вычтите первое число даты от второго, сохраните это в третьем столбце.

Примечание. Файл Excel использует формулу "NETWORKDAYS" и содержит столбцы для дней недели, будних дней минус федеральные праздники США, а также будних дней минус праздничные дни NYSE. Теперь вы можете получить количество рабочих дней между двумя датами, используя один из этих столбцов. Если вы живете за пределами США, вы можете добавить столбец в Excel для других выходных, например, выходных в Великобритании.

Есть способы получить разницу дат в InfoPath, но они очень сложны и требуют написания правил и разбора даты на месяц / день / год. Вместо этого я рекомендую этот метод, описанный в другом месте, в котором используются службы Excel. Так как Excel отлично справляется с вычислениями, имеет смысл записывать вычисления в Excel и вызывать документ Excel из InfoPath (если у вас есть SharePoint с Excel Services).

Ниже приведены 2 набора инструкций по настройке InfoPath и служб Excel. Инструкции длинные и / или защищены авторским правом, поэтому я не могу их сюда включить, но для суммирования вы бы настроили новые подключения данных в InfoPath для использования веб-служб (SOAP), откройте документ Excel и задайте поля даты на основе ваших полей даты InfoPath и получить рассчитанное значение из Excel.

Расчет разницы дат в InfoPath с использованием служб SharePoint Excel

InfoPath и Excel Services

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

Другие вопросы по тегам