Имя: Пароль:
1C
1С v8
Произвольная сортировка в динамическом списке по нажатию на шапку
,
0 maxipunchik
 
08.10.19
07:58
Есть динамический список, у него произвольный запрос. В нем есть поле Адрес. В адресе есть номер квартиры, который еще и может быть с литерами. Например 12, 12а. Нужно отсортировать по нажатию по шапке адреса так, чтобы цифры шли как числа, а не как строка. Например сейчас: Гагарина 1, Гагарина 11, Гагарина 2 и тд. А нужно: Гагарина 1, Гагарина 2, Гагарина 11.
По идее нужно, чтобы сортировало как строковый код, но переопределить что-то не получается. Сортировать колонку в произвольном запросе динамического списка можно только по возр или убыв.
1 Alex87r
 
08.10.19
08:11
(0) Сортировать колонку в произвольном запросе динамического списка можно только по возр или убыв
Спасибо, кэп)

Вот ты сам сказал, что адрес это строка, поэтому 1С никак этот адрес не отсортирует как тебе нужно.
Придется раздельно хранить адрес в виде улица, номер дома, литера.
И потом по этим трем полям сортировать.
Или может уже хранится все раздельно, просто в запросе общий адрес используется. Посмотри.
2 maxipunchik
 
08.10.19
08:20
(1) Ну я написал, чтобы обозначить, что без дела не сидел)

Тогда еще один вопрос. Да, есть разделенное, но оно всё строками написано и номер дома указан сразу с литерой, например "12а". Как при тех же условиях сделать сортировку по строке как по числу по двум полям: дом и номер улицы
3 hhhh
 
08.10.19
08:25
(2) добавить еще одно служебное поле, специально для сортировки
4 Uzyf
 
08.10.19
08:39
(2) разбиваешь на 4 поля: улица дом литера квартира и сортируешь по всем четырем по порядку
5 maxipunchik
 
08.10.19
08:42
(4) Тут проблема в том, что сортировка по строке идет так: 1, 11, 2, 21. Разбивай не разбивай, нужно решить проблему сортировки строки как числа (по типу строкового кода)
6 maxipunchik
 
08.10.19
08:43
(3) скорее всего так и придется сделать, но хотелось бы узнать, вдруг есть возможность без добавления или изменения данных
7 Сияющий в темноте
 
08.10.19
08:43
сначала,реши задачу:есть таблица значений с твоими данными-как ее отсортировать как нужно,а потом уже эту таблицу можно в запрос добавлять.
поскольку в 1с нет ни иттераторов ни функций сортировки,то все придется делать кодом.
8 maxipunchik
 
08.10.19
08:49
(7) Идея интересная, но непонятно как реализовать. По идее нужно взять данные динамического списка, загрузить их в тз, отсортировать и обратно загрузить или как?
9 ДенисЧ
 
08.10.19
08:50
(8) Зачем? В список добавляешь скрытые столбцы и...
10 catena
 
08.10.19
09:16
(5)Строка как число сортируется, если добавить лидирующие нули.
11 Uzyf
 
08.10.19
09:33
(10) вот это полезная информация, надо будет запомнить
12 maxipunchik
 
08.10.19
11:02
(10) Спасибо, друг, это реально реашет проблему
13 savaB
 
08.10.19
12:46
(12) а че ерничать ? человек дело говорит.
добавляем скрытое поле адресчислом, перегоняем числа из адреса в него , приводим к одному формату, сортируем по нем.
14 maxipunchik
 
08.10.19
13:55
(13) мне  подошло (10)
15 Nikoss
 
09.10.19
09:27
(14) как, в итоге, реализовал?
16 maxipunchik
 
10.10.19
06:28
Результат:
Пришли к согласию, что будет сортироваться по полу квартиры. При этом это поле не может быть длиньше 3-х символов плюс буква. Буква проставляется только "а", но сделал с небольшим заделом.
Создал поле "Сортировка" и поместил его рядом с полем квартира для удобства.
Поле выглядит так:

ВЫБОР
    КОГДА СправочникасЛицевойСчет.Квартира ПОДОБНО "[^ ][^ ][^ ][абвгдАБВГД]%"
        ТОГДА "0" + ПОДСТРОКА(СправочникасЛицевойСчет.Квартира, 0, 3)
    КОГДА СправочникасЛицевойСчет.Квартира ПОДОБНО "[^ ][^ ][абвгдАБВГД]%"
        ТОГДА "00" + ПОДСТРОКА(СправочникасЛицевойСчет.Квартира, 0, 2)
    КОГДА СправочникасЛицевойСчет.Квартира ПОДОБНО "[^ ][^ ][^ ]%"
        ТОГДА "0" + СправочникасЛицевойСчет.Квартира
    КОГДА СправочникасЛицевойСчет.Квартира ПОДОБНО "[^ ][абвгдАБВГД]%"
        ТОГДА "000" + ПОДСТРОКА(СправочникасЛицевойСчет.Квартира, 0, 1)
    КОГДА СправочникасЛицевойСчет.Квартира ПОДОБНО "[^ ][^ ]%"
        ТОГДА "00" + СправочникасЛицевойСчет.Квартира
    ИНАЧЕ "000" + СправочникасЛицевойСчет.Квартира
КОНЕЦ

Привел поле к общему количеству символов, добавив лидирующие нули и сортировка заработала
17 hhhh
 
10.10.19
08:20
(16) "сортироваться по полу квартиры" - это пять.
18 Glavkomnn
 
10.10.19
09:33
я бы ввел дополнительное поле (поля) для сортировки, дублирующее числовые поля адреса, и дополнил в них значения лидирующими нулями. Тогда сортировать будет однозначно и без разночтений
19 maxipunchik
 
10.10.19
14:22
(18) у них там каждый адрес - это папка, смотрят всегда в иерархии. Так что этого хватило
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.