Добрый день.

Возникла следующая задача: у меня в карточке есть поле "Рекомендуемая дата запуска". Значение в это поле должно проставляться автоматически, как : текущая дата + 10 рабочих дней, например. Учитываться должны только рабочие дни, исключая выходные\праздники, которые указаны в календаре (использую типовой календарь в системе, там указываю время рабочего дня, а так же все нужные праздники). Как мне обратиться к данному календарю? Как мне рассчитать верно дату?

P.S: Данную дату мне нужно проставлять в определенный момент в ходе бизнес-процесса.

Нравится

2 комментария

Добрый день!

Расчет рабочего времени в обращениях с учетом праздников/выходных это результат выполнения функций, в системе нет одного объекта с помощью которого можно решить задачу.

Это комплексный механизм, последовательность и название всех задействованных функций можно определить с помощью отладки.

Рекомендую ознакомится с таблицами и связями в них (названия колонок интуитивно названы с учетом на какую таблицу они ссылаются): WorkingTimeInterval -> DayInCalendar/DayOfWeek - > Calendar.

Все задействованные схемы находятся в пакете Calendar.

Классическая задача. Например, в БП можно решить скриптом:



https://stackoverflow.com/questions/4604461/c-sharp-datetime-to-add-sub…

Показать все комментарии

Если складываете View для активностей с группировкой, например, по началу и концу и при этом есть процессные активности, у которых начало расчитывается как временной интервал между now и некоей датой, можете получить проблемы с секундами и милисекундами. Поэтому при группировке активностей по дате лучше всего применять вот такой каст в sql:

CAST(CONVERT(varchar(16), [StartDate], 20) AS datetime)

где StartDate - поле с датой до милисекунд.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Уважаемые коллеги!

Имеется следующая ситуация: при подготовке маркетингового мероприятия исполняется бизнес-процесс. В этом бизнес-процессе есть два шага, дата совершения которых зависит от даты проведения этого мероприятия, например:

- звонок для получения подтверждения совершается за -2 рабочих дня от мероприятия,
- рассылка напоминания контактному лицу за -1 рабочий день до мероприятия.

Дата мероприятия известна, это реквизит "Actual start" маркетингового воздействия, а вот как подставить в задачу расчетные даты [Actual start - 2 раб. дня] с минимумом программирования?

Если кто делал, буду благодарен за решение!

Нравится

1 комментарий

Дмитрий, если Вам необходимо, чтобы в задачу подставлялись даты, которые меньше, чем дата выполнения предыдущего элемента, попробуйте указать отрицательное число в поле "Выполнить через":

Если Вам необходимо, чтобы дата зависела от другого параметра, нужно изменить обработку события OnExecute скрипта wa_TaskActionScript в месте, где определяется значение переменной ExecuteDate, или установить нужное значение для StartDate:

	var ExecuteDate = ItemDataset.ValAsDateTime('ExecuteDate');
	var ExecuteAfterTimeTypeID = 
		WFGetParamsMapItemValue(ActionItem, 'ExecuteAfterTimeTypeID');
	var ExecuteAfterTimeValue = 
		parseInt(WFGetParamsMapItemValue(ActionItem, 'ExecuteAfterTimeValue'));
	ExecuteDate = WFCalcExecuteTime(ExecuteDate, ExecuteAfterTimeTypeID, 
		ExecuteAfterTimeValue);
	ExecuteDate = ExecuteDate.getVarDate();
	DefaultValues.Add('StartDate', ExecuteDate);

Именно в этом блоке вычисляется значение, которое потом попадает в поле "Дата начала" карточки задачи. Вы можете изменить алгоритм вычисления (для всех задач или удовлетворяющих некоторому условию).

Показать все комментарии