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

Загрузка изображений секций каталога

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

Написал такой скрипт
Код
        //Точка входа с файлами, скрипт думаю будет хранится в папке админ, там же и файлы
        $sectionIconsFolder = "/bitrix/admin/custom/section-icons";
   $path =$_SERVER['DOCUMENT_ROOT'].$sectionIconsFolder;
        
        //Получаем содержимое
   $images = scandir($path);
        
        //Проходимся по всем файлам
   while(list($key, $filename) = each($images)) {
                
                //По какой-то причине первые два айтема в массиве с файлами это ., .., для тестовых целей пока что сделал так
      if($filename != '.' && $filename != '..') {
                        //Здесь пока что статичные данные для тестовых целей                
                        //Находим секци по названию секции
              $arFilter = Array('IBLOCK_ID'=>2, 'CODE'=>'underwear');
                $data = CIBlockSection::GetList(array("ASC" => "DESC"), $arFilter)->GetNext();

                        // Здесь я так полагаю происходит ошибка алгоритма
                        // Насколько я знаю в картинку обычно добавляются данные файла с помощью CFile:MakeFikeArray
                        // Здесь это не работает, есть подозрение что он не может добавить файл так как его нету в дб битрикса и 
                        // не в папке upload, скорее всего нужно добавить шаг с добавлением картинки в дб, мб я ошибаюсь
         $newPicture = CFile::MakeFileArray($path . "/" . $filename);
         CIBlockSection::Update($data["ID"], Array("PICTURE" => $newPicture));
         echo print_r($newPicture);
      }
   };
Проставил комментарии, в общем буду очень благодарен если поможете решить данную проблему
Ребят, думаю ошибка в алгоритме что в целом возможно, но по итогу вот что мне консоль вывела на метод CIBlockSection::Update
Код
Using $this when not in object context (0)
site.ru/bitrix/modules/iblock/classes/general/iblocksection.php:772 
Есть подозрения что ошибка в самом методе
Решил проблему, метод update не является статикой и вызывать его так CIBlockSection::Update было ошибкой, вот верный синтаксис $bs = new CIBlockSection; $bs->Update. Тему можно закрывать.  
Да, что бы кому-то (кто нарвется на этот вопрос) было понятнее

Код
$bs = new CIBlockSection;

$sectionIconsFolder = "/bitrix/admin/custom/section-icons";
$path = $_SERVER['DOCUMENT_ROOT'] . $sectionIconsFolder;
$images = scandir($path);

while (list($key, $filename) = each($images)) {
    if ($filename == '.' && $filename == '..') {
        continue;
    }
    $dbData = CIBlockSection::GetList(
        false,
        array(
            'IBLOCK_ID' => 2,
            'CODE' => 'underwear'
        )
    );
    while ($arSection = $dbData->Fetch()) {
        $arNewPicture = CFile::MakeFileArray($path . "/" . $filename);
        $arFields = array(
            "PICTURE" => $arNewPicture
        );
        $res = $bs->Update($arSection['ID'], $arFields);
    }
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить картинки
 

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