Middle Инфоблоки: D7 и продвинутое Рекомендуется

Highload-блоки

Highload-блоки представляют собой отдельные таблицы базы данных с первичным ключом ID и набором пользовательских полей UF_*. Класс сущности генерируется методом HighloadBlockTable::compileEntity(), а обращение к блоку в коде следует производить по строковому имени NAME, а не по динамическому числовому ID.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Когда использовать
  • 2
    Создание Highload-блока
  • 3
    API Highload-блоков

Материалы

Проверь себя

На проде код падает с «Highload-блок не найден», хотя на стенде всё работало. Что чаще всего оказывается причиной?

Числовой ID блока в коде. На разных окружениях блоки создавались в разном порядке, и ID не совпали. Ищите блок по NAME через HighloadBlockTable::resolveHighloadblock() или храните сопоставление в миграции.

Заказчик жалуется, что менеджер без прав на блок всё равно меняет записи через вашу форму. Почему?

Динамический класс данных не проверяет права из HighloadBlockRightsTable. Операции hl_element_read, hl_element_write и hl_element_delete нужно проверять в коде приложения до вызова add(), update() или delete().

Чем свойство инфоблока типа «справочник» на Highload-блоке отличается от привязки к элементу, если оба хранят ссылку?

Справочник хранит строку UF_XML_ID записи, а не числовой ID, поэтому переживает перенос между базами и допускает импорт по стабильному коду. Привязка к элементу хранит ID и ломается при переносе с другими ID.

Добавили UF-поле через CUserTypeEntity в том же скрипте, а запрос по нему падает. Что сломалось?

ORM-карта уже скомпилирована в этом хите. Нужен новый запрос либо повторная компиляция compileEntity($hlblock, true) с проверкой hasField(); имя класса и таблицы при этом всё равно не меняются до следующего хита.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти