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

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Сортировка таблицы значений

Ø [Злопчинский, 12.10.16 - 01:00]
v7: Сортировка таблицы значений
Я
   Slypower
 
11.10.16 - 15:27
Добрый день. Не могу понять, что хочет 1С7.7.
https://cloud.mail.ru/public/3wJE/wBbVEauVg
На картинке список сортировки, а рядом еще 2 кнопки, для сортировки по возрастанию/убиванию. Подписи - это формулы в модуле для данных реквизитов. Вот процедура для них:

Процедура Сортировать(Метод = "")

    Если СокрЛП(Метод)="Вниз" Тогда
        Сортировка="+";
    ИначеЕсли СокрЛП(Метод)="Вверх" Тогда
        Сортировка="-";
    КонецЕсли;
    ТаблЗнач.Сортировать(МетодСортировки.ПолучитьЗначение(МетодСортировки.ТекущаяСтрока())+Сортировка);//Сообщить(""+МетодСортировки.ПолучитьЗначение(МетодСортировки.ТекущаяСтрока())+"_"+Сортировка+"");

    н=0;
    ТаблЗнач.ВыбратьСтроки();
    Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл
        н=н+1;
        ТаблЗнач.УстановитьЗначение(н,"НомСтроки",н);
    КонецЦикла;

КонецПроцедуры// КнСортировать


Так вот. При заполнении ТаблЗнач сразу сортируется по стандартному методу. Затем при нажатии на кнопки, он определяет метод, но сортирует. Срабатывает только при смене списка, а кнопки со стрелками не работают. Что может мешать работе сортировке?

Список заполняется:

Процедура МетодСортировкиТаблицы()
    МетодСортировки.УдалитьВсе();
    для ш=1 по ТаблЗнач.КоличествоКолонок() Цикл
        ТаблЗнач.ПолучитьПараметрыКолонки(ш,,,,Заголовок,,,);
        Если ТаблЗнач.ВидимостьКолонки(ш)=1 Тогда
            МетодСортировки.ДобавитьЗначение(ш,Заголовок);
        КонецЕсли;
    КонецЦикла;
    МетодСортировки.УдалитьЗначение(2);
    МетодСортировки.ТекущаяСтрока(3); 
    
    Сортировать();
КонецПроцедуры// МетодСортировки
 
 
   Ёпрст
 
1 - 11.10.16 - 15:30
Вот это выкини из кода:
    Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл
        н=н+1;
        ТаблЗнач.УстановитьЗначение(н,"НомСтроки",н);
    КонецЦикла;
   Ёпрст
 
2 - 11.10.16 - 15:32
И пихай идентификаторы колонок, а не число
   aka AMIGO
 
3 - 11.10.16 - 15:32
На Сортировать(); не ругается?

И еще: в отладчике что в параметре МетодСортировки.ТекущаяСтрока())+Сортировка
   Ёпрст
 
4 - 11.10.16 - 15:33
у тебя же 
МетодСортировки.ТекущаяСтрока())+Сортировка = 1 + "+" = 1
   Ёпрст
 
5 - 11.10.16 - 15:35
так, что ле исправь:

МетодСортировки.ДобавитьЗначение(""+ш,Заголовок);
   Ёпрст
 
6 - 11.10.16 - 15:35
или так:
ТаблЗнач.Сортировать(""+МетодСортировки.ПолучитьЗначение(МетодСортировки.ТекущаяСтрока())+Сортировка);
   Ёпрст
 
7 - 11.10.16 - 15:35
короче, строку надо в метод передавать, а не число.
   Ёпрст
 
8 - 11.10.16 - 15:36
ну и код, что в (1) заменить на

ТаблЗнач.ВидимостьКолонки("НомерСтроки",1);
   aka AMIGO
 
9 - 11.10.16 - 15:37
(7) + и в строке должно быть наименование колонки :)
   Slypower
 
10 - 11.10.16 - 15:38
(1) это нужно, это потом нумерует строки по порядку, а не по виду сортировки. Они всегда теперь 1,2,3,....
 
 Рекламное место пустует
   Slypower
 
11 - 11.10.16 - 15:41
(5) Вот спасибо!!! Вот теперь работает!!
   Slypower
 
12 - 11.10.16 - 15:44
(6) так тоже работает. Я так понимаю, это особенности 1С7.7? Интересно, что Сообщить(""+МетодСортировки.ПолучитьЗначение(МетодСортировки.ТекущаяСтрока())+"_"+Сортировка+""); работает по этому же принципу, если вначале ""+ не стоит, то не выводило +/-, а вот в сортировку не догадался поставить. Огромное спасибо
   Ёпрст
 
13 - 11.10.16 - 15:46
(12) нет никакой особенности, обычное приведение типов по первому операнду.
   Ёпрст
 
14 - 11.10.16 - 15:46
нефик к числу строку прибавлять
   Ёпрст
 
15 - 11.10.16 - 15:47
(10) и это не нужно, номерСтроки и так всегда есть у таблицы значений, просто покажи его на форме и усё, см. (8)
   aka AMIGO
 
16 - 11.10.16 - 15:48
Так тоже можно:
Строка(МетодСортировки.ТекущаяСтрока()))+Сортировка
или так:
""+МетодСортировки.ТекущаяСтрока())+Сортировка

Это не есть особенность 1с-77
   Slypower
 
17 - 11.10.16 - 15:49
(15) да, это если сразу так стандартно делать, но для меня не по феншую такое расположение колонок, поэтому я и делаю свою колонку нумерации. Только если сделать: ТаблЗнач.НомСтроки=ТаблЗнач.НомерСтроки
   Ёпрст
 
18 - 11.10.16 - 15:50
(17) ёёё..
кури метод ВидимостьКолонки, особенно, 3-ий параметр
   Slypower
 
19 - 11.10.16 - 16:04
Спасибо, есть над чем еще курить. Тему можно закрывать
   Злопчинский
 
20 - 12.10.16 - 00:59
(13) не пугай людей...

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