Страница 1 из 2

Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 22 дек 2023, 12:02
alcompstudio
Добрый день!

Возникла такая проблема: Если на поле Многоуровневый список сущностей поставить признак Обязательное поле, и его же использовать в правиле отображения полей, то при условии, что это поле скрыто, все равно система не дает сохранить запись, ссылаясь на обязательность этого поля. Для других типов полей все работает нормально.

Подробнее - описал в видео на примере в персонализированной демо (ссылку могу дать по запросу)

https://www.loom.com/share/e46c683a5d9e ... d7cf2448b7

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 22 дек 2023, 16:02
Oleg
А если Многоуровневый список сущностей где оно отображается оставить пустым дает сохранить при атрибуте Обязательное поле?

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 22 дек 2023, 16:33
alcompstudio
Oleg писал(а): 22 дек 2023, 16:02 А если Многоуровневый список сущностей где оно отображается оставить пустым дает сохранить при атрибуте Обязательное поле?
Вот как раз в этом проблема и есть) Если поле Многоуровневый список не заполнено и оно обязательное - то если скрыто в форме через Правила отображения полей - не дает сохранить. Если открыть, заполнить, а потом скрыть - сохраняет, т.к. условие "обязательности" соблюдается, даже если скрыто.

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 22 дек 2023, 16:36
alcompstudio
... или вы имеете ввиду, если не скрывать, а видимое в форме? Если это имеете ввиду - то все работает как нужно. Незаполненное - на сохраняет, т.к. обязательное. Проблема в функции Правила отображения полей. По логике "если я поле не вижу, даже если оно обязательное - зачем мне его заполнять?" . Проблема только в поле Многоуровневый список сущностей, с выпадающими списками (как я заметил) все штатно и логично работает.

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 23 дек 2023, 07:21
Oleg
Ну как это, если поле обязательное, то его и заполнять нужно обязательно, это же логично

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 23 дек 2023, 09:17
Fait
Oleg писал(а): 23 дек 2023, 07:21 Ну как это, если поле обязательное, то его и заполнять нужно обязательно, это же логично
Да речь то и не об этом.
Конечно же логично, если поле обязательное, то его нужно заполнить)
Но если оно скрыто в форме, то по логике перестаёт быть обязательным, и при сохранении должно игнорироваться. А этого в данном случае не происходит.
Вот и получается, что форма требует заполнить то, чего не видно...

Я этот глюк тоже заметил ещё год назад, поэтому многоуровневый список перестал использовать.
Использую просто сущности Ajax.

Более того, есть ещё какой-то тип поля, который, если обязательный и скрыт правилами отображения полей, то так же себя ведёт.
То есть его не видно, а форма требует заполнить и не сохраняет его...

Как вариант, можно с помощью JQuery прописать свои правила отображения полей и снять атрибут required при скрытии поля.
Если хотите, могу написать сюда код.

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 23 дек 2023, 12:51
alcompstudio
Fait писал(а): 23 дек 2023, 09:17
Oleg писал(а): 23 дек 2023, 07:21 Ну как это, если поле обязательное, то его и заполнять нужно обязательно, это же логично
Да речь то и не об этом.
Конечно же логично, если поле обязательное, то его нужно заполнить)
Но если оно скрыто в форме, то по логике перестаёт быть обязательным, и при сохранении должно игнорироваться. А этого в данном случае не происходит.
Вот и получается, что форма требует заполнить то, чего не видно...

Я этот глюк тоже заметил ещё год назад, поэтому многоуровневый список перестал использовать.
Использую просто сущности Ajax.

Более того, есть ещё какой-то тип поля, который, если обязательный и скрыт правилами отображения полей, то так же себя ведёт.
То есть его не видно, а форма требует заполнить и не сохраняет его...

Как вариант, можно с помощью JQuery прописать свои правила отображения полей и снять атрибут required при скрытии поля.
Если хотите, могу написать сюда код.
Да, тут вы верно таже подметили, наверное я неправильно что-то объяснил, раз возникли такие вопросы)

Если вам несложно - напишите, пожалуйста образец кода, можете даже прямо в моем демо-доступе, для наглядности повторить код:

https://pdemo.rukovoditel.pro/3.4/index ... mo_id=2791

admin
admin

Но, все же хотелось бы решить эту проблему в дистрибутиве, т.к. иначе нелогично получается - поле скрыто, но нужно его заполнить... Плюс по другим-то полям отрабатывает правильно и логично, только вот с Многоуровневым списком сущностей проблема.

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 25 дек 2023, 14:04
Fait
Александр, вот необходимый для вас и полностью рабочий код:

Код: Выделить всё

$type = [167]; // Тип задачи
$f_del_req = 222; // ID поля, у которого нужно удалить обязательность

echo '<script>$(".form-group-'.$_GET['field_id'].'").hide()</script>'; // Скрываем текущее поле с формы
if ($type == 2) { // Если тип - Задача
  echo '<script>$("#fields_'.$f_del_req.'").removeAttr("required"); $("#fields_'.$f_del_req.'").removeClass("required");</script>'; // Убираем обязательность заполнения поля
}
else { // Если тип - Идея
  echo '<script>$("#fields_'.$f_del_req.'").addAttr("required"); $("#fields_'.$f_del_req.'").addClass("required");</script>'; // Устанавливаем обязательность заполнения поля
}
Также в вашей демо всё работает, можете проверить)

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 25 дек 2023, 16:23
alcompstudio
Fait писал(а): 25 дек 2023, 14:04 Александр, вот необходимый для вас и полностью рабочий код:

Код: Выделить всё

$type = [167]; // Тип задачи
$f_del_req = 222; // ID поля, у которого нужно удалить обязательность

echo '<script>$(".form-group-'.$_GET['field_id'].'").hide()</script>'; // Скрываем текущее поле с формы
if ($type == 2) { // Если тип - Задача
  echo '<script>$("#fields_'.$f_del_req.'").removeAttr("required"); $("#fields_'.$f_del_req.'").removeClass("required");</script>'; // Убираем обязательность заполнения поля
}
else { // Если тип - Идея
  echo '<script>$("#fields_'.$f_del_req.'").addAttr("required"); $("#fields_'.$f_del_req.'").addClass("required");</script>'; // Устанавливаем обязательность заполнения поля
}
Также в вашей демо всё работает, можете проверить)
Да, все работает, спасибо большое за помощь! )

Re: Правила отображения полей - не срабатывает для обязательного Многоуровневого списка сущностей

Добавлено: 26 дек 2023, 00:21
Fait
alcompstudio писал(а): 25 дек 2023, 16:23 Да, все работает, спасибо большое за помощь! )
Рад помочь)

А вообще, конечно в основном функционале нужно эту проблему исправить.
Надеюсь, у Сергея время на это будет.