Расширенная функциональность
05
Окт
0

Нехитрое форматирование полей

Два поля в одной секции

Вообще нельзя, с технической точки зрения, нельзя стандартными средствами поместить два поля в одну секцию. Но можно это имитировать. Такой фокус применяется, если по соображениям удобства использования, необходимо логически сгруппировать два поля. Например, поля выбор валюты и поле суммы.

Как это сделать:

  • Под секцией содержащей два столбца создайте новый раздел: щелкните «Добавить раздел»;
  • Задайте имя раздела и снимите флажок Отображать в форме название раздела;
  • На вкладке Форматирование измените макет раздела на «С фиксированной шириной», а в качестве формата столбцов выберите «Четыре столбца». Ок;
  • Переместите какие-либо два поля в новый раздел;
  • Уберите у второго отображение метки;
  • Готово 🙂




З.Ы. Тоже самое можно сделать и для 3 и 4 столбцов 🙂

«Шапка» и «Подвал»

Прием, позволяющий с помощью стандартных средств и капельки JavaScript-кода явно выделить на форме т.н. «Подвал» (footer, по-буржуйски – термин обычно применяется при веб- или типографской верстке). Другими словами это содежимое нижней часть формы.

Чтобы было более понятно, просто выполните следующий пример:

  • Создайте новую вкладку, а на ней новый раздел (скройте его заголовок);
  • Поместите на форму три атрибута:
    • Текстовое поле (в действительности это может быть любое другое поле или набор полей);
    • Поле ntext;
    • Текстовое поле.
  • Поля должны быть расположены один под другим в той последовательности, в какой приведены тут!
  • Откройте свойства ntext поля и на вкладке Форматирование поставьте значение number of rows равное 1 и поставьте галку «Автоматически расширяются, чтобы использовать свободное место»;
  • На onload формы повесьте такой код:
    crmForm.all.new_footer_c.style.visibility = 'hidden';
    crmForm.all.new_footer_d.style. visibility = 'hidden';
    

    Этот код просто скрывает поле ntext (измените его имя на свое);

  • Публикуем!

Таким образом, получается, что поле ntext постоянно расширяется, пытаясь занять все доступное пространство, а поля расположенные сверху и снизу от него, прижимаются к верхней и нижней границе формы, соответственно!



Порядок табулирования

Если Вы когда-нибудь пользовались клавишей Tab для перехода от одного поля CRM к другому, то наверно заметили, что в пределах секции это происходит верху-вниз сначала для одного столбца, а когда «просмотр» столбца будет завершен, курсор переключится на следующий столбец и так далее, пока не будет достигнут конец секции. Такое поведение не вполне привычно, поскольку в обычных виндовых приложениях курсор «прыгает» слева-направо, сверху-вниз. В HTML это обусловлено специальным атрибутом, прописываемым в тегах HTML-элементов. В этом атрибуте хранится порядковый номер. Когда пользователь жмет Tab на каком-либо поле, система ищет HTML-элемент, в котором указан следующий по возрастанию порядковый номер и переходит к нему. Мне приходилось видеть несколько попыток заставить (с помощью JS-кода) «прыгать» курсор «по-виндовому», но ни один из них не оказался универсальным. Способ работал максимум на простой тестовой страничке, но когда его переносили на продакшн-сервер, формы которых десятки раз кастомизировались и перекастомизировались, то курсор начинал прыгать в произвольно порядке.

Но, несмотря на это, есть один «древний» и очень простой способ это подправить. Единственным недостатком его является избыточность. Рассмотрим стандартную секцию (см. скриншоты) – в ней, как и в большинстве секций, поля расположены в двух столбцах и (в данном примере) в 6 строках. Чтобы заставить курсор прыгать по горизонтали, нужно разбить эту секцию на количество строк, которое в ней присутствует. Т.е. создайте еще три секции и поместите их под текущей. В каждую секцию поместите по два поля. Вот и весь «хитрый» способ 🙂 Теперь курсор будет прыгать слева направо в рамках одной секции, дойдя до ее окончания, перейдет к следующей секции и т.д. 🙂


Единственным недостатком данного метода является усложнение разметки, как на форме, что затрудняет администрирование, так и в HTML-коде, что сказывается на производительности!

Комментарии (0)

*

code