Имя: Пароль:
1C
1С v8
Запрос без указания параметра
0 Валидатор
 
25.11.13
17:14
ВЫБРАТЬ
    АктСверкиВзаиморасчетов.Дата КАК ДатаДокумента,
    АктСверкиВзаиморасчетов.Номер КАК Номер,
    АктСверкиВзаиморасчетов.Организация КАК Организация,
    АктСверкиВзаиморасчетов.Ссылка
ИЗ
    Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ГДЕ
    АктСверкиВзаиморасчетов.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И АктСверкиВзаиморасчетов.Организация = &Организация

Организация, датаначала и датаокончания - реквизиты с формы обработки, если я не задам хоть один из них, то запрос ничего не вернет, организацию не укажу например, и результат запроса будет пуст, а как сделать, что если организация не указанаы, запрос все равно отрабатывает?
1 Господин ПЖ
 
25.11.13
17:21
много вариантов
2 m-serg74
 
25.11.13
17:22
(0) например:
И АктСверкиВзаиморасчетов.Организация = &Организация ИЛИ &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
3 Валидатор
 
25.11.13
17:29
(2) а с датами как?
ВЫБРАТЬ
                   |    АктСверкиВзаиморасчетов.Дата КАК ДатаДокумента,
                   |    АктСверкиВзаиморасчетов.Номер КАК Номер,
                   |    АктСверкиВзаиморасчетов.Организация КАК Организация,
                   |    АктСверкиВзаиморасчетов.Ссылка
                   |ИЗ
                   |    Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
                   |ГДЕ
                   |    (АктСверкиВзаиморасчетов.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                   |            ИЛИ &ДатаНачала = NULL
                   |                И &ДатаОкончания = NULL)
                   |    И (АктСверкиВзаиморасчетов.Организация = &Организация
                   |            ИЛИ &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
не получается
4 zakidonoff
 
25.11.13
17:31
>> если я не задам хоть один из них, то запрос ничего не вернет, организацию не укажу например, и результат запроса будет пуст

Странно. У меня в этом случае с ошибкой вылетает. Что я делаю не так? 0_о
5 Ерепень
 
25.11.13
17:32
(3) а даты задавай предварительно
6 Classic
 
25.11.13
17:33
Используй построитель
7 User_Agronom
 
25.11.13
17:38
Одно из четырёх:
1. Если не заполнены значения их заполнять самому
2. Формировать текст запроса динамически
3. Идти бухать
4. Не идти бухать.
8 AllJoke
 
25.11.13
17:40
Присваивать параметрам запроса "Дата" пустые даты - Дата(1,1,1)
9 zakidonoff
 
25.11.13
17:46
(7) Выбираю 3 -)
10 samozvanec
 
25.11.13
17:50
(0) для забаненых гуглом справа красная "Я"
11 palpetrovich
 
25.11.13
17:55
типа так:
Если НЕ ЗначениеЗаполнено(ДатаНачала) Тогда
ДатаНачала = НачалоГода(ТекщаяДата());

Если НЕ ЗначениеЗаполнено(ДатаОкончания) Тогда
ДатаОкончания = ТекщаяДата();
12 Господин ПЖ
 
25.11.13
17:56
(11) так верстают .удаки (с)
13 bahus
 
25.11.13
17:57
ТС, а зачем тебе это нужно? народ не может дать дельного совета, так как не понятна конечная цель.
14 samozvanec
 
25.11.13
18:02
а чем (2) и (8) не устраивает?
15 palpetrovich
 
25.11.13
18:40
(12) обоснуй  ...(11) - чисто к примеру, а если учесть, что это АктСверкиВзаиморасчетов - то вообще катит ...если руками не удосужились поставить. И уж точно лучше чем "пустая дата"
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой