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