Сама тема раскрыта хорошо, однако к коду примера можно попридираться,
-во первых вы миксуете данные и интерфейс - т.е. наверняка если кому-нибудь понадобится выполнить создание строк из файла(с вашей логикой) он не сможет использовать ваши методы.
-далее - если modified выполнился(записи создались), а строчку закупки пользователь решил финально не сохранять, получаются они будут висеть
-проверку на существование записи надо делать и после Box, за то время пока пользователь размышлял, запись могла уже и создаться
-это тоже странная конструкция - если validateWrite() прошел, то создаем строчку, если нет, то и фиг бы с ним? может стоит сюда генерацию ошибки добавить
X++:
if(avrEcoResManufacturer.validateWrite())
{
avrEcoResManufacturer.insert();
}