SuiteScript AddButton не отображается для других пользователей - PullRequest
0 голосов
/ 28 марта 2019

Я создал две кнопки, которые отображаются на смете.Одна кнопка показывает всем, а другая, когда у пользователя есть заданная роль.

form.addButton({id : 'button1', label : 'button1', functionName : "window.open('" + urlCallBack1 + "', '_blank')"});
var acceptedRoles = [ common.CONSTANTS.ROLES.TEAM_LEADER, 
common.CONSTANTS.ROLES.ADMINISTRATOR ];
if(acceptedRoles.indexOf(userRole) > -1)
{
    form.addButton({id : 'button2', label : 'button2', functionName : "window.open('" + urlCallBack2 + "', '_blank')"});
}

Когда я лично захожу на смету, вошедшую в систему под любой ролью, я вижу кнопки.Никакой другой роли, в которую я захожу, не вижу button2.Это ожидаемое поведение.

Однако, когда наши пользователи с ролью руководителя группы входят в систему, они видят button1, но не видят button2.Один и тот же сценарий обслуживает обе кнопки, поэтому для самого сценария это не проблема с разрешениями.

ОЖИДАЕМЫЕ ПОВЕДЕНИЯ: Когда руководитель группы входит в систему, он видит кнопку 2 с оценкой.

АКТУАЛЬНОЕ ПОВЕДЕНИЕ: Когда руководитель группы входит в систему, он не видит button2 в оценке.

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Ваш сценарий развертывается в режиме тестирования?Если это так, этот сценарий будет выполняться только для владельца сценария.Скорее всего, вы в этом случае.

0 голосов
/ 31 марта 2019

Я думаю, что это как-то связано со значением userRole, не соответствующим ни одному значению в массиве acceptRoles.Проверьте значение userRole и соответствует ли оно постоянному значению для TEAM_LEADER.

var acceptedRoles = [ 'TEAM_LEADER', 'ADMINISTRATOR' ];
var userRole = 'TEAM_LEADER';

 if(acceptedRoles.indexOf(userRole) > -1) { 
      console.log('here');
}
0 голосов
/ 28 марта 2019

Вы пытались явно привести вашу переменную 'userRole' к целочисленному значению, чтобы убедиться, что ваше условие сравнивает два значения одного типа?Т.е. ниже.

if(acceptedRoles.indexOf(parseInt(userRole)) > -1)
...