[ELMA3] Настройка отображения панели и кнопок на форме процессной задачи в зависимости от значения контекстной переменной

В данной статье приведен пример настроек, которые позволяют показывать панель и кнопки на форме задач в зависимости от значения контекстной переменной.

Пример отображения данных

Кнопка и панель скрыты

Кнопка и панель показаны

Необходимые настройки

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

1. Добавить контекстную переменную с типом данных "Да/Нет". От значения данной переменной будет зависеть отображение кнопок и панели на форме задачи.

2. Добавить исходящий переход из задачи для которой осуществляется настройка. Для кнопки данного перехода мы дальше будем осуществлять настройки отображения/скрытия.

3. Открыть карточку задачи и на вкладке Форма (контекст), выбрать пункт Конструктор форм и создать новую форму или открыть существующую для редактирования.

4. На форму вынести:

  • панель. Важно! Панель должна быть не сворачиваемой, иначе в коде скрыть ее будет нельзя. Сворачиваемую панель в коде можно будет только свернуть.
  • контекстную переменную, созданную на шаге 1.

5. Перейти в настройки добавленной панели на вкладку Системные и в поле Форма Razor нажать на кнопку Редактировать. Это необходимо, для того чтобы ей присвоился уникальный идентификатор, а именно «panel_Task_352a1966_596f_4a07_961e_8dc0c0e2731f». В этом случае можно будет обращаться сразу к этой панели по id.

6. Будет открыто окно редактирования кода. В данном случае код оставляем без изменений. При желании в нем можно управлять содержимым. Например, вставить условие перед циклом вывода всей информации в панели. Последовательно нажимаем на кнопки Сохранить и Закрыть.

7. Перейти в настройки контекстной переменной на вкладку Системные и в поле Форма Razor нажать на кнопку Редактировать.

8. Из списка представлений выбрать представление Стандартный интерфейс: Редактирование и нажать на кнопку Изменить.

9. Далее необходимо добавить обработчик события при нажатии на контекстную переменную на форме. А именно строку:

a.onchange = "OnSelectionChange (this);";

Тогда при нажатии на форме задачи на переменную будет запускаться данная функция, в которую передается сама переменная, и что самое важное – можно из нее получить значение true или false.

10. Ниже всего имеющего текста вставляем скрипты, которые выполняют работу по отображению и скрытию информации:

  • первый скрипт отрабатывает при загрузке страницы $(document).ready(function() и сразу прячет кнопки;
  • второй скрипт отрабатывает нажатие на переменную на форме function OnSelectionChange (select) и делает по тексту что надо.
<script type="text/javascript">
  $(document).ready(function(){
  	$('#con35eb66e9dfb84d42aaa6bd4759066a16').hide(); // скрываем кнопку при загрузке формы
  	$('#panel_Task_352a1966_596f_4a07_961e_8dc0c0e2731f').hide(); // скрываем панель при загрузке формы
  })
 function OnSelectionChange (select) {
 	var btn = $('#con35eb66e9dfb84d42aaa6bd4759066a16');
 	var panel = $('#panel_Task_352a1966_596f_4a07_961e_8dc0c0e2731f');
 	
 	if  (select.value == "True"){
 		btn.show();
 		panel.show();
  	}
 	else{
 		btn.hide();
 		panel.hide();
 	}
 }
</script>

После доработки кода последовательно нажимаем на кнопки Сохранить и Закрыть.

Примечания.

1. Для отладки можно использовать команду alert('Добрый день').

2. Обращение к объекту делается так: $('#con35eb66e9dfb84d42aaa6bd4759066a16'), где после символа # и con указываем Id перехода без дефисов. Для того, чтобы найти этот id, необходимо запустить отладку задачи.

Навести курсор на кнопку перехода, которую необходимо скрыть, нажать Показать код, и найти этот код в браузере.

3. Само значение переменой в коде можно взять так: select.value.

Важно! Значение доступно, так как мы весь этот скрипт делаем из контекста переменной, значение которой хотим узнать.

4. Если панель требуется сворачивать, а не скрывать, то следует сделать ее сворачиваемой и вместо скрытия, задать атрибут стиля:

$('#ajaxPanel_Task_352a1966_596f_4a07_961e_8dc0c0e2731f').attr('style', 'display: none;').attr('style', 'display: none;');

Следует отметить, что если изменить тип панели, то изменится и ее id.

5. Отладку скрипта можно делать прямо в браузере.