Вопрос

Ручное добавление строки

Нужно сделать сложную выборку из БД и загрузить ее в gridData.

Столбцы gridData создал все подготовил. Теперь нужно загрузить данные.

gridData.loadAll - загружает данные из выборки EntitySchemaQuery.

Я планирую данные получать из исходного кода, там будет обычный SQLText который вернет мне таблицу с результатом. теперь эту таблицу нужно загрузить в gridData. Кто сталкивался или знает как в gridData загрузить строку?

Нравится

9 комментариев
Лучший ответ

Добрый день!

1) Если возможно, сделайте представление для вашей сложной выборки: в системе и в базе данных. И уже работайте с представлением, как с обычным EntitySchemaQuery.

2) Если выборку сложно оформить в представление, то с сервера вам нужно воссоздать объект, который возвращает esq (создать свои классы), что то типа

{
	nextPrcElReady: false,
	notFoundColumns: [],
	rowsAffected: 0,
	success: true,
	rows: [],
	rowConfig: []
}

а на клиенте загружать этот объект:

var r = query._getResponseEntityCollection(result);
grid.loadAll(r.collection);

 

Добрый день!

1) Если возможно, сделайте представление для вашей сложной выборки: в системе и в базе данных. И уже работайте с представлением, как с обычным EntitySchemaQuery.

2) Если выборку сложно оформить в представление, то с сервера вам нужно воссоздать объект, который возвращает esq (создать свои классы), что то типа

{
	nextPrcElReady: false,
	notFoundColumns: [],
	rowsAffected: 0,
	success: true,
	rows: [],
	rowConfig: []
}

а на клиенте загружать этот объект:

var r = query._getResponseEntityCollection(result);
grid.loadAll(r.collection);

 

Сидоров Александр В.,

После того, как выборка отработает нужно будет эти данные подредактировать, делать вычисление между разными колонками и строками. Это будет отчет. 

Воссоздать объект... Там множество свойств и методов, как это все воссоздать? В СДК 

https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.data.model.BaseViewModelCollection

пишет следующее:

items : Object/Terrasoft.Collection/Array

Следовательно можно передать Array, только я нигде не смог найти пример как это сделать.

Радчук Виталий Владимирович,

Посмотрите в Network на результат любого запрос SelectQuery. Там будет json, который я приложил выше.

Пример:

Сидоров Александр В.,

Если у вас есть код, который преобразует эту строку объект который можно загрузить в грид - тогда это решит проблему

После того, как выборка отработает нужно будет эти данные подредактировать, делать вычисление между разными колонками и строками. Это будет отчет. 

В принципе, вычисления можно произвести и на уровне view, вынеся часть логики в отдельные серверные функции. Среди стандартных view есть такие примеры, хотя особо сложные вычисления подобным образом встречаются в проектных решениях. 

Зверев Александр, Можно пример где это реализовано?

Из самых сложных view, вызывающих функцию — например, VwRecentCall. Но примерно такое построение на стороне базы, как Вы ищете видел в одном из проектов на Terrasoft 3.Х, где формировался отчёт в виде таблицы и графиков на HTML и отправлялся по почте, или там же в «шахматке» (схеме этажа с квартирами).

Зверев Александр,

Я думал просто вызвать серверный код который вернет таблицу с данными и их уже выводить в реестр

Ещё обходной вариант, наполнять данными записи в специальной таблице в базе и строить по ней. Чтобы пользователи не мешали друг другу, добавить поле с Id сессии и фильтровать по нему. После завершения — чистить.

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