Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Сортировка по возрастанию в макете печатной формы

Сортировка по возрастанию в макете печатной формы
Я
   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);
        КонецЦикла;    
//    

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

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

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

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует