Всем доброго времени суток. Версия 7.12.
Можно ли как-нибудь по id раздела (записи SysModule) получить список всех входящих в него колонок с типами и названиями? Возможно, есть какой-то объект, где они хранятся?
Нашёл что-то такое: SysPackageSchemaDataColumn но не похоже, что это оно.
Нравится
я так понимаю хранятся в SysSchema, колонка MetaData.
скрипт глянуть из базы:
select cast(MetaData as varchar(max)) from SysSchema where caption='Account'
order by createdOn descНа JS колонки вытягиваюся через this.entitySchema.columns (ну или require объекта).
На С# можно перебрать колонки
var manager = UserConnection.EntitySchemaManager.GetInstanceByName("Account");
foreach (var column in manager.Columns) {
if (column.IsValueCloneable) {
}
var fixedColumnName = column.IsLookupType ? column.Name+"Id" : column.Name;
var uid = column.UId;
var columnName = column.Name;
var columnCaption = column.Caption;
}Ну и как всегда, без сюрпризов не обошлось. Лукап колонки идут без Id-окончания.
Не факт, что так подтянутся унаследованные из родительских объектов колонки. Можно вытянуть из системных таблиц базы, как тут:
SELECT t.name AS [Table Name], c.name AS [Column Name], value AS [Extended Property]
FROM sys.extended_properties AS ep
INNER JOIN sys.tables AS t ON ep.major_id = t.object_id
INNER JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
WHERE class = 1 and t.name = 'ContactAddress'
AND CAST(value AS VARCHAR) LIKE 'ru-RU|%'
addAllColumns: function(esq) {
Terrasoft.each(this.columns, function(column, columnName) {
if (column.type === Terrasoft.ViewModelColumnType.ENTITY_COLUMN) {
if (!esq.columns.contains(columnName)) {
esq.addColumn(columnName);
}
}
}, esq);
},
Нет, через JS такое невозможно. Это даже не таблицы базы bpm'online, а служебные таблицы на том же сервере БД.