Quad.Wiki

Заполнение пользовательских полей SQL-запросами

Данный механизм применяется для каких-то не стандартных задач, функционал для реализации которых отсутствует в программе.

В запросах нужно заменять код поля, в которое сохраняется информация, например вот это:

Запрос выполняется через действие Quad.Magic “Выполнить запрос БД”, запрос вставляется в Настройка 1.

 

Установить в поле цену и наличие других поставщиков

В поле сохраняется информация в виде:

Пост1 ц:120.5 ост:*** | Пост2 ц:81 ост:5

т.е. название поставщика, цена после слова “ц:” , остаток после слова “ост:”, если поставщиков несколько то они разделены вертикальной чертой.

update product set f_3v8q42ftv = (select string_agg(concat(pr.title, ' ц:', round(case pd.price_curr_id when 3 then pd.price * ###EUR### when 2 then pd.price * ###USD### when 4 then pd.price * ###RUB### else pd.price end)::varchar, ' ост:', pd.exists_text), ' | ') from price_detail pd, price pr where pr.id = pd.price_id and pd.is_exists <> 2 and pr.price_type in (1, 3) and pd.product_id = product.id and pd.price_id <> product.price_id)

f_3v8q42ftv - код поля, в которое сохраняется информация, его нужно заменить на ваше

В запросе так же указана конвертация цен в белорусские рубли, если в прайсе цена в другой валюте - это нужно изменить, если ваша основная валюта не BYN. Код валюты российских рублей должен быть RUB, а не RUR.

Если ваша основная валюта российские рубля, то удалите из запроса строку

when 4 then pd.price * ###RUB###

 

Установить в поле название поставщика с РЦ

update product set f_401gs0okc = null; update product set f_401gs0okc = (select pr.title from price_detail pd, price pr, price_detail_category pdc where pd.product_id = product.id and pd.price_id = pr.id and pr.is_active = 1 and pr.use_rc = 1 and pd.category_id = pdc.id and pdc.is_active = 1 and ((pd.is_active is null) or (pd.is_active = 0)) and pd.fixed_price > 0 limit 1)

f_401gs0okc - код поля, в которое сохраняется информация, его нужно заменить на ваше, в двух местах.

 

Очистить переносы строк в поле

update product set title = replace(title, concat(chr(13), chr(10)), '') where title like concat('%', chr(10), '%')

title - название поля в котором нужно очистить (Название товара).

 

Установить в поле QID товаров привязанных поставщиков

В поле устанавливаются ИД товаров из прайсов поставщиков, через запятую

f_3v8q42ftv - поле в которое устанавливается значение

 

pd.id - поле которое берется из прайсов, в данном случае ИД товара, но можно например объединять и другие поля, например Код, в этом случае заменить pd.id на pd.code

если заменить на pr.title то в поле запишется через запятую названия привязанных поставщиков, pr.id - ИД прайсов, pr.label1 - внешний код прайсов, pr.deliv_get_days - сроки доставки поставщиков

 

and pd.is_exists <> 2 - условие, что добавляется только товар который не в статусе “Нет в наличии”, если нужно все товары, то эту строку можно удалить из запроса

and pr.is_active = 1 - условие, что добавляется только товар из активных прайсов. если прайс выключен, то его товары не добавляются, даже если привязаны.

and pd.price_id <> product.price_id - условие, чтобы в поле попадали только ИД товаров из прайсов, которые не выбраны поставщиком (т.е. так выгружаются все товары, кроме выбранного в качестве поставщика). Строку можно удалить, чтобы выгружались вообще все ИД.