|
![]() |
#1 |
Moderator
|
В завершение темы про ошибки в средней себестоимости:
Вот как работает рассчет средней себестоимость в западном приложении: 1. Для каждого закрываемого периода система создает фиктивный перенос. (Все последующие рассуждения относятся к модели "Средняя за период". В модели "Средняя на дату" система фактически разбивает месяц по датам каждого прихода и периоды между приходами трактует как отдельный период в модели "Средняя за период"). 2. Система суммирует все приходы открытые на начало прихода и все приходы за период и присваивает рассчитанную себестоимость и количество в проводки фиктивного переноса. 3. Все расходы периода сопоставляются с приходной проводкой по фиктивному переносу, все приходы периода (и незакрытые приходы на начало периода) сопоставляются с расходной проводкой по переносу. 4. Система имеет специальный режим восстановления после сбоев. Если при обработке периода был найден уже существующий фиктивный перенос с нужной датой, система просто повторно использует его, не меняя суммы и количества. 5. Если закрытие склада отменяется, система удаляет все фиктивные переносы периода и все связанные с ними складские сопоставления и корректировки стоимости. Если приглядется на код локализованного метода InventCostClosingCancel_WorkInvent.deleteVirtualTransfers() (или InventCostClosingCancel_End.deleteVirtualTransfers() - в зависимости от версии rollup), то можно найти следующий замечательный код: X++: while select forupdate inventTrans order by InventTransId where inventTrans.ValueOpen == InventTransOpen::Yes && inventTrans.ValueOpenSecCur_RU == InventTransOpen::Yes && inventTrans.Voucher == cancelClosing.Voucher && inventTrans.TransType == InventTransType::SummedUp Рекомендую поменять указанный выше код на что-нибудь типа X++: while select forupdate inventTrans order by InventTransId where inventTrans.ValueOpen == InventTransOpen::Yes && (!isconfigurationKeyEnabled( configurationkeynum(InventClosingSecCur_RU)) || inventTrans.ValueOpenSecCur_RU == InventTransOpen::Yes) && inventTrans.Voucher == cancelClosing.Voucher && inventTrans.TransType == InventTransType::SummedUp |
|
Теги |
баг, закрытие склада, ошибка, ошибка при закрытии склада, себестоимость |
|
|