AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.03.2011, 18:54   #1  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Здравствуйте! Сегодня сделал импорт данных в базу и полезли баги.
Я сделал форму (на основе Items By Location). У меня стояла задача
при выборе клиента отображать его цены и наличие на складах.
Сразу оговорюсь: работает это все отвратительно и с ошибками (когда много записей),
а когда их мало то все нормально. Кто нибудь пожалуйста подскажите более рациональное решение
этой проблемы.
Добавил в таблицу поле ClientPrice и написал такой код:

Cust.GET(ClientNo); //Берем клиента

//Смотрим его валюту и вытаскиваем курс
IF Cust."Currency Code"<>'' THEN
Currency.SETFILTER("Currency Code",'%1',Cust."Currency Code")
ELSE
Currency.SETFILTER("Currency Code",'%1','EUR');
Currency.FIND('+');
CurrencyRate:=Currency."Exchange Rate Amount";

SalesPrice.SETFILTER("Sales Code",Cust."Customer Price Group"); //Делаем фильтр по группе продажи
Rec.FIND('-');
REPEAT
BEGIN
SalesPrice.SETFILTER("Item No.",'%1',Rec."No."); //Выбираем товар и добавляем его цену (если нет то обнуляем)
IF SalesPrice.FIND('-') THEN
Rec.ClientPrice:=SalesPrice."Unit Price"*CurrencyRate
ELSE
Rec.ClientPrice:=0
END
UNTIL Rec.NEXT=0;

CurrForm.UPDATE(TRUE); <----Вот тут выскакивает запрос на переименование записи и ошибка
Старый 22.03.2011, 22:05   #2  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
функция, например, GetCustomerPrice(Cust): Decimal
вызываем откуда угодно, никакого поля вводить не надо.
SalesPrice.SETRANGE("Sales Type", SalesPrice."Sales Type"::"Customer Gr"); // или типа того, пишу по памяти
SalesPrice.SETRANGE("Sales Code",Cust."Customer Price Group"); //Делаем фильтр по группе продажи
SalesPrice.SETRANGE("Item No.", "No.");
IF SalesPrice.FIND('+') THEN // ищем ПОСЛЕДНЮЮ запись, вдруг там разные даты, а нам неохота замарачиваться?
EXIT(SalesPrice."Unit Price");

с курсом вообще кошмар.
я не понимаю, почему в кустомере пусто, а в сейлз прайсе это типа Евро?
в упор не понимаю.
Старый 23.03.2011, 10:07   #3  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Спасибо за ответ!
Насчет курса могу сказать только одно в свое оправдание.
Валюта баланса EUR. То есть оно может быть не заполнено
вот и вставил я туда проверку.
Но вопрос у меня в следующем: Если форма основана на
таблице Item то мне просто надо создать текстовое поле и в тригере
допустим AfterGetRecord (по моему) его заполнять? У меня основная проблема
я не могу понять как подвязать данные одной таблицы (Item) с данными другой (Sales Price)
и как их правильно отобразить. Так чтоб каждому ItemNo соответствует SalesPrice."UnitPrice"
отфильтрованные по группе продажи.
Старый 23.03.2011, 11:46   #4  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
Сообщение от nikshev Посмотреть сообщение
Но вопрос у меня в следующем: Если форма основана на
таблице Item то мне просто надо создать текстовое поле и в тригере
допустим AfterGetRecord (по моему) его заполнять? У меня основная проблема
я не могу понять как подвязать данные одной таблицы (Item) с данными другой (Sales Price)
и как их правильно отобразить. Так чтоб каждому ItemNo соответствует SalesPrice."UnitPrice"
отфильтрованные по группе продажи.
Не надо ни каких полей новых в таблицы добавлять и циклы крутить по таблице на которой форма сделана. Вам достаточно на форму добавить текстбокс в нем SourceExpression переменную, например SalesPrice (Decimal) и в триггере OnAfterGetRecord вычислять этот самый SalesPrice. Все.
P.S Как пример посмотрите список товаров там есть такой текстбокс AverageCost(LCY), значение которого вычисляется.
Старый 23.03.2011, 12:02   #5  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Да! Да! Да!
Уже так и сделал! Все заработало! И так как надо! Спасибо за ответы!
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:37.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.