Имя: Пароль:
1C
1С v8
v8: Отбор номенклатуры по свойству которое не установлено
0 Kozitsyn
 
26.12.12
16:05
Подскажите пожалуйста.

Нужно сделать Запрос ном-ры у которой не установлено нужное свойство. Связываю номенклатуру с рег. свед. Значения свойств объектов, что-то типа:

ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ПартииТоваровНаСкладахОстатки.Номенклатура = ЗначенияСвойствОбъектов.Объект И (НЕ ЗначенияСвойствОбъектов.Объект = &ХарактеристикаНаВывод)

Но он мне наоборот выводит ту ном-ру у которой это свойство установлено.
1 Axel2009
 
26.12.12
16:06
левое соединение ...
где ЗначенияСвойствОбъектов.Объект есть null
2 Kozitsyn
 
26.12.12
16:11
(1) Но при этом же могут другие свойства быть установлены у ном-ры.
3 Kozitsyn
 
26.12.12
16:18
Вот такое тоже не работает:

ПО ВложенныйЗапрос.Объект = ПартииТоваровНаСкладахОстатки.Номенклатура И (ВложенныйЗапрос.Объект ЕСТЬ NULL )
4 Axel2009
 
26.12.12
16:19
(2) в соединение надо добавить отбор по ЗначенияСвойствОбъектов.Свойство
5 Kozitsyn
 
26.12.12
16:23
(4) Сделал так, не работает :(

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, ) КАК ПартииТоваровНаСкладахОстатки ПО ПартииТоваровНаСкладахОстатки.Номенклатура = ЗначенияСвойствОбъектов.Объект И (ЗначенияСвойствОбъектов.Свойство = &ХарактеристикаНаВывод)И (ЗначенияСвойствОбъектов.Объект ЕСТЬ NULL )
6 Axel2009
 
26.12.12
16:28
(5) проверка на NULL написана в каком месте в (1)?
7 Kozitsyn
 
26.12.12
16:33
(6) У меня сейчас вот такой запрос:

ВЫБРАТЬ
   ПартииТоваровНаСкладахОстатки.Номенклатура.Код КАК Код,
   ПартииТоваровНаСкладахОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры,
   ВЫБОР
       КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток > 0
           ТОГДА ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
       ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток
   КОНЕЦ КАК Цена,
   ПартииТоваровНаСкладахОстатки.Номенклатура
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, ) КАК ПартииТоваровНаСкладахОстатки
       ПО (ЗначенияСвойствОбъектов.Свойство = &ХарактеристикаНаВывод)
           И (ЗначенияСвойствОбъектов.Объект ЕСТЬ NULL )
           И ЗначенияСвойствОбъектов.Объект = ПартииТоваровНаСкладахОстатки.Номенклатура
ГДЕ
   ПартииТоваровНаСкладахОстатки.Номенклатура.ПометкаУдаления = ЛОЖЬ
   И ПартииТоваровНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&ОтборПоНоменклатуре)

УПОРЯДОЧИТЬ ПО
   Код
8 Kozitsyn
 
26.12.12
16:34
(7) То что полное соединение у меня указано, то это я просто перебираю все возможные значения, т.к. левое тоже не работает...
9 Ногаминебить
 
26.12.12
16:36
Отобрать всю, у которой установлено и пользовать НЕ В?
10 Axel2009
 
26.12.12
16:37
(8) псц
ВЫБРАТЬ
   ПартииТоваровНаСкладахОстатки.Номенклатура.Код КАК Код,
   ПартииТоваровНаСкладахОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры,
   ВЫБОР
       КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток > 0
           ТОГДА ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
       ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток
   КОНЕЦ КАК Цена,
   ПартииТоваровНаСкладахОстатки.Номенклатура
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ПРАВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, ) КАК ПартииТоваровНаСкладахОстатки
       ПО (ЗначенияСвойствОбъектов.Свойство = &ХарактеристикаНаВывод)
           И ЗначенияСвойствОбъектов.Объект = ПартииТоваровНаСкладахОстатки.Номенклатура
ГДЕ
   ПартииТоваровНаСкладахОстатки.Номенклатура.ПометкаУдаления = ЛОЖЬ
  И ПартииТоваровНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&ОтборПоНоменклатуре)
  И (ЗначенияСвойствОбъектов.Объект ЕСТЬ NULL )

УПОРЯДОЧИТЬ ПО
  Код
11 Kozitsyn
 
26.12.12
16:41
(10) Дай Бог Вам здоровья! ;)