Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль. |
|
Индентификация/привязка товаров по коду поставщика |
|
|
deniska312
Пользователь iNETsHOP
Количество сообщений
17
Зарегистрирован:
17-05-2016, 23:32:49
|
У меня полное совпадение всех товаров по артикулу/коду поставщика. Реально ли произвести идентификацию товаров по коду каталога и коду поставщика?
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Идентификация товаров по коду поставщика
Идентификация товаров в программе из интерфейса может проводиться по наименованию или по артикулу. В прайс-листах еще дополнительно используется колонка "Код поставщика". Она используется исключительно при импорте товаров из прайсов в программу и должна содержать уникальный ключ (значение которое постоянно для товара и однозначно его идентифицирует), это может быть как артикул так и какой-то внутренний код товара самого поставщика. Если вам нужно использовать артикулы при идентификации, импортируйте значения в колонку "Артикул".
|
Распечатать
|
|
deniska312
Пользователь iNETsHOP
Тема начата
Количество сообщений
17
Зарегистрирован:
17-05-2016, 23:32:49
|
А каким запросом я могу перенести данные всех товаров из колонки Код в колонку Артикул?
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Перенос ID товара в поле "Артикул"
Код
DECLARE @G_ID int;
DECLARE cGoods CURSOR LOCAL READ_ONLY FOR SELECT G_ID FROM TBL_GOODS;
OPEN cGoods;
FETCH NEXT FROM cGoods INTO @G_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
UPDATE TBL_GOODS
SET G_SID = LTRIM(STR(G_ID, 10, 0))
WHERE G_ID = @G_ID;
FETCH NEXT FROM cGoods INTO @G_ID;
END;
CLOSE cGoods;
DEALLOCATE cGoods;
Следует отметить, что данный sql-запрос заменяет все без исключения артикулы товаров кодом (ID) товара из базы данных iNETsHOP.
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Есть-ли возможность переноса данных из стандартных полей импорта прайсов, в созданные в Справочнике свойств товара пользовательские характеристики?
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Штатной процедуры в интерфейсе нет. Такой процесс можно организовать пользовательскими sql-запросами.
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Цитата Написал: support
Штатной процедуры в интерфейсе нет. Такой процесс можно организовать пользовательскими sql-запросами.
Не подскажите запрос? Значения из колонки Бренд необходимо перенести в колонку EX_Бренд, а значения Артикул соответственно в EX_Артикул предварительно удалив символы, такие как: пробел, тире, точка, скобки, слеш. Предполагается это действие производить регулярно (т.к. товар будет добавляться) предусмотреть проверку на пустые значения (для повышения скорости обработки)
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Извините, может некорректно (непонятно) задал вопрос, или задача не выполнимая?
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Цитата Написал: Denndy
Значения из колонки Бренд необходимо перенести в колонку EX_Бренд, а значения Артикул соответственно в EX_Артикул
В предыдущем посте шла речь о "из стандартных полей импорта прайсов", под которыми видимо подразумевались колонки справочника товаров поставщиков которые импортируются непосредственно из прайсов. На скрине вы показываете справочник товаров с колонками которых в стандартном перечне нет, отсюда вопросы: это переименованные штатные колонки таблицы? это колонки из характеристик? это просто нарисованные колонки в графическом редакторе и вы предлагаете их добавить в справочник товаров?
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Действительно, нужно было указать, еще раз извините.
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Пользовательский SQL-запрос для копирования преобразованного артикула из справочника товаров (с удаленными некоторыми символами) в характеристику с кодом (ID) равным 8543 будет выглядеть так:
Код
DECLARE @G_ID int, @P_ID int, @GP_ID int, @PROP_VALUE varchar(150);
SET @P_ID = 8543;
DECLARE cGoods CURSOR LOCAL READ_ONLY FOR
SELECT G_ID, G_SID, (SELECT TOP 1 GP_ID FROM TBL_GOODS_PROPS WHERE GP_P_ID = @P_ID AND GP_G_ID = G_ID)
FROM TBL_GOODS
WHERE NOT G_SID IS NULL
AND G_SID <> ''
AND NOT EXISTS (SELECT 1 FROM TBL_GOODS_PROPS WHERE GP_P_ID = @P_ID AND GP_G_ID = G_ID AND NOT GP_VALUE IS NULL AND GP_VALUE <> '');
OPEN cGoods;
FETCH NEXT FROM cGoods INTO @G_ID, @PROP_VALUE, @GP_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @PROP_VALUE = REPLACE(@PROP_VALUE, ' ', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '-', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '.', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '(', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, ')', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '/', '');
IF @GP_ID > 0
BEGIN
UPDATE TBL_GOODS_PROPS
SET GP_VALUE = @PROP_VALUE
WHERE GP_ID = @GP_ID;
END
ELSE
BEGIN
INSERT INTO TBL_GOODS_PROPS (GP_VALUE, GP_P_ID, GP_G_ID)
VALUES (@PROP_VALUE, @P_ID, @G_ID);
END;
FETCH NEXT FROM cGoods INTO @G_ID, @PROP_VALUE, @GP_ID;
END;
CLOSE cGoods;
DEALLOCATE cGoods;
Для аналогичных манипуляций с колонкой бренда и записью в характеристику с кодом (ID) равным 8547:
Код
DECLARE @G_ID int, @P_ID int, @GP_ID int, @PROP_VALUE varchar(150);
SET @P_ID = 8547;
DECLARE cGoods CURSOR LOCAL READ_ONLY FOR
SELECT G_ID, B_NAME, (SELECT TOP 1 GP_ID FROM TBL_GOODS_PROPS WHERE GP_P_ID = @P_ID AND GP_G_ID = G_ID)
FROM TBL_GOODS, TBL_BRANDS
WHERE G_B_ID = B_ID
AND NOT EXISTS (SELECT 1 FROM TBL_GOODS_PROPS WHERE GP_P_ID = @P_ID AND GP_G_ID = G_ID AND NOT GP_VALUE IS NULL AND GP_VALUE <> '');
OPEN cGoods;
FETCH NEXT FROM cGoods INTO @G_ID, @PROP_VALUE, @GP_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @PROP_VALUE = REPLACE(@PROP_VALUE, ' ', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '-', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '.', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '(', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, ')', '');
SET @PROP_VALUE = REPLACE(@PROP_VALUE, '/', '');
IF @GP_ID > 0
BEGIN
UPDATE TBL_GOODS_PROPS
SET GP_VALUE = @PROP_VALUE
WHERE GP_ID = @GP_ID;
END
ELSE
BEGIN
INSERT INTO TBL_GOODS_PROPS (GP_VALUE, GP_P_ID, GP_G_ID)
VALUES (@PROP_VALUE, @P_ID, @G_ID);
END;
FETCH NEXT FROM cGoods INTO @G_ID, @PROP_VALUE, @GP_ID;
END;
CLOSE cGoods;
DEALLOCATE cGoods;
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Спасибо, все работает просто великолепно.
|
Распечатать
|
|
deniska312
Пользователь iNETsHOP
Тема начата
Количество сообщений
17
Зарегистрирован:
17-05-2016, 23:32:49
|
Подскажите где вводить этот запрос? Ни в программе ни в MSSQL консоли для ввода запросов я не нашел
|
Распечатать
|
|
Admin
Администратор
Количество сообщений
135
Зарегистрирован:
23-08-2007, 09:03:21
|
Цитата Написал: deniska312
Подскажите где вводить этот запрос? Ни в программе ни в MSSQL консоли для ввода запросов я не нашел
В окне "Администрирование", закладка "Пользовательские SQL-запросы"
|
Распечатать
|
|
Статистика форума |
|
Тем: 506, Сообщений: 3222, Пользователей: 2257
Приветствуем новичка по имени L9800708 |
Ближайшие дни рождения |
|
Сегодня именинников нет |
|