Имя: Пароль:
1C
 
Как программно установить текущую строку в табличной части
0 Sheezo
 
31.10.08
14:56
Форм=ТекДок.ПолучитьФорму("ФормаДокумента");
Форм.Открыть();
Форм.ТекущийЭлемент=Док.ЭлементыФормы.Работы;
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр;

ТекСтр - найденная строка этой табличной части

такой вариант не катит - все равно позиционируется на первую строку табличной части. Что не так?
1 Черный всадник
 
31.10.08
14:59
(0) Посмотри внимательно свойства формы
2 Sheezo
 
31.10.08
15:01
Что именно?
3 Черный всадник
 
31.10.08
15:04
Переменная Док - ?
4 Sheezo
 
31.10.08
15:06
нет Форм
5 1Cv8exe
 
31.10.08
15:06
ТабличноеПоле.ТекущаяСтрока (TableBox.CurrentRow)
ТабличноеПоле (TableBox)
ТекущаяСтрока (CurrentRow)
Использование:
Чтение и запись.
Описание:
Содержит текущую строку табличного поля.
Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
См. также:
ТабличноеПоле, свойство ТекущаяКолонка
6 Sheezo
 
31.10.08
15:06
*Форм.ТекущийЭлемент=Форм.ЭлементыФормы.Работы;
7 Sheezo
 
31.10.08
15:07
Хэлп я читал)
8 tsr
 
31.10.08
15:13
Тип какой ТекСтр?
9 kosts
 
31.10.08
15:15
(0) Значит была найдена первая строка или возможно совсем ничего не найдено
10 Черный всадник
 
31.10.08
15:16
(8) В таком случае должно работатаь. Либо происходит повторная инициализация, либо отбор накладывается. Посмотри в отладчике.
11 Sheezo
 
31.10.08
15:19
(10) смотрел в отладчике. ТекущаяСтрока - Неопределено как до присвоения так и после присвоения ТекСтр (ДокументТабличнаяЧастьСтрока). Но и не ругается
12 kosts
 
31.10.08
15:23
(11) Сделай поиск по таблице после Форм.Открыть();
13 Черный всадник
 
31.10.08
15:25
(11) Либо не совпадает тип, либо строка не найдена
14 1Cv8exe
 
31.10.08
15:29
Все работает:

Перем ТекСтр;
Процедура КоманднаяПанель1запомнить(Кнопка)
   ТекСтр = ЭлементыФормы.ДокументыПоВхНДС.ТекущаяСтрока;
   // Вставить содержимое обработчика.
КонецПроцедуры

Процедура КоманднаяПанель1Заполнить(Кнопка)
   //Заполняем документами с входящим НДС
     ЭлементыФормы.ДокументыПоВхНДС.ТекущаяСтрока = ТекСтр;
КонецПроцедуры

В таком варианте перескакивает на ту строку, которую "запомнил"
15 Sheezo
 
31.10.08
15:30
(12) не сработало (
16 Sheezo
 
31.10.08
15:32
(14) Все работает с уже существующей формой. Речь идет о "перескакивании" в программно созданной форме.
17 Sheezo
 
31.10.08
15:33
(16) Вернее, в программно открытой
18 Черный всадник
 
31.10.08
15:35
(17) Это не имеет значения.
19 kosts
 
31.10.08
15:37
Форм=ТекДок.ПолучитьФорму("ФормаДокумента");
Форм.Открыть();
Форм.ТекущийЭлемент=Док.ЭлементыФормы.Работы;

ТекСтр = Форм.ЭлементыФормы.Работы.Найти(ТекТовар, "Номенклатура");

Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр;

И так и не работает?
20 Sheezo
 
31.10.08
15:38
(18) Как раз имеет. Тот же самый кусок кода прекрасно встает на нужную строку:
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр;
21 1Cv8exe
 
31.10.08
15:39
Как это может быть программно созданная форма если ты получаешь реальную форму: "Форм=ТекДок.ПолучитьФорму("ФормаДокумента");" ?
Нужно чтобы ТекущаяСтрока  и ТекСтр имели одинаковый тип.
А у тебя скорее всего ТекСтр это Строка Табличной части. А Текущая строка - это строка табличного поля.
22 Sheezo
 
31.10.08
15:41
(19) У элемента формы "Табличное поле" вообще нет такого метода как "Найти"
23 Sheezo
 
31.10.08
15:44
(21) верно. Как, имея строку табличной части, получить строку табличного поля? Может, и глупый вопрос :)
24 Черный всадник
 
31.10.08
15:44
(21) Внимательно читаем синтаксис помошник.
(22) Кстати, ты в курсе что у тебя и не будет работать, Т.к. ты тек строку из другого объекта выдергиваешь, не из объекта формы.
25 Черный всадник
 
31.10.08
15:45
(23) Он тебя морочит
26 Черный всадник
 
31.10.08
15:46
+(24) Т.е. ТекДок <> Форма.ДокументОбъект
27 kosts
 
31.10.08
15:47
В табличной части есть Найти.
28 1Cv8exe
 
31.10.08
15:49
(24) на сколько внимательно читать надо? А точнее на что обратить внимание?
Может на это: ТекущаяСтрока (CurrentRow)
Описание:
Содержит текущую строку табличного поля.?
29 Черный всадник
 
31.10.08
15:51
(28) Например, на это:
"Расширение табличного поля табличной части
Свойства:
НастройкаОтбораСтрок (RowFilterSettings)
ОтборСтрок (RowFilter)
ПроверкаОтображенияНовойСтроки (NewRowShowCheck)

Описание:
Дополнительные свойства элемента управления ТабличноеПоле, предназначеные для интерактивной работы с табличной частью. Для данного расширения свойства ТекущаяСтрока и ТекущиеДанные имеют значения типа Строка табличной части
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. "
30 1Cv8exe
 
31.10.08
15:52
(23) Пока не знаю как это можно сделать... А понял ) перебором (если строк не много) Запускаешь цикл по табличному полю и встречая необходимое значение делаешь эту строку текущей :)
31 Черный всадник
 
31.10.08
15:52
+(29) И еще тут:
"Примечание:
Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов. "
32 Sheezo
 
31.10.08
15:52
(27) Есть, находится нужная строка в табличной части, но как сделать текущей строкой табличного поля эту "найденную" строку табличной части?
33 Черный всадник
 
31.10.08
15:55
(32)
Форм=ТекДок.ПолучитьФорму("ФормаДокумента");
Форма.ДокументОбъект = ДокументОбъектВТабличнойЧастиКоторгоПроизводилПоиск;
Форм.Открыть();
Форм.ТекущийЭлемент=Док.ЭлементыФормы.Работы;
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр
34 IceSer1
 
31.10.08
15:55
(32) по индексу не пробовал?
35 DancingShadow
 
31.10.08
15:55
(32) Никак. Изменить текущую строку вроде можно только интерактивно. Сам сталкивался  с сабжем, в итоге бросил эту затею
36 DancingShadow
 
31.10.08
15:56
(34) у строки ТП нет не индекса ни номера
37 Черный всадник
 
31.10.08
15:56
(35) Врешь!
38 DancingShadow
 
31.10.08
15:58
(37) возможно. я же написал, что вроде бы
39 zag2art
 
31.10.08
16:06
(32) Есть еще вариант передать твою строку в объект, а текущей делать ПриОткрытии формы
41 Sheezo
 
31.10.08
16:11
Короче, получилось:

Форм=Док.ПолучитьФорму("ФормаДокумента");
Форм.Открыть();
ТекСтр=Форм.ДокументОбъект.Работы.Найти(Элемент.Значение);
Форм.ТекущийЭлемент=Форм.ЭлементыФормы.Работы;
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр;

Фишка была в поиске через Форм.ДокументОбъект
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс