Добрый день.

Ситуация следующая:
1. был переопределен существующий объект на Сервер1, и добавлена колонка Колонка1
2. в фильтре и в настройках колонок на конфигурации, где это сделали колонка отображается
3. выгрузили пакет, установили на другом сервере Сервер2 (база другая), колонка отображалась как в п.2
4. внесли иные правки, вновь выгрузили пакет и установили на Сервер2, но Колонка1 пропала! Она заполняется, в базе она есть, но в фильтрах и в настройках её нет.

В результате сравнения js, который приходит клиенту, удалось выяснить, что есть разница между описанием колонки, на Сервер2 это выглядит так:

Column1
{  
            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 чистили, браузер чистили.

Просьба подсказать, в чем может быть дело? Может быть где-то нужно какую-то галочку указать?
И где хранится описание колок у схемы описывающей объект? Где-то в базе, или в исходном коде только?

Нравится

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

Здравствуйте!

Поле 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. Для решения необходимо проитзводить анализ на определенном сайте.

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