Добрый день! В 1С: Предприятие, обычном приложении, можно восстановить позицию при выборе элемента из справочника в его списке: НастройкаСписка-> При открытии восстанавливать позицию. Было очень удобно пользователям, при последующем открытии нового документа, при новом выборе сохранялась позиция предыдущего выбора.
Но, в управляемых формах есть такой механизм - в форме списка в таблице нужно выставить свойство "Восстанавливать текущую строку" в Истину Рисунок. Но почему-то не работает.
После долгих исканий чего-то полезного или адекватного решения этой задачи в просторах интернета ничего не нашел . Конечно, есть много статей на эту тему, например, http://www.forum.mista.ru/topic.php?id=647591, http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=586653 или эта чуть не по той теме, но принцип тот же http://forum.infostart.ru/forum9/topic136486/ да, были решения с добавлением реквизитов и сохранять выбранное значение, но это все как по мне не то.
Самым лучшим вариантом была внешняя обработка - она есть на этом сайте. После многих размышлений я решил немного упростить эту задачу, чуть дописав конфигурацию без всяких огромных функций и запросов. Но все, не буду Вас томить - вот код с описанием. Первое, что делаем, - добавляем две процедуры в модуле формы выбора . Первая будет сохранять текущую строку в хранилище значений .
&НаСервере
Процедура СохранитьНастройки(Номенклатуры)
ПараметрыЗакрытия = Новый Структура;// Структура может кому надо сохранять не только строку
ПараметрыЗакрытия.Вставить("Номенклатуры",Номенклатуры);
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ФормаВыбораНоменклатурыНастройкиФормы", , ПараметрыЗакрытия);
КонецПроцедуры
И да вызвать эту процедуру нада с
&НаКлиенте
Процедура ПриЗакрытии(Элемент)
Если ЭтаФорма.ТекущийЭлемент.ТекущиеДанные <> Неопределено Тогда
Номенклатуры = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.Ссылка;
Иначе
Номенклатуры = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
КонецЕсли;
СохранитьНастройки(Номенклатуры);
КонецПроцедуры
Вторая востанавлевать позицию строки при открытие . Первым дело открываем процедуру ПриОткрытии (Отказ) и там вызваете Поцедуру ВостановитьСтроку() вот она:
&НаСервере
Процедура ВостановитьСтроку()
СохДанные = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ФормаВыбораНоменклатурыНастройкиФормы");
Для Каждого Стр ИЗ СохДанные Цикл
Номенклатура = Стр.Значение;
КонецЦикла;
Элементы.Список.ТекущаяСтрока = Номенклатура ;
КонецПроцедуры
Вот и все, заработало. Всем спасибо.