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

06.03.17

Разработка - Механизмы платформы 1С

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

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

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

&НаСервере

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

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

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

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

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

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

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


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

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

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

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

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4506    dsdred    53    

71

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5286    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6408    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18470    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12086    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8813    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6277    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15980    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. BigB 191 06.03.17 17:06 Сейчас в теме
Я наверное неправильный, но у меня прекрасно работает со включенной галкой на списке "Восстанавливать текущую строку".
fravol; Silenser; +2 Ответить
2. Dnki 4 06.03.17 22:01 Сейчас в теме
Мысль автора на Нобеля явно не тянет, но я ее поддерживаю. Потому что сам такой прием использую.
И причина в том, что еще не видел ни одного пользователя, по доброй воле меняющего параметры журнала.
3. vampo 23.06.21 07:21 Сейчас в теме
В новых релизах поменяли вызов функций. доработанный код теперь такой.
&НаСервере
Процедура СохранитьНастройки(Номенклатуры)
    ПараметрыЗакрытия = Новый Структура;// Структура может кому надо сохранять не только строку
    ПараметрыЗакрытия.Вставить("Номенклатуры",Номенклатуры);
	ОписаниеНастройки = Новый Структура;
	ОписаниеНастройки.Вставить("КлючОбъекта",  "ФормаВыбораНоменклатурыНастройкиФормы");
	ОписаниеНастройки.Вставить("КлючНастроек", "ТекущаяСтрока");
	ОписаниеНастройки.Вставить("Представление", НСтр("ru = 'Позиционироваться при открытии на ранее использованую позицию'"));
	ОписаниеНастроек = Новый ОписаниеНастроек;
	ЗаполнитьЗначенияСвойств(ОписаниеНастроек, ОписаниеНастройки);
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ОписаниеНастроек.КлючОбъекта, ОписаниеНастроек.КлючНастроек, ПараметрыЗакрытия, ОписаниеНастроек);
КонецПроцедуры

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