Имя: Пароль:
 
1C
1С v8
Как обновить ТЧ документа после события в ТЧ? (Управляемые формы)
0 Alexandr Novicov
 
23.10.19
13:53
Имеем два объекта ОбъектДокумент1 и ОбъектДокумент2

У ОбъектДокумент1 есть ТабличнаяЧасть(ТЧ) с единственным реквизитом СсылкаДокумент2

Разместил ТЧ на форме и добавил поля
1. Поле ОбъектДокумент2
2. Поле ОбъектДокумент2.Реквизит1 (булево)
3. Поле ОбъектДокумент2.Реквизит2 (Строка)
4. Поле ОбъектДокумент2.Реквизит3 (Число)

двойным кликом по строке в ТЧ открывается эта самая СсылкаДокумент2(Объект)
Вносим изменения СсылкаДокумент2(Объект), закрываем документ СсылкаДокумент2(Объект) и вот тут вопрос:
Что сделать что бы событие закрытия документы СсылкаДокумент2(Объект) открытого через ТЧ документа ОбъектДокумент1 обновила ТЧ согласно внесённым изменениям.

&НаКлиенте
Процедура ТЧВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    Док = Элементы.ТЧ.ТекущиеДанные.СсылкаДокумент2(Объект);
    ОткрытьЗначение(Док);
КонецПроцедуры
1 Cyberhawk
 
23.10.19
13:54
Прочитать()
2 Cyberhawk
 
23.10.19
13:54
Но перед этим ОповеститьОбИзменении, чтобы кэш представлений ссылок сбросился
3 Alexandr Novicov
 
23.10.19
13:58
(1) Это понятно, но в какой момент запустить? ОповеститьОбИзмении откуда и кого? получается что через ОткрытьЗначение(Док); Объекты друг о друге не знают
4 Жан Пердежон
 
23.10.19
13:59
ПоказатьЗначение() - смотри первый параметр;
5 Cyberhawk
 
23.10.19
14:00
(3) Можно открывать форму с передачей таблицы или поля ввода в качестве владельца
6 Alexandr Novicov
 
23.10.19
15:05
Получилось, спасибо

1. В ОбъектДокумент1 процедура формы ОбработкаОповещения()

&НаКлиенте
Процедура ТЧВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
       ПоказатьЗначение(,Элементы.ТЧ.ТекущиеДанные.СсылкаДокумент2)
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия =  "ОбъектИзменён" тогда
        ЭтаФорма.Прочитать();    
    КонецЕсли;
КонецПроцедуры

2. В ОбъектДокумент2 процедура формы ПослеЗаписи(). Если ничего не меняли значит и не записываем, а значит и выполнять нету смысла.

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
      Оповестить("ОбъектИзменён",ЭтаФорма);
КонецПроцедуры
7 Alexandr Novicov
 
23.10.19
15:12
Попробовал оставил открытым документ2 и открыл документ1 из списка документов (Не из ТЧ объекта документ2), изменил Документ1, записал, перехожу в открытый ранее документ2 вижу что ТЧ обновлена. Получается оповещение выполняется всегда, без объявления владельца.
8 Жан Пердежон
 
23.10.19
15:45
(6) всё неправильно
9 Alexandr Novicov
 
23.10.19
16:57
(8) Всё работает, что не правильно?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.