В этом примере мы рассмотрим, как при создании нового элемента справочника из выпадающего списка поля ввода передавать дополнительные параметры выбора в форму нового элемента и обрабатывать их в этой форме.
У реквизита Товар табличной части Товары документа Накладная заданы свойства Связи параметров выбора и Параметры выбора (рис. 3.208).

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

Рис. 3.209. Создание нового элемента справочника при вводе в ссылочное поле
Новый товар будет создан, автоматическая проверка также будет выполнена и успешно пройдена, а ссылка на созданный товар будет подставлена в поле Товар в первую строку таблицы формы накладной.
А вот если в форме создания нового товара указать другого поставщика (отличного от поставщика в накладной), то созданный товар не будет соответствовать связям параметров выбора, установленным в конфигураторе для реквизита накладной Товар (см. рис. 3.208). В результате после автоматической проверки платформа выдаст диагностическое сообщение о том, что новый товар не соответствует условиям выбора, и не подставит его в накладную.
Что касается услуг, то пользователь просто не сможет выбрать этот вид товара при создании из формы накладной. В то время как при создании нового товара из других мест прикладного решения поле Вид товара по-прежнему доступно для изменения и выбор услуг возможен.
Так произошло потому, что дополнительные параметры мы устанавливаем только при нажатии кнопки создания в выпадающем списке у поля таблицы накладной Товар. В остальных случаях в обработчике события ПриСозданииНаСервере() формы нового товара значение параметра ДополнительныеПараметры не определено и выбор услуг разрешен.