Quad.Wiki
Bitrix API: Выгрузка контента из программы на сайт
Обязательно сделайте бекап сайта перед запуском каких-то выгрузок новым способом, или убедитесь у вашего хостера, что есть бекап сайта и на какую дату.
Если у вас уже была настроена выгрузка в Bitrix старым способом и на сайт выгружались “дублирующиеся” для каждого раздела характеристики, то перед новой выгрузкой нужно с сайта удалить все характеристики, которые добавлены программой. Для этого нужно в админке сайта отсортировать характеристики по Символьному коду и удалить все характеристики, у которых он начинается с PRM_
Если у вас есть сайт, на нем уже есть товары, которые никак не связаны с товарами в нашей программе (т.е. в программу они не загружены, не соответствуют разделы, внешние коды), то нужно синхронизировать информацию между программой и сайтом, перед тем как запускать выгрузку по API. Для этого можно или удалить всё с сайта (разделы, товары, характеристики), либо указать в программе для разделов и товаров соответствующие символьные и внешние коды.
Если на сайте нужно сохранить и характеристики, при этом изначально они не были загружены в программу и никак не синхронизированы, то обратитесь в техподдержку, скорее всего настройка синхронизации будет платной.
Если сайт новый, то перед выгрузкой удалите все демо-данные, разделы, товары, свойства, которые не относятся к базовым свойствам шаблона, а так же все бренды из инфоблоков Бренда, если он у вас отдельным инфоблоком, либо все значения списка свойства Бренд, если тип у него Список.
1. Добавить задание Sync.X
Задание с типом “Синхронизация Bitrix”
Задание можно назвать, например, “выгрузка контента в Bitrix”
Тип запуска установите “Вручную” и уберите птичку “Акт.”, сохраните настройки.
Это задание будет выгружать товары с фото и описанием на сайт.
2. Добавить действие в Quad.Magic
Действие должно запускать задание Sync.X, которое добавили в предыдущем пункте. Действие должно срабатывать после всех действий, которые программа выполняет для контента. Обычно эти действия настроены в группе Quad.Magic полного обновления, либо есть отдельная группа, по добавлению новых товаров.
Можно добавить это действие после экспортов каких-то файлов обновлений для площадок. Можно его добавить и перед экспортами, если экспорты у вас выполняются долго - выгрузка в Bitrix по API не будет блокировать работу других действий, а будет выполняться в фоне.
В моем примере есть отдельная группа для выгрузки новых товаров и я добавляю действие в список последним. Действие с типом “Действие Sync”
В Настройка 1 указываю задание, добавленной в п.1 данной инструкции.
В Настройка 2 ничего не указывается, чтобы программа не ждала выполнения этого действия.
3. Sync.X вкладка “Выгрузка API”
Далее нужно внести настройки выгрузки в действии Sync.X, которое добавили в п.1
Указываете настройки подключения к API, ключ и папки, которые настраивали по этой инструкции.
Адрес папки API - ссылка на сайт на папку, полная, с адресом сайта
Папка с фото на хостинге - путь относительно начала сайта к папке с картинками
Ключ API - ключ, который указывали в файле quad_settings.php
Пример заполненных настроек:
ID шаблона экспорта - для отбора товаров, выгружаемых данным действием, используется отбор Автозаполнением для шаблона экспорта. Шаблон можно добавить просто пустой, без колонок, либо использовать существующий шаблон “Bitrix Full”, если у вас такой есть.
В моем примере ID = 17.
Можете сразу добавить действия в Автозаполнение, для отбора товара для этого шаблона.
И выполните эти действия.
Поле ID инфоблока - используется в случае, когда у вас на сайте каталог товаров создает из большого количества инфоблоков (например, для каждого раздела свой инфоблок). В этом случае вам нужно создать какое-то пользовательское поле и заполнить его через Автозаполнение айдишниками инфоблоков в зависимости от групп товара в программе, или каких-то других условий, по которым у вас товары делятся на инфоблоки.
Если у вас только 1 инфоблок с товарами или 2 инфоблока, товары + торговые предложения, то это поле оставляйте пустым. Выгрузка торговых предложений осуществляется с помощью отдельного такого же действия, в которое отбираются только товары-предложения.
Для таких шаблонов, как “Аспро шины и диски”, где используется какое-то конечное количество инфоблоков, это поле так же нужно оставлять пустым, а для каждого отдельного инфоблока делать отдельную настройку выгрузки.
ID инфоблока - здесь указывается ID инфоблока с товарами, в который будет произведена выгрузка. Или ИД инфоблока с торговыми предложениями, если это действие выгружает их.
ИД инфоблока с товарами можно посмотреть, например, здесь:
В моем примере ИД = 26. Настройки выглядят так:
Шаг выгрузки - используется для разбивки количества выгружаемой информации. Оставляйте 100. Если у вас сайт размещается на выделенном сервере, то можете поставить 200 или больше. Значение по умолчанию 100.
Шаг контент - используется для разбивки выгружаемых свойств и их значения. По умолчанию 5000. Рекомендуется использовать эту настройку только для уменьшения количества, если выгрузка не проходит.
Товаров в 1 выгрузке - количество товаров, которые выгружаются на сайт за 1 цикл выгрузки. По умолчанию стоит 10000000 , т.е. чтобы за 1 раз выгружались все товары. При большом количестве товаров рекомендуется здесь установить, например, 10 000. На слабых хостингах 1 000 или меньше, если выгрузка не проходит.
Далее нужно поставить птички для выбора, какая информация будет выгружаться. Если нужно добавлять товары и обновлять их контент, то птички должны стоять так:
Птичку “Выгружать бренды” можно не ставить, если у вас бренды на сайте реализованы не отдельным инфоблоком, а просто свойством-списком или текстовым.
Сайт - указывается код нужного сайта (у вас в админке могут быть несколько).
Посмотреть можно здесь:
4. Sync.X вкладка “Группы”
Здесь указываются настройки для выгрузки групп (разделов) на сайт.
Блок Выгружать - здесь выбирается, какие группы будут выгружены.
Все - выгружаются все группы.
Только выбранных товаров - выгружаются только группы (и их вышестоящие группы) товаров, которые отобраны с помощью Автозаполнения для шаблона экспорта с ИД, указанным во вкладке “Выгрузка API”.
Группы, которых нет в программе по Внешнему коду - здесь указывается, что делать на сайте с группами, которых нет в программе.
При первой выгрузке рекомендуем оставлять “Ничего не делать” и что-то менять в этой настройке только тогда, когда убедились, что выгрузка по API работает без ошибок и сбоев.
Внешний код группы из поля - здесь указывается поле, из которого программа берет Внешний код для синхронизации групп. По умолчанию bitr_code, так и оставляйте.
ИД инфоблока - указывается ИД инфоблока, в который выгружаются группы на сайте. Если у вас 1 инфоблок товаров, то здесь указывается тот же инфоблок, что и во вкладке “Выгрузка API”. Если на сайте для каждой группы свой инфоблок, то их ИД нужно будет указать в карточке каждой группы в поле Метка 5, а эту настройку оставить пустой.
Не выгружать самый верхний уровень - данную птичку нужно установить, например, если у вас на сайте товары разбиты на несколько инфоблоков, каждый из которых это группа верхнего уровня. Птичка устанавливается чтобы этой выгрузкой добавлялись на сайт в инфоблок только подгруппы какой-то группы верхнего уровня.
5. Sync.X вкладка “Бренды”
Здесь указываются настройки для выгрузки брендов на сайт.
Слева выбирается тип свойства бренда.
Настройки зависят от типа свойства, в которое выгружается бренд.
Зайдите в Свойства инфоблока
В настройках таблицы нужно отобразить колонку Внешний код.
В настройках программы нужно указать Название свойства бренда, Внешний код свойства и ИД инфоблока, в котором находится бренд.
Внешний код, если вы включили колонку, отображается в конце таблицы.
ИД инфоблока нужно указывать, если тип вашего свойства Бренда “Привязка к элементам”
Кликните на название свойства - откроются его настройки, где можно будет увидеть ИД инфоблока с брендами.
Если все ок, то должны получить примерно такой результат:
Проверьте на сайте, что есть группы и что они соответствуют программе.
А так же бренды, в инфоблоке или в свойстве.
6. Sync.X вкладка “Товары”
Здесь указываются настройки выгрузки товаров на сайт.
Добавить новые - поставьте птичку, если программа должна добавлять на сайт новые товары
Обновить существующие (контент) - поставьте птичку, если программа должна обновлять фото, описание и характеристики у существующих на сайте товаров.
Симв. код свойства доп. картинок - нужно указать символьный код свойства, в которое на сайте добавляются дополнительные изображения.
Поле с картинками - указывается поле программы, в котором хранятся названия картинок. По умолчанию photo_list. Если понадобится, можно указать другое поле. В этом поле должны быть путь и название файлов картинок, относительно папки quad/api/images на хостинге. Разделитель между картинками | (вертикальная черта). Пример:
21\img_rd21089_1.jpg|21\img_rd21089_1.jpg|21\img_rd21089_2.jpg|21\img_rd21089_3.jpg
Настройки выгружаемой по товару информации
Обновить фото - если не стоит птичка, то у существующих на сайте товаров не будут перезаписываться фото.
Картинка анонса отдельно - если стоит птичка, то первое изображение в списке будет выгружено в картинку анонса, а второе в детальную картинку (в этом случае для каждого товара в программе нужно отдельно заводить картинку анонса). Картинка анонса отображается в разделах и не отображается в карточке товара. Картинка анонса выгружается отдельно так же в случае, когда вы выгружаете фото с onliner.by, первая картинка идет без логотипа.
Если птичка не установлена, то первое фото в списке выгружается и в картинку анонса и в детальную картинку.
Обновить цену - если не стоит птичка, то при выгрузке товара, который уже есть на сайте, у него не будет обновляться цена.
Обновить остаток - если не стоит птичка, то при выгрузке товара, который уже есть на сайте, у него не будет обновляться наличие.
Обновить название - если не стоит птичка, то при выгрузке товара, который уже есть на сайте, у него не будет обновляться название.
Обновить привязку к группе - если не стоит птичка, то при выгрузке товара, который уже есть на сайте, у него не будет обновляться группа (раздел на сайте).
Обновить Символьный код - если не стоит птичка, то при выгрузке товара, который уже есть на сайте, у него не будет обновляться символьный код.
Обновить Описание - если не стоит птичка, то при выгрузке товара, который уже есть на сайте, у него не будет обновляться полное описание и краткое описание.
Очистить описание, если пусто - если не стоит птичка, то при выгрузке товара на сайте будет затираться описание, если оно отсутствует в программе.
Настройки выгружаемых по товару полей.
Название - поле программы, которое выгружается в качестве Названия товара на сайт. По умолчанию title, это стандартное поле названия товара в программе.
В случае, когда у вас в программе есть какое-то дополнительное название товара, которое приоритетнее, чем основное название (например, название товара на Онлайнер), то тогда можно ввести такой код для поля Название:
(case when ((f_3s5po22gj is null) or (f_3s5po22gj = '')) then title else f_3s5po22gj end)
где f_3s5po22gj
- код поля дополнительного названия, заменить нужно в трех местах.
Описание - поле программы, которое выгружается в качестве Описания товара на сайт. По умолчанию info, это стандартное поле Полного описания товара в программе.
Пример 1 Если вы загружаете фото и описание из прайсов, а так же парсите с других сайтов, то вам скорее всего понадобится совместить описание из нескольких полей. Для этого можно использовать такой код:
replace(replace(concat(f_3tspt3keb, (case coalesce(info, '') when '' then '' else concat('<br/>', info) end), (case coalesce(f_41g71r8ij, '') when '' then '' else concat('<br/>', f_41g71r8ij) end)), '<div', '<p'), '</div', '</p')
в этом коде нужно заменить код поля Маркетинговое описание и код поля Характеристики (сайт). Такие замены нужно делать во всех примерах для выгрузки описания.
f_3tspt3keb
- Маркетинговое описание, заменить в одном месте
f_41g71r8ij
- Характеристики (сайт) - заменить в двух местах (в этом поле хранятся характеристики в виде таблицы HTML.
В итоге описание формируется как сумма полей Маркетинговое описание + Полное описание + Характеристики (сайт).
Пример 2 Если не хотите добавлять в описание html-таблицу характеристик, то такой код:
Пример 3 Если нужно выгружать Описание, если оно заполнено, а если не заполнено, то Маркетинговое описание, а если нет Маркетингового, то Краткое описание.
Краткое описание - код поля для выгрузки краткого описания. По умолчанию shortinfo (краткое описание из программы).
Внешний код товара - поле, в котором формируется внешний код. Обычно это поле Код программы. В него нужно загружать внешний код с сайта при начальной загрузки товаров в программу, если у вас на сайте они уже были. И в это же поле формировать уникальный код для новых товаров. По умолчанию значение code.
Символьный код - поле, в которое записывается символьный код товара (изначально с сайта, а так же формируется программой при выгрузке). Добавьте такое пользовательское поле с типом Строка, если у вас его еще нет. В настройке указывается код поля.
Результат:
7. Sync.X вкладка “Поля”
В этой вкладке можно настроить выгрузку дополнительных свойств товара, при обновлении или добавлении товара, а так же свойств и полей товара, при обновлении цен и остатков.
Пример:
Каждая строка это отдельное свойство или поле.
Строка состоит из нескольких тегов с разделителем | (вертикальная черта).
Первый тег - определяет, какая информация находится в этой строке, варианты:
PRM - означает, что это выгрузка свойства при добавлении или обновлении товара
PFLD - означает, что это выгрузка свойства или поля при обновлении цен или остатков
Второй тег - символьный код свойства на сайте (свойство уже должно быть создано на сайте).
Третий тег - поле базы данных программы, либо SQL-запрос, выбирающий какую-то информацию для свойства.
При выгрузке обновления цен и остатков в одной строке может быть до 6 тегов, их описание будет разделе инструкции про выгрузку цен и остатков.
Примеры
8. Sync.X вкладка “Свойства”
Настройка выгрузки свойств товаров из Наборов характеристик программы.
Выгружать характеристики - здесь указывается, по какому тексту будут сопоставляться характеристики при выгрузке, чтобы не создавались дубли. Варианты:
По названию характеристики - проверяется только название, все характеристики программы с одинаковым названием выгружаются в 1 характеристику на сайте. Такой способ можно использовать только если у вас и в программе только по одной характеристики с одинаковым названием. Иначе нужно следить, чтобы у всех характеристик с одинаковым названием был одинаковый Тип характеристики.
По id характеристики - на сайте создается столько же характеристик, сколько и в программе, т.е. синхронизация идет 1 в 1, могут дублироваться характеристики, если они дублируются в программе для разных типов.
По названию + тип характеристики - рекомендуемая настройка, если выгрузка характеристик будет “с нуля”. На сайте будут дублироваться характеристики только в случае, если они в программе имеют разный Тип. Т.е. например Число и Список с выбором нескольких значений. Характеристика будет дублироваться так же в случае, когда есть 2 характеристики с одинаковым названием, на разным признаком “Множественная”.
ID параметров - ид набора характеристик.
Только основные - если установлена птичка, то выгружаются только основные характеристики.
Префикс символьного кода - префикс, который добавляется к символьному коду характеристики. Нужно что-то добавлять, чтобы потом можно было просто отфильтровать характеристики, добавленные программой, на сайте.
Разделитель символьного кода - символ, который вставляется между словами названия характеристики при формировании символьного кода.
Обновлять фильтр/развернут - если не установлена птичка, то у свойства на сайте не обновляется признак, что свойство отображается в Умном фильтре. В этом случае отображение можно настраивать в админке сайта. Так же в этом случае не выгружается признак, что свойство в фильтре отображается развернутым.
Обновлять тип свойства - если не установлена птичка, то при выгрузке свойств на сайт не изменяется их тип (число, строка, список). Иначе тип свойства на сайте изменяется на такой тип, как в программе.
Не создавать новые свойства - если птичка установлена, то у товаров заполняются только существующие на сайте свойства, новые не создаются.
Название в любом регистре - если не установлена птичка, то при выгрузке свойств на сайт будут дублироваться свойства, которые написаны разными буквами (строчными и прописными). Например свойства “Тип” и “тип” - это будут разные свойства. Устанавливайте эту птичку, если не нужно учитывать регистр букв.
Не выгружать “списки” с больше 200 значений - если установлена эта птичка, то на сайт не будут выгружаться характеристики, у которых в программе тип “Список с выбором нескольких значений” или “Список с выбором одного значения”, если у них больше 200 значений. В большинстве случаев, если у характеристики больше 200 значений, то значит тип у нее установлен не правильно. Нет смысла в списках, в которых пользователю нужно что-то выбирать из такого большого количества значений. Скорее всего тип у характеристики должен быть “Число” или просто “Текст/Строка”. Поменяйте тип в программе и после этого характеристика выгрузится.
Все свойства выгружать списками - если установлена эта птичка, то все характеристики программы на сайте будут создаваться с типом “Список”, даже если в программе этот тип “Строка” или “Число”.
Выгружать свойства с больше 200 значениями как тип Строка - если установлена птичка, то программа сама будет изменять тип свойства, если у него больше чем 200 значений. (см. описание Не выгружать “списки” с больше 200 значений).
Множественные характеристики - указывается способ установки у свойства на сайте признака “Множественное”.
Варианты:
Все списки множественные - если установлен такой тип, то свойства с типом “Список с выбором…” на сайт будут выгружены с признаком Множественное (а так же свойства, у которых явно установлен такой признак в настройке характеристики в программе).
Все списки НЕ множественные - все характеристики будут выгружены как НЕ множественные, за исключением характеристик, у которых явно установлен такой признак.
Только "Список с выбором нескольких значений" - только такой тип будет выгружен как “Множественное” + с явно установленным признаком. Характеристики с типом “Список с выбором одного значения” в этом случае будет выгружен как НЕ множественный.
9. Sync.X вкладка “Цены и остатки”
Здесь для выгрузки товаров нужно заполнить отмеченные на скриншете поля.
Как их заполнять можно посмотреть в инструкции по обновлению цен.
В “Поле полного остатка” можно написать 0, это значит что новые товары будут создаваться как Нет в наличии. Наличие им проставится в дальнейшем отдельной выгрузкой для обновления цен и наличия.
При этом нужно убрать птичку во вкладке Товары, по обновлению остатков.
Если птичку оставить, то в “Поле полного остатка” нужно указывать правильный код, чтобы правильно обновлялись остатки.
Обновление цен и остатков выполнится после выгрузки товаров.
Тестирование выгрузки
Для тестов через Автозаполнение рекомендуется выбрать только 1 товар, чтобы при неправильной выгрузке не удалять много информации с сайта и чтобы тест проходил быстрее.
Добавьте 2 действия Автозаполнения для отбора товара в выгрузку контента.
В первом действии отключаются для выгрузки все товары (присваивается 0), действие без условий.
Во втором действии отбираются товары, в нем в колонке IDs укажите ID товары, на котором будете тестировать. Можно указать несколько ИД через запятую.
Выполните по порядку оба правила.
Так же вы можете ограничить и выгружаемые группы. Для этого в настройках задания Sync установите так:
При такой настройке будет выгружена как группа товара, так и все ее вышестоящие группы.
Сохраните задание и запустите его выполнение.
Результаты можно посмотреть во вкладке Статус - там не должно быть ошибок.
После выгрузки проверьте, что на сайте создались разделы и отобранный товар, проверьте что у товара есть фото (в том числе дополнительные), описание, заполнены свойства, в том числе те, которые вы передавали через вкладку “Поля”.
Проверьте, что в инфоблок добавлен Бренд, если он отдельным инфоблоком, что Бренд заполнен в карточке товара.
Если все ок, то Автозаполнение очистите фильтр для действия отбора, чтобы выгружались все товары, а так же поменяйте настройку действия Synс, чтобы выгружались все группы.