Ребята, помогите кто может! Нужен простенький SQL скрипт который сделает следующие:
Во всех товарах от конкретного поставщика (ID поставщика 37) проставит галочку "Скрывать в прайсе" ( и что бы галочка проставиласть на все товары поставщика (ID 37) на всех складах... Кто-то может помочь?
Перед выполнением скрипта рекомендую сделать архив базы данных. Скрипт изменяет данные в справочнике товаров (устанавливает поле скрывать в прайсе для всех товаров поставщика id=37)
Попробуйте вот этот скрипт, должно помочь
update
tovar_name set is_price_invisible = 1
where
num in
(
SELECT
tz.tovar_id
FROM
tovar_zal tz
where
tz.last_post_id = 37
)
Спасибо огромное! скрипт работает! Но вот какая задача... Оказывается если принять товары от разных поставщиков на одного нового, а потом отменить/удалить приходную, то программа не возвращает отбатно предыдущего поставщика... Если честно, мне кажется это не совсем правильная логика... ( вдруг случайно не того тот товар попадет в накладную и потом его прийдется отдельно принимать на правильного поставщика)
Скрипт который вы мне предоставили был мне необходим для того что бы отметить эту галочку на товарах от разных поставщиков и в последствии эти товары не показывались на сайте. (синхронизация с сайтом учитывает это поле). Я подумал, что можно принять все товары на одного временного поставщика, отметить у них эту галочку и отменить приходку, что бы товары вернулись в прошлое состояние..
В общем! Если возможно помогите изменить этот скрипт что бы он изменял галочку для всех товаров в определенной группе. Лучше я перемещу временно эти товары в новую группу, запущу скрипт и потом обратно рассортирую товары по своим группам.
Ну или совсем идеальный вариант (но я понимаю что это сложнее): все товары которые мне нужно убрать из прайса имеют в названии слова "Не актуален" может скрипт будет просто как фильтр находить товары которые в названии содержат это словосочетание и только в них проставлять эту галочку? Или посоветуйте как правильнее было бы все это сделать? Вариант вручную не интересен так, как таких товаров более тысячи.
словосочетание "Не актуален" везде с большой буквы?
В какой части названия товара может быть это словосочетание (начало, конец, в любом месте названия товара)?
Подскажите скрипт чтобы копейки были мельче в ценнике .....или вообще без копеек ценники распечатать.
Обычно написано " НЕ АКТУАЛЕН" ( иногда есть пробел перед НЕ, иногда нет) словосочетание всегда в начале названия товара. Прикрепил скрин для аонятности..
Цитата: TheOK від Червень 26, 2015, 20:21:24
словосочетание "Не актуален" везде с большой буквы?
В какой части названия товара может быть это словосочетание (начало, конец, в любом месте названия товара)?
Попробуйте отпредактировать печатную форму. Там можно выставить формат данных вам нужно поставить для цены формат %2.0f и будет выводить без копеек. Но это не совсем правильно... А что бы выводило копейки маленькими спрашивайте дальше. может кто подскажет.
Цитата: AVDcomp від Червень 29, 2015, 13:29:27
Подскажите скрипт чтобы копейки были мельче в ценнике .....или вообще без копеек ценники распечатать.
Цитата: crazyjonyster від Червень 30, 2015, 10:30:03
Обычно написано " НЕ АКТУАЛЕН" ( иногда есть пробел перед НЕ, иногда нет) словосочетание всегда в начале названия товара. Прикрепил скрин для аонятности..
Перед выполнением скрипта рекомендую сделать архив базы данных. Скрипт изменяет данные в справочнике товаровСкрипт устанавливает поле скрывать в прайсе для всех товаров, которые содержат текст "НЕ АКТУАЛЕН" в названии товара в любом месте (в любой позиции) наименования в любом регистре символов
Должен сработать вот этот скрипт, не проверял, но ошибок быть не должно
update
tovar_name set is_price_invisible = 1
where
UPPER( name ) like '%НЕ АКТУАЛЕН%'
Спасибо! Работает. Подскажите еще где найти информацию ( справочник ) структуры базы. Ну например как узнать что галочка "Скрыть в прайсе" это "is_price_invisible", а Название товара это UPPER( name ).. ??
Цитата: TheOK від Червень 30, 2015, 20:40:59
Цитата: crazyjonyster від Червень 30, 2015, 10:30:03
Обычно написано " НЕ АКТУАЛЕН" ( иногда есть пробел перед НЕ, иногда нет) словосочетание всегда в начале названия товара. Прикрепил скрин для аонятности..
Перед выполнением скрипта рекомендую сделать архив базы данных. Скрипт изменяет данные в справочнике товаров
Скрипт устанавливает поле скрывать в прайсе для всех товаров, которые содержат текст "НЕ АКТУАЛЕН" в названии товара в любом месте (в любой позиции) наименования в любом регистре символов
Должен сработать вот этот скрипт, не проверял, но ошибок быть не должно
update
tovar_name set is_price_invisible = 1
where
UPPER( name ) like '%НЕ АКТУАЛЕН%'
Цитата: crazyjonyster від Липень 01, 2015, 14:31:21
Спасибо! Работает. Подскажите еще где найти информацию ( справочник ) структуры базы. Ну например как узнать что галочка "Скрыть в прайсе" это "is_price_invisible", а Название товара это UPPER( name ).. ??
Список таблиц и полей этих таблиц выкладывал вот здесь
http://www.softbalance.com.ua/forum/index.php/topic,1973.msg10950.html#msg10950 (http://www.softbalance.com.ua/forum/index.php/topic,1973.msg10950.html#msg10950)
С 2011 года структура базы изменилась, но не координально
Проблема в том, что для тех, кто не работал с SQL достаточно сложно, как мне кажется, работать напрямую с базой
Расшифровки полей нет, но смотря на сами данные можно догадаться, что это за поля
Думаю, что было на форуме, не могу найти
Может, кто знает даст ссылку или пропишите SQL менеджер:
По всему справочнику товаров нужно найти коды товаров по которым не было движения.
Цитата: semp від Січень 06, 2016, 12:48:37
Думаю, что было на форуме, не могу найти
Может, кто знает даст ссылку или пропишите SQL менеджер:
По всему справочнику товаров нужно найти коды товаров по которым не было движения.
Вот по складам, только перепроверьте на пару позициях.
SELECT
tn.kod,
tn.name,
sn.name AS sklad_name,
tm.num
FROM
tovar_name tn
JOIN tovar_zal tz ON (tn.num = tz.tovar_id)
JOIN sklad_names sn ON (tz.sklad_id = sn.num)
LEFT JOIN tovar_move tm ON (tm.tovar_id = tn.num AND (tm.from_sklad_id = tz.sklad_id OR tm.to_sklad_id = tz.sklad_id))
WHERE
tn.visible = 1 AND
tm.num IS NULL
Цитата: admin від Січень 06, 2016, 14:31:54
Вот по складам...
По складам вроде бы работает, а т.к. у нас три склада (три активные фирмы и у каждой свой склад) хотелось бы, чтобы находились только те, по которым не было вообще движения, т.е. те, по которым было движение по одному из складов уже не должны находиться.
Цитата: semp від Січень 06, 2016, 23:27:41
По складам вроде бы работает, а т.к. у нас три склада (три активные фирмы и у каждой свой склад) хотелось бы, чтобы находились только те, по которым не было вообще движения, т.е. те, по которым было движение по одному из складов уже не должны находиться.
Без учета складов:
SELECT
tn.kod,
tn.name,
tm.num
FROM
tovar_name tn
LEFT JOIN tovar_move tm ON (tm.tovar_id = tn.num)
WHERE
tn.visible = 1 AND
tm.num IS NULL
Все работает - большое спасибо,
Вот только возникла новая проблема:
несколько позиций были удалены - можно ли их как-то вытянуть из удаленных