Вопрос

Как добавить возможность выбрать колонку объекта из секции

Добрый день.

Я хочу сделать возможность в объекте возможность выбрать колонку, куда записывать данные.

Я хочу сделать два дропдаун меню, в одном выбрать объект, в другом колонку из этого обьекта.

Я смогу сделать дропдаун для выбора объекта с помощью представления VwEntityObjects.

Но я не могу понять где хранится список колонок для этого объекта, чтоб я мог отфильтровать их в дропдаун менюшке.

Нравится

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

Добрый день,

 

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

 

Для начала этот запрос предоставляет нам все столбцы в БД вместе с именами таблиц, в которых они расположены:

SELECT *

FROM INFORMATION_SCHEMA.COLUMNS;

 

Таким образом, мы можем создать view на основе этого select запроса:

CREATE VIEW column_names_view

AS   

SELECT *

FROM INFORMATION_SCHEMA.COLUMNS; 

GO  

Затем мы можем перейти в раздел конфигурации в Creatio и создать объект, например UsrTableColumns, где мы будем хранить всю эту информацию. Основные поля, которые нам нужно будет создать в этом объекте, это «UsrColumnName» и «UsrTableName». Затем нам нужно сохранить объект и опубликовать его, после чего таблица будет автоматически создана в базе данных.

 

После этого мы можем вставить информацию, предоставленную нашим view, в нашу только что созданную таблицу:

INSERT INTO UsrTableColumns (UsrTableColumn, UsrTableName)

SELECT  "COLUMN_NAME", "TABLE_NAME"

FROM column_names_view;

 

Затем мы можем создать справочник в системе на основе этой таблицы UsrTableColumns и добавить его на страницу, где мы хотим его использовать. Затем, используя бизнес-правило, мы можем отфильтровать результаты этого поля в зависимости от того, что мы выбрали в VwEntityObjects. Нам нужно будет проверить, равно ли имя объекта VwEntityObjects имени UsrTableColumns.UsrTableName.

 

С уважением,

Дарий

this.getEntitySchemaByName("schema_name", function(entitySchema) {
	var columns = entitySchema.columns;
}, this);

 

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