Как вариант:
- Все таблицы в списке - журналируемые
- В Application при старте считываем и храним в Set'е список таблиц
- При выполнении логгирования в журнал БД (Application.log<всякое>) и нахождения логгируемой таблы в списке из п.2 - запускаем определенный обработчик
Всякие validate'ы не перехватишь, но тем не менее проверить и прервать по необходимости выполняемую операцию над записью получится.
Я тут уже пару раз упоминал про нашу модификацию финансовой аналитики, построенной на прямых ссылках по RecId на аналитические справочники - описывать подобное рамках AOT было катастрофой (сейчас около 50 справочников используется, и для каждого из 8 уровней используемой аналитики описывать 50 релейшенов - не есть гуд). Для сохранения ссылочной целосности в такой архитектуре используем вышеприведенный способ - 4-й год уже, полет нормальный.
Главное не слишком долгие обработчики делать