Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проверка на заполнение параметра в запросе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
vet07
1C 8.3 конфигурация самописная, управляемая.
Есть запрос в ГДЕ передается праметр (ТИП Массив):
 ВЫБОР
     КОГДА &Контрагенты ЕСТЬ NULL
         ТОГДА ИСТИНА
      ИНАЧЕ Закупки.Контрагент В (&Контрагенты)
КОНЕЦ


Запрос не работает. Как в запросе проверить массив на заполненность?


Или на НЕОПРЕДЕЛЕНО?

Цитата(vet07 @ 08.10.15, 10:52) необходимо зарегистрироваться для просмотра ссылки
1C 8.3 конфигурация самописная, управляемая.
Есть запрос в ГДЕ передается праметр (ТИП Массив):
 ВЫБОР
     КОГДА &Контрагенты ЕСТЬ NULL
         ТОГДА ИСТИНА
      ИНАЧЕ Закупки.Контрагент В (&Контрагенты)
КОНЕЦ


Запрос не работает. Как в запросе проверить массив на заполненность?


Или на НЕОПРЕДЕЛЕНО?


Пробовал
 ВЫБОР
     КОГДА &Контрагенты = НЕОПРЕДЕЛЕНО
         ТОГДА ИСТИНА
      ИНАЧЕ Закупки.Контрагент В (&Контрагенты)
КОНЕЦ

Вообще выдает ошибку.
TipsyKID
Проверить до выполнения, на этапе установки параметра в запрос.
Запрос.УстановитьПараметр("Контрагенты", ?(ВашМассив.Количество() = 0, неопределено, ВашМассив))
Petre
Или пользовать построитель запроса.
vet07
Цитата(TipsyKID @ 08.10.15, 12:03) необходимо зарегистрироваться для просмотра ссылки
Проверить до выполнения, на этапе установки параметра в запрос.
Запрос.УстановитьПараметр("Контрагенты", ?(ВашМассив.Количество() = 0, неопределено, ВашМассив))


Я так понял, в запросе проверку сделать никак?
Petre
Цитата(vet07 @ 08.10.15, 13:33) необходимо зарегистрироваться для просмотра ссылки
Я так понял, в запросе проверку сделать никак?

Делайте запрос количества различных к справочнику контрагенты с условием ссылка в вашем списке, помещайте во временную таблицу.
VXIIIZ
Я, не понимаю общей идеи, зачем делать такую конструкцию в чем её преимущество.
Вы уже до выполнения запросам можете знать есть контрагенты в массиве или нет.
Зачем же городить огород?

Можно:
1. Делать через построитель запроса и заполнять этот отбор в построитель при наличии заполненного массива.
2. При формировании текста запроса добавлять это условие в зависимости от заполненности.
3. Добавить второй параметр в запрос
ВЫБОР КОГДА &ОтборПоКонтрагентам ТОГДА _.Контрагент В (&МассивКонтрагентов) ИНАЧЕ ИСТИНА КОНЕЦ

Запрос.УстановитьПараметр("ОтборПоКонтрагентам", МассивКонтрагентов.Количество() > 0)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.