22.07.2013 16:30 | |
tehnorealПользователь iNETsHOP Количество сообщений 8 Зарегистрирован: 06-12-2012, 18:26:18 |
Отображение цен в UAH и USD одновременно
Добрый день! Как сделать одновременное отображение UAH и USD одного товара, учитывая что товары имеют разные формулы наценки? Обозначения: 1) "Цена продажи №1" - цена в USD; 2) "Цена продажи №3" - цена в UAH; 3) "курс" - курс USD к UAH; Пример: "Цена продажи №3" = "Цена продажи №1" * "курс". |
22.07.2013 16:41 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Рассчет цен №1-№3 производится по одному и тому же алгоритму, от цены закупки товара у поставщика. Т.е. цены продажи зависят только от цены закупки и формулы наценки, и никак не взаимосвязаны между собой. Вы имеете возможность в окне "Администрирование" на закладке "Пользовательские запросы" добавить скрипт для расчета цены №3. Он может работать как на все товары, так и на выделенные товары в таблице товаров в справочнике. |
22.07.2013 17:49 | |
tehnorealПользователь iNETsHOP
Тема начата
Зарегистрирован: 06-12-2012, 18:26:18 |
Можно маленький пример. А то не получается. Скриншот моей работы прикреплён в этом сообщении. |
22.07.2013 18:15 | |
supportSupport Количество сообщений 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 - код товара полученный из курсора Почему обновление лучше делать в курсоре? Да потому, что это не создаст нагрузку на подсистему логирования (которая при большом количестве обновляемых строк может сильно тормозить) и не будет одной общей транзакции, т.е. в момент запуска пересчета цены пользователи не будут заблокированы. |
23.07.2013 12:26 | |
tehnorealПользователь iNETsHOP
Тема начата
Зарегистрирован: 06-12-2012, 18:26:18 |
Создал переменную запроса (PriceUA), как её использовать в программе, мой скрипт: Код DECLARE @IdPriceUSD CURSOR Скриншот прилагается |
23.07.2013 13:15 | |
AdminАдминистратор Количество сообщений 135 Зарегистрирован: 23-08-2007, 09:03:21 |
У вас неверный код. Скрипт должен выглнядеть приблизительно так: Код
Перед выполнением/запуском скрипта дайте нужным пользователям полномочия для этого. Запустить скрипт на выполнение можно из основного окна в меню пользовательских скриптов (скриншот прилагается) Так же можно создать переменную для ввода курса валюты перед выполнением данного SQL-запроса, или переделать его только на запуск по выделенным товарам в справочнике товаров. |
23.07.2013 14:06 | |
tehnorealПользователь iNETsHOP
Тема начата
Зарегистрирован: 06-12-2012, 18:26:18 |
После окончания выполнения запроса выскакивает окошко с ошибкой "Parameter ID not found." В чём может быть причина? Скриншот прилагается. |
23.07.2013 16:13 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Какой тип SQL-запроса вы указали при его создании? Параметр :ID используется для вызова SQL-запросов для вібраніх строк в таблицах интерфейса. В него передаётся первичный ключ основной таблицы базы данных из которой формируется отображаемый рекорд-сет в интерфейса. Т.е. если делать запрос для таблицы товаров "справочника товаров", то в параметр :ID будет передан первичный ключ таблицы TBL_GOODS.G_ID. У вас же, запрос не зависит от выбранных товаров и какого-либо открытого откна, он просто вызывается и что-то делает, потому в настройках этого запроса нужно указать тип "Общий" Так же такая ошибка наблюдалась в начальных версиях данного механизма когда тип "Общий" воспринимался как зависимый от выбранных строк. Обновите версию программы и базы данных. |
23.07.2013 16:23 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Или добавьте в начало запроса пустой параметр ID Код
После этого не забудьте добавить параметр в таблицу параметров запроса (справа от поля редактирования) |
23.07.2013 18:58 | |
MaXXПользователь iNETsHOP Количество сообщений 64 Зарегистрирован: 11-11-2008, 04:35:57 |
Фича супер! Давно хотел попробовать да руки не доходили. Такой расчет я бы лучше добавил в триггер чтоб не запускать каждый раз. |
23.07.2013 19:27 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Есть масса вариантов для запуска и выполнения такого расчета:
У каждого из этих способов есть свои плюсы и минусы, но зато из интерфейса можно запустить скрипт по выделенным (выбранным) строкам в таблице. |
25.07.2013 12:10 | |
tehnorealПользователь iNETsHOP
Тема начата
Зарегистрирован: 06-12-2012, 18:26:18 |
Обновил версию программы и базу данных, ошибка исчезла. Огромное спасибо за помощь! P.S. Тему можно закрывать. |
25.07.2013 14:25 | |
MaXXПользователь iNETsHOP Количество сообщений 64 Зарегистрирован: 11-11-2008, 04:35:57 |
Пользовательский запрос по выбраным товарам
А если мне не нужно по всем товарам а токо те которые выделил в табличке, как лучше сделать? |
25.07.2013 18:35 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Пример работы пользовательского SQL-запроса по выделенным товарам
Настройка такого запроса выглядит приблизительно так: Т.е. в запрос передается переменная первичного ключа :ID, которая для такблицы товаров справочника товаров соответствует полю TBL_GOODS.G_ID. Вторая числовая переменная - сам курс, который нужно ввести перед запуском. Запрос, который выполняется для каждой выделенной(помеченой) строки должен находиться на закладке "Основной". Так же должен быть указан соответствующий тип самого SQL-запроса, в данном случае "Справочник товаров : Товары". Так же не забываем полномочия пользователей на запуск и выполнение скриптов. Сам SQL-запрос с настройками можно скачать в новом разделе "Пользовательские SQL-запросы": SQL-Запрос по выделенным товарам |
12.11.2013 19:25 | |
prodactПользователь iNETsHOP Количество сообщений 115 Зарегистрирован: 15-06-2010, 14:24:19 |
Помогите разобраться, на некоторых позициях не получается задать цену в гривне ((( Если я выполняю запрос, база показывает значок запроса, но ничего не изменяется и там где не было цен они не появляются, а также не получается обновить цены если курс изменился. Если я наступаю на какую то позицию и ввожу ее код (G_ID) выдает ошибку. См. print screen.
|