Страница для выполнения SQL запросов

Хочу поделиться небольшой страничкой, которая может принести немного пользы :)
Для версии 5.х. Можно при желании переделать на 7.х
Суть - выполнение SQL запросов и просмотр их результата (SELECT).
pic

Будет полезна при отладке на ondemand.
Ничего фантастического - просто выполнение custom query. Собственно, умеет всё то, что умеет CQ.
Для использования - импортировать схему и опубликовать. Если нужно видеть, сколько строк изменено запросами INSERT, UPDATE, DELETE, то можно модифицировать код следующим образом:

var resultQuery = new CustomQuery(UserConnection, sqlText);
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
   var dr = resultQuery.Execute(dbExecutor);
   Page.HtmlOutput.InsertTextAsSource("Rows affected: " + dr + "\n");
}

Получается HTML таблица, которую можно скопировать и вставить в Excel.
Дополнительно, результат выборки пишет в формате csv на дополнительной вкладке.

Нравится

Поделиться

13 комментариев

Вроде полезная вещь... версия я так понимаю 5.х ?

Да, прошу прощения, не указал, что для 5.х. Постараюсь найти время и переделать под 7.х.

Сейчас попробовал импортировать в 7.5 - с первой попытки выдало ошибку, со второй импортировалось без проблем. Вот на всякий случай схема, экспортированная уже из 7.5:

Евгений, не помешала бы кнопка очистить результаты :wink:

Ctl+A, Delete :smile:
На самом деле, не стал сильно мудрить - в конце концов это просто вспомогательный костыль.

Интересная штука. Жаль что при загрузке в 7.3 ругается на несоответствие версии приложения. Как это можно поправить ?

Павел, пробовали ещё раз импортировать схему? У меня тоже при первой попытке ругалось на разные версии, но со второго раза получилось.

Евгений, пробовал несколько раз в разные пакеты импортировать- без результата.

На 7.6 успешно импортировалось с первого раза и заработало.
Спасибо.

У меня также на 7,6 заработало с первого раза. Спасибо:smile:

Евгений, подскажите пожалуйста, как вызвать показ вашей страницы вне раздела "Управление конфигурацией", т.е. например из бизнес-процесса или из кода замещающей страницы по клику кнопки.

Евгений, я не пробовал, но возможно вам поможет этот код (из LookupSection.js)

/**
 * Открывает наполение справочника в старом интерфейсе.
 * @protected
 * @virtual
 * @param {String} sysLookup Уникальный идентификатор справочника в старом интерфейсе.
 */
openOldLookupConfiguration: function(sysLookup) {
	var sysLookupValue = (sysLookup && sysLookup.value) || sysLookup;
	var entitySchemaQuery = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "SysLookup" });
	entitySchemaQuery.addColumn("Id");
	entitySchemaQuery.addColumn("SysEditPageSchemaUId");
	entitySchemaQuery.addColumn("SysEntitySchemaUId");
	entitySchemaQuery.addColumn("SysGridPageSchemaUId");
	entitySchemaQuery.getEntity(sysLookupValue, function(result) {
		if (result.success) {
			var entity = result.entity;
			var sysGridPageSchemaUId = entity.get("SysGridPageSchemaUId");
			var parameters = {
				editMode: "true"
			};
			if (!Ext.isEmpty(sysGridPageSchemaUId)) {
				Ext.apply(parameters, { Id: sysGridPageSchemaUId });
			} else {
				var sysEditPageSchemaUId = entity.get("SysEntitySchemaUId");
				Ext.apply(parameters, {
					Id: "33cc4a3a-babb-464d-82a0-1b904d198d31",
					schemaUId: sysEditPageSchemaUId
				});
			}
			var parameterString = [];
			Terrasoft.each(parameters, function(parameterValue, parameterName) {
				parameterString.push(Ext.String.format("{0}={1}", parameterName, parameterValue));
			}, this);
			var url = this.Terrasoft.workspaceBaseUrl + "/ViewPage.aspx?" + parameterString.join("&");
			var windowParams = "resizable,width=600,width=400";
			window.open(url, "_blank", windowParams);
		}
	}, this);
},

Версия 7.7.
Импортировать схему из файла не получилось - "Невозможно сохранить изменения элемента "Мой_пакет", так как он создан сторонним издателем или установлен из файлового архива".
Переписал ручками, но в процессе есть параметры HtmlRequred и HtmlEnd, которые хранят константу. Попытался провалиться, но увы - ошибка при нажатии на "ПАРАМЕТР". Подскажите как победить?

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