При загрузке товаров из 1С можно получить свойство «Производитель» в виде списка.
Нужно заполнить отдельный инфоблок этими производителями, чтобы не наполнять его вручную.
Вариант реализации на D7:
use Bitrix\Main\Loader;
use Bitrix\Iblock\IblockTable;
use Bitrix\Iblock\PropertyEnumerationTable;
use Bitrix\Iblock\Elements\ElementTable;
use Bitrix\Main\Type\Dictionary;
use Bitrix\Main\Text\Converter;
use Bitrix\Main\Text\Translit;
Loader::includeModule('iblock');
$arTrans = array("replace_space" => "-", "replace_other" => "-");
// Получаем инфоблок производителей по ID
$iblockIdCatalog = 10;
$iblockIdManufacturers = 7;
// Получаем значения свойства "CML2_MANUFACTURER" инфоблока каталога
$propertyEnums = PropertyEnumerationTable::getList([
'select' => ['ID', 'VALUE'],
'filter' => [
'IBLOCK_ID' => $iblockIdCatalog,
'PROPERTY.CODE' => 'CML2_MANUFACTURER'
],
'order' => ['VALUE' => 'ASC']
]);
while ($enumFields = $propertyEnums->fetch()) {
$translitCode = Translit::convert($enumFields['VALUE'], 'ru', $arTrans);
// Создаем новый элемент в инфоблоке производителей
$result = ElementTable::add([
'IBLOCK_ID' => $iblockIdManufacturers,
'NAME' => strip_tags($enumFields['VALUE']),
'ACTIVE' => 'Y',
'CODE' => $translitCode,
]);
if (!$result->isSuccess()) {
$errors = $result->getErrorMessages();
// Обработка ошибок
}
}
