Удаление картинок при выгрузке товаров из 1С в Битрикс. Фото битрикс


Импорт-экспорт в битрикс - картинки разделов каталога

Приветствую вас дорогие друзья! В этой статье я покажу, как делается импорт картинок разделв в Битриксме!

Как импортировать/экспортировать картинки разделов каталога в 1С Битрикс

Очень часто возникает необходимость перенести товары из одного магазина в другой и так как разделов  и товаров бывает очень много, то делать это нужно автоматически с помощью стандартного функционала.

Но у многих возникает проблема, связанная с тем, что такого поля просто нет (поля с картинкой раздела), поэтому первым шагом необходимо от исправить!

Итак, давайте начнем!

 

Делаем поле с картинкой доступной

Заходим в админ панель своего сайта, здесь нам нужно выделить поле с картинкой раздела, чтобы при импорте (экспорте) оно стало доступным.

Для этого через левое меню выбираем – “Настройки” – “Настройки продукта” – “Настройки  модулей”:

 

настройки модулей

 

 

Далее в выпадающем списке выбираем – Торговый каталог:

торговый каталог

 

Переходим на вкладку экспорт/импорт:

экспорт-импорт

 

Листаем вниз и в поле “Доступные поля групп” зажимаем Ctrl и мышкой отмечаем – “Изображение (B_IBLOCK_SECTION.PICTURE)”:

alt="Изображение (B_IBLOCK_SECTION.PICTURE)"

И сохраняем настройки.

Теперь переходим к экспорту.

 

Экспорт картинок

Переходим к настройкам экспорта, для этого через левое меню выбираем – “Магазин” – “Настройки” – “Экспорт данных”, либо просто перейдите по ссылке вида:

ваш_сайт.ru/bitrix/admin/cat_export_setup.php?lang=ru

Здесь мы выбираем Export CSV (new) и нажимаем – Экспортировать:

Export CSV (new)

 

Теперь выбираем нужный инфоблок (в моем случает это каталог с продукцией) и нажимаем – Далее:

каталог

Теперь нам осталось выбрать нужные поля и нажать – Начать выгрузку.

Теперь, среди молей разделов разного уровня появилось после для изображения разделов:

изображение разделов

 

Теперь давайте выполним импорт и убедимся, что нужно нам поле присутствует и там.

 

Импорт картинок

Для импорта переходим  “Магазин” – “Настройки” – “Импорт данных” и в настройках импорта выбираем Import CSV (new) и нажимаем – Импортировать:

Импорт данных

 

Далее выбираем файл для импорта и нужный нам инфоблок, после чего 2 раза нажимаем далее:

инфоблок

 

 

Теперь осталось, как и в случае с экспортом, выбрать (сопоставить) нужные нам поля, и, как видите, у нас имеются следующие поля картинок разделов:

Поля картинок разделов

На этом все, задавайте любые вопросы, постараюсь ответить, удачи!

Если вам нужна помощь в создании какого-либо функционала, сайта, сервиса, тестов или калькуляторов, то готов помочь, подробнее на странице услуг.

sergey-oganesyan.ru

Удаление картинок при выгрузке товаров из 1С в Битрикс

Недавно к нам поступил запрос от клиента, который не доволен работой типового обмена, потому что при удалении картинки из 1С, она не удаляется на сайте.

Ну что же, проверим как все работает. Тестировать обмен будем в режиме обмена изменениями.

На стороне сайта:

На стороне 1С:

Доступа к 1С у нас не было, поэтому мы попросили предоставить две файловые выгрузки обменов:

Шаг №1: подготовка файлов.

Тестировать будем на копии сайта, но все равно, чтобы не «грохнуть» весь каталог, проверим, что файлы произведут загрузку на сайт в режиме «изменения».

Смотрим в import.xml с добавлением картинки.

001.png

«false» - это не то, что нам надо, меняем на «true».

То же самое проделываем с файлом на удаление картинки.

Шаг №2: устанавливаем на сайт скрипт для эмуляции обмена с 1С.

Используем что есть под рукой - вот этот инструмент: https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=42&CHAPTER_ID=04941&LESSON_PATH=3912.4912.4941

Ссылка на архив: http://dev.1c-bitrix.ru/upload/examples/bx_1c_import_last.zip

Распаковываем, и полученный файл bx_1c_import.php загружаем в корень сайта.

Шаг №3: еще немного подготовки

Для чистоты эксперимента находим нашу подопытную товарную позицию и удаляем ее из базы.

002.png

Создаем на сайте две папки для тестирования загрузки

Еще почистим папку с файлами для обмена заказами. Для этого удаляем все вот тут: /upload/1c_exchange

Шаг №4: первая загрузка – товар с картинкой

Так как скрипт эмуляции обмена не умеет брать файлы из папок кроме /upload/1c_catalog/, то копируем файлы сюда:

003 - копирование файлов в 1c_catalog.png

Включаем наш скрипт /bx_1c_import.php, переходим на вкладку «Импорт файлов 1С» и двойной клик по import.xml

004.png

Скрипт нам говорит об успешной загрузке

005.png

offers.xml грузить не нужно, там ничего про интересующие нас картинки не сказано.

Смотрим в элемент инфоблока соответствующий нашему товару.

Вот что у нас загрузилось:

1. Картинка для анонса загрузилась

009_0.png

2. Детальная картинка загрузилась (такая же как и картинка для анонса)

3. А еще мы видим, что фотография подгрузилась в свойство «PHOTO» (ID «MORE_PHOTO»)

009.png

Вот как эти картинки отображаются в публичном интерфейсе.

На странице карточки товара отображаются картинки, подгруженные именно в свойство «PHOTO». Это множественно свойство, и, если картинок несколько, то все они будут отображены на странице карточки товара. В случае, если в 1С к элементу номенклатуры подгружены несколько товаров, то стандартный обмен загрузит их именно в этой свойство.

Картинка для анонса как и детальная картинка (если они подгружены) отображаются ТОЛЬКО в списке товаров. При этом, если картинка для анонса и детальная картинка не заполнены, то в списке товаров будет отображаться одна из картинок из свойства «PHOTO».

ВЫВОД: Для того, чтобы удалить картинку у товара, не достаточно удалить картинки для анонса и детальную картинку. Необходимо также очистить картинки из свойства «PHOTO» (ID «MORE_PHOTO»).

Проверяем в публичном интерфейсе сайта. Все в порядке, картинка отображается в списке и в карточке товара. Теперь попробуем удалить картинку.

Шаг №5: вторая загрузка – удалили картинку (она была единственная) из товара

Удаляем файлы прежнего обмена из /upload/1c_catalog, копируем содержимое /test_1c_upload/without_picture/.

Проделываем загрузку файлов с помощью скрипта как в п.4.

В админке в списке товаров видим, что время дата и время изменения элемента обновились, значит обмен прошел. Смотрим в элемент инфоблока что изменилось:

Разберемся в чем дело.

Шаг №6: смотрим как устроены файлы выгрузки

В первом файле находим тег «Картинка»:

007.png

А еще в первом файле видим тег «MORE_PHOTO» в блоке свойств товара.

007_1.png

Во втором файле также находим тег «Картинка»:

008.png

Здесь передается закрытый тег «Картинка», и собственно картинки уже нет. При этом загрузка повела себя так, что удалила детальную картинку, а картинку для анонса оставила на месте.

Также в перечне свойств мы уже не видим свойства «PHOTO». Однако картинка в свойстве «PHOTO» инфоблока не была удалена.

Итак, нам нужно добиться двух эффектов:

  1. Необходимо, чтобы удалилась картинка для анонса
  2. Необходимо, чтобы удалилась картинка из свойства «PHOTO»

Шаг №7: настраиваем удаление картинки из анонса

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

Настаиваем наш инфоблок с каталогом товаров на удаление картинки анонса (Инфоблоки – Типы инфоблоков – 1С Каталог – Каталог товаров). Вкладка «Поля», ставим флаг удаления:

010.png

Сохраняем настройки.

Теперь настраиваем интеграцию (Магазин – Настройки – Интеграция с 1С). Вкладка «Каталог», говорим, чтобы настройки изображения обрабатывались по настройкам инфоблока:

011.png

Все настроили. Теперь проделываем загрузку товара с картинкой (п.4) и после этого загрузку без картинки (п.5).

Смотрим в элемент инфоблока что изменилось:

Шаг №8: придумываем как удалить картинку свойства «PHOTO»

Осталось убрать картинку из дополнительных фотографий. Во втором import.xml нет упоминаний про свойство «PHOTO» и картинка не удаляется.

Подобное поведение мы наблюдали с остатками товара. Когда 1С регистрировала нулевое количество на складах и добавляла товар к обмену. При выгрузке тег «Количество» не записывался в файл обмена и Битрикс на своей стороне не обнулял количество. Одним из вариантов решения было принудительно добавить в выгрузку <Количество>0</Количество>.

Поступим аналогичным образом. Добавим во второй файл запись с тегом «MORE_PHOTO» с пустыми записями. Примерно вот так:

012.png

Пробуем еще раз выгрузить товар. Снова загрузим с картинкой (п.4) и после этого - без картинки (п.5).

Смотрим что изменилось:

Резюме

В случае использования типовых механизмов, в режиме обмена изменениями, картинка с сайта удаляться не будет.

Вот как можно поступить:

  1. Доработать модуль обмена на стороне 1С, чтобы он всегда оставлял в import.xml тег «MORE_PHOTOS», даже в случае удаления картинок
  2. Делать доработку на стороне сайта, чтобы система после загрузки проверяла наличие дополнительных фотографий и делала очистку
  3. Как вариант, вместо удаления картинки на стороне 1С, подгружать однопиксельную белую картинку или «заглушку», тогда визуально это будет равно удалению.

Существуют также особые «продвинутые» версии модулей обмена как для 1С, так и для сайта. Вероятно, с их помощью можно было бы решить эту задачу. Но для этого нужен отдельный тест.

www.ycaweb.ru

Создание фотогалереи на Bitrix .NET Forge CMS

11.01.2013

Создание фотогалереи – довольно растространённая и в то же время редко решаемая действительно успешно задача. Как правило все фотогалереи, которые можно увидеть на коммерческих и личных сайтах – убогие колченогие поделки, которые неудобно пользоваться как их создателям, так и посетителям сайтов.

Мы не станем изобретать велосипед, а покажем как можно настроить очень функциональную фотогалерею, доступную даже в бесплатной Community Edition редакции Bitrix .NET Forge CMS.

Шаг 1 – создаём инфоблок

Начать следует с хранилища информации. В 1С-Битрикс фотогалерея по умолчанию рассматривается всего лишь как ещё один способ отображения структурированной информации инфоблока, такой же, как каталог товаров или новостная лента.

Если у вас нет на сайте ни одного типа инфоблока, то его необходимо создать:

Контент → Информ. блоки → Типы информ. блоков → Добавить новый тип

После создания типа инфоблока (или если у вас уже существует тип инфоблоков, где вы бы хотели разместить информацию), необходимо создать инфоблок, где будут размещаться ваши галереи и фотографии:

Контент → Название_вашего_типа_инфоблока → Добавить инфоблок

(в данном примере мы решили, что наилучшее место для хранения фотогалерей – тот же тип инфоблоков, что используетсян а сайте для хранения новостной информации и не стали создавать новый тип)

Если ваша фотогалерея должна быть доступной для каких-то пользователей кроме администраторов, обязательно зайдите во вкладку «Доступ» при создании инфоблока, выберете роли для которых хотите задать особы права доступа и укажите их.

(в данном примере наша фотогалерея будет доступна для всех пользователей, в том числе неавторизованных гостей сайта)

Вы можете создать несколько инфоблоков для разных фотогалерей для разных групп пользователей и настроить для них независимые права.

Шаг 2 – создаём страницу с фотогалереей

Нам необходимо создать в публичной части сайта старницу на которой будет выводиться информация из нашей фотогалереи.

Создаём страницу в интересующем нас разделе (например, /about/NewFolder1/Default.aspx), не забывая, что для страницы необходимо установить доступ по ролям аналогичный тому, который мы установили для инфоблока. Это можно сделать как через административный, так и через публичный интерфейс (если вы не знаете как создавать страницы – обратитесь к руководству для Контент-Менеджера).

На странице необходимо разместить компонент фотогалереи bitrix:photogallery (расположен в панели компонентов в папке Контент → Фотогалерея).

Указываем тип инфоблока и инфоблока в параметрах компонента фотогалереи:

Шаг 3 – наполняем фотогалерею

Существует два основных способа работы с фотогалереей – через административный интерфейс (как с обычным инфоблоком) и через публичный интерфейс (средствами компонента bitrix:photogallery).

Важно помнить, что в архитектуре стандартного компонента фотогалереи Bitrix .NET Forge CMS фотографии могут находиться только внутри фотогалерей (элементы инфоблока внутри категорий инфоблока). Т.е. фотографии не могут находиться в корне инфоблока, без привязки к галерее/разделу!!!

Административный интерфейс:

Создаём фотогалерею – раздел инфоблока:

Контент → Название_вашего_типа_инфоблока → Название_вашего_инфоблока → Добавить раздел

Обратите внимание на тот факт, что вы можете создавать вложенные разделы, они будут отображаться как вложенные альбомы фотогалерей.

После создания раздела необходимо добавить элемент (собственно фотографии) для которых можно заполнить помимо названий так же тексты анонса и детального описания – они будут использоваться в компоненте.

Контент → Название_вашего_типа_инфоблока → Название_вашего_инфоблока → Добавить элемент

Не забудьте указать раздел инфоблока к которому будет относиться элемент, иначе вывод фотографии в публичном интерфейсе произведён не будет!

Публичный интерфейс:

В публичном интерфейсе пользователь имеющий права на редактирование инфоблока (по умолчанию администратор) увидит кнопки:

Создаём фотогалерею – альбом. По умолчанию альбом создаётся в корневом разделе, однако мы можем разместить его внутри любого другого уже существующего альбома:

Загружаем фотографии в конкретные альбомы (имеется возможность задать описание и название фотографии, которые будут отображаться в разделе или осуществить изменение размера в один из распространённых форматов:

Получаем результат!

Наслаждаемся полученной фотогалереей.

пример фотогалереи

Тонкости настройки фотогалереи в Bitrix .NET forge CMS

Тонковсти настройки компонента будут рассмотрены в отдельных статьях

xn--80ahcjeib4ac4d.xn--p1ai


Prostoy-Site | Все права защищены © 2018 | Карта сайта