Уважаемый ZVV, Вы правы лишь отчасти, и то - с точностью до наоборот.

Попробуйте в методе PurchLine.delete() заменить
X++:
TaxWorkRegulation::deleteRegulation_W(this);
на что-нибудь вроде:
X++:
ttsbegin;
throw error('');
ttscommit;
Уверяю Вас, удалить строку закупки Вам после этого не удастся, т.к. при удалении строки из формы неявно (implicit) инициируется транзакция, и возникновение исключения внутри неё или в любой из вложенных транзакций откатывает её (и все вложенные транзакции) полностью.
Отсюда Ваш вывод относительно кода в SalesLine.delete(); также неверен, - здесь как раз транзакционные скобки являются лишними, но их присутствие не так уж критично.