В этом примере мы выполним собственную проверку перед подстановкой созданного элемента справочника Поставщики в поле ввода накладной Поставщик. Если у нового поставщика установлен признак Ненадежный, то мы отменим стандартную проверку и зададим вопрос, нужно ли подставлять в поле ввода ненадежного поставщика. Если да, то ссылка на ненадежного поставщика, тем не менее, должна попасть в поле ввода.
При нажатии кнопки создания в выпадающем списке у поля накладной Поставщик открывается форма создания нового элемента справочника Поставщики. При этом значения параметров формы справочника ПараметрыВыбора и ДополнительныеПараметры не определены, так как ни программно, ни интерактивно мы их нигде не задавали.
Поэтому, в принципе, любой созданный поставщик может быть подставлен в поле ввода. Но перед этим мы хотим, чтобы пользователь подтвердил свой выбор в случае, если поставщик ненадежный.
Эти действия нужно выполнять в обработчике события ВыборЗначения формы элемента справочника Поставщики. Создадим этот обработчик и заполним его следующим образом (листинг 3.164).
Листинг 3.164. Обработчик события «ВыборЗначения»
&НаКлиенте
Процедура ВыборЗначения(СтандартнаяОбработка)
Если Объект.Ненадежный Тогда
СтандартнаяОбработка = Ложь;
ВыборДоступен = Ложь;
ПоказатьВопрос(Новый ОписаниеОповещения("ВопросЗавершение", ЭтотОбъект), "Вы выбрали ненадежного поставщика! Продолжить тем не менее?", РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
В этом обработчике события происходит проверка соответствия созданного значения параметрам выбора и связям параметров выбора, установленным для поля ввода, инициировавшего создание нового элемента. В момент обработки события эти условия выбора содержатся в свойстве формы справочника ПараметрыВыбора. И по результатам этой проверки свойство формы ВыборДоступен устанавливается в Истина или в Ложь.
Поскольку ПараметрыВыбора не определены, то проверять нечего и свойство ВыборДоступен при выходе из обработчика всегда будет истинно. Мы вмешиваемся в процесс проверки только в том случае, если у созданного поставщика установлен признак Ненадежный.
В этом случае мы отменяем стандартную обработку события (СтандартнаяОбработка = Ложь), а также устанавливаем результат проверки (свойство ВыборДоступен) в значение Ложь. Если больше ничего не делать, то ненадежный поставщик никогда не попадет в поле ввода накладной.
Но мы хотим, чтобы пользователь сам выбирал, нужно ли подставлять в поле ввода ненадежного поставщика или нет. Поэтому с помощью немодального метода ПоказатьВопрос() мы задаем ему этот вопрос с вариантами ответа Да или Нет.
Первым параметром в этот метод передается описание оповещения, описывающее экспортную процедуру, расположенную в модуле формы, ВопросЗавершение(), которая будет вызвана, когда пользователь ответит на вопрос (листинг 3.165).
Листинг 3.165. Обработчик события «ВыборЗначения»
&НаКлиенте
Процедура ВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ОповеститьОВыборе(Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
В параметре РезультатВопроса процедуры обработки оповещения содержится результат ответа пользователя. Если ответ положительный, значит, пользователь хочет подставить в поле ввода накладной поставщика, несмотря на то что он ненадежный.
В этом случае вызывается метод формы ОповеститьОВыборе() и владельцу формы создания нового элемента справочника – полю ввода накладной Поставщик передается выбранное значение (Объект.Ссылка). В результате у поля ввода будет вызвано событие ОбработкаВыбора и ссылка на поставщика попадет в поле накладной.
Если же пользователь ответил Нет, то больше ничего не произойдет и ссылка на поставщика подставлена не будет, так как стандартная обработка события была отменена.
Запустим «1С:Предприятие» и создадим новую накладную. Щелкнем мышью в поле Поставщик и в открывшемся выпадающем списке нажмем кнопку создания. В появившейся форме нового элемента справочника Поставщики укажем наименование элемента, установим признак Ненадежный и нажмем кнопку Записать и закрыть (см. рис. 3.210).
После этого пользователю будет показано сообщение о том, что он выбрал ненадежного поставщика, с возможностью продолжения выбора. Если пользователь хочет продолжить, то ссылка на созданного поставщика будет подставлена в поле накладной Поставщик (рис. 3.210).

Рис. 3.210. Проверка перед подстановкой нового элемента справочника в поле ввода
Если же пользователь отказался от выбора, то ссылка на поставщика подставлена не будет.
Ну, а если созданный поставщик надежный, все сработает «в штатном режиме», так как в этом случае стандартную обработку события ВыборЗначения мы не отменяли.