ОБСУЖДЕНИЕ

Сортировка в справочнике по убыванию кода

5 ответов 5,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Как установить в справочнике сортировку по убыванию кода или чтобы при открытии справочника происходило позиционирование на последний элемент?
 
Видимо, стандартной процедурой "Сортировка()" тут не обойтись.

Можно выпендриться и сделать так:
1. Создать реквизит справочника типа Строка/Число (в зависимости от того, какой тип у Кода) с признаком "Сортировка"
2. При записи элемента записывать туда (Максимально_Возможное_Число - Число(Код)). То есть, если у нас Код - тип Число, длина 5, то в этот реквизит записывать=:
Код: 1
Реквизит: 99999

Код: 2
Реквизит: 99998

Код: 3
Реквизит: 99997

и т.п.

А дальше просто делаем сортировку по этому реквизиту и у нас получается обратная сортировка по коду.
А вот как спозиционироваться на последний:
СпрТ = СоздатьОбъект("Справочник.Товары");
СпрТ.ПорядокКодов();
СпрТ.ОбратныйПорядок(1);
СпрТ.ВыбратьЭлементы();
СпрТ.ПолучитьЭлемент(); //<< вот он, последний.

Можно конечно это оптимизировать, но думать лень сейчас :)
 
А симпатичное решение так вот сходу
 
Isabela Спасибо :)
 
Идея вроде бы правильная, только не работает. Вставила в блок модуля формы списка справочника. Теперь он выглядит так:
//_____________________________________________________________________________
Процедура ПриОткрытии() //предопределенная

Спр=СоздатьОбъект("Справочник.Изделия");
Спр.ПорядокКодов();
Спр.ОбратныйПорядок(1);
Спр.ВыбратьЭлементы();
Спр.ПолучитьЭлемент(); //<< вот он, последний.

Активизировать("Наименование",0);
КонецПроцедуры //ПриОткрытии

Но при открытии Справочника все равно курсор на первом элементе, а хочу на последнем, чтобы видеть, что было записано последним, а не бог знает когда....
 
Идея вроде бы правильная, только не работает. Вставила в блок модуля формы списка справочника. Теперь он выглядит так:
//_____________________________________________________________________________
Процедура ПриОткрытии() //предопределенная

Спр=СоздатьОбъект("Справочник.Изделия");
Спр.ПорядокКодов();
Спр.ОбратныйПорядок(1);
Спр.ВыбратьЭлементы();
Спр.ПолучитьЭлемент(); //<< вот он, последний.

Активизировать("Наименование",0);
КонецПроцедуры //ПриОткрытии

Идея правильная, только исполнена некорректно.


Процедура ПриОткрытии() //предопределенная

Спр=СоздатьОбъект("Справочник.Изделия");
Спр.ПорядокКодов();
Спр.ОбратныйПорядок(1);
Спр.ВыбратьЭлементы();
Спр.ПолучитьЭлемент(); //<< вот он, последний.

АктивизироватьОбъект(Спр.ТекущийЭлемент());
КонецПроцедуры //ПриОткрытии