Сортировка реестра по полю номер с использованием маски

Добрый день.
Используя материалы статьи https://community.terrasoft.ru/blogs/8395
сделал нумерацию в раздела с использованием маски, однако при отображении реестра наблюдается не корректная сортировка по номеру (в следствие того, что номер является строкой) вида:

Есть ли способ исправить данную проблему с некорректной сортировкой?
Заранее спасибо.

Нравится

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

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

Для решения Вашей задачи рекомендую сделать следующее:
1) Создать поле с типом целое число и назвать его "Номер заявки".
2) Скрыть текущее поле "Номер заявки" с фильтра (чтобы пользователей не смущало два поля с номером заявки).

Таким образом, фильтрация будет производится по целочисленному полю.

"Демьяник Алексей Олегович" написал:Таким образом, фильтрация будет производится по целочисленному полю.

А как система узнает, что по именно по этому полю нужно сортировать?

Игорь, сортировать можно в реестре раздела по определенной колонке

"Мотков Илья" написал:Игорь, сортировать можно в реестре раздела по определенной колонке

Да это понятно.
Но как сделать сортировку по умолчанию по скрытому полю?

Игорь, уточню.
Есть два поля с идентичными заголовками, но с разными названиями:
Номер заявки (поле с типом целое число)
Номер заявки (поле с типом строка).

Для того, чтобы не путать пользователя, Вы скрываете текстовое поле с фильтра. Таким образом, пользователь будет всегда фильтровать по корректному полю.

Каким образом я могу скрыть поле из фильтра. И как я могу установить поле для сортировки по умолчанию?

Игорь, Алексей имел ввиду убрать из реестра раздела.

Какая в таком случае польза от маски номера если её нельзя отобразить в реестре?
Я сделал целочисленное поле NumberDecimal, теперь мне нужно по нему отсортеровать реестр.
Подскажите как это сделать? При этом поле номер должно присутствовать в реестре.

Игорь, добрый день!

Насколько я понимаю, Вы хотите, чтобы реестр по умолчанию сортировался по добавленному Вами полю? Это можно реализовать переопределением метода getGridDataColumns в Вашем разделе:

getGridDataColumns: function() {
	var columnsConfig = this.callParent(arguments);
	columnsConfig.NumberDecimal = {
		path: "NumberDecimal",
		orderPosition: 10,
		orderDirection: 1
	};
	return columnsConfig;
}

В параметр orderPosition можно подставить любое число, главное, чтобы оно было больше максимально возможного количества колонок с сортировкой.

В результате, если в реестре не установлена другая сортировка, реестр всегда будет отсортирован по Вашему полю. Как только пользователь установит в реестре сортировку по другой колонке, система будет сортировать реестр сначала по установленной колонке, а уже потом по полю NumberDecimal.

Данное поле не обязательно добавлять в настройки колонок реестра, для сортировки достаточно вышеописанных изменений.

Да, спасибо. Так и сделал

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