Имя: Пароль:
1C
1С v8
Проверка заполненности составного поля в запросе
0 Звездец
 
02.06.17
17:33
Нужно в запросе проверить заполненность поля. Если поле ссылочного типа, вопросов нет. Но вот если поле составное и может содержать в себе ссылки на документы нескольких типов, то по идее должна работать конструкция

|ВЫБРАТЬ
    |    ТаблицаТовары.НомерСтроки              КАК НомерСтроки,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
    |    &Период                                КАК Период,
    |    ТаблицаТовары.ЗаказПоставщику          КАК Заказ,                      
    |    ТаблицаТовары.Магазин                  КАК Магазин,
    |    ТаблицаТовары.Контрагент               КАК Поставщик,
    |    ТаблицаТовары.Номенклатура             КАК Номенклатура,
    |    ТаблицаТовары.Характеристика           КАК Характеристика,
    |    ТаблицаТовары.Количество               КАК Количество
    |ИЗ
    |    ВтТаблицаТовары КАК ТаблицаТовары
    |ГДЕ
    |   &ФормироватьДвижения
    |   И НЕ ТаблицаТовары.ЗаказПоставщику = Неопределено


Но не работает. Или в этом нужен NULL?
1 kiruha
 
02.06.17
17:37
Проверять на Неопределено и на Пустую ссылку каждого типа
2 kiruha
 
02.06.17
17:37
Неопределено - тип не заполнен
3 Звездец
 
02.06.17
17:38
(2) мне и надо отобрать где незаполнено
4 Звездец
 
02.06.17
17:39
(1) ну тупо перебором пустых ссылок не хотелось бы, их же может быть много
5 kiruha
 
02.06.17
17:39
Чтобы много не писать некоторые не парятся и пишут
ТаблицаТовары.ЗаказПоставщику.ссылка Есть Null
6 Волшебник
 
модератор
02.06.17
17:39
(3) Тогда условие должно быть такое:

ГДЕ &ФормироватьДвижения
И ТаблицаТовары.ЗаказПоставщику = Неопределено
7 HEKPOH
 
02.06.17
17:41
(3) не заполнено в таких случаях бывает двух типов:
1. не выбран тип - Неопределено
2. тип выбран, а ссылка нет - ПустаяСсылка
Именно об этом писали в (1)
8 igork1966
 
02.06.17
17:42
(3) т.е. пустую ссылку ты будешь считать заполненным полем?
9 mehfk
 
02.06.17
17:46
(0) Не должна.
10 Звездец
 
02.06.17
17:56
(7) вот мне как раз таки и нужно выбрать все кроме пустого и пустой ссылки.
11 ГдеСобака Зарыта
 
02.06.17
17:58
В БП 3 есть такая функция
Функция ПолучитьМассивПустыхЗначенийПоОписаниюТипов(ОписаниеТипов) Экспорт

    МассивПустыхЗначений = Новый Массив;
    МассивПустыхЗначений.Добавить(Неопределено);

    Для каждого Тип Из ОписаниеТипов.Типы() Цикл

        МассивПустыхЗначений.Добавить(Новый(Тип));

    КонецЦикла;

    Возврат МассивПустыхЗначений;

КонецФункции

Установка параметра запроса:

Запрос.УстановитьПараметр("ДебиторскаяЗадолженностьСделкаПустыеЗначения",
        ОбщегоНазначенияБПВызовСервера.ПолучитьМассивПустыхЗначенийПоОписаниюТипов(
        ДокументСсылка.Метаданные().ТабличныеЧасти.Расшифровка.Реквизиты.Сделка.Тип));
12 Звездец
 
02.06.17
18:00
(11) Это интересно. Попробую применить
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.