Имя: Пароль:
1C
1С v8
Багофича. Будьте бдительны с сортировкой ТаблицыЗначений
,
0 miklenew
 
12.02.14
11:00
Наткнулся тут на одну неприятную штуку, сортировка таблицы значений была неправильной. Решил предупредить тех, кто раньше как и я не обращал внимание на это.
Сортирует по строковому представлению
ТаблицаЗначений.Сортировать("Номенклатура");
сортирует по внутреннему идентификатору
ТаблицаЗначений.Сортировать("Номенклатура", Новый СравнениеЗначений);
1 PiVa123
 
12.02.14
11:02
Тип: СравнениеЗначений.
Объект для сравнения значений. Независимо от того, задан объект сравнения или нет, элементы, чьи типы не совпадают, сравниваются по коду типа, а элементы простых типов сравниваются по значению. Дополнительно к этому:
если объект сравнения не задан, то элементы остальных типов сравниваются по строковому представлению;
если объект сравнения задан, то:
объекты сравниваются по идентификатору;
моменты времени сравниваются по дате и идентификатору объекта;
элементы остальных типов сравниваются по строковому представлению
2 Господин ПЖ
 
12.02.14
11:03
чтение СП - приводит к багофичам...
3 miklenew
 
12.02.14
11:05
Лучше б сделали наоборот, по умолчанию по внутреннему айди, а кто хочет изврата по строковому представлению.
4 dmpl
 
12.02.14
11:07
(3) Чем же лучше? Юзеры бы жаловались "Что за хрень?!!! Я сортирую - а не сортируется!!!"
5 MSII
 
12.02.14
11:08
Вот именно. Ты для кого ТЗ сортируешь - для себя или для пользователя? :)
6 qeos
 
12.02.14
11:09
(3) я против)
7 Maxus43
 
12.02.14
11:10
да дело даже не в ТЗ... Юзер вот в СКД свою сортировку добавит по номенклатуре - а оно раз, и в кашу превратится
8 Serginio1
 
12.02.14
11:31
9 mdocs
 
12.02.14
11:34
Все правильно. Какой вообще смысл в сортировке по внутреннему идентификатору.
10 Serginio1
 
12.02.14
11:51
(9) Смотри 8. Смысл в том, что элементы справочника с одинаковыми наименованиями будут перемешаны, а не идти друг за другом.
Это касается случаев когда в ТЗ содержаться несколько записей по одному элементу.
11 Сияющий Асинхраль
 
12.02.14
12:03
(0) Вообще-то и в семерке по умолчанию нечто подобное было, так что ничего нового не открыл...
12 Serginio1
 
12.02.14
13:35
(11) В семерке "*" нужно было добавлять для сортировки по внутреннему значению
Программист всегда исправляет последнюю ошибку.