Причин сильно доискиваться не будем, попытаемся (чисто в качестве упражнения) реализовать данную "хотелку".
Например, у нас есть одноуровневый справочник. Как при открытии его списка спозиционироваться в конец списка...? Делаем так:
В форме списка в процедуре ПриОткрытии() размещаем такой код:
Процедура ПриОткрытии()
//спозиционируемся на последнем элементе справочника
глАктивизироватьПоследний(Контекст);
КонецПроцедуры //ПриОткрытии()
В глобальном модуле определим следующий код:
//******************************************************************************
//не мое, единственный способ определения типа контекста
Функция глВернутьТипКонтекста(Знач Конт) Экспорт
ТипКонтекста="Справочник.ФормаСпискаДокументЖурналОтчет";
Попытка А=Конт.ТекущийЭлемент();
Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Справочник","");
КонецПопытки;
Попытка А=Конт.ИерархическийСписок();
Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,".ФормаСписка","");
КонецПопытки;
Попытка А=Конт.Проведен();
Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Документ","");
КонецПопытки;
Попытка А=Конт.ТекущийДокумент;
Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Журнал","");
КонецПопытки;
Попытка Конт.РасположениеФайла(А,А);
Исключение ТипКонтекста=СтрЗаменить(ТипКонтекста,"Отчет","");
КонецПопытки;
Возврат ТипКонтекста;
КонецФункции //глВернутьТипКонтекста()
//******************************************************************************
//позиционирование на последнем элементе списка справочника
Процедура глАктивизироватьПоследний(Знач Конт) Экспорт
Перем Спр;
Если глВернутьТипКонтекста(Конт)"Справочник.ФормаСписка"
Тогда //только для справочников!
Возврат;
КонецЕсли;
//спозиционируемся на последнем элементе справочника
Спр = СоздатьОбъект("Справочник."+Конт.Вид());
Реквизит = Конт.Сортировка();
Если Реквизит = "Код" Тогда Спр.ПорядокКодов();
ИначеЕсли Реквизит = "Наименование" Тогда Спр.ПорядокНаименований();
Иначе Спр.ПорядокРеквизита(Реквизит);
КонецЕсли;
Спр.ОбратныйПорядок(1);
Спр.ВыбратьЭлементы(0);
Спр.ПолучитьЭлемент();
Если Спр.Выбран()=0
Тогда //нет на чем позиционироваться!
Возврат;
КонецЕсли;
Конт.АктивизироватьОбъект(Спр.ТекущийЭлемент());
Спр = "";
КонецПроцедуры //глАктивизироватьПоследний()
Пояснения к коду глАктивизироватьПоследний():
- проверяем тип контекста;
- определяем пользовательский выбор режима сортировки открытого списка;
- инициализируем выборку справочника нужного вида в обратном порядке, т.е. с конца (в порядке сортировки списка!); тут важно открыть выборку без учета иерархии - это условие обеспечивает работу в подчиненных справочниках!!!
- получаем первый элемент выборки в обратном порядке, т.е. последний элемент списка;
- позиционируемся на нем в списке справочника.
Для чего нужны такие "выкрутасы"? Все очень просто, например, если в справочнике содержится запись неких действий (лог), или некая хронологическая последовательность - зачастую интересуют последние сведения, которые находятся в конце списка...
Если кто-то знает более "красивый" способ спозиционироваться на последнем элементе списка (без привлечения внешних компонент, эмуляции клавиш и т.п.) - просьба озвучить...