19.07.2016 10:44 | |
DenndyПользователь iNETsHOP Количество сообщений 54 Зарегистрирован: 12-03-2016, 18:32:41 |
В программе сравнение товара происходит только двумя способами, по артикулу и по описанию, специфика моего направления подразумевает уникальность совпадения только в связке бренд+артикул. Подскажите пожалуйста возможно-ли реализовать такое сравнение в программе? Спасибо. |
19.07.2016 13:47 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Идентификация товаров прайса
Да, поиск соответствий товаров прайс-листов к товарам каталога в данный момент производится или по названию или по артикулу. Артикул производителя по определению должен быть неким уникальным ключом по которому можно однозначно определить товары, но это к сожалению бывает не всегда, т.к. поставщики могут давать свои внутренние коды товаров или сами производители не заботятся об уникальности артикулов. Автоматически сравнить и привязать товары по связке "Артикул+Бренд" не составляет труда средствами самой базы данных через sql-запрос: Код
Данный пользовательский SQL-запрос для всех товаров указанного поставщика (поставщик выбирается перед запуском) у которых указаны (не пустые) колонки бренд, артикул и которые не привязаны к товару каталога ищет совпадение по связке бренд+артикул в справочнике товаров и автоматически привязывает товар прайса к товару каталога. Полные настройки данного sql-запроса с привязкой к окну программы, переменными и настройками справочников вы можете скачать в разделе загрузок Пользовательские sql-запросы |
19.07.2016 15:19 | |
DenndyПользователь iNETsHOP
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
Огромное спасибо. Подскажите, а отсутствующие в каталоге позиции этот скрипт добавляет как новые? Еще раз спасибо. |
19.07.2016 15:43 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Чтобы добавить новые товары в каталог, товару в обязательном порядке требуется присвоить группу товоара и указать соответствие полей из товара прайса. Данный sql-скрипт дял этого не предназначен и выполняет только изначально указанную задачу. |
21.07.2016 07:21 | |
DenndyПользователь iNETsHOP
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
Процесс сравнения останавливается вот такой ошибкой. Можно внести в код дополнение что-бы сравнение останавливалось на ошибочной строке, что-бы видеть почему произошла ошибка? |
21.07.2016 08:13 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 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
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
"1. Брать первый попавшийся найденный товар." Брать где? Все остальное наверное более действенные методы, но к сожалению, я хочу наконец-то начать пользоваться вашей программой а не освоить основы программирования. Спасибо. |
21.07.2016 09:01 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 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
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
Попробуем спасибо |
21.07.2016 09:41 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Вы так же можете экспортировать в Эксель список товаров которые дублируются в справочнике товаров по полям Бренд и Артикул, sql-запрос создание такого отчета выглядит так: Код Настройки экспорта этого отчета добавлены для скачивания в соответствующий раздел: Настройки экспорта в CSV/Excel. |
22.07.2016 16:07 | |
DenndyПользователь iNETsHOP
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
Запрос отрабатывает не корректно а тот товар который правильно идентифицировался, не привязался автоматом |
22.07.2016 16:26 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Цитата Написал: Denndy Запрос отрабатывает не корректно а тот товар который правильно идентифицировался, не привязался автоматом На скриншоте не видно к какому товару привязан данный товар поставщика. Если он привязан, то покажите его в справочнике товаров. А если скрипт его не привязал, то на скриншоте отчетливо видно, что артикул и бренд товара поставщика и товаров в таблице не совпадают. Так же стоит заметить, что данный скрипт привязки работает только на еще не привязанные (новые) товары, так как в условиях выборки списка товаров прайса есть условие "AND SG_G_ID is NULL". Это специально сделано для того, чтобы чтобы при выполнение этого скрипта не привязывать каждый раз один уже обработанные товары поставщика и не производить пересчет цен в товарах. Возможно, что неправильная привязка была уже произведена ранее другими алгоритмами? |
22.07.2016 17:06 | |
DenndyПользователь iNETsHOP
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
Запуск скрипта производился на только-что импортированный прайс. Меня смущает то, что все неправильный позиции определило на соответствие 100%, может алгоритм проверки некорректен. Плюс есть позиции которые определились правильно, но не произошло автоматической привязки. Могу дать доступ к серверу посмотрите сами. |
22.07.2016 17:29 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Цитата Написал: Denndy Запуск скрипта производился на только-что импортированный прайс. При запуске данного пользовательского скрипта требуется указать поставщика, товары которого он будет сравнивать и привязывать к каталогу. Вы выбрали поставщика из выпадающего списка? Цитата Написал: Denndy Меня смущает то, что все неправильный позиции определило на соответствие 100%, может алгоритм проверки некорректен. На скриншоте справочника товаров поставщиков видно, что названия товаров совпадают на 100%. |
22.07.2016 17:35 | |
DenndyПользователь iNETsHOP
Тема начата
Зарегистрирован: 12-03-2016, 18:32:41 |
1 конечно выбрал 2 скрипт по идее должен отрабатывать связку бренд+артикул, или нет? http://***/VrweLQRUKE0W42 в этом случае все отработало как нужно, только не произошло привязки... |