Show/Hide Toolbars

Руководство администратора

Проверка настройки повторений при создании повторяющихся задач

Ссылки Назад Вверх Вперед

Старый МТФ

В одной и той же категории часть задач может носить разовый характер, а часть — регулярно повторяющийся. Для повторяющихся задач включается флажок "Регулярно" (в данном примере этот ДП имеет ID=111). Важно, чтобы для повторяющихся задач было настроено повторение. Чтобы пользователи при создании таких задач не забывали настраивать повторения, добавляется проверка при нажатии кнопки "Поставить задачу": если на карточке создания новой задачи включен флажок "Регулярно", а настройки повторений не заданы, пользователю выдается предупреждение, задача не создается, и окно создания задачи остается открытым.

Чтобы автоматизировать такую проверку, к карточке создания новой задачи можно добавить JS-вставку:

$(window).on('load', function() {
  // Создаем функцию вызывающую старый код кнопки постановки задачи с контекстом
  function evalInContext( context, js) {
    return function() {
        return eval(js);
     }.call(context);
  }
 
  var ep111 = new ExtParam(111);   // Значение ДП "Регулярно"   
  var submitBtnClickFunc = $('#btnPostTask').attr('onclick');   // Запоминаем настройки события при клике на кнопку постановки задачи
  $('#btnPostTask').attr('onclick', '');   // Очищаем событие при клике на кнопку
  $('#btnPostTask').click(function() {   // Проверяем условия при клике
    var tr = typeof getNtfModelTaskTimeSettings();
    // Проверяем условие:
    // если окно настройки повторений не открывалось вообще, то typeof getNtfModelTaskTimeSettings() будет 'undefined'
    // если окно настройки повторений открывалось, но расписание не установлено (не сохранено),
    // то typeof getNtfModelTaskTimeSettings() будет 'object', в этом случае надо проверить его свойство .taskRecurrence — оно будет 'null'
    if (ep111.val() == 'да' && (tr == 'undefined' || (tr == 'object' && getNtfModelTaskTimeSettings().taskRecurrence == null))) {
        // Если выполняется условие отмены, выводим предупреждение
        dialogs.alert("Внимание!", "Создание поручений данного вида без расписания повторения запрещено!"); 
        return false;
     }
    else {
        // Если условие не выполняется, запускаем старый код кнопки
        PostTaskClick();
     }
  });
});

Чтобы иконка настройки параметров повторения на панели инструментов была доступна только при включенном флажке "Регулярно", можно добавить такую JS-вставку (на панели инструментов нужная иконка – 6-ая по порядку, с учетом разделителя):

$(window).on('NewTaskLoadFinished', function()
{
  var ep111 = new ExtParam(111);
  ep111.change(function () {
    switch(ep111.val()) {
        case 'нет':  
          $('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","none")
          break;
        case 'да':
          $('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","auto")
          break;
        default:
          $('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","none")
          break;
     }
  });
  ep111.change();
});