Quad.Wiki

Bitrix API: Выгрузка контента из программы на сайт

 

Обязательно сделайте бекап сайта перед запуском каких-то выгрузок новым способом, или убедитесь у вашего хостера, что есть бекап сайта и на какую дату.

Если у вас уже была настроена выгрузка в Bitrix старым способом и на сайт выгружались “дублирующиеся” для каждого раздела характеристики, то перед новой выгрузкой нужно с сайта удалить все характеристики, которые добавлены программой. Для этого нужно в админке сайта отсортировать характеристики по Символьному коду и удалить все характеристики, у которых он начинается с PRM_

Вы можете удалить их любым способом, которым умеете.

Можно отфильтровать по символьному коду

Ввести фильтр PRM_%

Внизу окна поставить птичку “Для всех” и нажать “Удалить”

Если удаление зависает и характеристики не удаляются, то попробуйте удалять их частями, например по 100 штук или обратитесь в техподдержку Bitrix

 

 

Если у вас есть сайт, на нем уже есть товары, которые никак не связаны с товарами в нашей программе (т.е. в программу они не загружены, не соответствуют разделы, внешние коды), то нужно синхронизировать информацию между программой и сайтом, перед тем как запускать выгрузку по API. Для этого можно или удалить всё с сайта (разделы, товары, характеристики), либо указать в программе для разделов и товаров соответствующие символьные и внешние коды.

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

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

1. Добавить задание Sync.X

Что такое Sync.X?

Задание с типом “Синхронизация Bitrix”

Задание можно назвать, например, “выгрузка контента в Bitrix”

Тип запуска установите “Вручную” и уберите птичку “Акт.”, сохраните настройки.

Это задание будет выгружать товары с фото и описанием на сайт.

 

2. Добавить действие в Quad.Magic

Что такое 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с, чтобы выгружались все группы.