Отправил вопрос в службу поддержки. Дублирую вопрос здесь.
-----------------------------------------------------------------------------------------------
Речь пойдет о разделе Склад (накладные).
В скрипте 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.
Проясните, пожалуйста, логику работы механизма резервирования и
ответьте на вопрос, для чего нужно дублировать один и тот же
функционал в системе.
-----------------------------------------------------------------------
Буду благодарен за любую помощь, ибо логика работы с резервами и накладными пока не укладывается в моей голове.