Имя: Пароль:
1C
1С v8
Сортировка по возрастанию в макете печатной формы
0 Mitka90
 
16.02.18
10:47
Здравствуйте! Возник такой вопрос: нужно в макете печатной формы вывести абонентов и их адреса, но чтобы адрес шёл в порядке возрастания.
Проблема состоит в том, что сортировка идёт неправильно: например, в таком порядке: "100", "101", "102", "103", "1", "2", "3" и т.д.
Как сделать так, чтобы всё-таки номера квартир в адресе шли именно так: "1", "2", "3"... "100", "101", "102", "103"?

Код прилагается:

  Процедура ПечатьНажатие(Элемент)
    // Вставить содержимое обработчика.
    Макет = Справочники.Абоненты.ПолучитьМакет("График");
    //Макет = ПолучитьМакет("График");
    ТабДок = Новый ТабличныйДокумент();
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.АвтоМасштаб=Истина;
    Шапка = Макет.ПолучитьОбласть("Шапка");    
    Область1 = Макет.ПолучитьОбласть("Строка");    
//        
    ТабДок.Вывести(Шапка);    
        для Каждого стр из ТабличноеПоле1 Цикл         
    ЭлементыФормы.ТабличноеПоле1.Значение.Сортировать("Адрес Возр");         
  // ТабличноеПоле1.Сортировать("Адрес Возр");        
            Область1.Параметры.Абонент = стр.Абонент;
            Область1.Параметры.Адрес = стр.адрес;
            //    сообщить(ТипЗнч(стр.Абонент));
            //Сообщить(стр.Абонент.ФИО);        
            ТабДок.Вывести(Область1);
        КонецЦикла;    
//    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Показать();    
КонецПроцедуры
1 Cool_Profi
 
16.02.18
10:50
выгрузить в тз, преобразовать в число, отсортировать, выводить
2 Darych
 
16.02.18
10:51
номер квартиры - число
3 Малыш Джон
 
16.02.18
10:53
(0) Добить лидирующими нулями
4 Cool_Profi
 
16.02.18
10:56
(2) Обманываешь. Иначе сортировалось бы правильно
5 Darych
 
16.02.18
10:58
(4) че?.. в 0 строка, а ч говорю, что число нужно
6 Cool_Profi
 
16.02.18
10:59
(5) А, спутал тебя с ТС. именно про такое я и сказаль в (1)
7 DrZombi
 
гуру
16.02.18
11:01
(0) Ввести в БД реквизит "Порядковый номер".
Заполнять тем, чем получится получить из адреса.

Сортируйте за здравие :)
8 DrZombi
 
гуру
16.02.18
11:01
(1) Щас окажется, что адрес произвольный :)
9 Chameleon1980
 
16.02.18
11:02
можно и не в бд
постобработка тз перед выводом
добавление кв (число) вытягивание ищ адреса кв, сортировка
вперед на печать
10 Cool_Profi
 
16.02.18
11:02
(8) trash in - trash out
11 Дремучий
 
16.02.18
11:10
Только выдернуть из БД надо все поля и сортировать по всем полям по очереди, иначе после "Ленина, 1" будет "Минина, 2".
12 Mitka90
 
19.02.18
10:51
Хорошо, понял.

Допустим, что нужно преобразовать строку в число.

А как быть, если квартира имеет ещё и буквенное значение (например, 3пом)?

Как в таком случае отсортировать как нужно? Ещё и есть, допустим, данные, где номер дома и квартира повторяются, а ФИО абонентов разные.
В общем, они сортируются так: сначала (вне сортировки) выходит   Иванов И.И., дом 15, кв. 17, далее идут квартиры 1, 10, 11 ... далее Петров П.П., дом 15 кв. 17, потом 2, 20... и т.д.
13 catena
 
19.02.18
11:27
(12) Строковые переменные сравниваются посимвольно, т.е. "2" всегда будет больше, чем "10", "100" и даже "1000". Когда строковые переменные желают сравнивать, как числовые, им можно добавить лидирующие нули. Когда в строковых значениях встречаются нечисловые приписки, которые хочется сортировать по своему разумению, а не "по алфавиту" - вводят дополнительный реквизит сортировки, который и заполняют значениями в нужном порядке.
14 Mitka90
 
20.02.18
10:49
Ага, теперь понятно.

Но в данном случае тогда как можно перевести строку в число?
Хотя бы на примере моего кода, а то непонятно это как-то...
15 catena
 
20.02.18
10:57
(14)Какому числу должна соответствовать ваша квартира "3пом"?
16 Йохохо
 
20.02.18
10:57
(14) ТЧ вывести в ТЗ добавить три колонки, заполнить, отсортировать,вывести
17 Mitka90
 
20.02.18
11:20
Числу "3".

То есть, отдельно разделить адрес на три колонки, а потом совершить подобный алгоритм действий?
18 Mitka90
 
21.02.18
08:16
Никто не знает?
19 catena
 
21.02.18
08:23
(18)Кроме тебя никто не знает, как тебе нужно сортировать. Все советы уже даны. Нужен готовый код, чтоли?
20 Mitka90
 
21.02.18
08:25
Я же указал, как.

Хотя бы приблизительный код, чтобы понятнее стало.
21 Chameleon1980
 
21.02.18
09:13
(20) ну и отвентили уже как
22 Mitka90
 
21.02.18
10:48
Но примера кода нет.
23 SSSSS_AAAAA
 
21.02.18
10:51
(22) Примера кода чего? Перевода строки в число? Синтаксис-помощник уже не работает? Прочитать про функцию Число() религия не позволяет?
24 mistеr
 
21.02.18
10:52
(22) Придется разобрать адреса на компоненты, И хранить их раздельно. Это наполовину ручная работа. Либо воспользоваться платным сервисом (есть такие). В любом случае затраты приличные.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший