Добрый день.

Ситуация такая (8.3, обычный интерфейс):
Имеется форма записи РС (регистра сведений), к полю ввода привязана нестандартная форма выбора - Обработка, которая выводит таблицу значений по запросу.

В форме обработки действие ОповеститьОВыборе передает выбранное значение на форму РС в ОбработкуВыбора, где стоит условие. Если условие выполняется выводится предупреждение и выбранное значение записывается в поле ввода формы РС. Если условию не подходит выбранное значение, в поле ввода ничего не записывается.

Помогите разобраться. В чем может быть дело?

```1c
    ///В Форме записи РС
    Процедура МПНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Обработки.ВыборМП.ПолучитьФорму("Форма", Элемент);
    ФормаВыбора.Поставщик = ЭтаФорма.Поставщик;
    РезультатВыбора = ФормаВыбора.ОткрытьМодально();
    КонецПроцедуры

    ///Если условие выполняется - в поле ввода этой формы передается выбранное
    //значение, если не выполняется - не передается.
    Процедура МПОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ВыбранноеЗначение.Сертификат = Справочники.Сертификаты.НайтиПоКоду("000000004") Тогда
    Предупреждение("блабла");
    КонецЕсли;
    Если (ВыбранноеЗначение.Состояние = ИСТИНА) Тогда
    Предупреждение("бла");
    КонецЕсли;
    КонецПроцедуры

    ///В Форме Обработки
    Процедура КнопкаОКНажатие(Кнопка)
    ВыбранноеМП = ЭтаФорма.ЭлементыФормы.МП.ТекущиеДанные.МП;
    ЭтаФорма.Закрыть();
    КонецПроцедуры

    Процедура ПриОткрытии()
    Запрос = Новый Запрос;
    Запрос.Параметры.Вставить("Поставщик",Поставщик);
    Запрос.Текст = "текст запроса
    |";

    МП = Запрос.Выполнить().Выгрузить();

    ЭтаФорма.ЭлементыФормы.МП.СоздатьКолонки();
    КонецПроцедуры

    Процедура МПВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    ВыбранноеМП = ЭтаФорма.ЭлементыФормы.МП.ТекущиеДанные.МП;
    ЗначениеВыбора = ВыбранноеМП;
    ОповеститьОВыборе(ЗначениеВыбора);
    ЭтаФорма.Закрыть();
    КонецПроцедуры
```
---
Решено:

Надо было сразу отменить стандартную обработку и присвоить
ЭтаФорма.МП = ВыбранноеЗначение;:

```1c
    ///В Форме записи РС
    Процедура МПНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Обработки.ВыборМП.ПолучитьФорму("Форма", Элемент);
    ФормаВыбора.Поставщик = ЭтаФорма.Поставщик;
    РезультатВыбора = ФормаВыбора.ОткрытьМодально();
    КонецПроцедуры

    ///Если условие выполняется - в поле ввода этой формы передается выбранное
    //значение, если не выполняется - не передается.
    СтандартнаяОбработка = Ложь;
    Процедура МПОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ВыбранноеЗначение.Сертификат = Справочники.Сертификаты.НайтиПоКоду("000000004") Тогда
    Предупреждение("блабла");
    КонецЕсли;
    Если (ВыбранноеЗначение.Состояние = ИСТИНА) Тогда
    Предупреждение("бла");
    КонецЕсли;
    ЭтаФорма.МП = ВыбранноеЗначение;
    КонецПроцедуры

    ///В Форме Обработки
    Процедура КнопкаОКНажатие(Кнопка)
    ВыбранноеМП = ЭтаФорма.ЭлементыФормы.МП.ТекущиеДанные.МП;
    ЭтаФорма.Закрыть();
    КонецПроцедуры

    Процедура ПриОткрытии()
    Запрос = Новый Запрос;
    Запрос.Параметры.Вставить("Поставщик",Поставщик);
    Запрос.Текст = "текст запроса
    |";

    МП = Запрос.Выполнить().Выгрузить();

    ЭтаФорма.ЭлементыФормы.МП.СоздатьКолонки();
    КонецПроцедуры

    Процедура МПВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    ВыбранноеМП = ЭтаФорма.ЭлементыФормы.МП.ТекущиеДанные.МП;
    ЗначениеВыбора = ВыбранноеМП;
    ОповеститьОВыборе(ЗначениеВыбора);
    ЭтаФорма.Закрыть();
    КонецПроцедуры
```
---
В процедуре МПОбработкаВыбора установите СтандартнаяОбработка = Ложь, если выбранное значение в поле помещать не нужно.
---
Решено:

Надо было сразу отменить стандартную обработку и присвоить
ЭтаФорма.МП = ВыбранноеЗначение;:

```1c
    ///В Форме записи РС
    Процедура МПНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Обработки.ВыборМП.ПолучитьФорму("Форма", Элемент);
    ФормаВыбора.Поставщик = ЭтаФорма.Поставщик;
    РезультатВыбора = ФормаВыбора.ОткрытьМодально();
    КонецПроцедуры

    ///Если условие выполняется - в поле ввода этой формы передается выбранное
    //значение, если не выполняется - не передается.
    СтандартнаяОбработка = Ложь;
    Процедура МПОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ВыбранноеЗначение.Сертификат = Справочники.Сертификаты.НайтиПоКоду("000000004") Тогда
    Предупреждение("блабла");
    КонецЕсли;
    Если (ВыбранноеЗначение.Состояние = ИСТИНА) Тогда
    Предупреждение("бла");
    КонецЕсли;
    ЭтаФорма.МП = ВыбранноеЗначение;
    КонецПроцедуры

    ///В Форме Обработки
    Процедура КнопкаОКНажатие(Кнопка)
    ВыбранноеМП = ЭтаФорма.ЭлементыФормы.МП.ТекущиеДанные.МП;
    ЭтаФорма.Закрыть();
    КонецПроцедуры

    Процедура ПриОткрытии()
    Запрос = Новый Запрос;
    Запрос.Параметры.Вставить("Поставщик",Поставщик);
    Запрос.Текст = "текст запроса
    |";

    МП = Запрос.Выполнить().Выгрузить();

    ЭтаФорма.ЭлементыФормы.МП.СоздатьКолонки();
    КонецПроцедуры

    Процедура МПВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    ВыбранноеМП = ЭтаФорма.ЭлементыФормы.МП.ТекущиеДанные.МП;
    ЗначениеВыбора = ВыбранноеМП;
    ОповеститьОВыборе(ЗначениеВыбора);
    ЭтаФорма.Закрыть();
    КонецПроцедуры
```