Как рассчитать первый день срока выполнения на основе частоты в Microsoft Infopath Designer

Я пытаюсь рассчитать сроки выполнения на основе описания частоты в другом поле моей формы. Итак, у меня есть 3 поля: «Частота», которые содержат описание: «Ежегодно», «Раз в полгода», «Ежеквартально».

Затем у меня есть «Последняя дата», где есть дата, которую кто-то вводит. а затем «Срок выполнения». Я бы хотел, чтобы первый день выбранного месяца был расчетной датой выполнения в этом поле.

Я попытался использовать «Правила» и установить условие на , когда «Частота» равна «Ежегодно», затем я установил значение поля, я выбрал «Дата выполнения». Для формулы я написал addDays("Последняя дата", 365). Мне было интересно, есть ли способ выбрать первый день месяца?

Спасибо!


person adit123    schedule 15.01.2015    source источник


Ответы (2)


Конечно, используйте функции concat/substring и отформатируйте их как дату:

concat(substring(addDays("Последняя дата", 365), 1, 4), "-", substring(addDays("Последняя дата", 365), 6, 2), "-01")

person user2051770    schedule 15.01.2015
comment
Эта формула будет помещена, когда я установлю значение поля и правильно введу формулу? - person adit123; 15.01.2015
comment
Однако, когда я попробовал формулу, она сработала, спасибо за это! Однако она возвращается в формате 2016-01-01. Как я могу изменить ее на 01/01/2016? Извините, я довольно новичок в infopath. Кроме того, скажите, если я ошибаюсь. и измените дату, поле не будет обновляться. мне нужно снова перейти к раскрывающемуся списку частоты и повторно щелкнуть его. также даже после форматирования я все еще возвращаю красную пунктирную линию вокруг поля. - person adit123; 15.01.2015
comment
формат мм/дд/гггг: concat(подстрока(addDays(последняя дата, 365), 6, 2),/01/, подстрока(addDays(последняя дата, 365), 1, 4)) - person user2051770; 15.01.2015
comment
Что касается того, что он не обновляется, похоже, ваше правило находится в раскрывающемся списке «Частота», когда вы действительно хотите, чтобы оно было в раскрывающемся списке «Последняя дата»? Попробуйте это и посмотрите, работает ли это так, как вы хотите. - person user2051770; 15.01.2015
comment
Спасибо! Однако я все еще получаю красные тире вокруг текста «Дата выполнения». Почему это все еще отображается, хотя я отформатировал поле «Дата выполнения» как дату. - person adit123; 15.01.2015
comment
Это было на частоте, и я попробовал правила на последней дате, и теперь поле для даты выполнения вообще не обновляется :( - person adit123; 15.01.2015
comment
Таким образом, ваши пользователи должны 1. выбрать частоту, 2. выбрать последнюю дату, 3. дата выполнения автоматически заполняется до первого дня месяца? Поэтому, если вы добавите правило в «Последняя дата» с условием «Частота = Ежегодно», установите действие для обновления «Даты выполнения» до формулы, которую я разместил выше. Если делать в таком порядке, должно получиться. Это у вас так настроено? - person user2051770; 15.01.2015
comment
Дело в том, что я пробовал в таком порядке, но дата выполнения не обновлялась. Однако, когда все правила настроены на частоту, и мой приказ состоит в том, что я выбираю 1.Последнюю дату, затем выбираю 2.Частоту, а затем рассчитывается дата выполнения. выберите другой, он автоматически обновится с этим порядком, и все правила будут в частоте. По какой-то причине я все еще получаю сообщение об ошибке с красными черточками вокруг поля. Если эти красные черточки вокруг поля, я не могу его отправить, верно? - person adit123; 15.01.2015
comment
Также я попытался сопоставить формат в свойствах и сопоставить его с вычисляемой датой выполнения, но я все еще получаю красные тире. Я не могу определить свою проблему. Это странно. Также я попробовал это в вашем заказе и имел правила на последней дате, но я все еще получал красные черточки. - person adit123; 15.01.2015
comment
В текстовом поле я не получаю ошибки, но я бы предпочел, чтобы она была в поле даты, потому что у некоторых людей могут быть разные частоты, и они должны вычислять их оттуда. Я также собираюсь настроить собственный рабочий процесс утверждения, поэтому, когда приближается срок выполнения, рабочий процесс утверждения будет отправлен. вот почему я бы предпочел, чтобы это было в поле ввода даты. - person adit123; 15.01.2015
comment
Я до сих пор не уверен, что я делаю неправильно с этим? Это кажется простым, но я просто не могу настроить формат даты для поля «Срок выполнения». Есть ли способ игнорировать это и по-прежнему отправлять его, чтобы он все еще отображался? - person adit123; 16.01.2015
comment
Ну, красная линия появляется, потому что это обязательное поле, и введенное значение по какой-то причине не совпадает. Вы можете попробовать сделать поле даты необязательным и посмотреть, все ли в порядке. Если это так, и вам все еще нужно проверить, что поле не пусто, вы можете использовать правило при отправке, чтобы проверить, является ли поле даты пустым или нет. - person user2051770; 16.01.2015

Мне удалось исправить ошибку, которую я получал после вычисления значения. В новом текстовом поле, которое я создал, я изменил элемент управления на сегодняшний день. Затем в качестве значения по умолчанию я использовал эту формулу msxsl:format-date(Last Date, "MM/dd/yyy"). И функция использования календаря тоже была там! Теперь все работает! Спасибо @user2051770 за руководство! Очень признателен!

person adit123    schedule 16.01.2015