Задача следующая:
БП представляет собой цепочку задач, необходимо, чтобы авторами некоторых задач были люди, не от имени которых БП запущен.
Попытка реализации следующая:
WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'AuthorID','{0BBDFB2E-9A07-49E9-B35E-33C275E82C7D}');
}
function wa_TaskActionOnExecute(WorkflowAction, ActionItem, ItemDataset, IsComplete, ResultLinkCodes) {
//...
var AuthorID = WFGetParamValue(ActionItem, 'AuthorID');
var TaskDataset = WFGetLikedItemDatasetEx('ds_Task', ItemID, new Array('ID', 'AccountID', 'ContactID', 'OpportunityID', 'StatusIsFinish', 'ResultID', 'AuthorID'), true);
//...
if (!IsEmptyValue(AuthorID)) {
DefaultValues.Add('AuthorID', AuthorID); }
//...
var IdWin = ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
}
Задача (Action4) все равно создается с автором = пользователю, от имени которого запущен БП.
Версия 3.2.0.45.
Нравится
По-моему, в задачах под псевдонимом AuthorID используется поле CreatedByID, которое относится к спецполям, а они заполняются ядром Террасофт при вставке и изменении записи (CreatedOn, CreatedByID, ModifiedOn, ModifiedByID).
--------------------------------------------
Лабитек
Центр разработки приложений
И даже в обычных скриптах не получится. Как говорил Валерий, значение данного поля берется с CreatedByID, которое устанавливается ядром.
Но никто Вам не запрещает сделать свое поле "Автор". И определить его логику заполнения в скриптах и БП.
Спасибо.
Но, задание автора для конкретных задач обусловлено тем, что эти задачи выполняют сотрудники разных отделов => у них разные начальники, которые должны контролировать выполнение (т.е. напоминания, "Для контроля" и т.д.). Поэтому важно использование стандартных полей, чтобы использовать все возможности....
Сам сталкивался с подобным.
Как решал: дополнительное поле "Контролирующий" + изменение функционала закладок "для контроля" + напоминания.
Я полагаю, что нужно завести идею.
Так как автор не всегда контролирует выполнение задачи, которую кому-нибуть поставил.
Такое решение нам не подходит, поскольку придется много переписывать... Это необходимо для задач, которые создаются в ходе БП, но также весь функционал системы по напоминаниям, "для контроля" и тд дорабатывался (раз) и активно используется в стандартных ситуациях (при обычной постановке задачи) (два).
Спасибо.
Вот как я сделал - добавил функцию CheckAuthorID, которая заменяем автора и включил ее в следующие обработчики событий датасета в ds_TaskScript
И задача теперь создается от имени конкретного человека
function SelfOnDatasetBeforePost(Dataset) { ds_TaskScript.IsAppend = (Dataset.State == dstInsert); if (ds_TaskScript.IsAppend) { Dataset.Values('AuthorID') = Connector.CurrentUser.ContactID; CheckAuthorID(Dataset); } }
и
function FillTaskDefaultValues(Dataset) { Dataset.DisableEvents(); var DefaultTaskDateTime = GetDefaultTaskDateTime(); Dataset.ValAsDateTime('StartDate') = DefaultTaskDateTime.StartDate.getVarDate(); Dataset.ValAsDateTime('DueDate') = DefaultTaskDateTime.DueDate.getVarDate(); UpdateDuration(Dataset); Dataset.Values('AuthorID') = Connector.CurrentUser.ContactID; CheckAuthorID(Dataset); Dataset.Values('OwnerID') = Dataset.Values('AuthorID'); var TaskDefs = GetTaskDefs(); Dataset.Values('StatusID') = TaskDefs.NotStartedStatusID; Dataset.Values('TypeID') = TaskDefs.TypeID; Dataset.Values('PriorityID') = TaskDefs.PriorityID; Dataset.ValAsBool('ShowInScheduler') = true; Dataset.EnableEvents(); }