Отправил вопрос в службу поддержки. Дублирую вопрос здесь.
-----------------------------------------------------------------------------------------------
Речь пойдет о разделе Склад (накладные).
В скрипте ds_OfferingMovementScript
в обработчке
 ds_OfferingMovementOnDatasetBeforePost(Dataset, DoPost)
есть строки
if (!ConductOfferingMovements(Dataset)) {
                DoPost.Value = false;
}
Приведенный выше код вызывает проведение накладной - выполнение
cq_ConductOfferingMovements, в котором есть вызов хранимой процедуры
tsp_RemoveOfferingReserve
При чем данный код, срабатывает при любом изменении карточки
Складского документа. Вопрос: для чего?
С другой стороны, в этом же скрипте есть обработчик
function ds_OfferingMovementOnDatasetAfterPost(Dataset) {
        GiveRightsToRecordOwner(Dataset);
        var StatusID = Dataset('StatusID');
        SaveMovements(Dataset, StatusID);
        if (OfferingMovementScript.DoRecalc) {
                RecalcOfferingInMovementPrices(OfferingMovementScript.ID,
OfferingMovementScript.Rate);
        }
}
Функция SaveMovements(Dataset, StatusID) в свою очередь вызывает
RemoveOfferingReserve(OfferingMovementDataset, true), которая делает
точно то же, что и хранимая процедура  tsp_RemoveOfferingReserve.
Проясните, пожалуйста, логику работы механизма резервирования и
ответьте на вопрос, для чего нужно дублировать один и тот же
функционал в системе.
-----------------------------------------------------------------------
Буду благодарен за любую помощь, ибо логика работы с резервами и накладными пока не укладывается в моей голове.