Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Работа с программой - Индентификация/привязка товаров по коду поставщика


http://inetshop.in.ua/index.php?p=showtopic&toid=354&fid=2&area=1
11.10.2016 08:23

deniska312


Пользователь iNETsHOP

Количество сообщений   17
Зарегистрирован:   17-05-2016, 23:32:49
У меня полное совпадение всех товаров по артикулу/коду поставщика. Реально ли произвести идентификацию товаров по коду каталога и коду поставщика?

11.10.2016 10:47

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Идентификация товаров по коду поставщика
Идентификация товаров в программе из интерфейса может проводиться по наименованию или по артикулу. В прайс-листах еще дополнительно используется колонка "Код поставщика". Она используется исключительно при импорте товаров из прайсов в программу и должна содержать уникальный ключ (значение которое постоянно для товара и однозначно его идентифицирует), это может быть как артикул так и какой-то внутренний код товара самого поставщика. Если вам нужно использовать артикулы при идентификации, импортируйте значения в колонку "Артикул".

11.10.2016 15:06

deniska312


Пользователь iNETsHOP

Тема начата

Количество сообщений   17
Зарегистрирован:   17-05-2016, 23:32:49
А каким запросом я могу перенести данные всех товаров из колонки Код в колонку Артикул?

11.10.2016 19:59

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.

13.10.2016 13:47

Denndy


Пользователь iNETsHOP

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Есть-ли возможность переноса данных из стандартных полей импорта прайсов, в созданные в Справочнике свойств товара пользовательские характеристики?

13.10.2016 18:56

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Штатной процедуры в интерфейсе нет. Такой процесс можно организовать пользовательскими sql-запросами.

14.10.2016 12:06

Denndy


Пользователь iNETsHOP

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Цитата
Написал: support
Штатной процедуры в интерфейсе нет. Такой процесс можно организовать пользовательскими sql-запросами.




Не подскажите запрос? Значения из колонки Бренд необходимо перенести в колонку EX_Бренд, а значения Артикул соответственно в EX_Артикул предварительно удалив символы, такие как: пробел, тире, точка, скобки, слеш. Предполагается это действие производить регулярно (т.к. товар будет добавляться) предусмотреть проверку на пустые значения (для повышения скорости обработки)

15.10.2016 13:01

Denndy


Пользователь iNETsHOP

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Извините, может некорректно (непонятно) задал вопрос, или задача не выполнимая?

15.10.2016 13:22

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Цитата
Написал: Denndy
Значения из колонки Бренд необходимо перенести в колонку EX_Бренд, а значения Артикул соответственно в EX_Артикул

В предыдущем посте шла речь о "из стандартных полей импорта прайсов", под которыми видимо подразумевались колонки справочника товаров поставщиков которые импортируются непосредственно из прайсов. На скрине вы показываете справочник товаров с колонками которых в стандартном перечне нет, отсюда вопросы: это переименованные штатные колонки таблицы? это колонки из характеристик? это просто нарисованные колонки в графическом редакторе и вы предлагаете их добавить в справочник товаров?

15.10.2016 13:34

Denndy


Пользователь iNETsHOP

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Действительно, нужно было указать, еще раз извините.




15.10.2016 14:59

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;



16.10.2016 22:34

Denndy


Пользователь iNETsHOP

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Спасибо, все работает просто великолепно.

22.06.2017 14:00

deniska312


Пользователь iNETsHOP

Тема начата

Количество сообщений   17
Зарегистрирован:   17-05-2016, 23:32:49
Подскажите где вводить этот запрос? Ни в программе ни в MSSQL консоли для ввода запросов я не нашел

22.06.2017 21:12

Admin


Администратор


Количество сообщений   135
Зарегистрирован:   23-08-2007, 09:03:21
Цитата
Написал: deniska312
Подскажите где вводить этот запрос? Ни в программе ни в MSSQL консоли для ввода запросов я не нашел


В окне "Администрирование", закладка "Пользовательские SQL-запросы"