Каталог решений - Как "перемотать" динамический список в начало при открытии? (или некоторые нюансы получения данных динамического списка)

Как "перемотать" динамический список в начало при открытии? (или некоторые нюансы получения данных динамического списка)

Как "перемотать" динамический список в начало при открытии? (или некоторые нюансы получения данных динамического списка)

В наличии

В современных интерфейсах (новостях, социальных сетях и прочим) принято размещать новые данные сверху, более старые — внизу. К сожалению, в 1C сделано несколько по-другому — по умолчанию списки документов отсортированы по возрастанию даты и далее возможно два варианта: либо список при открытии проматывается в конец, либо список может запоминать «последнюю» текущую строку.

Категория:

Описание

В процессе «осовременивания интерфейса» возникла необходимость воспроизвести подобное поведение, т.е. сделать так, чтобы список при открытии был отсортирован по убыванию даты и был перемотан в самое начало. По умолчанию направление сортировки запоминается, но список перематывается в конец и мы оказываемся на первом созданном документе. Промежуточный вариант с запоминанием текущей строки списка по ряду причин не подходит.

К счастью, это поведение можно исправить. Для этого «всего лишь» нужно получить реальный исполняемый запрос ДС, выполнить его и установить текущий элемент списка. Положение усложняется тем, что у ДС есть несколько видов поиска, которые недоступны через его настройки. К счастью, фирма 1C осознала эту недоработку и в «зазеркалье» некоторое время назад была опубликована статья, которая рассказывает о костыле, который был придуман специально для этого: https://wonderland.v8.1c.ru/blog/poluchenie-dannykh-dinamicheskogo-spiska/

Итак, пытаемся применить полученные знания и «копипастим код» из статьи, допустим в ПриОткрытии формы списка:

ИсполняемаяСхема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
ИсполняемыеНастройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных()
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);
   
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных();
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
   
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Элементы.Список.ТекущаяСтрока = Результат[0].Ссылка;
has been added to your cart:
Оформление заказа