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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2008, 14:43   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А попробуйте со след. содержанием метода update()

X++:
void update(boolean _updatePriceDate = true)
{
    boolean         updPrice;
    FormRun         formRun;
    FormObjectSet   formObjSet;
    int             i;
    InventTable     inventTable;

    if (this.orig().Price     != this.Price     ||
        this.orig().Markup    != this.Markup    ||
        this.orig().PriceUnit != this.PriceUnit)
    {
        updPrice        = true;

        if (_updatePriceDate)
            this.PriceDate  = systemdateget();
    }

    ttsbegin;

    super();

    if (updPrice)
    {
        if (this.ModuleType != ModuleInventPurchSales::Sales)
            InventTable::updateAutoSalesPrice(this.ItemId, this.PriceDate);
        else
        {
            if (this.isFormDataSource())
            {
                // refresh and reread inventTable datasource if exists in form
                formRun = this.dataSource().formRun();
                for (i=1; i<= formRun.dataSourceCount(); i++)
                {
                    if (formRun.dataSource(i).cursor().TableId == tablenum(InventTable))
                    {
                        formObjSet = formRun.dataSource(i);
                        inventTable = formObjSet.cursor();
                        break;
                    }
                }
                if (!inventTable)
                {
                    inventTable = InventTable::find(this.ItemId, true);
                }
                if (inventTable)
                {
                    if (inventTable.updateAutoSalesPercent() && formObjSet)
                    {
                        formObjSet.refresh();
                        formObjSet.reread();
                    }
                }
            }
        }
    }

    ttscommit;
}
метод updateAutoSalesPercent видимо сделали не статическим. Вот его код, на всякий случай:
X++:
server boolean updateAutoSalesPercent()
{
    InventTableModule   inventTableSales;
    InventTableModule   inventTableBasic;
    ;
    if (this.SalesModel == SalesPriceModel::None)
        return false;

    inventTableSales = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Sales,true);

    if (this.SalesPriceModelBasic == SalesPriceModelBasic::PurchPrice)
        inventTableBasic = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Purch);
    else
        inventTableBasic = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent);

    if (! inventTableSales || ! inventTableBasic)
        return false;

    switch(this.SalesModel)
    {
        case SalesPriceModel::Contributionratio:

            if (inventTableSales.pcsPrice())
            {
                this.SalesContributionRatio = (inventTableSales.pcsPrice() - inventTableBasic.pcsPrice()) * 100 / inventTableSales.pcsPrice();
            }

            break;

        case SalesPriceModel::PercentMarkup:

            if (inventTableBasic.pcsPrice())
            {
                this.SalesPercentMarkup = (inventTableSales.pcsPrice() - inventTableBasic.pcsPrice()) * 100 / inventTableBasic.pcsPrice();
            }

            break;

        default:
    }

    this.update();
    return true;

}
За это сообщение автора поблагодарили: Starling (1).
Теги
ax2009, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Баг inventTable Eldar9x DAX: Программирование 23 20.01.2010 11:29
Спозиционироваться на запись Eldar9x DAX: Программирование 11 02.07.2007 18:03
Ошибка при импорте демоданных (Axapta 3.0 CIS SP1) KocDm DAX: Администрирование 2 11.08.2005 12:04
Программно записи в InventTable djoker DAX: Программирование 8 02.12.2004 16:59
Как Узнать из класса - Текущую выбранную запись в таблице djoker DAX: Программирование 1 01.12.2004 07:36

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

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

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