Quad.Wiki

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

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

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

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

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

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

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

Это задание будет обновлять на сайте цены и остатки.

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

Что такое Quad.Magic?

Действие должно запускать задание Sync.X, которое добавили в предыдущем пункте. Действие должно срабатывать после всех действий, которые программа выполняет для обновления цен и остатков. Обычно эти действия настроены в группе Quad.Magic полного обновления + дублируются в отдельной группе, которая выполняется для обновления цен (в этом случае в группу обновления цен нужно будет добавить еще вызов действия, созданного в группе полного обновления).

В Настройка 1 указываю задание, добавленной в п.1 данной инструкции.

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

Можно добавить это действие после экспортов каких-то файлов обновлений для площадок. Можно его добавить и перед экспортами, если экспорты у вас выполняются долго - выгрузка в Bitrix по API не будет блокировать работу других действий, а будет выполняться в фоне.

Дублирование действия в группе обновления цен и остатков:

Обратите внимание, что в дополнительной группе, которая обновляет только цены и остатки, добавляется действие с типом “Действие QM”, которое ссылается на действие, добавленное в группе полного обновления. Так нужно делать, чтобы не дублировать настройки действий в разных группах.

3. Sync.X вкладка “Выгрузка API”

Далее нужно внести настройки выгрузки в действии Sync.X, которое добавили в п.1

Указываете настройки подключения к API, ключ и папки, которые настраивали по этой инструкции.

Указать ИД шаблона экспорта для выгрузки цен и остатков. Этот шаблон может быть вообще без настроек колонок (добавить новый) или же какой-то старый шаблон, через который выгружались цены и остатки.

Указать ИД инфоблока, в котором находятся товары на сайте

Поставить птичку “Обновлять цены и остатки

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

4. Sync.X вкладка “Товары”

Здесь нужно заполнить следующие поля:

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

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

5. Sync.X вкладка “Цены и остатки”

Обновлять цены и остатки по ID Site - установите эту птичку, если обновлять цены и остатки нужно не по Внешнему коду, а по ИД товара на сайте (по умолчанию обновляется по Внешнему коду и желательно так и оставлять).

Поле с ID сайта - код поля, в котором сохранен ИД товара на сайте, заполняется если стоит первая птичка.

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

ID главной цены - указывается ИД цены на сайте, в которую выгружать основную цену программы. ИД можно посмотреть в админке сайта на странице Типы цен.

Магазин / Настройки / Цены / Типы цен

Поле главной цены - указывается поле программы или SQL-запрос, с помощью которого получается цена программы. По умолчанию поле price - основная цена программы.

Валюта главной цены - код валюты, который выгружается на сайт, должен соответствовать одному из кодов валют, которые есть на сайте.

ID главного склада - указывается ИД склада на сайте, в который будет выгружаться числовой остаток товаров. Если на сайте нет складов, то здесь можно оставить 1.

Пример заполнения:

Поле полного остатка - код поля или SQL-запрос, с помощью которого на сайт передается числовой остаток товара.

Пример 1 запроса:

(case p.is_exists when 2 then 0 else 100 end)

Передается 0, если товара нет в наличии или 100, при другом статусе. 100 можно поменять на любое число. Этот остаток записывается сюда:

Пример 2 запроса:

Выгрузка числового остатка, а если его нет, то по типу наличия:

(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 - здесь можно поменять на другую колонку из типа наличия.

Применять скидки - птичка устанавливается, если программа должна выгружать на сайт скидки.

Поле цены без скидки - код поля в программе с ценой без скидки.

Фильтр товаров - здесь указывается SQL-фильтр товаров, для которых выгружается обновление цен и остатков. Если фильтр не указан, то выгружаются все товары.

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

p.do_exp_20 = 1

где вместо 20 нужно указать ИД вашего шаблона экспорта, через который отбирается товар.

Для тестирования можно выбрать только 1 товар при помощи фильтра:

p.id = 12345

где вместо 12345 укажите QID товара для теста.

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

(p.do_exp_20 = 1 and p.КодПоля > 0)

вместо 20 нужно указать ИД вашего шаблона экспорта, а вместо КодПоля - код поля с ИД родителя.

Для торговых предложений такой фильтр:

(p.do_exp_20 = 1 and (p.КодПоля = 0 or p.КодПоля is null))

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

 доступные поля

поле

Тип

Комментарий

ID

int(11)

QUANTITY

double

QUANTITY_TRACE

char(1) [N]

WEIGHT

double [0]

TIMESTAMP_X

timestamp [CURRENT_TIMESTAMP]

PRICE_TYPE

char(1) [S]

RECUR_SCHEME_LENGTH

int(11) NULL

RECUR_SCHEME_TYPE

char(1) [D]

TRIAL_PRICE_ID

int(11) NULL

WITHOUT_ORDER

char(1) [N]

SELECT_BEST_PRICE

char(1) [Y]

VAT_ID

int(11) NULL [0]

VAT_INCLUDED

char(1) NULL [Y]

CAN_BUY_ZERO

char(1) [N]

NEGATIVE_AMOUNT_TRACE

char(1) [D]

TMP_ID

varchar(40) NULL

PURCHASING_PRICE

decimal(18,2) NULL

PURCHASING_CURRENCY

char(3) NULL

BARCODE_MULTI

char(1) [N]

QUANTITY_RESERVED

double NULL [0]

SUBSCRIBE

char(1) NULL

WIDTH

double NULL

LENGTH

double NULL

HEIGHT

double NULL

MEASURE

int(11) NULL

TYPE

int(11) NULL

AVAILABLE

char(1) NULL

BUNDLE

char(1) NULL

Если тип поля ELM - указывается код поля из таблицы b_iblock_element

 доступные поля

поле

Тип

Комментарий

ID

int(11) Автоматическое приращение

TIMESTAMP_X

datetime NULL

MODIFIED_BY

int(18) NULL

DATE_CREATE

datetime NULL

CREATED_BY

int(18) NULL

IBLOCK_ID

int(11) [0]

IBLOCK_SECTION_ID

int(11) NULL

ACTIVE

char(1) [Y]

ACTIVE_FROM

datetime NULL

ACTIVE_TO

datetime NULL

SORT

int(11) [500]

NAME

varchar(255)

PREVIEW_PICTURE

int(18) NULL

PREVIEW_TEXT

text NULL

PREVIEW_TEXT_TYPE

varchar(4) [text]

DETAIL_PICTURE

int(18) NULL

DETAIL_TEXT

longtext NULL

DETAIL_TEXT_TYPE

varchar(4) [text]

SEARCHABLE_CONTENT

text NULL

WF_STATUS_ID

int(18) NULL [1]

WF_PARENT_ELEMENT_ID

int(11) NULL

WF_NEW

char(1) NULL

WF_LOCKED_BY

int(18) NULL

WF_DATE_LOCK

datetime NULL

WF_COMMENTS

text NULL

IN_SECTIONS

char(1) [N]

XML_ID

varchar(255) NULL

CODE

varchar(255) NULL

TAGS

varchar(255) NULL

TMP_ID

varchar(40) NULL

WF_LAST_HISTORY_ID

int(11) NULL

SHOW_COUNTER

int(18) NULL

SHOW_COUNTER_START

datetime NULL

Примеры полей

PFLD|prc9|p.f_42ddr03sf|N|PRC|9 

выгружается значение поля f_42ddr03sf в цену на сайт с ИД = 9

PFLD|stk1|(case p.is_exists when 2 then 0 else 147 end)|N|PRM|345

выгружается значение 147 в случае, если товар в наличии, или 0. выгружается в свойство с ИД = 345

Данный пример выгружается признак наличия товара в свойство - это используется во многих шаблонах. Пример свойства:

Для таких свойств с типом Список нужно в качестве значения выгружать ИД значения списка.

Если в списке наличия несколько разных значений, то их можно задать в программе здесь:

Т.е. например в колонке “Пл. 7” указываются ИД значений свойства на сайте, которые соответствуют типу наличия в программе. В этом случае поле нужно указать в таком виде:

PFLD|stk1|(select ex.val7 from c_exists ex where ex.id = p.is_exists)|N|PRM|345

где val7 - это код поля “Пл. 7” из типов наличия. Может быть val1, val2, …, val10

Выгрузка даты доставки от региона:

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 - ид свойства, в которое выгружается дата

Активность элемента

PFLD|act1|(case p.is_exists when 2 then 'N' else 'Y' end)|S|ELM|ACTIVE

Доступность товара

PFLD|avl1|(case p.is_exists when 2 then 'N' else 'Y' end)|S|PRD|AVAILABLE

Остатки из поля на склад

PFLD|whs3|p.f_42n7ksgt9|N|WHS|3 

Выгружается число из поля p.f_42n7ksgt9 в склад на сайте с ИД = 3

запрос, которым можно скопировать остатки из какого прайса (загруженные в виде числового остатка) в поле в Продукции

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 - ИД прайса, из которого копируется

  • No labels