Имя: Пароль:
1C
1С v8
Обновление таблицы на форме обработки
,
0 dimm7310
 
15.03.13
12:44
Управляемая форма. На форме обработки есть таблица - табличная часть объекта (Объект.ТЗЗаказы), по мимо нее есть вторая таблица на форме - таблица значений, которая должна заполнятся при движении по строкам первой таблицы (что-то вроде расширенной инфы).

Первая таблица заполняется по результату запроса

Объект.ТЗЗаказы.Загрузить(ТЗ);

вторая таблица в

&НаКлиенте
Процедура ТЗЗаказыПриАктивизацииСтроки(Элемент)
   ТекСтрока = Элементы.ТЗЗаказы.ТекущаяСтрока;
   Данные = Элементы.ТЗЗаказы.ДанныеСтроки(ТекСтрока);

и т.д.


После первоначального заполнении
   ТекСтрока = Элементы.ТЗЗаказы.ТекущаяСтрока;

показывает правильно, но при повторном заполнении показывает неверно, как будто старым строкам прибавились новые, т.е. при клике на первую строку Элементы.ТЗЗаказы.ТекущаяСтрока = 57, хотя визуально таблица обновилась нормально и старых строк на ней нет.

Пробовал на клиенте после заполнения первой таблицы прописывать
   Элементы.ТЗЗаказы.Обновить();

но ситуациюэто не исправило.

Что я делаю не так?
1 butterbean
 
15.03.13
12:45
не так задаешь вопрос
2 dimm7310
 
15.03.13
12:53
(1) вопрос:  как сделать так , что бы на клиенте отражался правильный номер строки в Элементы.ТЗЗаказы.ТекущаяСтрока  ?
3 НЕА123
 
15.03.13
13:05
Элементы.ТЗЗаказы.ТекущиеДанные.ИсходныйНомерСтроки
?
4 dimm7310
 
15.03.13
13:25
(3) получается тоже самое, при повторном заполнении номер первой строки 58 , при следущем = 114
5 dimm7310
 
16.03.13
10:28
up
6 mikecool
 
16.03.13
10:49
(4) может проще для первой таблицы сделать параметр отбора = ссылке на документ и заполнять его при создании формы?
7 dimm7310
 
18.03.13
09:53
не понял я твою мысль.

В первой таблице уже все есть для второй таблицы , в строке первой таблицы есть ячейка в которой свернута ТЗ для второй таблицы, нужно лишь ее развернуть при клике по строке, а что бы ее развернуть я должен узнать номер строки первой таблицы по которой кликнули
&НаКлиенте
Процедура ТЗЗаказыПриАктивизацииСтроки(Элемент)
   ТекСтрока = Элементы.ТЗЗаказы.ТекущаяСтрока;
   Данные = Элементы.ТЗЗаказы.ДанныеСтроки(ТекСтрока);

и вот тут и происходит эта хрень - Элементы.ТЗЗаказы.ТекущаяСтрока возвращает правильные значения только при первом заполнении первой таблицы (после того как форма обработки была закрыта), и если не закрывая форму обработки вызвать процедуру заново заполняющую первую таблицу, то в дальнейшем Элементы.ТЗЗаказы.ТекущаяСтрока - вернет уже не верный номер ,  как будто к старым строкам добавились новые. Т.е. кликая по перво
8 dimm7310
 
18.03.13
09:56
Т.е. кликая по первой строке я уже получу Элементы.ТЗЗаказы.ТекущаяСтрока = 57, а не 0.     57 строк было при первом заполнении таблицы.

Хотя визуально первая таблица заполнилась нормально.
9 dimm7310
 
18.03.13
10:19
уже не знаю что еще можно сделать

ведь должна полностью очищаться перед повторным заполнением

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

и все равно та же хрень
10 butterbean
 
18.03.13
10:33
а че ты ТекущиеДанные() не используешь?? ТекущаяСтрока возвращает не индекс(номер) строки, а идентификатор, его платформа сама назначает, независимо от твоих желаний :-)
11 dimm7310
 
18.03.13
11:06
(10) спасибо, все получилось