Волшебный запрос Проверка параметра

Запрос сам проверяет значение Параметра, иначе пришлось бы городить 2 текста запроса (если есть значение параметра и если нет) или «генерировать» текст запроса кусками.

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |   ДоговорыКонтрагентов.Ссылка
        |ИЗ
        |   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |ГДЕ
        |   ВЫБОР
        |           КОГДА &Владелец ССЫЛКА Справочник.Контрагенты
        |               ТОГДА ДоговорыКонтрагентов.Владелец = &Владелец
        |           ИНАЧЕ ИСТИНА
        |       КОНЕЦ
        |   И ВЫБОР
        |           КОГДА &Владелец ССЫЛКА Справочник.Контрагенты
        |               ТОГДА ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
        |           ИНАЧЕ ИСТИНА
        |       КОНЕЦ
        |   И ДоговорыКонтрагентов.Наименование = &Наименование
        |   И ДоговорыКонтрагентов.Организация = &Организация";

    Запрос.УстановитьПараметр("Владелец", Контрагент);
    Запрос.УстановитьПараметр("Наименование", Наименование);
    Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);
    Запрос.УстановитьПараметр("Организация", Организация);

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    Если Выборка.Следующий() Тогда
        Договор = Выборка.Ссылка;
    Иначе
        Если Контрагент = Неопределено Тогда

            ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Договор '" + Наименование + "' не найден!");
            Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();

        Иначе

            Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
            Договор.Владелец = Контрагент;
            Договор.Наименование = Наименование;
            Договор.ВидДоговора = ВидДоговора;
            Договор.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
            Договор.НалоговыйАгентПоОплате = Истина;
            Договор.Организация = ОбщегоНазначения.ГоловнаяОрганизация(Организация);
            Договор.Записать();
            Договор = Договор.Ссылка;

        КонецЕсли;
    КонецЕсли;

Добавить комментарий