Ошибка: не отображается новая колонка в фильтре на списке объектов
Добрый день.
Ситуация следующая:
1. был переопределен существующий объект на Сервер1, и добавлена колонка Колонка1
2. в фильтре и в настройках колонок на конфигурации, где это сделали колонка отображается
3. выгрузили пакет, установили на другом сервере Сервер2 (база другая), колонка отображалась как в п.2
4. внесли иные правки, вновь выгрузили пакет и установили на Сервер2, но Колонка1 пропала! Она заполняется, в базе она есть, но в фильтрах и в настройках её нет.
В результате сравнения js, который приходит клиенту, удалось выяснить, что есть разница между описанием колонки, на Сервер2 это выглядит так:
{
uId:'d1f7db3b-29c5-429a-a842-ab3979955ff2',
name:'Column1',
caption:'',
dataValueType:Terrasoft.DataValueType.TEXT,
usageType:0,
isValueCloneable:true,
size:250
}
А на Сервер1, поле caption не пустое и заполнено текстом. При этом больше никаких изменений нет, Заголовок в конфигурации заполнен на обоих серверах.
Версия bpmonline - 7.2, iis перезапускали, redis чистили, браузер чистили.
Просьба подсказать, в чем может быть дело? Может быть где-то нужно какую-то галочку указать?
И где хранится описание колок у схемы описывающей объект? Где-то в базе, или в исходном коде только?
Нравится
Здравствуйте!
Поле Caption отвечает за подпись колонки на странице редактирования (а также в реестрах и фильтрах). Если данное свойство не указано, то поле будет без названия. Caption колонки по умолчанию подтягивается из объекта, но может быть переопределен на странице (как в данном случае). Также здесь указано свойство usageType. В системе есть три режима использования поля:
1) Обычный
2) Расширенный
3) Никогда.
При режиме использования "Никогда" - поле не отображается в настройках реестра и в фильтрах. Проверьте режим использования в объекте, а также заполните caption на странице редактирования.
Алексей, спасибо за ответ.
Судя по js файлам, получается, что usageType это значение типа:
var entitySchemaColumnUsageType = { General: 0, Advanced: 1, None: 2 };
И именно это вы и описали в виде списка режимов.
При этом, если посмотреть файл CustomFilterViewModel.js, в котором как раз и формируется список колонок для фильтрации (насколько я понимаю):
function getSimpleFilterColumnList(filters, list) { list.clear(); var columnList = {}; var columnNames = []; var columns = this.entitySchema.columns; Terrasoft.each(columns, function(column) { if (column.dataValueType !== Terrasoft.DataValueType.GUID && column.dataValueType !== Terrasoft.DataValueType.TIME && column.dataValueType !== Terrasoft.DataValueType.BLOB && column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP && column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) { columnNames.push({ name: column.name, caption: column.caption }); } }); var sortedColumnNames = columnNames.sort(function(a, b) { if (a.caption === b.caption) { return 0; } else { return a.caption > b.caption ? 1 : -1; } }); Terrasoft.each(sortedColumnNames, function(item) { var column = columns[item.name]; columnList[column.name] = { value: column.name, displayValue: column.caption, dataValueType: column.dataValueType, referenceSchemaName: column.referenceSchemaName }; }); list.loadAll(columnList); }
Получается, что поле должно быть в списке, а его - нет. Как такое может быть?
"Демьяник Алексей Олегович" написал:При режиме использования "Никогда" - поле не отображается в настройках реестра и в фильтрах
А есть то же самое для деталей (объектов)?
"Владимир Соколов" написал:А есть то же самое для деталей (объектов)?
Логика объектов распространяется как на разделы, так и на детали.
Вновь столкнулись с этой ошибкой.
В прошлый раз она исчезла после чистки всей кэшей и переустановки пакета в очередной раз.
Но сейчас эта проблема остается даже после совершения всех действий, совершенных в прошлый раз.
Поэтому прошу подсказать, из-за чего такое может быть? Может быть какая-то магическая галочка? Какие-то метаданные? Что могло привести к подобному?
Здравствуйте!
Зависимости пакетов на двух серверах одинаковы?
Алексей - да, все идентично (насколько может судить).
С одного сервера выгрузили схему, и на другой сервер установили эту схему.
Лучше всего будет написать на support@terrasoft.ru, либо на портал и продолжить решение данного вопроса в рамках тех. поддержки.
Такая же проблема, в схеме, которая скачивается с http://../0/configuration/entityschema/cacf779edcdb6ce860b02cf51ad442b4/...js
у колонки пустой caption и эта колонка не отображается в фильтре. в выгруженном md заголовок присутствует.
js:
clientOrderId:{uId:'9c5ec7e0-49f7-42f5-bc7e-fbc483adb5dd',name:'clientOrderId',caption:'',dataValueType:Terrasoft.DataValueType.TEXT,usageType:0,isValueCloneable:true,size:50}
md:
\n+ MetaData.Schema.D2 {\"UId\"":\""9c5ec7e0-49f7-42f5-bc7e-fbc483adb5dd\""
Здравствуйте, Юрий!
В данном случае эта проблема может быть связана с тем, что колонка clientOrderId является системной. В ней хранится Uid идентификатор записи в БД, и в фильтре она отображатся не должна.
"Павел Баштовой" написал:Здравствуйте, Юрий!
В данном случае эта проблема может быть связана с тем, что колонка clientOrderId является системной. В ней хранится Uid идентификатор записи в БД, и в фильтре она отображатся не должна.
данное поле не является системным. это строка 50 символов.
просто в bpmonline есть какая-то проблема с получением caption колонки, в тех случаях, когда используется замещение объектов.
Юрий, доброе утро!
В случае, если наблюдается такая ситуация с полем в замещенном объекте, и описанные выше варианты были проверены, лучшим выходом для решения этой проблемы будет обратится в техническую поддержку через портал, или написав запрос на адрес support@terrasoft.ru. Для решения необходимо проитзводить анализ на определенном сайте.