Имя: Пароль:
1C
1С v8
Как активизировать табличную часть формы ранее не видимую
,
0 idemat
 
13.04.16
11:05
Хочу на форме документа показывать табличную часть при необходимости ввода дополнительной информации.
При открытии формы устанавливаю Видимость в Ложь, затем по кнопке делаю Видимой, добавляю строку. Хочу сделать активизировать введенную строку,
но метод текущийЭлемент отрабатывает только если табличная часть была изначально видимая.

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

КонецПроцедуры
1 Pro-tone
 
13.04.16
11:08
(0) Элементы.ТабличнаяЧасть.ТекущаяСтрока = ТабличнаяЧасть.Количество()-1
2 idemat
 
13.04.16
11:14
Дело не в позиционировании. В момент вызова процедуры табличная часть невидима. Код который я привел рабочий, при условии что табличная часть видима. Если уствновить видимость табличной части в ложь, перестает работать. Я так понимаю, управляемая форма обновляется только после завершения процедуры. Пробовал вставлять методы ОбновитьДанные, Получить. Не помогло.
3 idemat
 
13.04.16
11:17
Сам метод ЭтаФорма.ТекущийЭлемент = Элементы.ТабличнаЧасть не отробатывает если на форме ТабличнаяЧасть на видна, даже при том что в процедуре сначала я делаю ее видимой, а потом примення ЭтаФорма.ТекущийЭлемент.
4 Pro-tone
 
13.04.16
11:22
(3) а зачем тебе ее активизировать? активизируй строку как я написал в (1)
5 idemat
 
13.04.16
14:19
Так не работает
Элементы.ТабличнаяЧасть.ТекущаяСтрока = ТабличнаяЧасть.Количество()-1
даже когда табличная часть видима.
Все дело в том, что в теле самой процедуры я меняю видимость элементов формы. Если видимость изначально установлена и не изменяется,то с помощью ЭтаФорма.ТекущийЭлемент = Элементы.Поле1 можно активировать любое поле. Если перед вызовом моей процедуры ТабличнаяЧасть не видима, и я программно устанавливаю ее видимость метод ЭтаФорма.ТекущийЭлемент = Элементы.Поле1 перестает работать. Я проверел это не только для табличной части, но я для простого поля ввода.
6 FIXXXL
 
13.04.16
14:36
если разделить управление видимостью и добавление строки на две процедуры?
7 FIXXXL
 
13.04.16
14:38
вот этот кусок

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

попробуй вынести в отдельную процедуру и ее уже дергать
8 idemat
 
13.04.16
15:00
FIXXX  - попробовал, не работает.
Мои дальнейшие исследования показали, что если во время исполнения процедуры становится видимым какой-нибудь любой элемент формы ( я пробовал табличную часть и поле ввода) у которого до исполнения процедуры была видимость ложь, то активизировать элемент формы с помощью ЭтаФорма.ТекущийЭлемент не получается. Если процедуру отработать дважды, то во второй раз, когда табличная часть уже видима активизация происходит.
9 Карупян
 
13.04.16
15:05
ПодключитьОбработчикОжидания("АктивизироватьМоюТЧ", 0.1)
10 idemat
 
13.04.16
15:15
А процессор нагрузится. Помнится мне в 7-ке обработка ожидания нагружала процессор. и потом из-за такой фичи не хотелось городить огород. Это баг 8-ки?
11 FIXXXL
 
13.04.16
15:28
(10) не переживай так за процессор
писатели типовых на пилюют :)
12 idemat
 
13.04.16
15:48
(11) заработало ))
но осадок остался ((