Реальный кейс - клиент захотел возможность дублирования фактического адреса в юридичнский и почтовый адреса. Как известно у битрикса сущность адреса (\Bitrix\Crm\AddressTable). Предвкушая радость работы с ORM мы выкатили заказчику 0.5 часа.
А дальше нас ждал бооольшой облом - Вы используете \Bitrix\Crm\AddressTable (по факту как вы называете ORM) и не используете ее методов!! Точнее - вы написали функцию upsert, которая напрямую сохраняет адрес в базе данных. Коллеги, если вы сами нарушаете свои же принципы, то как вы можете принимать экзамены, если у самих все "хорошо" ???
Уберите этот upsert или хотя бы дайте на него события!