ElementCustomTable - uniqcle/Bitrix GitHub Wiki

Получение элементов и свойств в виде массива

use \Bitrix\Main\ObjectPropertyException,
	\Bitrix\Main\ArgumentException,
	\Bitrix\Main\SystemException;
use Models\Lists\CarsPropertyValuesTable as CarsTable;

try{
	$arSelect = array("ID",
	                  'IBLOCK_ID',
	                  "NAME",
	                  "ENGINE_VOLUME_" => "ENGINE_VOLUME",
	                  'MANUFACTURER_ID_' => 'MANUFACTURER_ID',
	                  'CITY_ID_' => 'CITY_ID'
	);
	$arFilter = array(
		"ACTIVE" => "Y",
	);

	$cars = \Bitrix\Iblock\Elements\ElementAutoTable::getList(array(
		'select' => $arSelect,
		'filter' =>  $arFilter,
		'order' => array("ACTIVE_FROM" => 'DESC'),
		//'offset' => $offset,
		'limit' => 10,
		'count_total' => true,
	))->fetchAll();

	// получение элементов
	foreach($cars as $car){
		debug($car);

		// получение свойств при привязанных элементах в виде списка
		$markaProperty = \Bitrix\Iblock\Elements\ElementMarkiTable::getByPrimary($car['MANUFACTURER_ID_VALUE'], array(
			'select' => array('ID', 'NAME', 'COUNTRY_' => 'COUNTRY')
		))->fetch();
		debug($markaProperty);

		$cityProperty = \Bitrix\Iblock\Elements\ElementCitiesTable::getByPrimary($car['CITY_ID_VALUE'], array(
			'select' => array('ID', 'NAME')
		))->fetch();
		debug($cityProperty);
	}

} catch ( ObjectPropertyException | ArgumentException | SystemException $e){
	$errorMsg = $e -> getMessage();
	debug($errorMsg);
}


//Array
//(
//	[ID] => 45
//    [IBLOCK_ID] => 22
//    [NAME] => BMW X5
//    [ENGINE_VOLUME_IBLOCK_ELEMENT_ID] => 45
//    [ENGINE_VOLUME_VALUE] => 2.4
//    [MANUFACTURER_ID_IBLOCK_ELEMENT_ID] => 45
//    [MANUFACTURER_ID_VALUE] => 41
//    [CITY_ID_IBLOCK_ELEMENT_ID] => 45
//    [CITY_ID_VALUE] => 37
//)
//Array
//(
//	[ID] => 41
//    [NAME] => BMW
//    [COUNTRY_IBLOCK_ELEMENT_ID] => 41
//    [COUNTRY_VALUE] => Германия
//)
//Array
//(
//	   [ID] => 37
//    [NAME] => Москва
//)

D7. Получение элементов и их свойств в виде объектов

use \Bitrix\Main\ObjectPropertyException,
	\Bitrix\Main\ArgumentException,
	\Bitrix\Main\SystemException;

try{
	$arSelect = array("ID", 'IBLOCK_ID',
	                  "NAME",
	                  'MODEL',          // свойство строка в одно слово
	                  'ENGINE_VOLUME', // свойство строка в 2 слова
	                  'LUGGAGE.ITEM',  // список
	                  'DRIVERS.ITEM',  // список множествен.
	                  'PASSANGERS.ELEMENT',  // привязан. элементы
	                  'MANUFACTURER_ID.ELEMENT', // привязка элемента не множествен.
	                  'CITY_ID.ELEMENT'
	);

	// 1 вар.
	$iblockId = 22;
	$iblock = \Bitrix\Iblock\Iblock::wakeUp($iblockId);
	$cars = $iblock->getEntityDataClass()::getList(array(
		'select' => $arSelect,
		'filter' =>  ["ACTIVE" => "Y"],
		'order' => array("ACTIVE_FROM" => 'DESC'),
		//'offset' => $offset,
		'limit' => 10,
		'count_total' => true,
	))->fetchCollection();

	//2 вар.
	$cars = \Bitrix\Iblock\Elements\ElementAutoTable::getList(array(
		'select' => $arSelect,
		'filter' =>  ["ACTIVE" => "Y"],
		'order' => array("ACTIVE_FROM" => 'DESC'),
		//'offset' => $offset,
		'limit' => 10,
		'count_total' => true,
	))->fetchCollection();

	foreach($cars as $car){
		debug($car->getId());
		debug($car->getName());

		// Простые свойства
		debug($car->getModel()->getValue()); //строка
		debug($car->getEngineVolume()->getValue());  //строка

		// не множественный список
		debug($car->getLuggage()->getItem()->getId());
		debug($car->getLuggage()->getItem()->getValue());

		// множественный список
		foreach($car->getDrivers()->getAll() as $driver):
		 	debug($driver->getItem()->getId());
			debug($driver->getItem()->getXmlId());
			debug($driver->getItem()->getValue());
		endforeach;

		//не множественное cвязанные элементы
		$markaObj = $car->getManufacturerId()->getElement();
		debug($markaObj->getId());
		debug($markaObj->getName());

		// множественные cвязанные элементы
		foreach($car->getPassangers()->getAll() as $passanger):
		 	debug($passanger->getElement()->getId());
			debug($passanger->getElement()->getName());
		endforeach;

	}

} catch ( ObjectPropertyException | ArgumentException | SystemException $e){
	$errorMsg = $e -> getMessage();
	debug($errorMsg);
}

https://nikaverro.ru/blog/bitrix/infoblok-api-d7/