Добрый день.
Помогите, пожалуйста понять что не правильно.
Есть форма, которая открывает другую. Во второй вводятся данные, сохраняются, но при закрытии второй формы в первой изменения не отражаются. А если я закрою и заново открою элемент, то данные будут записаны.
Хотелось бы сразу чтобы они обновлялись.

Я попробовала несколько способов, но так и не пришла к решению. В последней из попыток использовала:

Во второй форме:

```1c
    &НаКлиенте
    Процедура ПриЗакрытии()
    Оповестить("ОбновитьФормуЭлемента");
    КонецПроцедуры
```

А в первой:

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

    Если ИмяСобытия= "ОбновитьФормуЭлемента"
    Тогда
    ЭтаФорма.ОбновитьОтображениеДанных(Объект.ПолеHTMLДоступы);
    КонецЕсли;

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

Обновление не происходит. Что я делаю не так?
---
(22) Спасибо большое за помощь!
В моём случае правда пришлось сделать иначе.
У меня есть процедура

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ---------
    КонецПроцедуры
```

Сделала так

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

    Если ИмяСобытия= "ОбновитьФормуЭлемента" Тогда

    ПриСозданииНаСервере(ложь, истина);

    КонецЕсли;

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

Не знаю насколько это правильно с точки зрения программирования, но работает)
---
Следует понимать, что у каждой формы свой экземпляр объекта.
После закрытия второй формы в первую очередь нужно перечитать данные объекта первой формы.
---
Попробуйте так:

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

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

    КонецПроцедуры
```
---
пробовала, так же всё..
Ещё вот так думала

```1c
    Если ИмяСобытия= "ОбновитьФормуЭлемента"
    Тогда
    //ЭтаФорма.ОбновитьОтображениеДанных(Объект.ПолеHTMLДоступы);
    ЭтотОбъект.Прочитать();
    ЭтаФорма.Обновить();
    ЭтаФорма.ОбновлениеОтображенияДанных();
    КонецЕсли;
```
---
Метод "Прочитать" автоматом обновляет форму.

Кстати попробуйте ЭтаФорма.Прочитать();
---
связь форм можно реализовать через параметры формы. Если вы программно меняете данные объекта формы, то нужно его перечитать потом!
---
отладчик поставь, перед

```1c
    ЭтаФорма.ОбновитьОтображениеДанных(Объект.ПолеHTMLДоступы);
```

оно сюда вообще не попадает, или попадает, но обновление не срабатывает ?
---
Вообще не попадает
---
Форма 1 - Объект 1 данные сформированы.

Открывается форма 2, Объект 2. изменяется реквизит МойHTMLДокумент. Сохраняется, закрывается.

Форма 1. Объект все еще 1 (не обновленный). Даем команду "Форма.ОбновитьОтображение". Данные для обновления берутся из Объект1, который все еще не обновлен.
---
Значит я в начале во втором элементе должна прочитать данные?
---
ЭтаФорма.Прочитать();
---
(7) К сожалению, нет..Мне кажется я очень близка к правильному варианту, но что то упускаю.
У меня отладчик не попадает в процедуру обработки. Может её нужно вызвать где-то?
Я просто на форме элемента написала
---
А у формы в событии "Обработка оповещения" эта процедура подключена?
---
Да, подключена
---
вот так подключена ?
---
да,да)
---
У формы элемента справочника однозначно есть сущность "ЭтотОбъект" и "ЭтаФорма".
У этих сущностей однозначно есть метод "Прочитать".
Этот метод однозначно перечитывает данные и обновляет форму.

Где-то что-то не так написано.
---
Отладчик уже попадает!

при вычислении ЭтаФорма.Прочитать(); пишет, что поле объекта не обнаружено
---
Так. Давайте по порядку.

Есть (например) элемент справочника.

У него две формы - форма 1 и форма 2.
Форма 2 вызывается из формы 1. Так?
---
Давайте, расскажу
У меня есть элемент справочника оборудование. Например компьютер.
Открываю его и хочу редактировать данные. Нажимаю на кнопку, открывается вторая форма где можно редактировать эти данные. Ввожу там какие-то записи, а потом сохранив закрываю.
И в первой форме должны показаться эти новые данные. Их нет. Закрываю этот элемент, открываю опять, данные есть) И вот это не очень нужное действие с открытием и закрытием я бы хотела исключить, чтобы пользователю было удобнее.
---
Нажимаю на кнопку, открывается вторая форма где можно редактировать эти данные. Ввожу там какие-то записи, а потом сохранив закрываю.
И в первой форме должны показаться эти новые данные
тебе надо во второй форме, ввести данные, и параметром в обработке оповещения передать их в первую форму.
Там, этот новый текст (или что у тебя там), должен вставится в твое поле..
а сохранится в базу он должен когда, ты нажмешь ОК уже в первой форме, твоего справочника обороудование

примерно так

```1c
    &НаКлиенте
    Процедура ПриЗакрытии()
    Оповестить("ОбновитьФормуЭлемента", ПолеСДанными);
    КонецПроцедуры
```

на первой

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

    Если ИмяСобытия= "ОбновитьФормуЭлемента"
    Тогда
    Объект.ПолеHTMLДоступы = парамер;
```
---
оповещения
(20)

С точки зрения технологии соглашусь с 22.

Смысл дважды редактировать один объект?

Во второй форме вводятся данные и передаются в первую форму. И там уже записываются.

Но с точки зрения текущей проблемы - все должно работать.
---
ЭтаФорма.Прочитать();
так эта форма, или ЭтотОбъект ?
---
я и Объект пробовала, а именно Объект.ПолеHTMLДоступы
И форму...
---
В первой форме.

Форма2 = ПолучитьФорму("ПутьКФорме",,ЭтаФорма);
КопироватьДанныеФормы(Объект,Форма2.Объект);
Форма2.Открыть();

Во второй форме

При Закрытии

КопироватьДанныеФормы(Объект, ЭтаФорма.Владелец.Объект);
Оповестить("Я все сделала!");

В первой форме

Обработка оповещения
Если ИмяСобытия = "Я все сделала!" тогда ЭтаФорма.Прочитать(); КонецЕсли;
---
(22) Спасибо большое за помощь!
В моём случае правда пришлось сделать иначе.
У меня есть процедура

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ---------
    КонецПроцедуры
```

Сделала так

```1c
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

    Если ИмяСобытия= "ОбновитьФормуЭлемента" Тогда

    ПриСозданииНаСервере(ложь, истина);

    КонецЕсли;

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

Не знаю насколько это правильно с точки зрения программирования, но работает)
---
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
---
С точки зрения программирования это плохой стиль - явно вызывать обработчики событий. Если это сработало, значит, нужно посмотреть, какой код из "ПриСозданииНаСервере" обновляет данные формы. И вынести этот код в отдельный метод, например, ОбновитьДанныеФормы() или как-то так назвать. И вызывать этот метод в "ПриСозданииНаСервере" и в обработке оповещения