Для того чтобы организовать торговлю в Интернет-магазине компании потребуется наличие всего одного Менеджера, контролирующего процесс автоматической работы магазина как из офиса компании, так и из любого места в Сети.
Каталог прайсов интернет магазинов - разместите свой прайс бесплатно
  Главная  |    О компании  |    Новости  |    Статьи  |    Форум  |    Клиенты  |    Обратная связь  |    Карта сайта
Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Запомнить
Пароль
   
Форум
 Программа iNETsHOP » Работа с программой
        Сравнение товара по Бренду и Артикулу
Первая страница 1 2 3 4 » Последняя страница
Сравнение товара по Бренду и Артикулу

19.07.2016 10:44

Denndy


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

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
В программе сравнение товара происходит только двумя способами, по артикулу и по описанию, специфика моего направления подразумевает уникальность совпадения только в связке бренд+артикул.
Подскажите пожалуйста возможно-ли реализовать такое сравнение в программе?
Спасибо.
Пользователь оффлайн Распечатать
 

19.07.2016 13:47

support


Support


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

Автоматически сравнить и привязать товары по связке "Артикул+Бренд" не составляет труда средствами самой базы данных через sql-запрос:
Код

DECLARE @S_ID int, @SG_ID int, @SG_ARTIKUL varchar(200), @B_ID int, @G_ID int;
SET @S_ID = :S_ID;

DECLARE cSuppliersGoods CURSOR FOR
SELECT SG_ID, SG_ARTIKUL, SG_B_ID
FROM TBL_SUPPLIERS_GOODS
WHERE SG_S_ID = @S_ID
AND SG_B_ID > 0
AND ISNULL(SG_ARTIKUL, '') <> ''
AND SG_G_ID is NULL;

OPEN cSuppliersGoods;
FETCH NEXT FROM cSuppliersGoods INTO @SG_ID, @SG_ARTIKUL, @B_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @G_ID = (
SELECT G_ID
FROM TBL_GOODS
WHERE G_B_ID = @B_ID
AND UPPER(G_SID) = UPPER(@SG_ARTIKUL)
);

IF (@G_ID > 0)
BEGIN
UPDATE TBL_SUPPLIERS_GOODS
SET SG_G_ID = @G_ID
WHERE SG_ID = @SG_ID;
END;

FETCH NEXT FROM cSuppliersGoods INTO @SG_ID, @SG_ARTIKUL, @B_ID;
END
CLOSE cSuppliersGoods;
DEALLOCATE cSuppliersGoods;


Данный пользовательский SQL-запрос для всех товаров указанного поставщика (поставщик выбирается перед запуском) у которых указаны (не пустые) колонки бренд, артикул и которые не привязаны к товару каталога ищет совпадение по связке бренд+артикул в справочнике товаров и автоматически привязывает товар прайса к товару каталога. Полные настройки данного sql-запроса с привязкой к окну программы, переменными и настройками справочников вы можете скачать в разделе загрузок Пользовательские sql-запросы


Пользователь оффлайн Распечатать
 

19.07.2016 15:19

Denndy


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

Тема начата

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Огромное спасибо.
Подскажите, а отсутствующие в каталоге позиции этот скрипт добавляет как новые?
Еще раз спасибо.
Пользователь оффлайн Распечатать
 

19.07.2016 15:43

support


Support


Количество сообщений   1091
Зарегистрирован:   11-04-2008, 19:11:57
Чтобы добавить новые товары в каталог, товару в обязательном порядке требуется присвоить группу товоара и указать соответствие полей из товара прайса. Данный sql-скрипт дял этого не предназначен и выполняет только изначально указанную задачу.
Пользователь оффлайн Распечатать
 

21.07.2016 07:21

Denndy


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

Тема начата

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

Процесс сравнения останавливается вот такой ошибкой. Можно внести в код дополнение что-бы сравнение останавливалось на ошибочной строке, что-бы видеть почему произошла ошибка?


Пользователь оффлайн Распечатать
 

21.07.2016 08:13

support


Support


Количество сообщений   1091
Зарегистрирован:   11-04-2008, 19:11:57
Цитата
Написал: Denndy
Процесс сравнения останавливается вот такой ошибкой.


Ошибка говорит, что SQL-запрос выборки товара по бренду и артикулу возвращает более одной записи, а значит эта связка у вас не уникальна в каталоге, а потому вместо одного кода товара возвращается несколько.
Цитата

SELECT G_ID
FROM TBL_GOODS
WHERE G_B_ID = @B_ID
AND UPPER(G_SID) = UPPER(@SG_ARTIKUL)


Цитата
Написал: Denndy
Можно внести в код дополнение что-бы сравнение останавливалось на ошибочной строке, что-бы видеть почему произошла ошибка?

Пользовательские sql-запросы на имеют обратной связи с интерфейсом, тем более данный запрос работает по всем товарам поставщика, а не по выделенным строкам в таблице. Если вам нужно получить информацию о проблемном товаре, то вариантов несколько:
1. Брать первый попавшийся найденный товар.
2. Добавить в SQL-запрос предварительное получение количества найденных товаров и выдавать нужное сообщение об ошибке с кодом товара или кодом товара поставщика, что в свою очередь замедлит поиск товаров. Более того, ситуация поиска товаров не типичная для базы данных, потому для большого количества товаров нужно добавить в таблицу товаров TBL_GOODS индекс по двум полям G_B_ID и G_SID (в версиях MSSQL 2005 и выше в индекс можно включить данные поля G_ID чтобы запрос поиска получал код товара в выборке прямо из индекса и не искал физическое расположение записи после индекса)
3. Добавить блок TRY...CATCH и выдавать нужное сообщение об ошибке (для MSSQL 2005 и выше)
4. Сделать экспорт в MSSQL товаров каталога которые дублируются по связке "Бренд + Артикул"

Пользователь оффлайн Распечатать
 

21.07.2016 08:44

Denndy


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

Тема начата

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
"1. Брать первый попавшийся найденный товар."
Брать где?
Все остальное наверное более действенные методы, но к сожалению, я хочу наконец-то начать пользоваться вашей программой а не освоить основы программирования.
Спасибо.
Пользователь оффлайн Распечатать
 

21.07.2016 09:01

support


Support


Количество сообщений   1091
Зарегистрирован:   11-04-2008, 19:11:57
Брать первый найденный товар в каталоге по соответствию Бренд+Артикул.
Для этого в данном пользовательском sql-скрипте замените
Цитата

SELECT G_ID
FROM TBL_GOODS
WHERE G_B_ID = @B_ID
AND UPPER(G_SID) = UPPER(@SG_ARTIKUL)


на

Цитата

SELECT TOP 1 G_ID
FROM TBL_GOODS
WHERE G_B_ID = @B_ID
AND UPPER(G_SID) = UPPER(@SG_ARTIKUL)


То есть вместо "SELECT G_ID" укажите "SELECT TOP 1 G_ID" чтобы выборка по товарам возвращала только одну запись.
Пользователь оффлайн Распечатать
 

21.07.2016 09:17

Denndy


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

Тема начата

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Попробуем спасибо
Пользователь оффлайн Распечатать
 

21.07.2016 09:41

support


Support


Количество сообщений   1091
Зарегистрирован:   11-04-2008, 19:11:57
Вы так же можете экспортировать в Эксель список товаров которые дублируются в справочнике товаров по полям Бренд и Артикул, sql-запрос создание такого отчета выглядит так:
Код

SELECT g.G_ID, g.G_NAME, b.B_NAME, g.G_SID
FROM
(
SELECT COUNT(G_ID) cnt, G_B_ID, G_SID
FROM TBL_GOODS
WHERE G_B_ID > 0 AND ISNULL(G_SID, '') <> ''
GROUP BY G_B_ID, G_SID
HAVING COUNT(G_ID) > 1
) t, TBL_BRANDS b, TBL_GOODS g
WHERE t.G_B_ID = g.G_B_ID
AND t.G_SID = g.G_SID
AND g.G_B_ID = b.B_ID




Настройки экспорта этого отчета добавлены для скачивания в соответствующий раздел: Настройки экспорта в CSV/Excel.
Пользователь оффлайн Распечатать
 

22.07.2016 16:07

Denndy


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

Тема начата

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



а тот товар который правильно идентифицировался, не привязался автоматом
Пользователь оффлайн Распечатать
 

22.07.2016 16:26

support


Support


Количество сообщений   1091
Зарегистрирован:   11-04-2008, 19:11:57
Цитата
Написал: Denndy
Запрос отрабатывает не корректно
а тот товар который правильно идентифицировался, не привязался автоматом

На скриншоте не видно к какому товару привязан данный товар поставщика. Если он привязан, то покажите его в справочнике товаров. А если скрипт его не привязал, то на скриншоте отчетливо видно, что артикул и бренд товара поставщика и товаров в таблице не совпадают.

Так же стоит заметить, что данный скрипт привязки работает только на еще не привязанные (новые) товары, так как в условиях выборки списка товаров прайса есть условие "AND SG_G_ID is NULL". Это специально сделано для того, чтобы чтобы при выполнение этого скрипта не привязывать каждый раз один уже обработанные товары поставщика и не производить пересчет цен в товарах. Возможно, что неправильная привязка была уже произведена ранее другими алгоритмами?
Пользователь оффлайн Распечатать
 

22.07.2016 17:06

Denndy


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

Тема начата

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
Запуск скрипта производился на только-что импортированный прайс.
Меня смущает то, что все неправильный позиции определило на соответствие 100%, может алгоритм проверки некорректен.
Плюс есть позиции которые определились правильно, но не произошло автоматической привязки.
Могу дать доступ к серверу посмотрите сами.



Прикрепленные файлы
c4dc791503.jpg   ( 3 Просмотров | 274.4 KB )
Пользователь оффлайн Распечатать
 

22.07.2016 17:29

support


Support


Количество сообщений   1091
Зарегистрирован:   11-04-2008, 19:11:57
Цитата
Написал: Denndy
Запуск скрипта производился на только-что импортированный прайс.

При запуске данного пользовательского скрипта требуется указать поставщика, товары которого он будет сравнивать и привязывать к каталогу. Вы выбрали поставщика из выпадающего списка?


Цитата
Написал: Denndy
Меня смущает то, что все неправильный позиции определило на соответствие 100%, может алгоритм проверки некорректен.

На скриншоте справочника товаров поставщиков видно, что названия товаров совпадают на 100%.
Пользователь оффлайн Распечатать
 

22.07.2016 17:35

Denndy


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

Тема начата

Количество сообщений   54
Зарегистрирован:   12-03-2016, 18:32:41
1 конечно выбрал
2 скрипт по идее должен отрабатывать связку бренд+артикул, или нет?
http://***/VrweLQRUKE0W42 в этом случае все отработало как нужно, только не произошло привязки...
Пользователь оффлайн Распечатать
 

Распечатать  |  Следующая тема  |  Предыдущая тема
Перейти
Первая страница 1 2 3 4 » Последняя страница  

Статистика форума
Тем: 441, Сообщений: 2902, Пользователей: 1764
Приветствуем новичка по имени skopi
Ближайшие дни рождения
Сегодня именинников нет


iNETsHOP - программа для формирования каталога товаров интернет-магазина и обработки прайсов Copyright 2007-2015 "Программа iNETsHOP - работа с прайс-листами поставщиков для интернет магазинов ®" iNETsHOP - обработка, объединение, анализ прайсов поставщиков и конкурентов