Доброго времени суток!

Есть программа Розница. Есть обработка, которая передаёт значение в новую форму, обрабатывается в ней и возвращается. Не пойму, как вернуть. Подскажите пожалуйста

В основной форме:

```1c
    &НаКлиенте
    Процедура ОткрытьФормуИПередатьЗначения(Команда)
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ЗначениеПеременной", Объект.Значение);
    ОткрытьФорму("ВнешняяОбработка.ОткрытиеИПередача.Форма.ФормаВыборЦены", ПараметрыФормы);
    КонецПроцедуры
```

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

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, ПараметрыФормы)
    Объект.НовоеЗначение = Параметры.ЗначениеПеременной;
    КонецПроцедуры
```

```1c
    &НаКлиенте
    Процедура ЗакрытьИВернуть(Команда)
    ЭтаФорма.Закрыть()
```

А как передать новое значение обратно в основную форму объекту Объект.Значение

```1c
    КонецПроцедуры
```
---
(32) Немного проще. Не знаю, почему сразу не сделал:

На стороне формы отправителя (та, что возвращает):

```1c
    Оповестить("Обновить", Объект.ОстатокНовойФормы, ЭтаФорма);
    ЭтаФорма.Закрыть(Объект.Значение);
```

Принимающая форма:

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

    Если Событие = "Обновить" Тогда

    Сообщить(Параметр);
    Объект.Значение = Параметр;

    КонецЕсли;

    КонецПроцедуры
```
---
Кури либо Оповестить / ОбработкаОповещения, либо ОписаниеОповещения для асинхронных вызовов.
Ну или Асинх и прочие Ждать
---
Можно так:
1) В ОткрытьФорму добавить описание оповещение в соответствующий параметр.
2) в ЭтаФорма.Закрыть(<То что хочу передать>)
3) в обработчике описания оповещения обработать что передано.
---
(32) Немного проще. Не знаю, почему сразу не сделал:

На стороне формы отправителя (та, что возвращает):

```1c
    Оповестить("Обновить", Объект.ОстатокНовойФормы, ЭтаФорма);
    ЭтаФорма.Закрыть(Объект.Значение);
```

Принимающая форма:

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

    Если Событие = "Обновить" Тогда

    Сообщить(Параметр);
    Объект.Значение = Параметр;

    КонецЕсли;

    КонецПроцедуры
```
---
Учитывайте, что Оповестить - оповещает все открытые формы.
А вариантов реализации конечно больше 1.
---
Ну то есть ты сам сделал, сам себя и отметил, как правильное решение. Молодец! Так держать!
---
так я отмечаю решение. Чтобы те, кто столкнулся с этой проблемой, легко нашли решение на вопрос в этой ветке форума. Кроме того хочу отметить, данное выделение ответа не несёт никакой пользы мне.
---
в 3 дан исчерпывающий ответ.
То что Вы привели... мягко говоря неправильный, хотя и работающий.
---
Это решение с Оповестить не есть однозначно правильное. Хотя в принципе и рабочее.
Что будет, если у тебя будет открыто несколько форм одного типа. При оповещении все из них получат идентичные сообщения и все выполнят одно и тоже действие...
Лучше как в (3) или ОповеститьОВыборе()

```1c
    &НаКлиенте
    Процедура КомандаТекстов(Команда)
    п = Новый Структура;
    дд = Новый Структура;
    оо = Новый ОписаниеОповещения("ФормаВводЗавершение", ЭтотОбъект, дд);
    ОткрытьФорму("ВнешнийОтчет.Тест1.Форма.ФормаВвода",п, ЭтаФорма, ЭтаФорма,,,оо,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    КонецПроцедуры

    &НаКлиенте
    Процедура ФормаВводЗавершение(р, дд) Экспорт

    Если ТипЗнч(р) = Тип("Структура") Тогда
    Объект.Значение = р.Значение;
    КонецЕсли;

    КонецПроцедуры
```
---
Что будет, если у тебя будет открыто несколько форм одного типа. Вооот! В корень!
---
спасибо за код. В моём случае такое оповещение не затронет ничего лишнего. Оно привязано к одной таблице, к одной её строке. Но на будущее будет полезно. Попробую применить. Благодарю!