Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
02 июн 2024, 08:17

Как активировать нужную строку после обновления табличного поля

Автор archmea, 19 июл 2022, 08:18

0 Пользователей и 1 гость просматривают эту тему.

archmea

Здравствуйте. Подскажите, пожалуйста, как решить такую задачу: во внешней обработке есть табличная часть ФизическиеЛица. Данные передаются на форму в табличное поле ФизическиеЛица. Например, у меня активна строка 17 табличного поля (физ лицо - Иванов И.И.). Происходит обновление таб части, и в табличном поле активной становится строка 1. Как сделать, чтобы после обновления активной оставалась строка с тем же физ лицом (Иванов И.И.) (не факт, что это будет все еще 17-я строка, возможно после обновления это будет 18-я или 19-я)?

&НаКлиенте
Процедура ОбновитьТаблицу(Команда)
    ФизЛицо = Элементы.ФизическиеЛица.ТекущиеДанные.ФизическоеЛицо;
    ОбновитьТаблицуНаСервере(ФизЛицо);
КонецПроцедуры

&НаСервере
Процедура ОбновитьТаблицуНаСервере(ФизЛицо)
........
КонецПроцедуры

LexaK

archmea, так все по порядку и надо делать
1.перед обновлением таб.поля запомнить данные из текущей строки (возможно набор полей, для контроля уникальности)
2.обновить таб.поле
3.выполнить поиск строки по данным запомненным в п.п.1
4.если такие данные нашли, делаете строку текущей (иначе остается текущей первая)
если помогло нажмите: Спасибо!

archmea

LexaK, скажите, пожалуйста, что я делаю не так? после обновления активной все равно становится первая строка
&НаКлиенте
Процедура ОбновитьТаблицу(Команда)
   
   //1.перед обновлением таб.поля запомнить данные из текущей строки (возможно набор полей, для контроля уникальности)
   ФизЛицо = Элементы.ФизическиеЛица.ТекущиеДанные.ФизическоеЛицо;   
   
   //2.обновить таб.поле
    ОбновитьТаблицуНаСервере(ФизЛицо);
      
   //3.выполнить поиск строки по данным запомненным в п.п.1
   НужнаяСтрока = Объект.ФизическиеЛица.НайтиСтроки(Новый Структура("ФизическоеЛицо", ФизЛицо));
   
   //4.если такие данные нашли, делаете строку текущей (иначе остается текущей первая)
   Если НужнаяСтрока.Количество() > 0 Тогда
      Элементы.ФизическиеЛица.ТекущаяСтрока = НужнаяСтрока[0].НомерСтроки;
   Конецесли;

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

LexaK

archmea, попробуйте эту команду
Элементы.ФизическиеЛица.ТекущаяСтрока = НужнаяСтрока[0].НомерСтроки;
заменить на это
Элементы.ФизическиеЛица.ТекущаяСтрока = НужнаяСтрока[0].ПолучитьИдентификатор();
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск