8.х Параметры запроса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Dmitrij, 16 ноя 2009.

  1. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Подскажите как сделать параметры в запросе, например если поля у меня пустые то тогда запрос должен выполняться без учета этих параметров, если один какой то заполнен тогда только с учетом этого параметра
    Код:
    "ВЫБРАТЬ
    |	ВыдачаОтветственным.Регистратор,
    |	ВыдачаОтветственным.Номенклатура,
    |	ВыдачаОтветственным.Дата,
    |	ВыдачаОтветственным.Количество,
    |	ВыдачаОтветственным.Операция
    |ИЗ
    |	РегистрСведений.ВыдачаОтветственным КАК ВыдачаОтветственным
    |ГДЕ
    |	ВыдачаОтветственным.Дата >= &ДатаНач
    |	И ВыдачаОтветственным.Дата <= &ДатаКон
    |	И ВыдачаОтветственным.Получил = &Сотрудник
    |	И ВыдачаОтветственным.Операция = &Операция";
    
    
    
  2. Legion
    Offline

    Legion Опытный в 1С

    Регистрация:
    3 мар 2009
    Сообщения:
    57
    Симпатии:
    1
    Баллы:
    29
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |
    Если Проверяем пусто или нет Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |....;
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Либо использовать конструкцию ВЫБОР КОГДА ....
  4. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    А примерчик можно
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Первый вариант

    в твоем случае
    УсловиенНаСотрудника =?(Сотрудник=Справочники.Сотрудники.ПустаяСсылка(),"","И ВыдачаОтветственным.Получил = &Сотрудник");
    "ВЫБРАТЬ
    | ВыдачаОтветственным.Регистратор,
    | ВыдачаОтветственным.Номенклатура,
    | ВыдачаОтветственным.Дата,
    | ВыдачаОтветственным.Количество,
    | ВыдачаОтветственным.Операция
    |ИЗ
    | РегистрСведений.ВыдачаОтветственным КАК ВыдачаОтветственным
    |ГДЕ
    | ВыдачаОтветственным.Дата >= &ДатаНач
    | И ВыдачаОтветственным.Дата <= &ДатаКон
    | "+УсловиеНАСотрудника+"
    | И ВыдачаОтветственным.Операция = &Операция";

    И т.д
    Можно так

    2й вариант это через "неопределенно" как работает смотри код

    Запрос = Новый Запрос();

    Запрос.УстановитьПараметр("Организация", ДокументОбъект.Организация);
    Запрос.УстановитьПараметр("Дата", КонецМесяца(ДокументОбъект.ПериодРегистрации) + 1);
    Запрос.УстановитьПараметр("ПериодРегистрации", ДокументОбъект.ПериодРегистрации);
    Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлица = Неопределено);
    Запрос.УстановитьПараметр("Физлица", Физлица);

    // ведется ли учет задолженности в разрезе периодов возникновения задолженности
    УчетЗадолженностиПоМесяцам = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), ДокументОбъект.Организация, "УчетЗадолженностиПоМесяцам");
    Запрос.УстановитьПараметр("ПоВсемПериодамРегистрации", НЕ УчетЗадолженностиПоМесяцам);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ЗарплатаОстатки.Физлицо,
    | СУММА(ЗарплатаОстатки.СуммаВзаиморасчетовОстаток) КАК Сумма
    |ИЗ
    | РегистрНакопления.ЗарплатаЗаМесяцОрганизаций.Остатки(
    | &Дата,
    | Организация = &Организация
    | И (&ПоВсемПериодамРегистрации
    | ИЛИ ПериодВзаиморасчетов = &ПериодРегистрации)
    | И (&ПоВсемФизлицам
    | ИЛИ Физлицо В (&Физлица))) КАК ЗарплатаОстатки
    |
    |СГРУППИРОВАТЬ ПО
    | ЗарплатаОстатки.Физлицо";

    Возврат(Запрос.Выполнить().Выгрузить());
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДокументыПоЗаказу.Статья КАК Статья
    ИЗ
    Документ.ЗаказПоставщику.СБ_ДокументыПоЗаказу КАК ДокументыПоЗаказу
    ГДЕ
    ВЫБОР
    КОГДА &ЗаказПоставщику <> ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
    И &ЗаказПоставщику <> НЕОПРЕДЕЛЕНО
    И ЕСТЬNULL(&ЗаказПоставщику, 0) <> 0
    ТОГДА ДокументыПоЗаказу.Ссылка = &ЗаказПоставщику
    ИНАЧЕ ДокументыПоЗаказу.Ссылка ССЫЛКА Документ.ЗаказПоставщику
    КОНЕЦ
    И ДокументыПоЗаказу.Ссылка.СБ_СценарийПланирования = &Сценарий
    И ДокументыПоЗаказу.Ссылка.Проведен"
    

Поделиться этой страницей