Перейти к содержанию

Миграция JS на новый MTF

Карточка создания новой задачи (НТФ)

При переходе на новый НТФ для работы с карточкой создания новой задачи с использованием JS-вставки обязательно должно быть использовано событие NewTaskLoadFinished.

(window).addEventListener('NewTaskLoadFinished', onDestroy) 
{ 
... 
}

Конструкция \$(window).on(\'NewTaskLoadFinished\', function () работать не будет!

ℹ️ Без использования события \'NewTaskLoadFinished\', при переходе в новый НТФ, JS-вставки корректно работать не будут!

Пример JS-вставки с использованием события \'NewTaskLoadFinished\':

Пример JS-вставки скрывающей ДП в зависимости от значения другого ДП

window.addEventListener('NewTaskLoadFinished', function() { 
console.log('123'); 
var ep29581 = new ExtParam(29581); 
  ep29581.val('Исходящее письмо'); 
    ep29581.hide(); 

 var ep29221 = new ExtParam(29221); 
    ep29221.change(function() { 
      console.log('change'); 
    ep29581.show(); 
  }); 

window.addEventListener('NewTaskDestroyed', e => { 
  console.log('clean up destroy'); 
  ep29221.change(null); 
}, { once: true }); 
}); 

Карточка задачи (МТФ)

При переходе на новый МТФ для работы с карточкой задачи с использованием JS-вставки обязательно должно быть использовано событие MTFMainDestroyed, которое позволяет очищать память при изменении контекста задачи (закрытие задачи, переключение на другую задачу, смена taskId и т.д.):

(window).addEventListener('MTFMainDestroyed', onDestroy) 
{ 
... 
}

ℹ️ Без использования события \'MTFMainDestroyed\', при переходе в новый МТФ, JS-вставки корректно работать не будут!

Пример JS-вставки с использованием события \'MTFMainDestroyed\':

Пример JS-вставки скрывающей ДП в зависимости от значения другого ДП

  ...
   { 
  var ep30601, ep72670; 
  function check() { 
      const ep30601Val = ep30601?.val(); 
      console.log(ep30601Val) 
      if (ep30601Val?.value == "test") { 
          ep72670.show() 
       } 
      else { 
          ep72670.hide() 
       } 
   }; 
 // Срабатывает на открытии и обновлении МТФ 
  function onLoad() { 
      console.log('js') 
      ep30601 = new ExtParam(30601); 
      ep72670 = new ExtParam(72670); 
      check(); 
      ep30601.change(() => check()); 
   } 
 // 
  function onDestroy() { 
      window.removeEventListener('MTFMainLoadFinished', onLoad); 
      // Чтобы change не вызывался после нового открытия, 
       // т.к. глобально в памяти ep30601 еще есть 
      ep30601?.destroy(); 
      ep72670?.destroy(); 
   } 
  window.addEventListener('MTFMainLoadFinished', onLoad); 
  window.addEventListener('MTFMainDestroyed', onDestroy); 
}
  ...

Получение значения ДП

Для получения значения параметра необходимо обращаться к конкретному ключу в JSON-объекте, а не использовать только ep.val(). Примеры:

  • Lookup: ep.val().taskId

  • Выпадающий список: ep.val().text или ep.val().value

  • Галочка (checkbox): ep.val() == true (вместо ep.val() == \'да\')