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


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) Придется разобрать адреса на компоненты, И хранить их раздельно. Это наполовину ручная работа. Либо воспользоваться платным сервисом (есть такие). В любом случае затраты приличные.


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