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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2007, 09:58   #1  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
корректность написанного кода
Подскажите , как правильней оформить следующий validateWrite на ДС SalesLine на SalesTable? Как лучше сделать salesLine.doUpdate(), что-то ума не приложу....?
case 1:
{
salesLine.SalesPrice = Currency::curAmount2CurAmount(checkSalesLinePrice.price(),
CompanyInfo::standardCurrency(),
salesLine.CurrencyCode,
salesTable.createdDate);
salesLine.LineAmount = salesLine.calcLineAmountForced(salesLine.SalesQty) ;
if (salesLine.RecId)
salesLine.doUpdate();
break;
}
Вложения
Тип файла: txt пример.txt (784 байт, 435 просмотров)

Последний раз редактировалось fialka; 14.03.2007 в 10:02. Причина: ошибка
Старый 14.03.2007, 10:05   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Я вопроса не понял.... Вас интересует оформление кода или что?
Старый 14.03.2007, 10:10   #3  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Sada Посмотреть сообщение
Я вопроса не понял.... Вас интересует оформление кода или что?
меня очень сильно волнует быстродействие и update. Вот и думаю ,что лучше...salesLine.doupdate или salesLine_ds.refresh() для данного метода...
Старый 14.03.2007, 10:14   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
X++:
case 1:  // а что это за литерал? почему не 3.145928?
{ // а фигурные скобки зачем?
    salesLine.SalesPrice = Currency::curAmount2CurAmount(checkSalesLinePrice.price(),
                  CompanyInfo::standardCurrency(),
                  salesLine.CurrencyCode,    salesTable.createdDate);
    // Есть \Data Dictionary\Tables\Currency\Methods\curAmount
            // и \Data Dictionary\Tables\Currency\Methods\curPrice 
           // вероятно в вашем случае уместен последний или надо переводить Amount а не price
     salesLine.LineAmount = salesLine.calcLineAmountForced(salesLine.SalesQty) ;
    if (salesLine.RecId)
         salesLine.doUpdate();
break;
}
Старый 14.03.2007, 10:18   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
salesLine.doupdate или salesLine_ds.refresh
ds.refreh - это обновление данных источника по данным из таблицы
doUpdate это наоборот

а еще есть UPDATE_RECORDSET но в вашем случае он приведет к update. Так что с этой точки зрения doUpdate наиболее быстрое решение (если вы хотите именно его)
За это сообщение автора поблагодарили: fialka (1).
Старый 14.03.2007, 10:19   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А почему этот код у Вас на методе validateWrite?
Как-то не совсем верно в плане подхода. В этом методе должны быть проверки введенных значений, а не обновление полей и записи.

А сравнивать doUpdate и refresh - не совсем корректно. Возможно именно в этом случае визуально вы получается один и тот же результат. Но методы выполняют совершенно разные действия.

Что я считаю следует сделать:
1. Перенести этот код на метод Update (или, если нужно, на modifiedField).
2. doUpdate вызывать соответственно не придется, потому что в этом методе он и так вызывается.
3. Производительность в этом случае, ИМХО, будет лучше, чем в Вашем варианте.
За это сообщение автора поблагодарили: fialka (1).
Старый 14.03.2007, 10:30   #7  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
kashperuk и belugin спасибо... привели к пути истинному
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
эффективное отображение исполнения кода Evgeniy2020 DAX: Программирование 8 31.07.2008 11:11
как сообщить об ошибках, не прерывая исполнения кода chanchala DAX: Программирование 11 16.07.2008 12:28
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Отображение названия вместо кода! demID DAX: Программирование 31 05.10.2004 00:03
Использование штрихового кода (barcode) в Аксапта Pavlo AKA Panok DAX: Функционал 9 17.10.2003 15:13
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:43.