ruin,
Для расчета себестоимости весь объект документа не обязателен, достаточно ссылки. По этому, я думаю лучше процедуру расчета в модуль менеджера вынести.
Также при расчете транзакцию не используешь, в твоей процедуре «РассчитатьСебестоимость()», нет неявных транзакций как в обработке проведения, по этому надо ставить иначе блокировки не отработают.
При контроле остатков, задаешь параметр "Дата", но документ оперативно проводится, так пусть берет на последнюю дату итогов, а при не оперативном проведении нет смысла остатки контролировать. По-хорошему, вообще надо проверку поставить на оперативное проведение и если оно не оперативное, то контроль просто не выполнять.
Еще в пакете запроса на закладке индекс, желательно указывать те поля по которым с последующих запросах из этой таблицы отбор делаешь.
В расчете себестоимости Движение.Сумма = ?(ВыборкаПартия.КоличествоОстаток = 0,0, Наверное логично при таком остатке количества списать все-таки сумму остатка себестоимости а не 0.
С последовательностью думаю ты прав.