Каталог решений - Как восстановить текущую строку в форме выбора номенклатуры

Как восстановить текущую строку в форме выбора номенклатуры

Как восстановить текущую строку в форме выбора номенклатуры

В наличии

Восстановление (запомнить) текущую строку в форме выбора номенклатуры, управляемые формы.

Категория:

Описание

Добрый день! В 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/  да, были решения с добавлением реквизитов и сохранять выбранное значение, но это все как по мне не то.

Самым лучшим вариантом была внешняя обработка — она есть на этом сайте. После многих размышлений я решил немного упростить эту задачу, чуть дописав конфигурацию без всяких огромных функций и запросов. Но все, не буду Вас томить — вот код с описанием. Первое, что делаем, — добавляем две процедуры в модуле формы выбора . Первая будет сохранять текущую строку в хранилище значений . 

&НаСервере

Процедура СохранитьНастройки(Номенклатуры)

    ПараметрыЗакрытия = Новый Структура;// Структура может кому надо сохранять не только строку

    ПараметрыЗакрытия.Вставить("Номенклатуры",Номенклатуры);

    ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ФормаВыбораНоменклатурыНастройкиФормы", ,      ПараметрыЗакрытия);

КонецПроцедуры

И да вызвать эту процедуру нада с

&НаКлиенте
Процедура ПриЗакрытии(Элемент)
    Если ЭтаФорма.ТекущийЭлемент.ТекущиеДанные <> Неопределено Тогда
        Номенклатуры = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.Ссылка;
    Иначе
        Номенклатуры = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
    КонецЕсли;
    СохранитьНастройки(Номенклатуры);
КонецПроцедуры

Вторая востанавлевать позицию строки при открытие . Первым дело открываем процедуру ПриОткрытии (Отказ) и там вызваете  Поцедуру ВостановитьСтроку() вот она:

&НаСервере
Процедура ВостановитьСтроку()
    СохДанные = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ФормаВыбораНоменклатурыНастройкиФормы");
      Для Каждого Стр ИЗ СохДанные  Цикл 
           Номенклатура = Стр.Значение;
      КонецЦикла;
       Элементы.Список.ТекущаяСтрока = Номенклатура ;
   КонецПроцедуры

Вот и все, заработало. Всем спасибо.

has been added to your cart:
Оформление заказа