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

  • Автор темы Автор темы NataTr
  • Дата начала Дата начала
N

NataTr

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

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

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

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

и т.п.

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

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

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

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

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

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

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

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


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

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab