Имя: Пароль:
1C
1C 7.7
v7: Метод Сортировать таблицы значений
0 Chesnok
 
24.06.14
18:55
Привет всем гуру.
Есть Справочник.Товары в котором есть товары с одинаковым наименованием в разных группах справочника (коды тоже разные).
Есть ТЗ с колонкой "Товар" с типом "Справочник.Товары", при выполнении метода ТЗ.Сортировать("Товар, Партия") в результирующей таблице товары с одинаковым названием идут вперемешку:
Наименование1 (код1)
Наименование1 (код2)
Наименование1 (код1)

Т.е. сортирует не по элементам справочника, а просто по наименованию?
Так должно быть, али как?
1 ДенисЧ
 
24.06.14
18:59
ТЗ.Сортировать("Товар*, Партия")

Так, что ли....
77 нет под рукой.
А вообще - да, по умолчанию сортирует по представлению
2 Chesnok
 
24.06.14
19:06
(1) Точно, звезду забыл поставить.
3 КонецЦикла
 
24.06.14
22:28
77 нет под рукой.

<рукалицо>
4 Gepard
 
24.06.14
22:41
Добавляем в тз еще и колонку "наименование" заполняем и сортируем по ней
5 Chai Nic
 
24.06.14
23:10
Тоже сталкивался с подобным неочевидным поведением.
(4) Я так понимаю, цель у ТС заключается в том, чтобы одинаковые товары (ссылки) шли рядом, при этом чтобы они были отсортированы еще и по наименованиям. То есть, надо сортировать так: ТабЗнач.Сортировать("Наименование,Товар*,Партия");
6 Chai Nic
 
24.06.14
23:19
+(5) Казалось бы, можно сделать Сортировать("Товар,Товар*,Партия") - но это не работает. Решение только через костылинг с добавлением доп.поля наименования.

Кстати, объект 1с++ "ИндексированнаяТаблица" этой проблемы не имеет - при сортировке по ссылочному полю он сортирует по представлению одновременно с внутр.идентификатором. То есть, там достаточно написать ТабЗнач.Сортировать("Товар,Партия") и всё в ажуре. Рекомендую.
7 prosto-nik
 
24.06.14
23:28
(0) а СП почитать что мешает-то?
8 Chai Nic
 
24.06.14
23:37
(7) СП недостаточно полно раскрывает данную тему, есть умолчания, которые можно понять неправильно.
9 prosto-nik
 
24.06.14
23:48
(8) интересно при внимательном прочтении что ж здесь не понятно?
<Колонки> - строковое выражение, которое определяет колонки, порядок и направление сортировки. Формат передаваемой строки - это разделенные запятыми номера или идентификаторы колонок со знаком направления сортировки ( ''+''    - сортировать по  возрастанию; ''- ''  - сортировать по убыванию; ''*'' - сортировать по внутреннему значению).

/по внутреннему значению/ ака ссылка, для восьмерошников
10 Chai Nic
 
25.06.14
08:03
(9) Где здесь сказано, что при сортировке "не по внутреннему значению" объекты сортируются тупо по представлению, без учета ссылки, в результате чего объекты получаются "рассыпаны"? Я много лет назад уже обращал на это внимание здесь, что такое поведение неинтуитивно и представляет собой типичные "грабли", впрочем не единственные.
11 mdocs
 
25.06.14
08:23
(0) Будь мужиком, добавь колонку с кодом.
12 aka AMIGO
 
25.06.14
08:31
есть еще вариант: ввести колонку с "Родителем", заполнить её и сортировать
("Родитель,Товар,...)
13 Мимохожий Однако
 
25.06.14
08:36
Мне лично не понятно какую сортировку хотел ТС.
14 aka AMIGO
 
25.06.14
08:41
(13) имхо - чтобы товары одной группы шли подряд, а не вперемешку с товарами из других групп
15 aka AMIGO
 
25.06.14
08:43
+14 а самый простой вариант - в (11)
16 Мимохожий Однако
 
25.06.14
08:44
Можно использовать ПолныйКод()
17 Chai Nic
 
25.06.14
08:45
(15) Самый простой и правильный - использовать индексированную таблицу, кроме нормальной сортировки там еще куча вкусностей
18 Chai Nic
 
25.06.14
08:46
(14) Родитель тут ни при чем, ТС нужно, чтобы разные товары с одинаковыми наименованиями при сортировке по наименованию(представлению) не рассыпались.
19 aka AMIGO
 
25.06.14
08:50
(18) они и не будут рассыпаться. По Родителю - в самый раз.
в топике ясно сказано: ""есть товары с одинаковым наименованием в разных группах справочника (коды тоже разные)""

на усмотрение ТС..
20 Chai Nic
 
25.06.14
08:51
(19) Вы предлагаете путь обхода граблей, на котором свои грабли. А если окажется, что представление родителя у разных товаров одинаковое? Возникнет та же проблема на новом уровне..
21 aka AMIGO
 
25.06.14
08:58
(20) согласен :)