Работа с представлениями

Коллеги, добрый день!

Появилась задача, которая потребовала обращения методом из схемы страницы редактирования к кастомной view, созданной в базе. Для начала решение было отработано на демо-стенде по следующему алгоритму:

1. Создается объект UsrVwTest , который наследуется от базового, в нем не добавляется ни одного поля (в view будет 1 колонка с идентификаторами контакта), у него устанавливается признак, что это представление в базе, он сохраняется и публикуется.

2. После этого, через расширение SqlExecutor выполняется что-то в духе

create view UsrVwTest as select top 1 Id as 'Id' from Contact

3. После это прямо из консоли пробую посчитать записи, которые там есть, выполняя следующее:

var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "UsrVwTest" });
esq.addColumn("Id");
esq.getEntityCollection(function (result) {
	if (!result.success) {
		// обработка/логирование ошибки, например
		this.showInformationDialog("Ошибка запроса данных");
		return;
	}
	console.info(result.collection.getCount());
}, this);

Консоль выдает мне 1, то есть проблем с доступом к view нет, там одна строка, как и должно быть.

После этого я повторяю тот же алгоритм на on-site проекте 7.11, в том же порядке. После этого я на аналогичное обращение к view из консоли получаю 500 (InvalidObjectStateException). Запрос в Network падает также с кодом "ErrorCode":"InvalidObjectStateException". Обработка результата падает в ветку с !result.success. Пробовал дополнительно компилировать конфигурацию на разных этапах алгоритма, создавать view различными способами (напрямую в базе, через установку скрипта в конфигурации и т.д.), получаю тот же ответ. Названия view в базе и в конфигурации совпадают, название и количество колонок тоже.  Кроме того, на проекте уже есть view, реализованные ранее, с которыми ведется работа, они реагируют по-разному. Некоторые так же выдают 500, некоторые послушно пишут количество записей внутри себя. 

Резюмируя, мог бы кто-то подсказать, в чем может быть проблема или какой единственно верный алгоритм реализации такой связки? Поиск по статьям привел меня именно к тому алгоритму, который заработал на демо-стенде, но упорно не хочет работать на on-site площадке. 

Нравится

2 комментария

Поправка:

По всей видимости, все уже существующие представления ошибок не вызывают. Случаи, когда запрос к ним из консоли выдает 500 - превышение 20 000 записей на выгрузку. 

 

Все получилось. Оказалось, что view нужно создавать именно как dbo.ViewName, а не просто ViewName, иначе InvalidObjectName

 

Показать все комментарии