Как сохранить последнее позиционирование на ел-те формы и потом восстановить при открытии ?

1. 6есик 53 09.11.11 16:18 Сейчас в теме
Есть альтернативная форма списка справочника (табличное поле заполняется таблицей значения выгружаемой с запроса). При выборе эл-та форма закрывается, как сделать так что бы при открытии формы наш выбор позиционировался не в самом начале табличного поля а на той записи которая была ранее выбрана ?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. MustDieff 09.11.11 17:01 Сейчас в теме
ЭлементыФормы.ТабличноеПоле.ТекущаяСтрока = СтрокаПозиционирования;

upd: или у тебя проблема заключается в передаче текущей позиции на форму?
3. deniseek77 86 09.11.11 17:03 Сейчас в теме
А так не пробовали?
При закрытии прописать вот так:
у=ЭлементыФормы.ТЗ.ТекущаяСтрока;
СохранитьЗначение("ПредыдущееПоложениеСтроки",у);

При открытии вот так:
ВосстановитьЗначение("ПредыдущееПоложениеСтроки");
6есик; +1 Ответить
4. 6есик 53 09.11.11 17:51 Сейчас в теме
пробовал :

{Справочник.Сотрудники.Форма.ФормаСпискаПоЦФО.Форма(73)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока)
ЭлементыФормы.ТабСотрудники.ТекущаяСтрока = ВосстановитьЗначение("ТабСотрудники");
по причине:
Отсутствует ключ строки
5. 6есик 53 09.11.11 18:29 Сейчас в теме
Делаю так
СохранитьЗначение("Сотр", ЭлементыФормы.ТабСотрудники.ТекущаяСтрока);
ПоследнееЗначение = ВосстановитьЗначение("Сотр");

и ПоследнееЗначение присваивается значение Неопределено .... Почему то значение не сохраняется, или сохраняется но при получении его не возвращает.
8. d.alexandr 408 09.11.11 19:37 Сейчас в теме
(5) 6есик, Скорее всего нужно сохранять не всю текущую строку, а какое-то отдельное поле, потом при открытии уже отталкиваться от сохраненного поля:
СохранитьЗначение("Сотр", ЭлементыФормы.ТабСотрудники.ТекущаяСтрока.Сотрудник);
ПоследнееЗначение = ВосстановитьЗначение("Сотр");
6есик; +1 Ответить
6. deniseek77 86 09.11.11 18:59 Сейчас в теме
попробуйте текущиеданные сохранять...но тоже не факт, я тут тоже параллельно погоняю, самому интересно
7. deniseek77 86 09.11.11 19:01 Сейчас в теме
Есть еще активизироватьпоумолчанию, попробуйте при выходе поставить в положение=истина, может так отработает??
9. d.alexandr 408 09.11.11 19:41 Сейчас в теме
Хотя у меня сохраняет и восстановляет если написать просто ТекущаяСтрока
11. deniseek77 86 10.11.11 00:58 Сейчас в теме
(9) Sanechichek, приложите модуль, как у вас работает? Или это "банальное зарабатывание $m" :) Вопрос: Интересно, как Вы позиционируетесь на ячейке?Строке? А если в этом списке ее- нет?Например она отсутствует, потому что, не попала в отбор или была удалена (например ссылка на удаленный в базе объект)?
12. d.alexandr 408 10.11.11 11:32 Сейчас в теме
(11) deniseek77, я не делал позиционирование на ячейке, просто проверил, что значение сохраняется и восстанавливается. А по поводу "банальное зарабатывание $m", так мне это некчему, к счастью рейтинг позволяет скачивать без ограничений.
10. 6есик 53 09.11.11 20:11 Сейчас в теме
Понял, значит такая конструкция все таки работает , значит буду искать в чем в моей ситуации бока, спасибо.
13. 6есик 53 16.11.11 13:51 Сейчас в теме
У меня данные табличного поля не справочник а ТаблицаЗначений - вот поэтому и не сохраняется текущая строка. Да, я могу сохранить ссылку на сотрудника из текущей строки, но потом как я её найду в табличном поле ???
Теоретически я понимаю что бы потом спозиционировать мне нужно сделать :

ЭлементыФормы.ТабСотрудники.ТекущаяСтрока = (и здесь в моем табличном поле искать строку по сотруднику)

Но как в табличном поле найти строку по известной ссылке Сотрудник незнаю ...
15. MustDieff 16.11.11 15:02 Сейчас в теме
(13)
//ИмяКолонки - имя колонки ТЗ имеющая тип твоей ссылки
СтруктураОтбора = Новый Структура();
СтруктураОтбора.Вставить("ИмяКолонки",Ссылка);
МассивСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураОтбора);
Если МассивСтрок.Количество() > 0 Тогда
   ИскомаяСтрока = МассивСтрок[0];
   ТаблицаЗначений.ТекущаяСтрока = ИскомаяСтрока;
КонецЕсли;
14. H@N 5 16.11.11 14:15 Сейчас в теме
6есик пишет:
ЭлементыФормы.ТабСотрудники.ТекущаяСтрока = (и здесь в моем табличном поле искать строку по сотруднику)


Попробуй использовать функции ЗначениеВФайл(<ИмяФайла>, <ЭлементыФормы.ТабСотрудники.ТекущаяСтрока>) и ЗначениеИзФайла(<ИмяФайла>)
поигравшись именем можно разгрничить или наоборот унифицировать между пользователями.
16. 6есик 53 16.11.11 15:06 Сейчас в теме
Если сохранитьзначение не отрабатывает то я думаю и ЗначениеВФайл точно так же не отработает.
17. MustDieff 16.11.11 15:54 Сейчас в теме
(16) сохраняй ссылку и делай как показано в (15)
6есик; +1 Ответить
18. 6есик 53 16.11.11 16:07 Сейчас в теме
Всем спасибо за помощь, все теперь работает - получилась такая конструкция

Сохраняем так :
СохранитьЗначение("ТабСотрудники", ЭлементыФормы.ТабСотрудники.ТекущаяСтрока.Сотрудник);


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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот