В начало

Сортировка строки как число

 

            Нужно отсортировать в отчете адреса по полю квартира, которое имеет строковый тип в порядке сортировки чисел.

            Например, есть справочник адреса.

 

Рис. Форма списка справочника «Адреса»

 

            Создадим внешний отчет и отсортируем адреса по наименованию и по квартире.

Рис. Отчет «Сортировка адресов» по Наименованию и Квартире

 

            Попробуем поле «Квартира» преобразовать в число при помощи выражения «Выразить(Адреса.Квартира КАК Число(3,0))», на что получаем ошибку в СКД.

Рис. Ошибка в СКД

 

            Пробуем выражение упорядочивания в наборе данных СКД.

Рис. Набор данных, выражение упорядочивания

 

            Получаем ошибку при выполнении отчета.

 

Рис. Ошибка при выполнении отчета

           

            Хотя, если бы у нас в поле квартира не было бы только числа, то ошибки не было бы.

Рис. Если бы в поле «Квартира» были только цифры

 

            Пишем новое выражение упорядочивания.

 

Листинг. Выражение упорядочивания

Выражение упорядочивания

Пояснение

ВЫБОР
КОГДА Квартира ПОДОБНО "%[^0-9]%"
ТОГДА Квартира
ИНАЧЕ ВЫЧИСЛИТЬ(Квартира)
КОНЕЦ

% (процент): последовательность, содержащая любое количество произвольных символов

_ (подчеркивание): один произвольный символ

[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок

В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.

[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания (Alt+94)

 

Рис. СКД, закладка «Наборы данных», выражение упорядочивания

 

            Далее проверяем результат.

Рис. Упорядоченные данные в отчете

 

            Все верно, теперь квартиры с только числовыми данными (без букв) упорядочены по правилу сортировки цифр, а те поля, которые содержат символы упорядочены по правилу сортировки строк.