Вход | Регистрация
 

1с запрос массив параметров пустой

1с запрос массив параметров пустой
Я
   illiona
 
17.09.20 - 07:00
ВЫБРАТЬ
            РеализацияТоваровУслугСкидкиНаценки.НомерСтроки КАК НомерСтроки,
            РеализацияТоваровУслугСкидкиНаценки.КлючСвязи КАК КлючСвязи,
            РеализацияТоваровУслугСкидкиНаценки.Сумма КАК Сумма,
            РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка КАК СкидкаНаценка
        ПОМЕСТИТЬ ВременнаяТаблица
        ИЗ
            Документ.ЗаказКлиента.СкидкиНаценки КАК РеализацияТоваровУслугСкидкиНаценки
        ГДЕ
            РеализацияТоваровУслугСкидкиНаценки.Ссылка = &Ссылка
            И             
            ВЫБОР КОГДА 0 В (
               ВЫБРАТЬ Количество(*) ИЗ Справочник.СкидкиНаценки ГДЕ СкидкаНаценка В (&СкидкаНаценка))
            ТОГДА
                Истина            ИНАЧЕ
                СкидкаНаценка В (&СкидкаНаценка)
            КОНЕЦ


Добрый день.Если массив параметров пустой выводит все значения, а если не пустой не верно выводит
   PuhUfa
 
1 - 17.09.20 - 07:10
(0) Не так разве должно быть?

ИНАЧЕ РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка В (&СкидкаНаценка)
   Simod
 
2 - 17.09.20 - 07:14
КОЛИЧЕСТВО(*) для пустой таблицы возвращает 0, так что при установке в качестве параметра отбора пустой массив ты получаешь пустую таблицу и соответствующий результат.
   illiona
 
3 - 17.09.20 - 07:29
если в массиве например стоит выводить СкидкаНаценка = скидка1%, скидка2%, а в документе только скидка3%,
он выводит скидка3%, хотя должно быть пусто, т.к. условия не подходят
   Галахад
 
4 - 17.09.20 - 07:30
(3) Как раз и подходят в это условие:
0 В (
               ВЫБРАТЬ Количество(*) ИЗ Справочник.СкидкиНаценки ГДЕ СкидкаНаценка В (&СкидкаНаценка))
   illiona
 
5 - 17.09.20 - 07:32
а он выводит все что есть в документе, а должен только скидка1%, скидка2%
   PuhUfa
 
6 - 17.09.20 - 07:34
Зачем вообще такие танцы? Почему просто не написать:
ВЫБОР 
    КОГДА &ЕстьФильтрПоСкидкам
      ТОГДА РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка В (&СкидкаНаценка)
      ИНАЧЕ Истина
КОНЕЦ

Запрос.УстановитьПараметр("СкидкаНаценка",СкидкаНаценка);
Запрос.УстановитьПараметр("ЕстьФильтрПоСкидкам", ?(СкидкаНаценка.Количество()>0,Истина,Ложь));
   illiona
 
7 - 17.09.20 - 07:39
(6) спасибо
все равно только, если в массиве скидка1%, скидка2%
а в документе только скидка3%
запрос выдает все позиции со скидкой скидка3%, т.е. по массиву не отбирает
   PuhUfa
 
8 - 17.09.20 - 07:47
(7) >>запрос выдает все позиции со скидкой скидка3%, т.е. по массиву не отбирает
как определила? Показывай уж тогда весь запрос
   Simod
 
9 - 17.09.20 - 07:48
(6) Можно и попроще:
|...
|ГДЕ
|      &ЕстьФильтрПоСкидкам ИЛИ РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка В (&СкидкаНаценка)

Запрос.УстановитьПараметр("СкидкаНаценка", СкидкаНаценка);
Запрос.УстановитьПараметр("ЕстьФильтрПоСкидкам", ?(СкидкаНаценка.Количество() > 0, Истина, Ложь));
   illiona
 
10 - 17.09.20 - 07:49
ВЫБРАТЬ
            РеализацияТоваровУслугСкидкиНаценки.НомерСтроки КАК НомерСтроки,
            РеализацияТоваровУслугСкидкиНаценки.КлючСвязи КАК КлючСвязи,
            РеализацияТоваровУслугСкидкиНаценки.Сумма КАК Сумма,
            РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка КАК СкидкаНаценка
        ПОМЕСТИТЬ ВременнаяТаблица
        ИЗ
            Документ.ЗаказКлиента.СкидкиНаценки КАК РеализацияТоваровУслугСкидкиНаценки
        ГДЕ
            РеализацияТоваровУслугСкидкиНаценки.Ссылка = &Ссылка
            И             
             ВЫБОР 
                        КОГДА &ЕстьФильтрПоСкидкам
                  ТОГДА РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка В (&СкидкаНаценка)
          ИНАЧЕ Истина
        КОНЕЦ
       

        ;
        
        ////////////////////////////////////////////////////////////////////////////////

        ВЫБРАТЬ
            РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки,
            РеализацияТоваровУслугТовары.КлючСвязи КАК КлючСвязи,
            РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
            РеализацияТоваровУслугТовары.Склад КАК Склад
        ПОМЕСТИТЬ Таблица2
        ИЗ
            Документ.ЗаказКлиента.Товары КАК РеализацияТоваровУслугТовары
        ГДЕ
            РеализацияТоваровУслугТовары.Ссылка = &Ссылка
        
        ;
        
        ////////////////////////////////////////////////////////////////////////////////

        ВЫБРАТЬ
            Таблица2.КлючСвязи КАК КлючСвязи,
            Таблица2.Номенклатура КАК Номенклатура,
            Таблица2.Склад КАК Склад,
            ВременнаяТаблица.СкидкаНаценка КАК СкидкаНаценка,
            ВременнаяТаблица.Сумма КАК Сумма
        ИЗ
            ВременнаяТаблица КАК ВременнаяТаблица
                ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
                ПО ВременнаяТаблица.КлючСвязи = Таблица2.КлючСвязи
   PuhUfa
 
11 - 17.09.20 - 08:04
(10) Нужен отладчик -( Может конечно утренний кофе еще не начал действовать, но визуально запрос должен работать нормально. Надо отладчиком посмотреть где что и какие заначения по факту
   illiona
 
12 - 17.09.20 - 08:07
Даже так не работает
ВЫБРАТЬ
            РеализацияТоваровУслугСкидкиНаценки.НомерСтроки КАК НомерСтроки,
            РеализацияТоваровУслугСкидкиНаценки.КлючСвязи КАК КлючСвязи,
            РеализацияТоваровУслугСкидкиНаценки.Сумма КАК Сумма,
            РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка КАК СкидкаНаценка
      ИЗ
            Документ.ЗаказКлиента.СкидкиНаценки КАК РеализацияТоваровУслугСкидкиНаценки
        ГДЕ
            РеализацияТоваровУслугСкидкиНаценки.Ссылка = &Ссылка
            И             
             ВЫБОР 
                        КОГДА &ЕстьФильтрПоСкидкам
                  ТОГДА РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка В (&СкидкаНаценка)
          ИНАЧЕ Истина
        КОНЕЦ
   PuhUfa
 
13 - 17.09.20 - 08:10
(12) ну тут пока только одно. В СкидкаНаценка, в момент УстановитьПараметр у тебя все значения скидок
   illiona
 
14 - 17.09.20 - 08:15
т.е. он не будет выводить что я чисто в списке значений установлю?
   illiona
 
15 - 17.09.20 - 08:18
ВЫБРАТЬ
    РеализацияТоваровУслугСкидкиНаценки.НомерСтроки КАК НомерСтроки,
    РеализацияТоваровУслугСкидкиНаценки.КлючСвязи КАК КлючСвязи,
    РеализацияТоваровУслугСкидкиНаценки.Сумма КАК Сумма,
    РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка КАК СкидкаНаценка
ИЗ
    Документ.ЗаказКлиента.СкидкиНаценки КАК РеализацияТоваровУслугСкидкиНаценки
ГДЕ
    РеализацияТоваровУслугСкидкиНаценки.Ссылка = &Ссылка
    и 
    РеализацияТоваровУслугСкидкиНаценки.СкидкаНаценка В (&СкидкаНаценка)

вот так работает, но на пустоту нет проверки
   PuhUfa
 
16 - 17.09.20 - 08:19
(14) Ну нам отсюда не видно где и как ты устанавливаешь значения для СкидкаНаценка. Поставь точку УстановитьПараметр и посмотри что в нем в отладчиком
   illiona
 
17 - 17.09.20 - 08:28
все работает, я делала через консоль)))), сделала через отладчик

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.