Множественная загрузка в поле типа "Файл" при импорте товаров из csv
Как мы все знаем - Битрикс спустя годы не поддерживает нормальный, удобный импорт из csv в поля с возможностью множественных значений.
Это очень неудобно и решается или:
1. каждая строка в файле csv дублируется по числу всех уникальных значений всех множественных полей. Таким образом список из 30 элементов может легко превратиться в файл из 200-300 строк, собранных вручную...
2. использование сторонних модулей, чаще платных. В том числе, необходимость тратить дополнительное время на их изучение, общение с их поддержкой. Или даже ковыряние в коде модулей, если что-то идет не так...
Пока предлагаем вам решение для импорта в поле типа "файл", поддерживающее множественное значение.
Данный код нужно разместить в файле bitrix/modules/catalog/load_import/csv_new_run.phpсразу перед строкой: elseif ($arIBlockProperty[$cur_prop_id]["PROPERTY_TYPE"]=="F")
Да, у вас должна быть для этого редакция не ниже "малый бизнес", и нужно использовать импорт именно в разделе "магазин". Проверено - работает!
Исходник: #https://dev.1c-bitrix.ru/community/forums/forum6/topic39164/#
elseif ($arIBlockProperty[$cur_prop_id]["PROPERTY_TYPE"]=="F" && $arIBlockProperty[$cur_prop_id]["MULTIPLE"]=="Y")
{
$files = explode(',', $arRes[$i]);
$arFileFields = [];
foreach ($files as $file)
{
$file = trim($file);
if(preg_match("/^(ftp|ftps|http|https):\\/\\//", $file))
$file = CFile::MakeFileArray($file);
else
$file = CFile::MakeFileArray($io->GetPhysicalName($_SERVER["DOCUMENT_ROOT"].$PATH2IMAGE_FILES.'/'.$file));
$arFileFields[] = ['VALUE' => $file, 'DESCRIPTION' => ''];
}
$PROP[$cur_prop_id] = $arFileFields;
continue;
}