Запрещать пользователям "двигать задачи" может быть очень уместно в случае, когда, например, они должны перевести задачу в состояние "Выполненна", но не допускается изменение поставленных сроков. При этом, подразумевается, что пользователь ответственный по задаче И (как обязательное условие) - НЕ автор. Свои задача, по которым он автор (сам себе поставил), путь делает что угодно.
В самой карточке редактирования логику реализовать очень легко - достаточно в сервисе Tasks\General\Main Grid\scr_TaskEdit найти обработчик события function wnd_TaskEditOnPrepare(Window) и перед закрывающей скобкой вставить код:
if (!Connector.CurrentUser.IsAdmin || (dlData.Dataset.Values('AuthorID') != Connector.CurrentUser.ContactID)) {
edtStartDate.IsEnabled = false;
edtDueDate.IsEnabled = false;
} else {
edtStartDate.IsEnabled = true;
edtDueDate.IsEnabled = true;
}
Это сделает поля "Дата начала" и "Дата завершения" в карточке задачи неактивными в случае если выполняется вышеописанное условие.
Но, есть такой замечательный элемент в разделе задач - Расписание. И в нем, задачу можно просто пеертянуть. Как тут быть? Выход есть: открыв сервис Tasks\General\SchedulerArea\wnd_SchedulerArea задаем обработчик события OnAfterDragEvent
В обработчик вставьте код:
function ScheduleControlOnAfterDragEvent(ScheduleControl, Event, DoAccept) {
if (!Connector.CurrentUser.IsAdmin ||
(dlEvents.Dataset.Values('AuthorID') != Connector.CurrentUser.ContactID)) {
ShowInformationDialog('У Вас нет прав на изменение это изменение!');
return;
}
}
После сохранения и перезапуска клиентского ПО изменения вступят в силу.