А ссылка на сотрудника, которая "будет удалена" хранится в той же таблице и в той же записи? Может, заодно проверять тот факт, что она вообще существует?
X++:
if (this.RecId && this.CardType != this.orig().CardType && "Существует ссылка")
Тогда при первом проходе диалог и очистка, а при втором проходе, поскольку ссылка уже очищена, диалога не возникает.