Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль. |
|
Фильтр в схеме импорта, не забирать товары с остатком = 0 |
|
|
tavruxa
Пользователь iNETsHOP
Количество сообщений
21
Зарегистрирован:
08-09-2009, 12:49:13
|
Прошу помощи в написании фильтра в схеме импорта.
Работаю с поставщиком по остаткам, и нехочу что бы в ИШ тянулись позиции остаток которых = 0 или остаток является отрицательным = -1 (например).
Сегодня отрицательные остатки получилось отсеч, вводом фильтра на наличие в строке остатка символ "-". А вот с нулевыми остатками не получается, так как при вводе фильтра на наличие символа "0" в строке отсекаются позиции остаток которых = 10,20,30 ....и т.д.
Помогите решить проблему.
Спасибо.
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Удаление товаров без остатка
Чтобы пропустить при импорте товары остаток который равен нулю, достаточно добавить в поле "Скрипт обработки суммарный" следующий текст:
Код
DELETE FROM #TMP_PRICE WHERE IsNumeric(IsNull(LTRIM(RTRIM(CAST(REST as varchar(100)))), '0')) <> 1;
DELETE FROM #TMP_PRICE WHERE IsNull(CAST(CAST(REST as varchar(100)) as float), 0) <> 0;
|
Распечатать
|
|
mora-85
Пользователь iNETsHOP
Количество сообщений
17
Зарегистрирован:
29-07-2013, 17:46:32
|
Подскажите, а как этот запрос изменить для товара которого 1шт в наличии?
Отредактировано mora-85: 21.10.2013, 17:24:24
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Какой именно текст импортируется в поле остаток, 1 или 1шт?
|
Распечатать
|
|
mora-85
Пользователь iNETsHOP
Количество сообщений
17
Зарегистрирован:
29-07-2013, 17:46:32
|
есть и 12шт и 12+ и >12 вот эти надо оставить, а 1шт или 1 просто убрать, я также применяю запрос вида
UPDATE #TMP_PRICE
SET REST = REPLACE(CAST(REST as varchar(100)), '+', '');
для того чтобы убрать + из количества или другой символ или шт.
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Дополнительный SQL-запрос обработки импортированного прайса для удаления товаров в зависимости от остатка, на примере если текст в ячейке Остаток равен 1шт будет выглядеть так
DELETE FROM #TMP_PRICE WHERE CAST(REST as varchar(100)) = '1шт';
Таких SQL-запросов вы можете выполнять сколько-угодно, в данном случае они не зависят друг от друга, разве что один модифицирует данные, которые потребуются другому и именно в таком виде.
Т.е. если есть товары, которые содержат 1, 1шт, +1шт и.т.п., то можно применить следующий:
DELETE FROM #TMP_PRICE WHERE CAST(REST as varchar(100)) in ('1', '1шт', '1 шт', '+1шт', )';
Обратите мнимание, что если вы будете применять маску, как:
DELETE FROM #TMP_PRICE WHERE CAST(REST as varchar(100)) like '"%1шт%';
то будут удалены все товары количество которых заканчивается на единицу. Если единица - первый символ в колонке остатка, то можно использовать
DELETE FROM #TMP_PRICE WHERE CAST(REST as varchar(100)) like '1шт%';
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Ошибка выполнения из-за пропущеной закрывающей скобки в примере. Примеры исправлены, а ваш SQL-запрос будет выглядеть так:
DELETE FROM #TMP_PRICE WHERE CAST(REST as varchar(100)) = '1';
|
Распечатать
|
|
mora-85
Пользователь iNETsHOP
Количество сообщений
17
Зарегистрирован:
29-07-2013, 17:46:32
|
Спасибо за помощь! Все работает.
|
Распечатать
|
|
Статистика форума |
|
Тем: 506, Сообщений: 3222, Пользователей: 2257
Приветствуем новичка по имени L9800708 |
Ближайшие дни рождения |
|
Сегодня именинников нет |
|