При обмене 1С с сайтом выгружаются все картинки (в папке import_files они также присутствуют), но в результате товары имеют только детальную картинку (из которой (исходя из настроек инфоблока) делается картинка анонса), а вот дополнительных картинок (те что в MORE_PHOTO) нет. Где можно изменить файл import.xml (где он формируется) чтобы добавить дополнительные теги с картинками или в каком файле (компоненте) происходит обработка xml. Потомучто все картинки в структуре import.xml они там есть. Вот мой import.xml
Добрый день судя по файлу фотографии у вас есть, попробуйте отключить оптимизацию отгрузки каталога в настройках интернет-магазин-> 1с интеграция, так же сделать полную отгрузку. А свойства у вас создано в системе ? Соответствует ли внешний код свойства отгружаемому?
Николай Семенцов пишет: Добрый день судя по файлу фотографии у вас есть, попробуйте отключить оптимизацию отгрузки каталога в настройках интернет-магазин-> 1с интеграция, так же сделать полную отгрузку. А свойства у вас создано в системе ? Соответствует ли внешний код свойства отгружаемому?
Отключил опцию « оптимизацию отгрузки каталога в настройках интернет-магазин-> 1с интеграция»
Полная выгрузка
Настройка свойства инфоблока
Свойство импортированного товара с символьным кодом «MORE_PHOTO»
Файл import.xml тот же, что и в первом посте ====================================== Я вот думаю (исходя из этой статьи), может получится получить эти картинки в событии catalog.OnSuccessCatalogImport1C и самому (средствами API) добавить? Но тогда вопрос... Вот зарегистрирую я обработчик на это событие, а какой параметр(аргумент) передать моей функции, чтобы получить эти картинки?
У нас тоже проблема с картинками, хоть и несколько другая: на сайте настроен автоматический обмен с 1С, весь каталог грузился отлично, вместе с картинками. В какой-то момент стали "пропадать" картинки в товарах.
Проверили выгрузку, оказалось, что выгрузка на стороне 1С происходит без ошибок, картинки выгружаются, мы видим процесс передачи архивных файлов (архивы весят много, видимо, все-таки содержат картинки), процесс выгрузки успешно завершается - ошибок нет, но на сайте в папке /upload/1c_catalog появляются только xml файлы, ни папки import_files, ни, соответственно, картинок, ни архивов, передачу которых мы видели в процессе выгрузки (только архив с xml-ками). Получается, что если даже у товара была раньше картинка, то при обновлении после выгрузки картинка пропадает.
Подскажите, пожалуйста, может кто сталкивался, куда копать и где искать проблему?
Поделюсь, как я решил проблему с импортом картинок. Пользуясь событием OnSuccessCatalogImport1C, которое вызывается по окончании импорта в компоненте catalog.import.1c, перед отдачей сообщения 1С об успешном окончании обмена.
AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'importPicturesFrom1C');
//Фильтр картинок (пользовательская функция, к которой мы будем передавать значения для проверки на предмет картинка ли это?)
function filterOfPictures($val = false){
if($val == false) return false;
else{
settype($val, 'string');
$length = strlen($val);
$jpg = stripos($val, '.jpg');
if(($jpg !== false) && (($length - $jpg) == 4)) return true;
$jpeg = stripos($val, '.jpeg');
if(($jpeg !== false) && (($length - $jpeg) == 5)) return true;
$png = stripos($val, '.png');
if(($png !== false) && (($length - $png) == 4)) return true;
$gif = stripos($val, '.gif');
if(($gif !== false) && (($length - $gif) == 4)) return true;
$bmp = stripos($val, '.bmp');
if(($bmp !== false) && (($length - $bmp) == 4)) return true;
}
return false;
}
function importPicturesFrom1C(){
global $APPLICATION;
CModule::IncludeModule('iblock');
//Иницилизация
$CIBlockXMLFile = new CIBlockXMLFile();
$CIBlockElement = new CIBlockElement();
$ID = false;
$currentID = false;
$morePhotos = array();
$properties = array();
$MORE_PHOTO = array();
$counter = 0;
$firstGood = 0;
//Выборка всех элементов из таблицы b_xml_tree
$arFields = $CIBlockXMLFile->GetList(array());
while($arField = $arFields->Fetch()){
++$counter;
//Получение идентификатора текущего элемента
if($arField['NAME'] == 'Ид'){
$EXTERNAL_ID = $arField['VALUE'];
//Так как элемент уже полностью импортировался и создался в инфоблоке мы его находим по внешнему ключу и узнаем ID-шник
$arItems = CIBlockElement::GetList(array('ID' => 'ASC'), array("IBLOCK_TYPE" => "1c_catalog", "IBLOCK_ID" => 37, 'EXTERNAL_ID' => $EXTERNAL_ID), false, false, array('ID'));
$arItem = $arItems->GetNext();
if(is_numeric($arItem['ID']))
$ID = $arItem['ID'];
else
$ID = false;
}
//Фильтрация картинок
if(($arField['NAME'] == 'Значение') and (filterOfPictures($arField['VALUE']))){
$morePhotos[] = CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'] . '/upload/1c_catalog/' . $arField['VALUE']);
$properties = array("PROPERTY_VALUES"=> $morePhotos);
}
if($currentID != $ID)
$firstGood++;
if($firstGood == 1)
$currentID = $ID; //1 и все
//Обновление элемента (добавление картинок)
if(is_numeric($ID) && ($currentID != $ID) and (!empty($properties)) and ($firstGood > 1)){
//$result = $CIBlockElement->Update($currentID, $properties);
CIBlockElement::SetPropertyValues($currentID, 37, $morePhotos, 'MORE_PHOTO');
$morePhotos = array();
$properties = array();
$currentID = $ID;
}
//file_put_contents('logimport.txt', "\n" . serialize($arField) . "\n", FILE_APPEND);
}
//Обновление последнего элемента (добавление картинок)
if(is_numeric($currentID) and (!empty($properties))){
//$result = $CIBlockElement->Update($currentID, $properties);
CIBlockElement::SetPropertyValues($currentID, 37, $morePhotos, 'MORE_PHOTO');
}
}
Так как все данные идут в общем потоке, я подстроился под ту последовательность, по которой выводятся картинки: ============================ ... внешний код первого элемента ... картинки первого элемента ... внешний код второго элемента ... картинки второго элемента ... =========================== Добавление картинок происходит при смене ID.
Цитата
Людмила Черныщук пишет: У нас тоже проблема с картинками, хоть и несколько другая: на сайте настроен автоматический обмен с 1С, весь каталог грузился отлично, вместе с картинками. В какой-то момент стали "пропадать" картинки в товарах.
Проверили выгрузку, оказалось, что выгрузка на стороне 1С происходит без ошибок, картинки выгружаются, мы видим процесс передачи архивных файлов (архивы весят много, видимо, все-таки содержат картинки), процесс выгрузки успешно завершается - ошибок нет, но на сайте в папке /upload/1c_catalog появляются только xml файлы, ни папки import_files, ни, соответственно, картинок, ни архивов, передачу которых мы видели в процессе выгрузки (только архив с xml-ками). Получается, что если даже у товара была раньше картинка, то при обновлении после выгрузки картинка пропадает.
Подскажите, пожалуйста, может кто сталкивался, куда копать и где искать проблему?
14-ю версию пока не устанавливали.
Видимо на каком-то шаге Ваш архив затирается и ко всем картинкам соответственно тоже обрываются пути. Попробуйте воспользоваться данным способом, потомучто, на шаге когда вызывается событие, нам еще доступна вся таблица b_xml_tree, в которой хранится весь XML. ============================= Заметил одну особенность Проблемы возникают только с теми свойствами, у которых (при их создании), значение отмечено как «Множественное». Я думаю что это из-за такой сложности, которая связана с тем, что если свойство простое — то это просто «Название = значение», а в случае с множественным значением — формируется двумерный массив! Пример: У меня свойство «Характеристики» отмечено как множественное. В результате при импорте у меня названия и значения поменялись местами.
Подскажите, пожалуйста, при импорте из 1с вместе с каталогом фотографий товаров картинка для анонса не будет автоматически создаваться? И если так, как эту задачу решить, учитывая, что изображений порядка 7 000?
Роман Павленко пишет: Возможно, кому-то поможет. Выгрузка свойства "Картинки". Описание свойства:
Код
...
Абсолютно верно,для множественных свойств по этой структуре тегов хml-файл и нужно переписывать. И для этого, как я понимаю, нужно изменять код(структуру построения множественных свойств) import.xml файла 1с-программистам,поскольку та,что есть не работает.
Автор в начале и задает вопрос: " Где можно изменить файл import.xml (где он формируется) чтобы добавить дополнительные теги с картинками или в каком файле (компоненте) происходит обработка xml. Потомучто все картинки в структуре import.xml они там есть. Вот мой import.xml... " Который так и остался открытым...
Роман Павленко пишет: Возможно, кому-то поможет. Выгрузка свойства "Картинки". Описание свойства:
Код
...
Абсолютно верно,для множественных свойств по этой структуре тегов хml-файл и нужно переписывать. И для этого, как я понимаю, нужно изменять код(структуру построения множественных свойств) import.xml файла 1с-программистам,поскольку та,что есть не работает.
Автор в начале и задает вопрос: " Где можно изменить файл import.xml (где он формируется) чтобы добавить дополнительные теги с картинками или в каком файле (компоненте) происходит обработка xml. Потомучто все картинки в структуре import.xml они там есть. Вот мой import.xml... " Который так и остался открытым...
Картинки хранятся в подчиненном элементе товара "Картинка", файлы и описания картинок(за искл. основной) и файлов в "ЗначенияРеквизитов". Самый простой способ увидеть, как это получается в XML - выгрузить товар из 1С, в котором есть как минимум 2 картинки и 1 файл.
Здравствуйте! Необходима помощь в интеграции 1С и Magento
Первичные настройки сделаны, товары выгружаются, но есть две проблемы: 1) Не выгружаются картинки 2) Товары с характеристиками выгружаются как простые товары