Публикация

Запрет перетаскивания просроченных задач в расписании

Реализовать запрет на изменение просроченных задач несложно - достаточно программно отключать кнопку Ok в окне редактирования задачи, если задача просрочена. Однако как можно препятствовать перетягиванию задач в расписании?

Для этого следует отлавливать события

1) OnBeforeDragEvent
2) OnAfterDragEvent
3) OnBeforeSizingEvent
4) OnAfterSizingEvent

Они появились начиная со сборки 227 версии 3.3.2.

Откройте Terrasoft Administrator и найдите wnd_SchedulerArea
Для реализации запрета перетаскивания задач необходимо создать событие ScheduleControlOnAfterDragEvent:

В визуальных компонентах выберите ScheduleControl, перейдите на вкладку События и создайте событие двойным кликом в соответствующем поле:
111

В результате откроется скрипт. Необходимо вставить следующий программный код вместо //TODO

                var Dataset = SchedulerArea.EventsDataset;
                Dataset.Locate('ID', Event.ID);
                if (GetDateDiff(new Date().getVarDate(), Event.Finish, 'Minute')0){
                               DoAccept.Value = false;
                               //MessageBox("Нельзя перетаскивать просроченные задачи!");
                }

111

Сохранить скрипт scr_SchedulerArea. Сохранить карточку wnd_SchedulerArea.

В результате перетаскивание визуально будет происходить, однако сроки меняться не будут, а задача после перетаскивания будет возвращаться на прежнее место. Можно добавить дополнительное сообщение-уведомление, раскомментировав строку (уберите двойной слеш //).

Для предотвращения изменения просроченных событий менеджерами необходимо также добавить аналогичный функционал на событие OnAfterSizingEvent

В результате если одна из перетаскиваемых задач не может быть перемещена, то все задачи останутся на прежних местах. Таким же образом если расширять задачу, нужно использовать обработчик OnBeforeSizingEvent или OnAfterSizingEvent

Нравится

Поделиться

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

Ой какая хорошая реализация!!!

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