Имя: Пароль:
1C
1C 7.7
v7: Сортировать() сортирует строковую колонку по алфавиту?
,
0 snegovik
 
02.03.13
21:21
В таблицу значений в цикле заношу данные, потом сортирую.

ТекИндекс = ТекИндекс + 1;
ТЗ.НоваяСтрока();
ТЗ.УстановитьЗначение(ТекИндекс, "Адрес", СокрЛП(Строка(Запрос.Адрес.Адрес.ПолнНаименование) + " "............

Потом после цикла сортирую:

ТЗ.Сортировать("+Адрес", "+ВидРабот");
ТЗ.ВыбратьСтроки();
i = 1;
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
      ПечАдрес = ТЗ.ПолучитьЗначение(i,"Адрес");


И вот почему-то в отчет выводит не совсем по алфавиту. Точнее, часть идет по алфавиту, от "а" до "я", потом снова с "а" и до "я". Как такое может быть?
1 Тьма
 
02.03.13
21:40
При выполнении данного кода значение переменной ПечАдрес будет всегда одинаково. Где итерация i?
Кстати, можно просто
ПечАдрес = ТЗ.Адрес;
2 VladZ
 
02.03.13
21:40
Восьмерочник?
3 VladZ
 
02.03.13
21:42
Конструкция вида:
ТЗ.НоваяСтрока();
ТЗ.УстановитьЗначение(ТекИндекс, "Адрес", СокрЛП(Строка(Запрос.Адрес.Адрес.ПолнНаименование) + " "............

В семерке делается проще:
ТЗ.НоваяСтрока();
ТЗ.Адрес = СокрЛП(........

И что за хрень: ТЗ.Сортировать("+Адрес", "+ВидРабот");
 ????
4 КонецЦикла
 
02.03.13
22:08
ТЗ.Сортировать("Адрес, ВидРабот");
5 КонецЦикла
 
02.03.13
22:09
ТекИндекс...
Буогаг, до чего восьмерка доводит
6 Злопчинский
 
02.03.13
23:10
(5) ну что ты хочешь от  расставлятелей галочек..???
7 ЧеловекДуши
 
02.03.13
23:20
(6) Дак, вроде Синтаксис помощник еще никто не забанил в конфигураторе :)
8 ЧеловекДуши
 
02.03.13
23:20
+(6) Тут дело не в восьмерке :)
9 snegovik
 
03.03.13
00:44
Короче, всё рассказали и повсюду раскритиковали, кроме ответа на вопрос)
10 Cthulhu
 
03.03.13
00:46
(9): т.е. ты даже ответ не в силах осмыслить?..
ну, что тут скажешь...
11 snegovik
 
03.03.13
00:46
Какая разница, как заполняю ТЗ?:) А вот почему после сортировки в первой отсортированной колонке не совсем по алфавиту идет вывод.... Собственно, в СП нет информации о том, как именно сортируются строки в ТЗ, если в них сортировка по строковым данным.
12 snegovik
 
03.03.13
00:48
(10) Где ответ? Лишь комментарии по методу заполнения ТЗ, которые к делу не относятся...
13 Cthulhu
 
03.03.13
00:52
(12): в (7) ответ.
ну и в (4), да.
14 snegovik
 
03.03.13
01:00
(13) А, надо было обе колонки в одну строку заносить, через запятую. Хотя один хрен, странно сортирует - опять 2 куска по алфавиту.
15 Torquader
 
03.03.13
01:08
(14) Показывай весь код - скорей всего - где-то происходит дублирование таблицы.
16 Torquader
 
03.03.13
01:09
+(14) Ещё не забывайте, что символ неразрывного пробела (код 160) выглядит как пробел, но через СокрЛП не обрезается.
17 Злопчинский
 
03.03.13
01:11
(15) нам, тупым, уже объяснили, в (11) что как заполянется таблица - абсолютно фиолетова. а вот что соритруется неправильно - нефиолетово. То что в дестве родители воспитанием не занимались - не имеет никакого отношения, что чадо убивало и сидело в тюрьме...
18 sanja26
 
03.03.13
01:13
а зачем вручную индекс строкам присваивать в данном случае??
19 snegovik
 
03.03.13
01:14
(17) Ну и в чем разница между

ТЗ.УстановитьЗначение(ТекИндекс, "Адрес", СокрЛП(......

и

ТЗ.Адрес = СокрЛП(........

?

П.С.: тупыми я тут никого не называл.
20 Torquader
 
03.03.13
01:14
(17) Ну тогда им ТипЗначенияСтр в помощь, чтобы понять, что строк там нет, хотя, если там не строки, то очень сложно получить два куска по алфавиту, уж очень похоже, что наступили на (16).
21 Torquader
 
03.03.13
01:15
(19) Сделай так:
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Сообщить(ТипЗначенияСтр(ТЗ.Адрес)+"="+Строка(ТЗ.Адрес));
КонецЦикла;

И всё станет ясно.
22 snegovik
 
03.03.13
01:16
Спасибо Torquader , поковыряю поглубже, что там с ТЗ и с кодом.
23 Злопчинский
 
03.03.13
01:29
(22) приведи уже сам код - начиная от формирования текста запроса до его залива в ТЗ...
24 VladZ
 
03.03.13
05:58
Автор, ты не ответил на мой второй вопрос... Вот тебе инфа из СП:

Сортировать(<?>,);
Синтаксис:
Сортировать(<Колонки>,<ДокумПоДате>)
Назначение:
Сортировать таблицу значений по колонкам.
Параметры:
<Колонки> - строковое выражение, которое определяет колонки, порядок и направление сортировки. Формат передаваемой строки - это разделенные запятыми номера или идентификаторы колонок со знаком направления сортировки ( ''+''    - сортировать по  возрастанию; ''- ''  - сортировать по убыванию; ''*'' - сортировать по внутреннему значению). Знак направления сортировки можно указывать до или после обозначения колонки через пробел или без пробела. По умолчанию направление сортировки принимается по возрастанию.
<ДокумПоДате> - необязательный параметр. Имеет смысл только в том случае, если значениями таблицы значений являются документы. В этом случае можно задавать сортировку документов по их хронологии. Число: 1 - сортировка по хронологии документов; 0 - нет. Значение по умолчанию - 0.

Читай вдумчиво.
25 snegovik
 
03.03.13
07:52
(24) Вопрос был этот?

" И что за хрень: ТЗ.Сортировать("+Адрес", "+ВидРабот");
 ????"

Ну тут да, лажанул, поставил две лишние кавычки между Адрес и ВидРабот. Хотя после того, как убрал, сортировалось так же, как и до.
А вот кстати, что такое (* сортировать по внутреннему значению)?
26 Mikeware
 
03.03.13
08:10
эттта...
а чего вам не понравился ТекИндекс?
27 Mikeware
 
03.03.13
08:10
(25) грубо говоря, по иду
28 ChMikle
 
03.03.13
08:34
(25) ТЗ.Сортировать("Адрес+,ВидРабот+") по идее так должно быть
29 Torquader
 
03.03.13
15:19
(28) Как дерьмо не сортируй - всё равно получишь ...
Ждём кода формирования таблицы.
30 Сияющий Асинхраль
 
03.03.13
16:02
(0) Если хочешь, чтобы семерка нормально сортировала всегда явно описывай типы колонок, в противном случае, можешь получить самые удивительные вещи. Кстати в восьмерке это правило даже 1С часто не соблюдает...
31 FN
 
03.03.13
16:15
Сделай так:

ТЗ.Сортировать("+Адрес", "+ВидРабот");
ТЗ.ВыбратьСтроки();

Пока ТЗ.ПолучитьСтроку() = 1 Цикл
      Сообщить(""+ТЗ.НомерСтроки+": "+ТЗ.Адрес);
КонецЦикла

многа думай.
32 FN
 
03.03.13
16:16
Ну тока вместо
ТЗ.Сортировать("+Адрес", "+ВидРабот");
правильно
ТЗ.Сортировать("Адрес,ВидРабот");
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.