Показать сообщение отдельно
Старый 29.03.2007, 10:50   #1  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Свёртывание складских проводок
В целях снижения размера БД была произведена чистка одной из аналитик (не стандартных – добавленных нами). После чего, для уменьшения размеров таблицы складских проводок была поставлена задача свертки проводок в разрезе лота. Для этой цели используется метод 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();
    }
Спасибо.