Цитата:
Сообщение от
Aquarius
я нашла,что в updateSumUp таблицы inventtrans перед суммированием стоит проверка if ((! this.isUpdatedFinancial() && ! this.isUpdatedPhysical()) || ! this.hasSettlements())
Если посмотреть на код внимательно, то суммировать можно, если:
- нету сопоставлений (то есть - финансово или физически обновленные проводки не попавшие ни в какие закрытия и пересчеты могут быть просуммированы),
- если проводки вобще не были разнесены
Соответственно - суммировать финансово разнесенные складские проводки можно даже в версии 2009.
Изменение между версиями 3.0 и 2009, по всей видимости, было вызвано исправлением бага. Первоначальная версия кода была написана тогда, когда закрытие и пересчет вообще не трогали физчески разнесенные складские проводки. Соответственно - если код видел что проводка разнесена финансово - он лез проверять сопоставления, а если видел что не разнесена - разрешал суммирование без проверки сопоставлений. Где-то в ранних rollupах к 3ей версии, код пересчета и закрытия изменили таким образом, что он начал сопоставлять физически обновленные проводки (если в складской модели стоит галочка "Включать физические операции в себестоимость"). В результате этого могла возникнуть ситуация, когда физически обновленная складская проводка имела сопоставления в inventSettlement (с ссылкой по recId), а потом эту складскую проводку суммировали и удаляли. В результате в inventSettlement оставалась запись с висящей ссылкой на удаленный recId.