Не отрабатывает условие в запросе

1. anterehin 15 04.12.12 08:33 Сейчас в теме
Доброе время суток!!!
Вопрос следующего характера есть запрос
Запрос



Почему то не отрабатывает условие НЕ ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи ЕСТЬ NULL. ДокументСвязи имеет составной тип, и выдаёт значение NULL но условие не отрабатывает


Запись в регистре

Период Регистратор Номер строки Договор Документ связи Сумма
21.02.2012 0:00:00 Выписка банка МЛ-000090 от 21.02.2012 0:00:00 1 Контролируемый договор 7672МЛК от 29.12.2011 17:28:22 895,57


Если в запросе вывести ТипЗначения(ДокументСвязи) то получается NULL
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Ёпрст 1067 04.12.12 10:19 Сейчас в теме
НЕ ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи.Ссылка ЕСТЬ NULL 


так пробуй, для начала
fanast2; axelerleo; Bukaska; anterehin; +4 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 04.12.12 09:08 Сейчас в теме
(1) anterehin, не надо путать значение в результатах запроса и значение, которое нарисовано в выводе этих результатов. Пустое поле в регистре - это не NULL, а пустая ссылка. У 1с есть несколько видов пустых значений и они все разные.
Есть NULL - это когда в запросе левое соединение и во второй таблице нет записи.
Bukaska; olbu; +2 Ответить
3. anterehin 15 04.12.12 09:40 Сейчас в теме
Есть NULL - это когда в запросе левое соединение и во второй таблице нет записи.
вы не путаете Есть NULL и ЕСТЬNULL? ЕСТMNULL(<Выражение>,<Выражение>) как раз присваивает при соединение значение тем записям которых нет. Как тогда проверить измерение на незаполненность если он имеет составной тип?
6. starjevschik 04.12.12 10:18 Сейчас в теме
(3) anterehin, не путаю.
Ответа, честно говоря, не знаю. Если список типов не очень длинный, я бы, наверное, сделал бы список пустых ссылок по этим типам и проверку на вхождение в этот список.
Ну еще я бы воспользовался яндексом, я иногда так делаю. Например вот
НЕ РеализацияТоваровУслуг.Заказчик.Ссылка Есть NULL

здесь http://www.forum.mista.ru/topic.php?id=268686

ЗЫ правда, я так подумал, ведь условие вида
НЕ РеализацияТоваровУслуг.Заказчик.Ссылка Есть NULL

- это ж неявное соединение со ВСЕМИ таблицами, которые входят в этот составной тип. Если их много, прикольный запросец получается.
Akela_Crimea; anterehin; +2 Ответить
4. anterehin 15 04.12.12 10:02 Сейчас в теме
Пробовал делать проверку на пустую ссылку , не прокатывает.. Наверно потому что там составной тип. Хотя проверял по всем видам
5. anterehin 15 04.12.12 10:10 Сейчас в теме
Задача заключается в следующем... нужно запросом по договору выбрать все записи регистра где заполнено измерение ДокументСвязи
7. Ёпрст 1067 04.12.12 10:19 Сейчас в теме
НЕ ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи.Ссылка ЕСТЬ NULL 


так пробуй, для начала
fanast2; axelerleo; Bukaska; anterehin; +4 Ответить
8. Akela_Crimea 04.12.12 22:41 Сейчас в теме
(7) Ёпрст, вариант рабочий. И, похоже, в данном случае самый подходящий.
(6) starjevschik, по сути тот же ответ, да ещё с уточнением про неявное соединение со ВСЕМИ таблицами составного типа.
Маленькое уточнение:
У пустого значения составного типа пустое значение НЕОПРЕДЕЛЕНО Вот с ним и можно сравнивать
ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи <> НЕОПРЕДЕЛЕНО

Но в таком случае мы пропустим пустые значения возможных типов. А они тоже могут быть в регистре.
Можно написать что-то вроде:
ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи <> НЕОПРЕДЕЛЕНО
И ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи <> ЗНАЧЕНИЕ(Документы.Док1.ПустаяСсылка)
И ВзаиморасчетыПоДокументамОстаткиИОбороты.ДокументСвязи <> ЗНАЧЕНИЕ(Документы.Док2.ПустаяСсылка)

как и предложил starjevschik.
Такой вариант будет работать быстрее, чем ДокументСвязи.Ссылка ибо убираются неявные соединения. Но писать дольше и не забывать менять в случае изменения состава типа.
Так что выбирать в каждом конкретном случае исходя из задачи.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот