Разработка на 1С-Битрикс Михаил Базаров
Блог-note

Заполнить инфоблок брендов из свойства инфоблока с товарами

Просмотров: 2575
Задача: в интернет-магазине есть инфоблок с товарами, загружаемый из 1С, у которого заполнено свойство "Производитель" и оно является списком. Нужно заполнить отдельный инфоблок этими производителями, чтобы не наполнять его вручную.
Это может пригодиться для реализации другой заметки: Вывести товары бренда в его описании
Заполнить инфоблок брендов из свойства инфоблока с товарами

Получаем значения множественного свойства "Список"

Для этого нам достаточно воспользоваться методом CIBlockPropertyEnum::GetList, который по коду свойства получит все его значения (впрочем, и остальную информацию получит, но нас интересует только VALUE)

use Bitrix\Main\Loader;
Loader::includeModule('iblock');
$arTrans = array("replace_space" => "-", "replace_other" => "-");
$el = new CIBlockElement;
$property_enums = CIBlockPropertyEnum::GetList(
    array(
        "VALUE" => "ASC",
    ),
    array(
        "IBLOCK_ID" => 10, // ID инфоблока каталога
        "CODE" => "CML2_MANUFACTURER"
    )
);
while ($enum_fields = $property_enums->GetNext()) {
    $arFields = array(
        "IBLOCK_ID" => 7, // ID инфоблока производителей
        "NAME" => strip_tags($enum_fields['VALUE']),
        'ACTIVE' => 'Y',
        'CODE' => Cutil::translit($enum_fields['VALUE'], "ru", $arTrans),
    );
    $NewElementId = $el->Add($arFields);
}

Объяснение кода:

  • Подключаем модуль информационных блоков (iblock), чтобы иметь возможность работать с ними.
  • Задаем параметры для транслитерации, чтобы использовать их для создания символьных кодов.
  • Создаем экземпляр класса CIBlockElement, который будет использоваться для добавления новых элементов в инфоблок.
  • Получаем все значения свойства "Производитель" из инфоблока с товарами, отсортированные по значению.
  • Проходим по всем значениям, полученным на предыдущем шаге, и добавляем их в инфоблок производителей.

Что происходит в коде:

Модуль iblock загружается для работы с информационными блоками.

Настраиваются параметры транслитерации для создания символьных кодов.

Создается экземпляр класса CIBlockElement для добавления элементов в инфоблок.

Метод CIBlockPropertyEnum::GetList используется для получения всех значений свойства "Производитель" из инфоблока с товарами.

В цикле while происходит проход по всем значениям свойства "Производитель":

  • Создаются массивы данных для новых элементов в инфоблоке производителей.
  • Используется метод Add для добавления этих элементов в инфоблок.
Услуги

Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

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

Включено в стоимость разработки

В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

  • Лицензия и модули

    Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

  • Скорость и SEO

    Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

Блог-note

Заметки по 1С-Битрикс