Table of Contents | ||||
---|---|---|---|---|
|
Note |
---|
Обязательно сделайте бекап сайта перед запуском каких-то выгрузок новым способом, или убедитесь у вашего хостера, что есть бекап сайта и на какую дату. |
1. Добавить задание Sync.X
Задание с типом “Синхронизация Bitrix”
...
2. Добавить действие в Quad.Magic
Действие должно запускать задание Sync.X, которое добавили в предыдущем пункте. Действие должно срабатывать после всех действий, которые программа выполняет для обновления цен и остатков. Обычно эти действия настроены в группе Quad.Magic полного обновления + дублируются в отдельной группе, которая выполняется для обновления цен (в этом случае в группу обновления цен нужно будет добавить еще вызов действия, созданного в группе полного обновления).
...
Указываете настройки подключения к API, ключ и папки, которые настраивали по этой инструкции.
...
Указать ИД шаблона экспорта для выгрузки цен и остатков. Этот шаблон может быть вообще без настроек колонок (добавить новый) или же какой-то старый шаблон, через который выгружались цены и остатки.
...
Поле полного остатка - код поля или SQL-запрос, с помощью которого на сайт передается числовой остаток товара.
Пример 1 запроса:
Code Block |
---|
(case p.is_exists when 2 then 0 else 100 end) |
Передается 0, если товара нет в наличии или 100, при другом статусе. 100 можно поменять на любое число. Этот остаток записывается сюда:
...
Пример 2 запроса:
Выгрузка числового остатка, а если его нет, то по типу наличия:
Code Block |
---|
(select case when coalesce(ps.stock_4_summ, ps.stock_1_summ, 0) > 0 then coalesce(ps.stock_4_summ, ps.stock_1_summ)::varchar else (select ex.val8 from c_exists ex where ex.id = p.is_exists) end from product_stat ps where ps.prod_id = p.id) |
Указанный SQL запрос выгружает Остаток на складе, если его нет, то Остаток в наличии,
...
если его нет, то текст из Настройки 8 типа наличия. ex.val8
- здесь можно поменять на другую колонку из типа наличия.
...
Применять скидки - птичка устанавливается, если программа должна выгружать на сайт скидки.
...
где вместо 20 нужно указать ИД вашего шаблона экспорта, через который отбирается товар.
Для тестирования можно выбрать только 1 товар при помощи фильтра:
Code Block |
---|
p.id = 12345 |
где вместо 12345 укажите QID товара для теста.
Если у вас есть Торговые предложения, то в программе должно быть поле ID родителя, которое заполнено у торговых предложений и не заполнено у товаров основного инфоблока. В этом случае делается 2 настройки выгрузки цен и остатков, для основного товара указывается такой фильтр:
Code Block |
---|
(p.do_exp_20 = 1 and p.КодПоля > 0) |
вместо 20 нужно указать ИД вашего шаблона экспорта, а вместо КодПоля
- код поля с ИД родителя.
Для торговых предложений такой фильтр:
Code Block |
---|
(p.do_exp_20 = 1 and (p.КодПоля = 0 or p.КодПоля is null)) |
Сделать не активными товары, которых Нет в наличии - если установлена данная птичка, то товары, которые в статусе Нет в наличии, на сайте станут Не активными
...
Note |
---|
При этом товары, которые в любом из статусов наличия, будут активироваться на сайте. Т.е. вы не сможете через сайт выключить какой-нибудь товар. |
6. Sync.X вкладка “Поля”
Здесь указывается выгрузка дополнительных цен, складов и свойств товаров.
...
Каждое значение указывается с новой строки в виде:
PFLD|Название поля|SQL поля|Тип значения|Тип поля|Доп. параметр
парметры строки разделяются вертикальной чертой |
PFLD - постоянное значение, признак того, что это поле должно выгружаться при обновлении цен и остатков
Название поля - уникальное название поля, может быть любое, содержащее латинские буквы и цифры, например: field1, field2, prc123 и т.п. Главное чтобы оно во всех строках было разное.
SQL поля - здесь указывается код поля (вкладка Продукция) или SQL-запрос, с помощью которого отбирается информация, выгружаемая в это поле на сайт.
Тип значения - тип значения поля (N - число, S - строка или другое)
Тип поля - тип поля на сайте, в которое выгружается значение, возможные варианты:
PRM - свойство товара на сайте, все типы, кроме Списков)
ENM - свойство товара на сайте, тип Список
WHS - остаток склада
PRC - цена товара
PRD - поле из таблицы b_catalog_product
ELM - поле из таблицы b_iblock_element
Доп. параметр - здесь указывается дополнительный параметр, в зависимости от Тип поля
Если тип поля PRM или ENM, то указывается ИД свойства на сайте
...
Если тип поля WHS - указывается ИД склада на сайте
Если тип поля PRC - указывается ИД цены на сайте
Если тип поля PRD - указывается код поля из таблицы b_catalog_product
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Если тип поля ELM - указывается код поля из таблицы b_iblock_element
Expand | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Примеры полей
Code Block |
---|
PFLD|prc9|p.f_42ddr03sf|N|PRC|9 |
выгружается значение поля f_42ddr03sf
в цену на сайт с ИД = 9
Выгрузка статуса наличия товара
Code Block |
---|
PFLD|stk1|(case p.is_exists when 2 then 0 else 147 end)|N|ENM|345 |
выгружается значение 147 в случае, если товар в наличии, или 0. выгружается в свойство с ИД = 345
Данный пример выгружается признак наличия товара в свойство - это используется во многих шаблонах. Пример свойства:
...
Для таких свойств с типом Список нужно в качестве значения выгружать ИД значения списка.
...
Если в списке наличия несколько разных значений, то их можно задать в программе здесь:
...
Т.е. например в колонке “Пл. 7” указываются ИД значений свойства на сайте, которые соответствуют типу наличия в программе. В этом случае поле нужно указать в таком виде:
Code Block |
---|
PFLD|stk1|(select ex.val7 from c_exists ex where ex.id = p.is_exists)|N|ENM|345 |
где val7
- это код поля “Пл. 7” из типов наличия. Может быть val1, val2, …, val10
Выгрузка даты доставки от региона:
Code Block |
---|
PFLD|data1|(select TO_CHAR(CURRENT_DATE + interval '1' day * deliv_values.days_from, 'dd.mm.yyyy') from deliv_values where deliv_values.pd_id = p.pd_id and region_id = 45)|S|PRM|4896 |
в запросе 45
- ид региона, 4896
- ид свойства, в которое выгружается дата
Активность элемента
Code Block |
---|
PFLD|act1|(case p.is_exists when 2 then 'N' else 'Y' end)|S|ELM|ACTIVE |
Доступность товара
Code Block |
---|
PFLD|avl1|(case p.is_exists when 2 then 'N' else 'Y' end)|S|PRD|AVAILABLE |
Остатки из поля на склад
Code Block |
---|
PFLD|whs3|p.f_42n7ksgt9|N|WHS|3 |
Выгружается число из поля p.f_42n7ksgt9
в склад на сайте с ИД = 3
запрос, которым можно скопировать остатки из какого прайса (загруженные в виде числового остатка) в поле в Продукции
Code Block |
---|
update product set f_42n7kssrg = (select sum(coalesce(stock, 0)) from
price_detail pd where pd.product_id = product.id
and pd.price_id = 596 and pd.is_exists <> 2);
update product set f_42n7kssrg = 0 where f_42n7kssrg is null; |
f_42n7kssrg
- код поля, тип Число, в который копируется остаток
596
- ИД прайса, из которого копируется
Выгрузка единиц измерения
Code Block |
---|
PFLD|unit1|p.f_43gom416r|S|PRD|MEASURE |
в поле f_43gom416r
должно быть ИД единицы измерения на сайте
...
Если у поля f_43gom416r
тип Справочник, то настройка будет выглядеть так
Code Block |
---|
PFLD|unit1|(case p.f_43gom416r when 24 then 1 when 25 then 2 end)|S|PRD|MEASURE |
в SQL нужно указать соответствие между ИД справочника в программе и ИД на сайте при помощи такого текста для каждого значения
when 24 then 1
...