А попробуйте со след. содержанием метода 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;
}