В целях снижения размера БД была произведена чистка одной из аналитик (не стандартных – добавленных нами). После чего, для уменьшения размеров таблицы складских проводок была поставлена задача свертки проводок в разрезе лота. Для этой цели используется метод updateSumUp(…) таблицы InventTrans. В этом методе свертка производится только в том случае, если проводки не в статусе Закуплено\Продано или не имеют сопоставлений:
X++:
if (! this.isUpdatedFinancial() || ! this.hasSettlements()) {}.
В связи с эти возникает ряд вопросов.
1. Для чего проводится анализ статусов прихода/расхода в методе isUpdatedFinancial()? К каким последствиям в дальнейшем может привести, если эту проверку пропустить?
X++:
boolean isUpdatedFinancial()
{
return (this.statusReceipt <= StatusReceipt::Purchased &&
this.statusIssue <= StatusIssue::Sold);
}
2. Правильно ли будет сделано, если в процессе свертки, для удаляемых строк проводок, имеющих сопоставление, заменять значение поля TransRecId таблицы InventSettlement на значение RecId итоговой строки проводки? Пример:
X++:
InventSettlement inventSettlement;
;
while select forupdate inventSettlement
index hint RecIdTypeIdx
where inventSettlement.transRecId = = _fromRecId
{
inventSettlement.TransRecId = _toRecId;
inventSettlement.update();
}
Спасибо.