Цитата:
Сообщение от
ppson
в поддержку им напиши
В связи с тем, что у меня процесс обращения в поддержку не очень прямой, а исправление до PU40 так и не доехало - решил просто дописать код самостоятельно. Фактически, критически не хватает только одной строчки кода в начале метода validateWrite() датасорса RAssetInventIssueTrans, который был в 2012 - это строчка по вычислению InventDimId с сохранением вычисленного значения в таблицу RAssetInventIssueTrans.
Но я решил пройти немного подальше и попытаться заполнить некоторые аналитики по умолчанию, дополнительно проверив, что они активные.
X++:
/// <summary>
/// Перенос кода из AX 2012 по сохранению InventDimId
/// </summary>
// VSUH, RAssesFixes, 01.02.2021
[ExtensionOf(formDataSourceStr(RAssetInventIssueTrans,RAssetInventIssueTrans))]
final class RAssetInventIssueTransForm_RAssetInventIssueTransDS_VS_Extension
{
public boolean validateWrite()
{
FormRun fr = element;
InventDim inventDim = fr.dataHelper().FindDataSource(formDataSourceStr(RAssetInventIssueTrans, InventDim)).cursor();
RAssetInventIssueTrans rAssetInventIssueTrans = fr.dataHelper().FindDataSource(this.name()).cursor();
RAssetInventIssueTable assetInventIssueTable = fr.assetInventIssueTable();
InventTable inventTable = InventTable::find(rAssetInventIssueTrans.ItemId);
if (!rAssetInventIssueTrans.RecId)
{
if (!inventDim.InventLocationId && InventDimGroupSetup::newInventTable(inventTable).isDimensionActive(fieldNum(inventDim, InventLocationId)))
{
inventDim.InventLocationId = assetInventIssueTable.InventLocationId;
inventDim.InventSiteId = InventLocation::find(assetInventIssueTable.InventLocationId).InventSiteId;
}
if (!inventDim.InventProfileId_RU && InventDimGroupSetup::newInventTable(inventTable).isDimensionActive(fieldNum(inventDim, InventProfileId_RU)))
{
if (inventTable.AssetGroupId_RU)
{
inventDim.InventProfileId_RU = RAssetParameters::find().LowCostAssetInventProfileId;
}
else
{
inventDim.InventProfileId_RU = inventDim.inventLocation().InventProfileId_RU;
}
}
}
rAssetInventIssueTrans.InventDimId = InventDim::findOrCreate(inventDim).InventDimId;
return next validateWrite();
}
}
На всякий случай (для тех, кто захочет себе быстро поставить фикс) - прикреплю .axmodel и .axpp-файлы