«highload блоки и новое api к ним»
DESCRIPTION
Автор: Валерия Алексеева, веб-разработчик компании "Центр Высоких Технологий". Использование Highload-блоков в работе. Highload-блоки - модуль для работы с произвольными наборами данных в условиях высоких нагрузок.TRANSCRIPT
![Page 1: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/1.jpg)
Highload блоки
Валерия Алексеевавеб-программист компании Центр Высоких Технологий
![Page 2: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/2.jpg)
Что такое highload блоки?
Модуль позволяет создавать сущности для хранения произвольных данных.
Доступные пользовательские поля:
• Фаил• Список• Привязка к разделам ИБ• Привязка к элементам ИБ• Шаблон• Опрос
• Видео • Строка• Целое число• Число• Дата со временем• Дата• Да / Нет
![Page 3: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/3.jpg)
Зачем они?
![Page 4: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/4.jpg)
news.list vs highloadblock.list
![Page 5: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/5.jpg)
Новое API
![Page 6: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/6.jpg)
Объявляем класс сущности
CModule::IncludeModule( 'highloadblock' );
use Bitrix\Highloadblock as HL;
$entity = HL\HighloadBlockTable::compileEntity( array(
'ID' => 6,
'NAME' => 'Goods',
'TABLE_NAME' => 'goods'
));
$entityDataClass = $entity->getDataClass();
![Page 7: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/7.jpg)
Получение списка записей из highload блока
$goodsCursor = $entityDataClass::getList( array(
'select' => array( 'ID', 'UF_GOODS_NAME' ),
'order' => array( 'UF_GOODS_NAME' => 'ASC' ),
'filter' => array( 'UF_GOODS_COUNT' => 100 )
));
while ( $goods = $goodsCursor->fetch() ) {
var_dump( $goods );
}
![Page 8: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/8.jpg)
Удаление записи из highload блока
$goodsId = 14; // где 14- это id записи
$result = $entityDataClass::delete( $goodsId );
if ( $result->isSuccess() ) {
// Запись удалена
}
![Page 9: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/9.jpg)
Изменение записи в highload блоке
$goodsId = 3; // Идентификатор записи в highload блоке
$result = $entityDataClass::update(
$goodsId,
array(
'UF_GOODS_NAME' => 'iPad Mini'
)
);
if ( $result->isSuccess() ) {
// Запись добавлена
}
![Page 10: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/10.jpg)
Добавление нового highload блока
$highloadBlockData = array (
'NAME' => 'Goods',
'TABLE_NAME' => 'goods'
);
$result = HL\HighloadBlockTable::add( $highloadBlockData );
if ( $result->isSuccess() ) {
// Highload добавлен
}
![Page 11: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/11.jpg)
Изменение highload блока$data = array(
'NAME' => 'Goods',
'TABLE_NAME' => 'goodsnew'
);
$highloadBlockId = 15; // где 15 - это id Highload блока
$result = HL\HighloadBlockTable::update(
$highloadBlockId,
$data
);
if ( $result->isSuccess() ) {
// Highload успешно изменён
}
![Page 12: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/12.jpg)
Удаление highload блока
$highloadBlockId = 15; // где 15 - это id Highload блока
HL\HighloadBlockTable::delete( $highloadBlockId );
![Page 13: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/13.jpg)
Получение информации о highload блоке
$highloadTableName = 'goods';
$highloadBlockCursor = HL\HighloadBlockTable::getList( array(
'filter' => array(
'TABLE_NAME' => $highloadTableName
),
'select' => array(
'ID' /* Требуемые поля */
),
));
$highloadBlock = $highloadBlockCursor->fetch();
![Page 14: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/14.jpg)
Добавление нового свойства$userTypeEntity = new CUserTypeEntity();
$userTypeData = array(
'ENTITY_ID' => 'HLBLOCK_1', /*где 1- это id highload блока*/
'FIELD_NAME' => 'UF_GOODS_NAME',
'USER_TYPE_ID' => 'string',
'MANDATORY' => 'N',
'SHOW_FILTER' => 'Y',
'IS_SEARCHABLE' => 'N',
'EDIT_FORM_LABEL' => array(
'ru' => 'Наименование товара',
'en' => 'Description of goods',),
'LIST_COLUMN_LABEL' => array(
'ru' => 'Наименование товара',
'en' => 'Description of goods',),
'LIST_FILTER_LABEL' => array(
'ru' => 'Наименование товара',
'en' => 'Description of goods',
),
);
$userTypeId = $userTypeEntity->Add( $userTypeData );
![Page 15: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/15.jpg)
Добавление записи в highload блок
$highloadBlockData = array(
'ID' => 6,
'NAME' => 'Goods',
'TABLE_NAME' => 'goods'
);
$entity = HL\HighloadBlockTable::compileEntity( $highloadBlockData );
$entityDataClass = $entity->getDataClass();
$result = $entityDataClass::add( array(
'UF_USER_NAME' => 'Иванов Пётр'
));
if ( $result->isSuccess() ) {
// Запись добавлена
}
![Page 16: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/16.jpg)
Групповые операции
![Page 17: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/17.jpg)
Добавление свойств в фильтр
![Page 18: «Highload блоки и новое api к ним»](https://reader030.vdocuments.site/reader030/viewer/2022012313/557f52c4d8b42a822f8b48a2/html5/thumbnails/18.jpg)
Highload блоки 15.0
1. Импорт/экспорт.
2. Поддержка прав.
3. Доработка компонентов и шаблонов.
4. Интеграция с модулем поиска.