Документация для разработчиков
Темная тема

Введение

Как было

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

  • через компоненты system.field.edit и system.field.view с шаблонами для пользовательских полей различных типов. Данные компоненты позволяют отрисовать контрол либо в режиме просмотра (view), либо в режиме редактирования (edit);
  • через CUserType классы старого ядра, например, CUserTypeString или CUserTypeInt, которые содержат в себе методы отрисовки контролов uf-полей для различных условий;
  • самостоятельная отрисовка контрола в конкретном компоненте. Например, так реализованы бизнес-процессы и новый фильтр в административном разделе, а также сущности CRM в мобильном приложении.

Минусы таких подходов:

  1. сложность поддержки (сейчас js, html и php "перемешаны" в методах классов CUserType);
  2. сложность поддержки различных форматов устройств (десктоп, планшет, мобильная версия и т.д.), если для каждого устройства поле должно выводиться различными способами;
  3. сложность расширения способов отображения полей (например, если для какого-то конкретного компонента требуется отрисовка поля особым уникальным способом);
  4. сложность расширения (при создании нового шаблона отображения поля необходимо реализовать его для всех существующих типов полей, даже если уникальный вид нужен только для нескольких типов полей, а для других вполне подходят стандартные шаблоны);
  5. трудоемкость создания нового типа поля.

Обновленный подход

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

  • main/lib/userfield/types/StringType и main/install/components/bitrix/main.field.string
  • iblock/lib/userfield/types/ElementType и iblock/install/components/bitrix/iblock.field.element

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

Вызовы компонентов system.field.edit и system.field.view также приводят к вызову отрисовки контрола при помощи нового api.


Примечание: обновленный подход доступен с версии Главного модуля (main) 20.0.800.



Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх