Здравствуйте!

Есть динамический список на форме. На этой же форме есть Реквизит1.

В событии При активации строки в реквизит1 на форме устанавливается ссылка на выделенный документ.

Есть поле на форме, у которого путь к данным Реквизит1.табличнаяЧасть1 корректно отображает все.

Если менять документ в этом сеансе, то все обновляется. И просто при переключении на другую строку ТЧ отображается именно того документа, который выделен.

Далее, в другом сеансе Пользователь2 меняет документ (и табличную часть)

У Пользователя1 в это время на форме ничего не меняется. (Открыта форма списка документов.) При нажатии F5 в самом списке реквизиты шапки измененного документа видно что меняются

А вот элемент хранящий Реквизит1.табличнаяЧасть1 не обновляется.

Почему? Или может я в принципе реализую это неправильно?

Смысл в том чтобы не открывая документ видеть его табличную часть (на котором стоит курсор).

И дальше при F5 или отлавливая изменение документов этого типа в другом сеансе или по таймеру обновлять отображение в открытой форме

Платформа 8.3.18, документ добавлен в расширении
---
```1c
    &НаСервере
    Процедура ОбновитьСписокТЗНаСервере()

    Если Ссылка = Документы.Документ1.ПустаяСсылка() Тогда
    Если ТЗ.Количество() <> 0 Тогда
    ТЗ.Очистить();
    КонецЕсли;
    Иначе
    ТЗ.Загрузить(Ссылка.ТабличнаяЧасть1.Выгрузить());
    КонецЕсли;

    КонецПроцедуры

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

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ПодключитьОбработчикОжидания("ОбновитьСписокТЗ", 3);
    КонецПроцедуры

    &НаКлиенте
    Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
    ОтключитьОбработчикОжидания("ОбновитьСписокТЗ");
    КонецПроцедуры
```
---
у которого путь к данным Реквизит1.табличнаяЧасть1 Я бы начал с того, что сделал путь по типу "Элементы.Список.ТекущиеДанные.табличнаяЧасть1" и вообще бы убрал обработчик ПриАктивизацииСтроки.
---
я так пробовала, работает. Только мне показалось что медленно при открытии и при F5. Вернула все назад, все равно медленно. Наверное не из-за этого.

Но в Элементе ТабличнаяЧасть1 отображаются строки не по порядку, со случайной сортировкой (может не случайной, но не той что в документе).

Не нашла как задать сортировку в Элементы.Список.ТекущиеДанные.Ссылка.ТабличнаяЧасть1.
---
Для обновления по таймеру можно вызвать команду ПодключитьОработчикОжидания(ИмяЭкспортнойПроцедурыНаКлиенте, ВремяВСекундах).В этой процедуре обновляем динамический список и вызываем процедуру при активизации строки
Элементы.ДинамическийСписок.Обновить();
ДинамическийСписокПриАктивизацииСтроки();
---
А Оповестить() не подойдет для этих целей?)
---
Читала синтакс-помощник, пока не понятно. А оно между сеансами работает?
---
нет, не работает для сеансов. скинул пример (7) в разных сеансах будет работать.

P.S.:Но не нравится мне реализации через таймеры тянуть данные)))
---
я пока не совсем понимаю как это делать (обработчики ожидания), но если первую часть решу, думаю найду пример. Пока не пойму, почему при ручном обновлении через F5 не обновляется табличная часть связанная с ссылкой на документ
---
Как будто форма считала до изменения и все, эти данные и показывает и когда переключаю на другую строку или возвращаю на эту, ТЧ меняется, но показывает то что было до изменения.

Если зайти в тот документ или даже в соседний от Пользователя в текущем сеансе и просто перепровести, то тч обновляется и показывает верно.
---
```1c
    &НаСервере
    Процедура ОбновитьСписокТЗНаСервере()

    Если Ссылка = Документы.Документ1.ПустаяСсылка() Тогда
    Если ТЗ.Количество() <> 0 Тогда
    ТЗ.Очистить();
    КонецЕсли;
    Иначе
    ТЗ.Загрузить(Ссылка.ТабличнаяЧасть1.Выгрузить());
    КонецЕсли;

    КонецПроцедуры

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

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ПодключитьОбработчикОжидания("ОбновитьСписокТЗ", 3);
    КонецПроцедуры

    &НаКлиенте
    Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
    ОтключитьОбработчикОжидания("ОбновитьСписокТЗ");
    КонецПроцедуры
```
---
похоже что это сработает.

Добавила в реквизиты формы списка новый реквизит с типом "(ТаблицаЗначений)", поместила на форму.

При активации стороки, в него считывает актуальные данные.)

Хотя пока что в самом динамическом списке при этом пока не нажмешь обновить отображает старые данные шапки.

Теперь или по таймеру или по таймеру + с условием по датам попробую.
Недавно, вроде на инфостарте, находила вариант - через регистр сведений с датой.

Попробую создать не периодический регистр сведений с измерениями "пользователь" и ресурсом "ДатаИзменения".
И в форме списка документов реквизит "ДатаИзмененияНаФорме"

В событии ПослеЗаписи в модуле документа можно будет добавлять или изменять запись в этом регистре по автору.

И дальше по таймеру и при активации строки, на сервере сверять наибольшую запись по дате, где пользователь не равен текущему с датой в реквизите формы. И если вторая меньше обновлять список

Спасибо! Кажется все теперь должно работать!
---
Я бы пробовал реализовать это через Оповестить()
---
оповестить сработает только в текущем сеансе, а пользователь хочет во всех сеансах)