Имя: Пароль:
1C
1С v8
Криво обновляется таблица значений на клиенте (1С 8.3 УФ)
0 freelog
 
04.12.15
19:16
Доброго всем вечера!
Ситуация следующая...
Во внешней обработке есть таблица значений.
По запросу, она очищается и перезаполняется новыми данными (на сервере).
На клиенте она обновляется при помощи Оповестить()
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

Визуально таблица на клиенте отображается, но в процедуре
ПриАктивизацииСтроки(Элемент)
параметр
Элементы.МояТаблица.ТекущаяСтрока
показывает странные значения

Например: в таблице было 3 строки, перезаписали таблицу и в ней стало 5 строк (визуально эти 5 строк и отображаются), но при позиционировании курсора на 1-ю строку - параметр
Элементы.МояТаблица.ТекущаяСтрока = 4
как-будто бы счетчик строк не обновился...но предыдущих 3-х строк в таблице не видно
Собственно, вопрос: WTF?
1 Armando
 
04.12.15
21:11
Все нормально. ТекущаяСтрока тебе идентификатор показывает а не номер строки
2 GROOVY
 
04.12.15
21:12
Еще один кто думает что текущая строка это индекс.
3 Остап Сулейманович
 
04.12.15
21:19
(2) Вот объясните тов. преподаватель зачем оно нужно? Вот это вот "ТекущаяСтрока"? Понятно за индекс. Понятно за ТекущиеДанные. Зачем нужно ТекущаяСтрока - я так и не понял. Что с ней можно делать?
4 RomanYS
 
04.12.15
21:31
(3) у таблицы значений были строки ТЗ- по сути ссылки, их, например, можно было поместить в массив и они не изменялись, если удалить строку между ними. Здесь это поле - некий аналог, на который можно "ссылаться"
5 GROOVY
 
04.12.15
21:35
(3) Так идентификатор не только у строк ТЧ и ТЗ бывает, есть еще динамический список. Оно как бы идентифицирует конкретную строку, независимо от того, нажал юзер на сортировку или удаление...
6 freelog
 
04.12.15
21:46
(1)Спасибо, теперь стало понятно.
(2)Думаю, что я такой не последний=)
(5)Все правильно, без идентификатора при сопоставлении строк на клиенте и сервере может произойти каша.
Но, блин, нельзя было назвать параметр "Идентификатор" или "ИдентификаторСтроки"? Путают людей...)

Всем спасибо за участие! Все получилось.

В итоге, было:
Объект.МояТаблица[Элементы.МояТаблица.ТекущаяСтрока]
стало:
Объект.МояТаблица.НайтиПоИдентификатору(Элементы.МояТаблица.ТекущаяСтрока)
7 Остап Сулейманович
 
04.12.15
21:46
(4) + (5) Спасибо. Немного прояснилось. Но прикладной вопрос "как его использовать" остался.
Можно ли например как в обычных формах сделать список (массив) строк куда складывать идентификаторы и быть всегда уверенным, что идентификаторы новой порции данных динамического списка не перезатрут данные предыдущей порции?
8 GROOVY
 
04.12.15
21:52
(7)  А нафига? Можно по идентификатору строку из данных получить.
9 Остап Сулейманович
 
04.12.15
21:58
(8) Не знаю нафига. В порядке бреда - озвучку сделать на конкретные строки.

"Можно по идентификатору строку из данных получить."
Это обратная задача. Имея идентификатор - получить строку. А если нужно на время сеанса хранить какой-то определенный пользователем набор идентификаторов. Для простоты считать, что набор данных для динамического списка за время сеанса не пересоздается.