Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Количество сообщений
8
Зарегистрирован:
06-12-2012, 18:26:18
Отображение цен в UAH и USD одновременно
Добрый день!
Как сделать одновременное отображение UAH и USD одного товара, учитывая что товары имеют разные формулы наценки?
Обозначения:
1) "Цена продажи №1" - цена в USD;
2) "Цена продажи №3" - цена в UAH;
3) "курс" - курс USD к UAH;
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Рассчет цен №1-№3 производится по одному и тому же алгоритму, от цены закупки товара у поставщика. Т.е. цены продажи зависят только от цены закупки и формулы наценки, и никак не взаимосвязаны между собой.
Вы имеете возможность в окне "Администрирование" на закладке "Пользовательские запросы" добавить скрипт для расчета цены №3. Он может работать как на все товары, так и на выделенные товары в таблице товаров в справочнике.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Добавленный вами скрипт не зависит от справочников и таблиц. При вызове будет выполнен SQL-скрипт независимо от открытого справочника и/или выбраных строк какой-либо таблицы.
Если вы хотите одним вызовом пересчитать все цены №3 в товарах, товам лучше всего создать курсор на набор записей
SELECT G_ID FROM TBL_GOODS
и в цикле по всему набору для каждой строки выполнить например следующее изменение цены №3
UPDATE TBL_GOODS SET price3=price*8.2 WHERE G_ID = @G_ID, где 8.2 - пример курса USD, @G_ID - код товара полученный из курсора
Почему обновление лучше делать в курсоре? Да потому, что это не создаст нагрузку на подсистему логирования (которая при большом количестве обновляемых строк может сильно тормозить) и не будет одной общей транзакции, т.е. в момент запуска пересчета цены пользователи не будут заблокированы.
Количество сообщений
135
Зарегистрирован:
23-08-2007, 09:03:21
У вас неверный код. Скрипт должен выглнядеть приблизительно так:
Код
DECLARE @GID int;
DECLARE gGoods CURSOR LOCAL FOR
SELECT G_ID FROM TBL_GOODS
WHERE price3 <> price * 8.17;
OPEN gGoods;
FETCH NEXT FROM gGoods INTO @GID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
UPDATE TBL_GOODS SET price3 = price * 8.17 WHERE G_ID = @GID;
FETCH NEXT FROM gGoods INTO @GID;
END;
CLOSE gGoods;
DEALLOCATE gGoods;
Перед выполнением/запуском скрипта дайте нужным пользователям полномочия для этого.
Запустить скрипт на выполнение можно из основного окна в меню пользовательских скриптов (скриншот прилагается)
Так же можно создать переменную для ввода курса валюты перед выполнением данного SQL-запроса, или переделать его только на запуск по выделенным товарам в справочнике товаров.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Какой тип SQL-запроса вы указали при его создании? Параметр :ID используется для вызова SQL-запросов для вібраніх строк в таблицах интерфейса. В него передаётся первичный ключ основной таблицы базы данных из которой формируется отображаемый рекорд-сет в интерфейса. Т.е. если делать запрос для таблицы товаров "справочника товаров", то в параметр :ID будет передан первичный ключ таблицы TBL_GOODS.G_ID. У вас же, запрос не зависит от выбранных товаров и какого-либо открытого откна, он просто вызывается и что-то делает, потому в настройках этого запроса нужно указать тип "Общий"
Так же такая ошибка наблюдалась в начальных версиях данного механизма когда тип "Общий" воспринимался как зависимый от выбранных строк. Обновите версию программы и базы данных.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Пример работы пользовательского SQL-запроса по выделенным товарам
Настройка такого запроса выглядит приблизительно так:
Т.е. в запрос передается переменная первичного ключа :ID, которая для такблицы товаров справочника товаров соответствует полю TBL_GOODS.G_ID. Вторая числовая переменная - сам курс, который нужно ввести перед запуском.
Запрос, который выполняется для каждой выделенной(помеченой) строки должен находиться на закладке "Основной". Так же должен быть указан соответствующий тип самого SQL-запроса, в данном случае "Справочник товаров : Товары".
Так же не забываем полномочия пользователей на запуск и выполнение скриптов.
Количество сообщений
115
Зарегистрирован:
15-06-2010, 14:24:19
Помогите разобраться, на некоторых позициях не получается задать цену в гривне ((( Если я выполняю запрос, база показывает значок запроса, но ничего не изменяется и там где не было цен они не появляются, а также не получается обновить цены если курс изменился. Если я наступаю на какую то позицию и ввожу ее код (G_ID) выдает ошибку. См. print screen.