Имя: Пароль:
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) Не знаю нафига. В порядке бреда - озвучку сделать на конкретные строки.

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