Задать вопрос
@faragly

Как добавить элемент инфоблока с ID файла в DETAIL_PICTURE?

Здравствуйте! При добавлении элемента через CIBlockElement::Add() ругается если задать в DETAIL_PICTURE id изображения или CFile::GetFileArray($id);

В первом и во втором случае выдает "Обязательное поле "Детальная картинка" не заполнено.". Как добавить правильно?
  • Вопрос задан
  • 3352 просмотра
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Нетология
    1С-программист
    10 месяцев
    Далее
Решения вопроса 1
kompi
@kompi
nullstack devoops
Навскидку:
CFile::MakeFileArray($id);
Работает же. Не поленился и проверил:
$dbElement = CIBlockElement::GetList(array('ID' => 'DESC'), array('IBLOCK_ID' => 23));
while($aElem = $dbElement->Fetch()) {
  var_dump($aElem);
};
$dbElem = new CIBlockElement;
var_dump($dbElem->Add(
    array(
        "NAME" => 'Test2',
        "IBLOCK_ID" => 23,
        'ACTIVE' => 'Y',
        'PREVIEW_TEXT' => 'текст для списка элементов',
        //'DETAIL_PICTURE' => CFile::MakeFileArray(545)
    )
));
var_dump($dbElem->Add(
    array(
        "NAME" => 'Test3',
        "IBLOCK_ID" => 23,
        'ACTIVE' => 'Y',
        'PREVIEW_TEXT' => 'текст для списка элементов',
        'DETAIL_PICTURE' => CFile::MakeFileArray(545)
    )
));

Где 23 - чистый инфоблок. Детальная картинка обязательно. Создан вручную 1 элемент с детальной картинкой. Из элемента взят идентификатор картинки - 545.
Пробуем без картинки и с ней. Соответственно ловим false в первом случае и id вновь созданного элемента.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
initbit
@initbit Куратор тега 1С-Битрикс
Безумный план моих идей в руках больных людей
1. Для начала снимите соответствующую галочку в настройках ИБ и проверьте снова (что бы исключить глюки ядра).
2. Сделайте пустой файл (без подключения шаблона сайта) в котором будет только CIBlockElement::Add с добавлением картинки, картинка пускай лежит в корне сайта с правильными правами файловой системы (для верности права на чтение пусть будут у всех)
Ответ написан
asof
@asof
При добавлении изображения через \Bitrix\Main\UI\FileInput::createInstance()
помогло $arPREVIEW_PICTURE = CIBlock::makeFileArray( массив из формы );
дальше уже получившийся массив добавляем в поле 'PREVIEW_PICTURE' массива обновления\добавления элемента инфоблока.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы