Короче: задрали меня эти сообщения... Оперативно полечил это так:
Вместо исходного кода типа
СводныйРезерв = ВремРезервы.СводныйОстаток(Фирма,Номенклатура,Склад,Договор,,"Количество"); Если СводныйРезерв < КоличествоБазовое Тогда глНеПроводить(Контекст,"Количество снимаемого товара (" + Строка(Номенклатура) + ") превышает резерв по данному договору (" + Строка(Договор.Владелец) + "; " + Строка(Договор) + ")."); СтатусВозврата(0); ВОЗВРАТ; КонецЕсли;
ставим такую конструкцию:
СводныйРезерв = ВремРезервы.СводныйОстаток(Фирма,Номенклатура,Склад,Договор,,"Количество"); Если СводныйРезерв < КоличествоБазовое Тогда глСообщениеПроведения("Количество снимаемого товара (" + Строка(Номенклатура) + ") превышает резерв по данному договору (" + Строка(Договор.Владелец) + "; " + Строка(Договор) + ").",ТекущийДокумент(),,,1); КоличествоБазовое = СводныйРезерв; КонецЕсли;
И все! Золотой ключик у нас в кармане! Теперь, при массовом перепроведении документов (восстановлении ГП и пр.) система не будет спотыкаться на каждом "лишнем" снятии резерва.
В развитие приведенной выше схемы возможно имеет смысл предусмотреть две ветки поведения алгоритма: штатный алгоритм отрабатывает при ТЕКУЩЕМ ПРОВЕДЕНИИ документа, а наш вариант - при неоперативных перепроведениях. Для чего? Чтобы манагеры не расслаблялись, а снимали документом "снятие резерва" при оперативной работе именно необходимое им количестов, а то манагеры есть зверьки хитрые и ленивые - считать не будут - в любом случае будут писать 10000 шт. на снятие резерва...