Во-первых, в 2012-й для PurchLine по умолчанию включена OCC, так что forupdate и так не накладывает по умолчанию никаких блокировок в БД, во-вторых, с точки зрения СУБД это не другая транзакция, а ваша же собственная, в которой вы лопатите строки закупки. Просто в данной ситуации, образно говоря, правая рука не знает, что делает левая, но зато есть очень простое решение - перечитать запись перед обработкой, так почему бы этим решением не воспользоваться?