|
|
|
Как программно установить текущую строку в табличной части | ☑ | ||
|---|---|---|---|---|
|
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
|
Короче, получилось:
Форм=Док.ПолучитьФорму("ФормаДокумента"); Форм.Открыть(); ТекСтр=Форм.ДокументОбъект.Работы.Найти(Элемент.Значение); Форм.ТекущийЭлемент=Форм.ЭлементыФормы.Работы; Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр; Фишка была в поиске через Форм.ДокументОбъект |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |