Новый МТФ
Пример 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);
}
...
Старый МТФ
Изменение значения одного ДП в зависимости от другого ДП обычно настраивается с помощью смартов. Но если такой пакет действий привязан к смарт-событию "После смены ДП", то он будет выполняться только в момент сохранения карточки задачи. Чтобы при изменении одного ДП пользователь мог сразу увидеть обновленное значение второго ДП, без необходимости лишний раз сохранять карточку задачи, можно настроить изменение с помощью приведенной ниже js-вставки.
К дате, которая записана в ДП ID=123, надо прибавить 1 час и записать в ДП ID=456.
(window).addEventListener('MTFMainLoadFinished', function() {
//Получаем объект ДП с ID=123
var ep123 = new ExtParam(123);
// Создаем функцию с обработкой изменения ДП
function f_change() {
var ep456 = new ExtParam(456);
var text1 = ep123.val();
var date1 = new Date(text1.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
date1.setHours(date1.getHours() + 1); // прибавляем 1 час
var newFormatedDate = date1.format("dd.MM.yyyy H:mm").toString();
ep456.val(newFormatedDate);
ep456.save();
}
//Привязываем функцию к событию изменения значения ДП с ID=123
ep123.change( function () {
f_change();
});
//Вызываем только что привязанную функцию
f_change();
});
Полезные ссылки