Есть файл CSV который я получаю от своего поставщика. В файле 180.000 тыс товаров. Строки я экспортирую через обычный импорт. Но вопрос с фотографиями не понятен. Есть строка ссылка в файле, выглядит она так:
для 180к товаров и ежедневного импорта я бы программу написал с контролем данных проверками и т.п. а иначе ошибка или что-нибудь или поставщик не то даст и будете голову ломать где что и как. программа довольно простая получится готовый модуль под вашу структуру вы вряд ли найдёте а если даже он и существует, из за универсальности в нем не будет многих важных вам функций.
а что касается встроенного импорта битрикса, который через админку, то там вообще по минимуму проверок и т.п. им можно пользоваться только для 100% проверенных структур. т.е., на мой взгляд, дорожка одна - писать свой обработчик.
max k написал: а что касается встроенного импорта битрикса, который через админку, то там вообще по минимуму проверок и т.п. им можно пользоваться только для 100% проверенных структур. т.е., на мой взгляд, дорожка одна - писать свой обработчик.
Можете помочь с таким обработчиком? Какой оцениваете бюджет?
Гершберг Илья написал: Можете помочь с таким обработчиком? Какой оцениваете бюджет?
К сожалению я до середины .. конца января занят по полной. Оценить задачу можно только после четкого задания т.к. просто заливкой файла все, скорее всего, не ограничивается. Сформулируйте задачу, если будете искать разработчика, то вам это всё равно придётся сделать. Думаю, что проблем с поиском не будет.
max k написал: а что касается встроенного импорта битрикса, который через админку, то там вообще по минимуму проверок и т.п. им можно пользоваться только для 100% проверенных структур. т.е., на мой взгляд, дорожка одна - писать свой обработчик.
Можете помочь с таким обработчиком? Какой оцениваете бюджет?
Илья, приветствую.
Ниже наш собственный скрипт импорта данных из CSV в инфоблок (с различными проверками). Если Вы программист, должны разобрать, переписать под себя не составит труда. Код рабочий, скопирован из папки local/php_interface/include/... (сейчас отрабатывает по расписанию, через Агенты на Cron'e)
Код
<?php
//Updating or creating infoblock elements Contact information when reading the CSV file
function PersonInfoImport()
{
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php");
$filePath = $_SERVER["DOCUMENT_ROOT"]."/data_exchange/ForImport/iblock/person_info/PersonInfoImport.csv";
$csvFile = new CCSVData('R', false);
$csvFile->LoadFile($filePath);
$csvFile->SetDelimiter(';');
if(CModule::IncludeModule("iblock"))
{
$iblockID = 27; //ID of the infoblock where the import is made
//Create an array with Employee ID for verification
$resEmployeeID = CIBlockElement::GetList(false, array('IBLOCK_ID' => $iblockID), false, false, array('NAME'));
while($obEmployeeID = $resEmployeeID->GetNextElement())
{
$arEmployeeIDProps = $obEmployeeID->GetFields();
$arCheckEmployeeID[] = $arEmployeeIDProps['NAME'];
}
$el = new CIBlockElement;
while($arFields = $csvFile->Fetch()) //Creating or updating an infoblock element
{
if($arFields[14] == '000001') {
$PROP = array();
$PROP['PI_DISPLAY_NAME'] = $arFields[2];
$PROP['PI_DEP'] = $arFields[3];
$PROP['PI_EMAIL'] = $arFields[4];
$PROP['PI_LOCAL_PHONE'] = $arFields[5];
$PROP['PI_WORK_PHONE'] = $arFields[6];
$PROP['PI_CELL_PHONE'] = $arFields[7];
$PROP['PI_POSITION'] = $arFields[8];
$PROP['PI_ROOM'] = $arFields[9];
$PROP['PI_EXTENDED_STATUS'] = $arFields[10];
$PROP['PI_EXTENDED_STATUS_END_DATE'] = $arFields[11];
$PROP['PI_STATUS'] = $arFields[12];
$PROP['PI_DEP_HEAD'] = $arFields[13] == '1' ? array(68) : '';
$arAddArray = array(
'CREATED_BY' => 1,
'IBLOCK_ID' => $iblockID,
'PROPERTY_VALUES' => $PROP,
'NAME' => $arFields[0],
'ACTIVE' => !empty($arFields[4]) || !empty($arFields[5]) || !empty($arFields[6]) || !empty($arFields[7]) ? 'Y' : 'N'
);
if(empty($arFields[1])) //If there is no Bitrix element ID in the CSV line
{
if($arFields[12] == '1' || in_array($arFields[0], $arCheckEmployeeID)) //If the infoblock already has such EmployeeID OR CSV status = 1
{
//Nothing to do
} else
{
$el->Add($arAddArray);
}
} else
{
//Updating element properties. If the status in CSV = 0 AND one of the fields with contact information is filled in, the item becomes active.
CIBlockElement::SetPropertyValuesEx($arFields[1], false, $PROP);
$el->Update($arFields[1], array('ACTIVE' => $arFields[12] == '0' && (!empty($arFields[4]) || !empty($arFields[5]) || !empty($arFields[6]) || !empty($arFields[7])) ? 'Y' : 'N', 'MODIFIED_BY' => 1));
}
}
}
}
return "PersonInfoImport();";
}
?>
Ну а чтобы загружать картинки, попробуйте, например, $PROP['PICTURE'] = CFile::MakeFileArray($arFields[12]);, где в поле $arFields[12] содержится ссылка на изображение. Это в случае, если свойство с изображением пользовательское. А если это, например, детальное изображение, то поместите CFile::MakeFileArray($arFields[12]) в $arAddArray:
max k написал: К сожалению я до середины .. конца января занят по полной.Оценить задачу можно только после четкого задания т.к. просто заливкой файла все, скорее всего, не ограничивается.Сформулируйте задачу, если будете искать разработчика, то вам это всё равно придётся сделать.Думаю, что проблем с поиском не будет.
Собственно я не тороплюсь) Не разберусь, обращусь к вам. Спасибо за ответы.
Антон! Спасибо что поделились скриптом! Сам в программировании не силен, поэтому с кем то буду решать этот вопрос. Но за скрипт, спасибо. Это облегчает намного процесс. Попробую конечно испытать его.