136  /  328

Работа с инфоблоками через API

Просмотров: 3508 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 30.09.2015

Цитатник веб-разработчиков.

Ban Dmitry: Ну да, при работе с битриксом часто надо думать, в какие запросы трансформируется твой вызов API. Но, думается мне, в любых других высокоуровневых средах разработки то же самое.

Потребности заказчиков сайтов очень разнообразны. Штатный функционал Bitrix Framework не может решать всех задач, которые могут быть поставлены перед разработчиком при создании интернет-проектов. Для реализации нестандартных задач необходимо использовать API. API инфоблоков рекомендуется особенно внимательно изучить. Они чаще всего используются при программировании.

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

API модуля состоит из нескольких высокоуровневых функций для выборки данных в публичном разделе сайта и набора классов с низкоуровневыми методами для более специализированной работы.

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

<?
if(CModule::IncludeModule("iblock"))
{
   //здесь можно использовать функции и классы модуля
}
?>

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

Вся работа с датами через API (вставка, выборка, фильтры и т.п.) производится в формате текущего сайта или, если в административной части, в формате текущего языка.

Ряд функций API доступен всегда, т.е. описан в главном модуле, а ряд функций зависит от используемого модуля, и может присутствовать или отсутствовать в различных редакциях продукта. Например, функции для работы с социальной сетью присутствуют в редакциях «1С-Битрикс: Управление сайтом - Бизнес» и выше, а также в «1С-Битрикс: Корпоративный портал».

Для большинства классов Bitrix Framework доступны функции:

  • Выборка данных (GetList).
  • Занесение нового элемента (Add).
  • Обновление и удаление элемента (Update).
  • Удаление элемента (Delete).
  • И другие функции.

Для большинства модулей предлагается специализированная структура классов, механизм событий и дополнительные функции. В частности, для модуля Информационные блоки приводится описание:

  • Всех используемых таблиц в базе данных, в том числе полей таблиц.
  • Классов для работы с типами инфоблоков, инфоблоками, элементами, разделами, полями.
  • Событий, происходящих при добавлении, изменении и удалении объектов модуля.
  • Функций, расширяющих возможности ядра.
  • Способов создать пользовательские формы редактирования и свои типы данных.
  • Другая информация.

В уроках главы будут рассмотрены некоторые примеры использования API информационных блоков.

Совет от веб-разработчиков

Антон Долганин: Всегда минимизируйте запросы, если в цикле идет запрос к элементу ИБ, к примеру, то уже думайте над минимизацией. Да, это займет больше времени, но и вам скажут спасибо.

Нельзя:

foreach($arResult["ORDERS"] as $key => $val)
{
   foreach($val["BASKET_ITEMS"] as $vvval)
   {
      $rsEls = CIBlockElement::GetByID();
   }
}
Следует:
foreach($arResult["ORDERS"] as $key => $val)
{
   foreach($val["BASKET_ITEMS"] as $vvval)
   {
      $arIDs[] = $vvval["PRODUCT_ID"];
   }
}

$rsEls = CIBlockElement::GetList(array(), array("ID" => $arIDs));
....

foreach($arResult["ORDERS"] as $key => $val)
{
   foreach($val["BASKET_ITEMS"] as $vvval)
   {
      //наполняем данные, налаживая соответствие ID-ков
   }
} 
Фактически, вы сводите порой десятки, если не сотни, запросов к одному. Разве это не круто?

Обратите внимание, что приведенный код будет работать и для инфоблоков 2.0, если в выборке по элементам нескольких инфоблоков не запрашиваются и не фильтруются свойства элементов.

В главе приведены примеры работы с инфоблоками через API. Кроме этого советуем познакомиться с сообщениями в блогах разработчиков:



14
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии