Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
В программе есть несколько способов массового изменения названий товаров.
Обратите внимание, что если вы формируете свой каталог товаров на базе onliner.by (Каталог BY), то ваши изменения в названиях могут быть затерты названиями, взятыми с онлайнера. Чтобы такого не произошло, нужно убрать птичку “Обновлять названия товаров”, подробнее здесь:
Замена/удаление/добавление текста в название товара
Если нужно заменить какой-то текст в названии у выбранных товаров, то нужно выделить эти товары и выбрать пункт меню Операции с товаром → Замена / добавление текста в поле.
В открывшемся окне выбрать поле “Наименование” и операцию, которую нужно сделать с этим полем.
Внимание! Выполненное действие отменить нельзя, поэтому прежде, чем что-то делать - сделайте бекап базы и убедитесь, что он сформировался не нулевого размера.
Автоматические замены текста в названии, бренде, модели
Если вам нужно автоматически делать какие-то операции замены для новых товаров, которые появляются в вашем каталоге, то:
Добавьте действие Quad.Magic “Выполнить запрос БД” где-нибудь в группу действий полного обновления или получения описаний.
В Настройка 1 указать следующий текст select replace_price_info(0);
Выполните это действие. Если в результате получите ошибку, то нужно перейти во вкладку Конфигурация / внизу База данных и выполнить следующий запрос:
-- FUNCTION: public.replace_price_info(bigint)
-- DROP FUNCTION public.replace_price_info(bigint);
CREATE OR REPLACE FUNCTION public.replace_price_info(
priceid bigint)
RETURNS numeric
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
declare
s_fld_to character varying;
s_fld_from character varying;
s_fld_field character varying;
s_price_id character varying;
dt_date timestamp with time zone;
s_sql character varying;
rec_repl RECORD;
cur_repl CURSOR FOR SELECT * FROM a_e_data_replace;
begin
s_fld_from = 'fld_mc6syu';
s_fld_to = 'fld_mc6syn';
s_fld_field = 'fld_mc6syo';
s_price_id = PriceId::character varying;
OPEN cur_repl;
LOOP
FETCH cur_repl INTO rec_repl;
EXIT WHEN NOT FOUND;
IF rec_repl.aed_e_code = 'PRRPLBRN' THEN
s_sql = 'update price_detail set manuf = regexp_replace(manuf, ''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''', ''' ||
replace(COALESCE(rec_repl.fld_mc6syn, ''), '''', '''''') || ''', ''gi'') ' ||
' where lower(manuf) like lower(''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''') ';
IF PriceId > 0 THEN
s_sql = s_sql || ' and price_id = ' || s_price_id;
END IF;
EXECUTE s_sql;
s_sql = 'update price_detail set title = regexp_replace(title, ''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''', ''' ||
replace(COALESCE(rec_repl.fld_mc6syn, ''), '''', '''''') || ''', ''gi'') ' ||
' where lower(title) like lower(''%' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || '%'') ';
IF PriceId > 0 THEN
s_sql = s_sql || ' and price_id = ' || s_price_id;
END IF;
EXECUTE s_sql;
END IF;
IF rec_repl.aed_e_code = 'PRRPLMOD' THEN
s_sql = 'update price_detail set article = regexp_replace(article, ''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''', ''' ||
replace(COALESCE(rec_repl.fld_mc6syn, ''), '''', '''''') || ''', ''gi'') ' ||
' where lower(article) like lower(''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''') ';
IF PriceId > 0 THEN
s_sql = s_sql || ' and price_id = ' || s_price_id;
END IF;
EXECUTE s_sql;
s_sql = 'update price_detail set title = regexp_replace(title, ''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''', ''' ||
replace(COALESCE(rec_repl.fld_mc6syn, ''), '''', '''''') || ''', ''gi'') ' ||
' where lower(title) like lower(''%' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || '%'') ';
IF PriceId > 0 THEN
s_sql = s_sql || ' and price_id = ' || s_price_id;
END IF;
EXECUTE s_sql;
END IF;
IF rec_repl.aed_e_code = 'PRRPLALL' THEN
if COALESCE(rec_repl.fld_mc6syo, '') = '' then
s_fld_field = 'title';
else
s_fld_field = rec_repl.fld_mc6syo;
end if;
s_sql = 'update price_detail set ' || s_fld_field || ' = regexp_replace(' || s_fld_field || ', ''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''', ''' ||
replace(COALESCE(rec_repl.fld_mc6syn, ''), '''', '''''') || ''', ''gi'') ' ||
' where lower(' || s_fld_field || ') like lower(''%' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || '%'') ';
IF PriceId > 0 THEN
s_sql = s_sql || ' and price_id = ' || s_price_id;
END IF;
EXECUTE s_sql;
END IF;
IF rec_repl.aed_e_code = 'MNRPLALL' THEN
if COALESCE(rec_repl.fld_mc6syo, '') = '' then
s_fld_field = 'title';
else
s_fld_field = rec_repl.fld_mc6syo;
end if;
s_sql = 'update product set ' || s_fld_field || ' = regexp_replace(' || s_fld_field || ', ''' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || ''', ''' ||
replace(COALESCE(rec_repl.fld_mc6syn, ''), '''', '''''') || ''', ''gi'') ' ||
' where lower(' || s_fld_field || ') like lower(''%' ||
replace(rec_repl.fld_mc6syu, '''', '''''') || '%'') ';
EXECUTE s_sql;
END IF;
END LOOP;
CLOSE cur_repl;
RETURN 0;
end
$BODY$;
ALTER FUNCTION public.replace_price_info(bigint)
OWNER TO postgres;
Настройки замены задаются в окне Quad.Magic / Данные
Выберите слева “По указанному полю” и справа добавляйте правила
В первой колонке - текст который заменяется,
во второй колонке - на что заменяется,
в третьей колонке - поле, в котором заменяется. Если в третьей колонке не указано ничего, то заменяется в названии. Можно указать code - будет замена в Коде товара, article - замена в Модели товара. Можно указывать и какие-то пользовательские поля.
Указанные замены выполняются для всех товаров каждый раз при выполнении действия Quad.Magic.
Будьте внимательны, чтобы не получилось так, что какой-то текст у вас будет заменяться бесконечно. Например, вы хотите чтобы точка в поле заменилась на три точки .→…
Если прописать такое условие, то у вас после первого раза станет 3 точки, после второго выполнения 9 точек и т.д., т.е. заменяться будет каждый раз один и тот же текст. После добавления правил замены выполните действие Quad.Magic несколько раз и проверьте, что в итоге заменилось, чтобы в случае ошибки восстановить базу данных из бекапа.