Имя: Пароль:
1C
1С v8
определение свойства элемента номенклатура в запросе
0 Kalina
 
25.11.16
15:02
Текст = "ВЫБРАТЬ
          |    ПродажиСебестоимость.Регистратор,
          |    ПродажиСебестоимость.Номенклатура,
          |    ПродажиСебестоимость.ДокументОприходования,
          |    ПродажиСебестоимость.Количество КАК Количество,
          |    ПродажиСебестоимость.Стоимость КАК Стоимость,
          |    ЗначенияСвойствОбъектов.Объект,
          |    ЗначенияСвойствОбъектов.Свойство.Код,
          |    ЗначенияСвойствОбъектов.Свойство.Представление,
          |    ЗначенияСвойствОбъектов.Свойство.Наименование КАК СвойствоНаименование,
          |    ЗначенияСвойствОбъектов.Свойство.ТипЗначения,
          |    ЗначенияСвойствОбъектов.Значение КАК СвойствоЗначение,
          |    ВЫБОР
          |        КОГДА ПродажиСебестоимость.ДокументОприходования ССЫЛКА Документ.КомплектацияНоменклатуры
          |            ТОГДА ПродажиСебестоимость.Стоимость + ПродажиСебестоимость.Количество * 5
          |        ИНАЧЕ ВЫБОР
          |                КОГДА ЗначенияСвойствОбъектов.Значение = ИСТИНА
          |                    ТОГДА ПродажиСебестоимость.Стоимость + ПродажиСебестоимость.Количество * 10
          |                ИНАЧЕ ПродажиСебестоимость.Стоимость
          |            КОНЕЦ
          |    КОНЕЦ КАК СебеСтоимость,
          |    ВЫБОР
          |        КОГДА ПродажиСебестоимость.ДокументОприходования ССЫЛКА Документ.КомплектацияНоменклатуры
          |            ТОГДА ""Да""
          |        ИНАЧЕ ""Нет""
          |    КОНЕЦ КАК Порезанная,
          |    ВЫБОР
          |        КОГДА ЗначенияСвойствОбъектов.Значение = ИСТИНА
          |            ТОГДА ""Да""
          |        ИНАЧЕ ""Нет""
          |    КОНЕЦ КАК Перфорированная
          |ИЗ
          |    РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
          |        ПО ПродажиСебестоимость.Номенклатура = ЗначенияСвойствОбъектов.Объект
          |ГДЕ
          |    (ПродажиСебестоимость.Регистратор = &Документ)
          |    И ((ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод) ИЛИ (ЗначенияСвойствОбъектов.Свойство ЕСТЬ NULL))
          |АВТОУПОРЯДОЧИВАНИЕ" ;
Здравствуйте
проверяю свойство элемента справочника номенклатура в запросе
если свойство установлено - работаетЮ но если свойство не установлено - для этой номенклатуры оно есть в справочнике, но значение его пустое, тогда запрос получается пустой
поставил проверка на NULL - не канает
Буду признателен за подробный разжеваный ответ :)
1 Cool_Profi
 
25.11.16
15:04
|    И ((ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод) ИЛИ (ЗначенияСвойствОбъектов.Свойство = """"))
2 Cool_Profi
 
25.11.16
15:04
И, чтобы два раза не вставать

     |        ПО ПродажиСебестоимость.Номенклатура = ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Номенклатура)
3 Kalina
 
25.11.16
15:25
(1) Не проканало :(
В РегистреСведений для этого элемента номенклатуры нет записи с таким свойством, т.е. типа (ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод) = NULL, но как это написать ?
4 Cool_Profi
 
25.11.16
15:26
ЗначенияСвойствОбъектов.Свойство.Код ЕСТЬ NULL
5 Kalina
 
25.11.16
15:29
(4) не работает, вроде в (0) так и было написано
6 youalex
 
25.11.16
15:30
(2) это вообще не нужно
7 Cool_Profi
 
25.11.16
15:31
(5) У меня работает.
8 Cool_Profi
 
25.11.16
15:31
(6) Нуну. Только сегодня один запросик (кстати по свойствам) ускорил на 3 порядка, просто выразив объект...
9 youalex
 
25.11.16
15:35
(8) ВЫРАЗИТЬ - нужно если идет неявное соединение (получение поля через точку)
Или если нужно получить определенное поле (поле определенного типа) из составного поля
10 youalex
 
25.11.16
15:37
(0) Условие
ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод
перенеси в соединение.
11 ale-sarin
 
25.11.16
15:37
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ПродажиСебестоимость.Номенклатура = ЗначенияСвойствОбъектов.Объект
И ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод

и убрать эту хрень из ГДЕ
12 Kalina
 
25.11.16
16:08
(11) Спасибо друзья, заработало, но, если у элемента нет вообще никаких свойств (есть в списке для этого элемента но не указаны явно) - ни одного - то тоже выборка пустая блть
извиняюсь за свой русский
13 ale-sarin
 
25.11.16
16:34
(12) Покажите нынешний запрос
14 youalex
 
25.11.16
16:35
(12) вот это убрал из ГДЕ?:
И ((ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод) ИЛИ (ЗначенияСвойствОбъектов.Свойство ЕСТЬ NULL))
15 Kalina
 
25.11.16
16:45
(13)
Текст = "ВЫБРАТЬ
          |    ПродажиСебестоимость.Регистратор,
          |    ПродажиСебестоимость.Номенклатура,
          |    ПродажиСебестоимость.ДокументОприходования,
          |    ПродажиСебестоимость.Количество КАК Количество,
          |    ПродажиСебестоимость.Стоимость КАК Стоимость,
          |    ЗначенияСвойствОбъектов.Объект,
          |    ЗначенияСвойствОбъектов.Свойство.Код,
          |    ЗначенияСвойствОбъектов.Свойство.Представление,
          |    ЗначенияСвойствОбъектов.Свойство.Наименование КАК СвойствоНаименование,
          |    ЗначенияСвойствОбъектов.Свойство.ТипЗначения,
          |    ЗначенияСвойствОбъектов.Значение КАК СвойствоЗначение,
          |    ВЫБОР
          |        КОГДА ПродажиСебестоимость.ДокументОприходования ССЫЛКА Документ.КомплектацияНоменклатуры
          |            ТОГДА ПродажиСебестоимость.Стоимость + ПродажиСебестоимость.Количество * 5
          |        ИНАЧЕ ВЫБОР
          |                КОГДА ЗначенияСвойствОбъектов.Значение = ИСТИНА
          |                    ТОГДА ПродажиСебестоимость.Стоимость + ПродажиСебестоимость.Количество * 10
          |                ИНАЧЕ ПродажиСебестоимость.Стоимость
          |            КОНЕЦ
          |    КОНЕЦ КАК СебеСтоимость,
          |    ВЫБОР
          |        КОГДА ПродажиСебестоимость.ДокументОприходования ССЫЛКА Документ.КомплектацияНоменклатуры
          |            ТОГДА ""Да""
          |        ИНАЧЕ ""Нет""
          |    КОНЕЦ КАК Порезанная,
          |    ВЫБОР
          |        КОГДА ЗначенияСвойствОбъектов.Значение = ИСТИНА
          |            ТОГДА ""Да""
          |        ИНАЧЕ ""Нет""
          |    КОНЕЦ КАК Перфорированная
          |ИЗ
          |    РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
          |        ПО ПродажиСебестоимость.Номенклатура = ЗначенияСвойствОбъектов.Объект
          |          И ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод
          |ГДЕ
          |    ПродажиСебестоимость.Регистратор = &Документ
//          |    И ((ЗначенияСвойствОбъектов.Свойство.Код = &СвойствоКод)
  //        |            ИЛИ (ЗначенияСвойствОбъектов.Свойство.Код ЕСТЬ NULL))
          |АВТОУПОРЯДОЧИВАНИЕ" ;
16 ale-sarin
 
25.11.16
16:49
(15) Видимо нет продаж все-таки

И, если Тип значения добавленного свойства Булево, то рекомендуется использовать Категории, а не Свойства. Ну это так, для информации.
17 Kalina
 
25.11.16
16:59
(16) есть продажа, только номенклатура с незаполненными свойствами, соответственно в РС ЗначенияСвойствОбьектов ее вообще нет
18 youalex
 
25.11.16
17:46
(17) не верю.
Попробуй поотрубать поочередно условия/соединения (хотя в данном случае уже смысла нет)

Попробуй оставить только
ВЫБРАТЬ * ИЗ
ИЗ  РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
ГДЕ (ПродажиСебестоимость.Регистратор = &Документ)