Имя: Пароль:
1C
1С v8
Выбор номенклатуры, которой нет в регистре
0 Блондинка_
 
09.06.14
12:16
Добрый день! Помогите пожалуйста с запросом в СКД, что-то никак не получается. Есть справочник номенклатура, есть регистр сведений со значениями свойств объектов. Мне нужно выбрать номенклатуру, которой нет в этом регистре, т.е. у которой пустые значения свойств. Пробовала в условии связи поставить <> но тогда элемент номенклатуры попадает в отбор даже когда в регистре совсем другой элемент.
1 Timon1405
 
09.06.14
12:21
ЕСТЬ NULL
2 jsmith82
 
09.06.14
12:21
= null
3 Ненавижу 1С
 
гуру
09.06.14
12:27
вариантов масса, можно NOT IN (SELECT ...)
4 Блондинка_
 
09.06.14
12:31
Сегодня явно не мой день(
ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
ГДЕ
    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)
    И ЗначенияСвойствОбъектов.Свойство = &Свойство
    И ЗначенияСвойствОбъектов.Объект ЕСТЬ NULL
Что-то ничего не выходит
5 ale-sarin
 
09.06.14
12:32
И ЗначенияСвойствОбъектов.Свойство = &Свойство
уберите в соединение
6 Segate
 
09.06.14
12:35
эээ, а внутреннее соединение это слишком просто, да? )
7 Блондинка_
 
09.06.14
12:42
(5) Убрала, получилось, но когда номенклатура попадает в регистр со свойством2 например, а мне нужно отобрать пустые значения свойства1, то тогда эта номенклатура в отбор не попадает
8 Блондинка_
 
09.06.14
12:42
(6) Это интересно как?)
9 Segate
 
09.06.14
12:45
ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        Внутреннее соединение РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
10 Блондинка_
 
09.06.14
12:48
(9) Ну да, и что он выберет? То что есть И в справочнике,И в регистре одновременно
11 PLUT
 
09.06.14
12:48
(6) смотри (3) он плохого не посоветует

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.Ссылка В
                (ВЫБРАТЬ
                    ЗначенияСвойствОбъектов.Объект.Ссылка
                ИЗ
                    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                ГДЕ
                    ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура)
12 Timon1405
 
09.06.14
12:53
(7) Выбираем заранее данные из регистра в ВТ с фильтром по нашему свойству, потом соединяем с Номенклатуру с ВТ слева или как в (11)
13 Segate
 
09.06.14
12:53
а, хосспаде, неправильно прочитал задачу. проще всего с подзапросом... как в (3)
14 Блондинка_
 
09.06.14
13:53
Получилось! Спасибо преогромное!
Я что-то похожее делала недавно (условием было выбор из определенного, заранее полученного подзапросом списка значений), но в этот раз я бы до этого не додумалась))
Я сделала как в (11), просто добавила И ЗначенияСвойствОбъектов.Свойство = &ВидСвойства в подзапрос.
Еще раз спасибо всем!
15 PLUT
 
09.06.14
14:15
(14) на здоровье! вот что фотка в личке животворящая делает
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший