Запрос сам проверяет значение Параметра, иначе пришлось бы городить 2 текста запроса (если есть значение параметра и если нет) или «генерировать» текст запроса кусками.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ДоговорыКонтрагентов.Ссылка |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ВЫБОР | КОГДА &Владелец ССЫЛКА Справочник.Контрагенты | ТОГДА ДоговорыКонтрагентов.Владелец = &Владелец | ИНАЧЕ ИСТИНА | КОНЕЦ | И ВЫБОР | КОГДА &Владелец ССЫЛКА Справочник.Контрагенты | ТОГДА ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора | ИНАЧЕ ИСТИНА | КОНЕЦ | И ДоговорыКонтрагентов.Наименование = &Наименование | И ДоговорыКонтрагентов.Организация = &Организация"; Запрос.УстановитьПараметр("Владелец", Контрагент); Запрос.УстановитьПараметр("Наименование", Наименование); Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора); Запрос.УстановитьПараметр("Организация", Организация); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если Выборка.Следующий() Тогда Договор = Выборка.Ссылка; Иначе Если Контрагент = Неопределено Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Договор '" + Наименование + "' не найден!"); Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка(); Иначе Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); Договор.Владелец = Контрагент; Договор.Наименование = Наименование; Договор.ВидДоговора = ВидДоговора; Договор.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить(); Договор.НалоговыйАгентПоОплате = Истина; Договор.Организация = ОбщегоНазначения.ГоловнаяОрганизация(Организация); Договор.Записать(); Договор = Договор.Ссылка; КонецЕсли; КонецЕсли;