Описанная в заглавии проблема появляется если накладные расходы (записи таблицы MarkupTrans) привязаны к шапке заказа на покупку (записи таблицы PurchTable) и пользователь изменяет в шапке закупки финансовые аналитики (поле PurchTable.DefaultDimension). При этом в появляющемся диалоге пользователь подтверждает копирование новой финансовой аналитики на строки заказа на покупку. Новая финансовая аналитика успешно копируется на строки закупки, но, к сожалению, при просмотре "распределений" в диалоге разноски инвойса можно увидеть, что для накладных расходов будет использована "старая" финансовая аналитика.
Проблему решил следующей модификацией метода PurchTableType.updateDistribution()
X++:
public void updateDistribution()
{
// Моя модификация -->
MarkupTrans markupTrans;
// Моя модификация <--
if (purchTable.DiscPercent != 0 || purchTable.SourceDocumentLine != 0)
{
if (SourceDocumentLine::find(purchTable.SourceDocumentLine).AccountingStatus == SourceDocumentLineAccountingStatus::Completed)
{
SourceDocumentProcessorFacade::submitSourceDocumentLineImplementation(purchTable, false, SourceDocumentLineAccountingStatus::FullyDistributed);
}
else
{
SourceDocumentProcessorFacade::submitSourceDocumentLineImplementation(purchTable, purchTable.SourceDocumentLine ? false : true);
}
}
// Моя модификация -->
while select SourceDocumentLine
from markupTrans
where markupTrans.TransRecId == purchTable.RecId
&& markupTrans.TransTableId == purchTable.TableId
{
if (markupTrans.SourceDocumentLine)
{
if (SourceDocumentLine::find(markupTrans.SourceDocumentLine).AccountingStatus == SourceDocumentLineAccountingStatus::Completed)
{
SourceDocumentProcessorFacade::submitSourceDocumentLineImplementation(markupTrans, false, SourceDocumentLineAccountingStatus::FullyDistributed);
}
else
{
SourceDocumentProcessorFacade::submitSourceDocumentLineImplementation(markupTrans, true);
}
}
}
// Моя модификация <--
}