Вопрос
По какому принципу работают представления в мобильном приложении? При импорте данных в оффлайн-режиме представления сохраняются в базу как обычные таблицы. В рамках задачи необходимо фильтровать поле, у которого справочником является представление. В представлении используются записи из двух разделов (Контрагенты и кастомное Строительные объекты). Выходит, что при добавлении нового контрагента в десктоп-версии он появляется в представлении, и по нему можно фильтровать. При создании нового контрагента в оффлайн-режиме мобильного приложения в представлении он появляется, очевидно, только после синхронизации, что затрудняет работу пользователя. Насколько я понимаю, в SQL-Lite есть возможность работы с представлениями. Есть ли возможность реализовать функционал представлений? Код представления в файле. Версия приложения 7.9.2 2410. Версия мобильного приложения 7.11.7.
Ответ
В SQLite есть возможность создавать представление. Для это нужно выполнить скрипт создания представления в конфигурационном модуле.
Для этого нужно создать сам модуль и добавить его в манифест в блок CustomSchemas
Пример кода:
var sqls = [“CREATE VIEW IF NOT EXISTS AccountView (Id, Name) AS SELECT Id, Name FROM Account”]; Terrasoft.Sql.DBExecutor.executeSql({ isCancelable: false, sqls: sqls, success: function() {}, failure: function() {} });
Реализовать в карточке фильтрацию по вьюхе будет довольно сложно, придется все равно писать кастомное бизнес-правило, которое будет делать запрос к view.
По умолчанию с представлениями на уровне SQLite мы не работаем. В этом нет смысла, т.к. представление в MSSQL или Oracle может вообще не совпадать по реализации с представленим в SQLite. Представление в мобильном приложении – это обычная таблица, следовательно с ним нужно работать соответственно.
Это значит, что если нужно, чтобы значение там появилось, его следует туда добавить. Для этого можно реализовать бизнес-правила на объекты «Контрагент» и «Строительные объекты», в которых при добавлении записи или ее обновлении будет делаться копия этой записи в нужное представление.