Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Ошибки - Выгрузка РРЦ


http://inetshop.in.ua/index.php?p=showtopic&toid=200&area=1&high=&pp=15&page=3
22.01.2014 13:40

cifrosvit


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

Количество сообщений   24
Зарегистрирован:   14-01-2014, 15:57:17
Цитата
Написал: MaXX
Цитата
Написал: cifrosvit
А можно сделать чтобы его можно было использовать для всех товаров?


Добавьте условие проверки привязки IF EXISTS( SELECT * FROM TBL_SUPPLIERS_GOODS WHERE ...

И будет вам счастье.


Подскажите пожалуйста как это правильно сделать? Я к сожалению в скриптах не очень...


22.01.2014 13:43

cifrosvit


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

Тема начата

Количество сообщений   24
Зарегистрирован:   14-01-2014, 15:57:17
При проставлении приоритета поставщиков на товары возникают ошибки.

22.01.2014 15:28

support


Support


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

22.01.2014 18:13

MaXX


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


Количество сообщений   64
Зарегистрирован:   11-11-2008, 04:35:57
Цитата
Написал: cifrosvit
Цитата
Написал: MaXX
Цитата
Написал: cifrosvit
А можно сделать чтобы его можно было использовать для всех товаров?


Добавьте условие проверки привязки IF EXISTS( SELECT * FROM TBL_SUPPLIERS_GOODS WHERE ...

И будет вам счастье.


Подскажите пожалуйста как это правильно сделать? Я к сожалению в скриптах не очень...



Что именно сделать? Если вы вообще не ориентируетесь в T-SQL то читайте литературу которой полно. Наша беседа напоминает мне фразу "зделайте мне што-то сам не знаю что". Вы хотите чтобы за вас оценили структуру ваших данных, описали желаемую методику расчета цен и еще за вас же и написали скрипт?

23.01.2014 11:10

cifrosvit


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

Тема начата

Количество сообщений   24
Зарегистрирован:   14-01-2014, 15:57:17
Цитата
Написал: support
Без точного описания ваших действий и манипуляций никакого ответа дать невозможно, скорее всего у вас ошибка в SQL-запросе вычисления цены, который используется в приоритете поставщиков.


При назначении "Приоритета поставщика" на некоторые товары появляются ошибки.
Скриншоты во вложении.

В приоритах поставщика новая запись:

Тип расчёта цены: минимальная
Тип работы: SQL
SG_S_ID - ИД поставщика с Рекомендованной ценой.

Код


SET @Price = (SELECT price from TBL_SUPPLIERS_GOODS WHERE SG_G_ID = @G_ID AND SG_S_ID = 376);

SET @G_PRESENT = 0;

SET @S_ID = (SELECT TOP 1 SG_S_ID from TBL_SUPPLIERS_GOODS WHERE SG_G_ID = @G_ID AND SG_PRESENT = 1 AND SG_S_ID <> 376 ORDER BY price ASC);

IF EXISTS(
SELECT 1
FROM TBL_SUPPLIERS_GOODS
WHERE SG_G_ID = @G_ID AND SG_PRESENT = 1 AND SG_S_ID <> 376
)
BEGIN
SET @G_PRESENT = 1;
END;


23.01.2014 11:12

cifrosvit


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

Тема начата

Количество сообщений   24
Зарегистрирован:   14-01-2014, 15:57:17
Как это можно исправить?
Прикрепленные файлы
Безымянный.jpg   ( 20 Просмотров | 242.8 KB )
Безымянный2.jpg   ( 10 Просмотров | 242.8 KB )

23.01.2014 12:12

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Ошибка говорит, что какой-то из подзапросов возвращает более одного значения. Судя по тексту скрипта, такая ошибка может возникать только в одном месте

Код
SET @Price = (SELECT price from TBL_SUPPLIERS_GOODS WHERE SG_G_ID = @G_ID AND SG_S_ID = 376);


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

Можно, например, взять какую-то одну цену, ограничиваясь только первой попавшейся:
Код
SET @Price = (SELECT TOP 1 price from TBL_SUPPLIERS_GOODS WHERE SG_G_ID = @G_ID AND SG_S_ID = 376);


Но насколько ваш алгоритм правильный - решать только вам.

23.01.2014 12:23

MaXX


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


Количество сообщений   64
Зарегистрирован:   11-11-2008, 04:35:57
Дополнительный скрипт вызывается из программы или из триггера? Можно в нем менять другие данные?

23.01.2014 14:16

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Он вызывается из триггера [dbo].[TBL_GOODS#SET_PRICE_CALC_TYPE] ON [dbo].[TBL_GOODS]
FOR INSERT, UPDATE
после срабатывания приоритетов поставщиков настроенных в интерфейсе, если указан соответствующий тип самого приоритета.

Можно сделать UPDATE других таблиц, в том числе и TBL_GOODS, но нужно внимательно следить за взаимоблокировками.