Пока не забыл и не вылетело из головы @EvilBeaver
у меня есть мысли на этот счет, но они скажем так “визионерские”. Суть в том что у сущности есть несколько поведенческих моделей
- CRUD
- upgrade/downgrade
- setStorage
если с первыми все понятно - создание,чтение, обновление и удаление
то со вторыми чуть сложней
- сущность в зависимости от версии её схемы может улучшаться (появлятся новые реквизиты), ухудшатся (откатываться к обратному состоянию)
а с третьим вообще очень сложно, потому как инновационно.
-
сущность не обязательно должна хранится в sql базе - размышления привели к тому что хранилище сущности может быть
-
sql, nosql, fts (full text search), agregate
то есть что я имею ввиду
МодельРасходнойНакладной = Новый Модель("РасходнаяНакладаная);
МодельРасходнойНакладной.Версия(1);
МодельРасходнойНакладной.ИспользоватьХранилищеSQL(
ТипыSQL.Postgres, ПодключенныеХранилища.ПолучитьПодключение("pg-prod-master")
);
МодельРасходнойНакладной.ИспользоватьХранилищеNOSQL(
ТипыNOSQL.MongoDB, ПодключенныеХранилища.ПолучитьПодключение("mongo-master")
);
МодельРасходнойНакладной.ИспользоватьХранилищеFTS(
ТипыFTS.Elastic, ПодключенныеХранилища.ПолучитьПодключение("elastic-master")
);
МодельРасходнойНакладной.ИспользоватьХранилищеАгрегатов(
ТипыHOLAP.ClickHouse, ПодключенныеХранилища.ПолучитьПодключение("clickhouse-master")
);
Попытка
МодельРасходнойНакладной.ИспользоватьКласс("src/model/РасходнаяНакладная.os")
Исключение
ВызватьИсключение("Класс не соответствует определению модели: Подробно
|" + ОписаниеОшибки())
КонецПопытки;
Фактически каждое хранилище для своего, что позволит очень долго не проваливатся в физику СУБД - оставаясь долго на уровне логики поведения модели