новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к материалу: Запрос с произвольно заполненным параметром

    • #1
    • 30.10.2013 08:21
    0
    Запрос с произвольно заполненным параметром  Подробнее>>
    • #2
    • 30.10.2013 08:22
    0
    Мне больше нравится так:
    Номенклатура.Ссылка = &НоменклатураДляОтбора ИЛИ &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка)
    • #3
    • 30.10.2013 08:24
    0
    обходимся одним параметром и без лишних условий
    • #4
    • 30.10.2013 12:03
    0
    А если &НоменклатураДляОтбора = Неопределено или не задан как параметр запроса )))
    • #5
    • 30.10.2013 12:05
    0
    А Р Г
    Мне больше нравится так:
    Номенклатура.Ссылка = &НоменклатураДляОтбора ИЛИ &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка)


    Ну и как при твоем условии отберется весь справочник номенклатуры ))) У тебя идет отбор или пустой ссылки или какой то определенной номенклатуры
    • #6
    • 30.10.2013 12:05
    0
    А Р Г
    Мне больше нравится так:
    Номенклатура.Ссылка = &НоменклатураДляОтбора ИЛИ &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка)


    Ну и как при твоем условии отберется весь справочник номенклатуры ))) У тебя идет отбор или пустой ссылки или какой то определенной номенклатуры
    • #7
    • 30.10.2013 13:35
    0
    на Т1С идея, как у автора, пробегала с месяц назад. оно конечно элегантно, но не надо забывать о производительности, это иногда важно. текст запроса один раз сформировал, и все, а такое условие оптимизатор еще фиг знает как будет оптимизировать.
    чтобы можно было конструктором и дальше пользоваться, достаточно текст не из кусочков строк составлять, а делать "стрзаменить"
    • #8
    • 30.10.2013 17:26
    0
    можно еще так:
    ГДЕ Номенклатура.Ссылка = &НоменклатураДляОтбора или &БезОтбора
    • #9
    • 30.10.2013 18:59
    0
    Ахметьянов Сергей
    Ну и как при твоем условии отберется весь справочник номенклатуры ))) У тебя идет отбор или пустой ссылки или какой то определенной номенклатуры


    ИЛИ &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка) - эта часть условия вернет не отбор по пустой ссылке а тупо - ИСТИНУ, в случае, если не задан параметр. Очень надеюсь, что не нужно объяснять, что это значит. Или наверно нужно... Это означат примерно следующее: - Номенклатура.Ссылка = &НоменклатураДляОтбора ИЛИ Истина, т.е. нихрена это не означает, условие не будет выполняться.

    Ахметьянов Сергей
    А если &НоменклатураДляОтбора = Неопределено или не задан как параметр запроса )))


    а если не определять параметры, то и в твоем запросе ничего не выйдет.
    я подразумевал, что параметр будет вводится интерактивно, ну скажем в форме отчета и т.п., если же параметр будет определяться программно, то одним из вариантов можно будет написать:
    Номенклатура.Ссылка = &НоменклатураДляОтбора ИЛИ &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка) ИЛИ &НоменклатураДляОтбора = Неопределено
    • #10
    • 12.12.2013 11:07
    0
    Как вариант, можно использовать ПостроительЗапроса, для него установить (убрать) отборы, поля и группировки.
    Далее, через ПостроительЗапроса.ПолучитьЗапрос() - получим готовый запрос, с нужным текстом и параметрами.
    • #11
    • 10.01.2014 13:49
    0
    Управление торговлей 11
    чтобы можно было конструктором и дальше пользоваться, достаточно текст не из кусочков строк составлять, а делать "стрзаменить"


    а это как?
    примером покажите пжл-та.
    • #12
    • 14.02.2014 09:01
    0
    А Р Г
    Мне больше нравится так:
    Номенклатура.Ссылка = &НоменклатураДляОтбора ИЛИ &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка)


    Поддерживаю. Только Условия надо поменять местами:
    &НоменклатураДляОтбора = Значение(Справочник.Номенклатура.ПустаяСсылка) Или Номенклатура.Ссылка = &НоменклатураДляОтбора 
    , поскольку при истинности первого условия(если не задан отбор) и операции "Или", программа не полезет вычислять отбор по пустой ссылке, так как в этом нет смысла. Если один из операндов операции "Или" имеет значение "Истина", то как ни крути результат тоже будет "Истина". Аналогично тому если бы была операция "И", и первый аргумент был "Ложь".
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться