Имя: Пароль:
1C
1С v8
УТ, УПП. Характеристики номенклатуры
,
0 ХочуСпец
 
17.07.12
16:56
Есть номенклатура, по которой ведутся доп. Характеристики.
Есть два свойства, предположим: Длина, Высота
Для одного и того элемента номенклатуры заданы следующие характеристики (Длина, Высота):
(1000, 400)
(3000, 300)
(6000, 800)
Необходимо отобрать характеристику этой номенклатуры, у которой:
Свойство: Длина; Значение = 6000
Свойство: Высота; Значение = 800
Т.е. результат (6000, 800)
Как в запросе отобрать нужную характеристику?
1 Быдло замкадное
 
17.07.12
17:38
"Необходимо отобрать характеристику " неправильная постановка задачи.. Тут минимум 2 характеристики выбрать нужно
2 Быдло замкадное
 
17.07.12
17:40
да и что значит в запросе отобрать нужную характеристику ? Характеристики это справочник..
3 Быдло замкадное
 
17.07.12
17:41
а ля

"ВЫБРАТЬ
|    ХарактеристикиНоменклатуры.Ссылка,
|    ХарактеристикиНоменклатуры.ПометкаУдаления,
|    ХарактеристикиНоменклатуры.Предопределенный,
|    ХарактеристикиНоменклатуры.Владелец,
|    ХарактеристикиНоменклатуры.Наименование,
|    ХарактеристикиНоменклатуры.ОКП,
|    ХарактеристикиНоменклатуры.Активная,
|    ХарактеристикиНоменклатуры.Артикул
|ИЗ
|    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|ГДЕ
|    ХарактеристикиНоменклатуры.Владелец = &ТвояНоменклатура"
4 gosn1ck
 
17.07.12
17:42
(2) спасибо кэп :)
(0) свойство хранится в пвх, само значение свойства - в справочнике значения свойств объектов
5 ХочуСпец
 
17.07.12
17:44
(3) какое отношение это имеет к поставленной задаче?
вроде описал задачу понятным языком
6 ХочуСпец
 
17.07.12
17:45
в УПП есть отчет Ведомость по партиям товарам на складах
Там как раз можно отбирать по характеристикам
7 ХочуСпец
 
17.07.12
17:45
(4) все это мне известно
8 gosn1ck
 
17.07.12
17:58
вот пример из розницы, думаю в ут похоже

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

УПОРЯДОЧИТЬ ПО
   СвойстваОбъектов.Ссылка.Наименование
9 gosn1ck
 
17.07.12
17:59
НазначениеСвойств - спр с типом характеристики
ОбъектОтбораЗначений - ссылка спр характеристики
СписокНазначенийСвойств - ссылка спр номенклатуры
10 ХочуСпец
 
18.07.12
09:30
хочу поднять ветку
Еще раз объясню суть:
Необходимо отобрать характеристики номенклатуры по значениям свойств. Причем свойств может быть любое количество. Я привел пример только для двух свойств (Длина, Высота). Это частный пример.

С двумя свойствами все понятно:

ВЫБРАТЬ
   ЗначенияСвойствОбъектов1.Объект
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2
ПО ЗначенияСвойствОбъектов1.Объект = ЗначенияСвойствОбъектов2.Объект
ГДЕ
ЗначенияСвойствОбъектов1.Свойство = &Длина
И ЗначенияСвойствОбъектов1.Значение = &ЗначениеДлины
И ЗначенияСвойствОбъектов2.Свойство = &Высота
И ЗначенияСвойствОбъектов2.Значение = &ЗначениеВысоты

Но как быть если свойств много?
В типовой УПП есть отчет Ведомость по партиям товаров на складах. Там можно отбирать по любому кол-ву свойств.
Направьте на путь истиный? Может как то обойтись построителем?
11 shuhard
 
18.07.12
09:32
(10)[ам можно отбирать по любому кол-ву свойств. ]
нет
не по любому
посмотри запрос и убедись
12 ХочуСпец
 
18.07.12
09:36
(11)

   ТекстЗапроса =    
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    ИсточникДанных.Номенклатура КАК Номенклатура,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Номенклатура),
   |    ИсточникДанных.Организация КАК Организация,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Организация),
   |    ИсточникДанных.Склад КАК Склад,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Склад),
   |    ИсточникДанных.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.ХарактеристикаНоменклатуры),
   |    ИсточникДанных.СерияНоменклатуры КАК СерияНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.СерияНоменклатуры),
   |    ИсточникДанных.ДокументОприходования КАК ДокументОприходования,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.ДокументОприходования),
   |    ИсточникДанных.СтатусПартии КАК СтатусПартии,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.СтатусПартии),
   |    ИсточникДанных.Заказ КАК Заказ,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Заказ),
   |    ИсточникДанных.Качество КАК Качество,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Качество),
   |    ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
   |    ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоНачальныйОстатокВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоНачальныйОстатокВБазовыхЕдиницах,
   |    ИсточникДанных.КоличествоПриход КАК КоличествоПриход,
   |    ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоПриходВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоПриходВБазовыхЕдиницах,
   |    ИсточникДанных.КоличествоРасход КАК КоличествоРасход,
   |    ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоРасходВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоРасходВБазовыхЕдиницах,
   |    ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
   |    ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоКонечныйОстатокВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоКонечныйОстатокВБазовыхЕдиницах,
   |    ИсточникДанных.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток,
   |    ИсточникДанных.СтоимостьПриход КАК СтоимостьПриход,
   |    ИсточникДанных.СтоимостьРасход КАК СтоимостьРасход,
   |    ИсточникДанных.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток,
   |    ИсточникДанных.Регистратор КАК Регистратор,
   |    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор),
   |    ИсточникДанных.Период КАК Период,
   |    НачалоПериода(ИсточникДанных.Период, День) КАК ПериодДень,
   |    НачалоПериода(ИсточникДанных.Период, Неделя) КАК ПериодНеделя,
   |    НачалоПериода(ИсточникДанных.Период, Декада) КАК ПериодДекада,
   |    НачалоПериода(ИсточникДанных.Период, Месяц) КАК ПериодМесяц,
   |    НачалоПериода(ИсточникДанных.Период, Квартал) КАК ПериодКвартал,
   |    НачалоПериода(ИсточникДанных.Период, Полугодие) КАК ПериодПолугодие,
   |    НачалоПериода(ИсточникДанных.Период, Год) КАК ПериодГод
   |    //ПОЛЯ_СВОЙСТВА
   |    //ПОЛЯ_КАТЕГОРИИ
   |{ВЫБРАТЬ
   |    Номенклатура.*,
   |    Организация.*,
   |    Склад.*,
   |    ХарактеристикаНоменклатуры.*,
   |    СерияНоменклатуры.*,
   |    ДокументОприходования.*,
   |    СтатусПартии.*,
   |    Заказ.*,
   |    Качество.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоНачальныйОстатокВЕдиницахДляОтчетов,
   |    КоличествоНачальныйОстатокВБазовыхЕдиницах,
   |    КоличествоПриход,
   |    КоличествоПриходВЕдиницахДляОтчетов,
   |    КоличествоПриходВБазовыхЕдиницах,
   |    КоличествоРасход,
   |    КоличествоРасходВЕдиницахДляОтчетов,
   |    КоличествоРасходВБазовыхЕдиницах,
   |    КоличествоКонечныйОстаток,
   |    КоличествоКонечныйОстатокВЕдиницахДляОтчетов,
   |    КоличествоКонечныйОстатокВБазовыхЕдиницах,
   |    СтоимостьНачальныйОстаток,
   |    СтоимостьПриход,
   |    СтоимостьРасход,
   |    СтоимостьКонечныйОстаток,
   |    Регистратор.*,
   |    Период,
   |    ПериодДень,
   |    ПериодНеделя,
   |    ПериодДекада,
   |    ПериодМесяц,
   |    ПериодКвартал,
   |    ПериодПолугодие,
   |    ПериодГод
   |    //ПСЕВДОНИМЫ_СВОЙСТВА
   |    //ПСЕВДОНИМЫ_КАТЕГОРИИ
   |}
   |ИЗ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор {&Периодичность},, {
   |    Номенклатура.* КАК Номенклатура,
   |    Организация.* КАК Организация,
   |    Склад.* КАК Склад,
   |    ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
   |    СерияНоменклатуры.* КАК СерияНоменклатуры,
   |    ДокументОприходования.* КАК ДокументОприходования,
   |    СтатусПартии.* КАК СтатусПартии,
   |    Заказ.* КАК Заказ,
   |    Качество.* КАК Качество}) КАК ИсточникДанных
   |//СОЕДИНЕНИЯ
   |{ГДЕ
   |    ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
   |    ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоНачальныйОстатокВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоНачальныйОстатокВБазовыхЕдиницах,
   |    ИсточникДанных.КоличествоПриход КАК КоличествоПриход,
   |    ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоПриходВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоПриходВБазовыхЕдиницах,
   |    ИсточникДанных.КоличествоРасход КАК КоличествоРасход,
   |    ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоРасходВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоРасходВБазовыхЕдиницах,
   |    ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
   |    ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоКонечныйОстатокВЕдиницахДляОтчетов,
   |    ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоКонечныйОстатокВБазовыхЕдиницах,
   |    ИсточникДанных.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток,
   |    ИсточникДанных.СтоимостьПриход КАК СтоимостьПриход,
   |    ИсточникДанных.СтоимостьРасход КАК СтоимостьРасход,
   |    ИсточникДанных.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток,
   |    ИсточникДанных.Регистратор.* КАК Регистратор,
   |    ИсточникДанных.Период КАК Период,
   |    НачалоПериода(ИсточникДанных.Период, День) КАК ПериодДень,
   |    НачалоПериода(ИсточникДанных.Период, Неделя) КАК ПериодНеделя,
   |    НачалоПериода(ИсточникДанных.Период, Декада) КАК ПериодДекада,
   |    НачалоПериода(ИсточникДанных.Период, Месяц) КАК ПериодМесяц,
   |    НачалоПериода(ИсточникДанных.Период, Квартал) КАК ПериодКвартал,
   |    НачалоПериода(ИсточникДанных.Период, Полугодие) КАК ПериодПолугодие,
   |    НачалоПериода(ИсточникДанных.Период, Год) КАК ПериодГод
   |    //УСЛОВИЯ_СВОЙСТВА
   |    //УСЛОВИЯ_КАТЕГОРИИ
   |}
   |{УПОРЯДОЧИТЬ ПО
   |    Номенклатура.*,
   |    Организация.*,
   |    Склад.*,
   |    ХарактеристикаНоменклатуры.*,
   |    СерияНоменклатуры.*,
   |    ДокументОприходования.*,
   |    СтатусПартии.*,
   |    Заказ.*,
   |    Качество.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоНачальныйОстатокВЕдиницахДляОтчетов,
   |    КоличествоНачальныйОстатокВБазовыхЕдиницах,
   |    КоличествоПриход,
   |    КоличествоПриходВЕдиницахДляОтчетов,
   |    КоличествоПриходВБазовыхЕдиницах,
   |    КоличествоРасход,
   |    КоличествоРасходВЕдиницахДляОтчетов,
   |    КоличествоРасходВБазовыхЕдиницах,
   |    КоличествоКонечныйОстаток,
   |    КоличествоКонечныйОстатокВЕдиницахДляОтчетов,
   |    КоличествоКонечныйОстатокВБазовыхЕдиницах,
   |    СтоимостьНачальныйОстаток,
   |    СтоимостьПриход,
   |    СтоимостьРасход,
   |    СтоимостьКонечныйОстаток,
   |    Регистратор.*,
   |    Период,
   |    ПериодДень,
   |    ПериодНеделя,
   |    ПериодДекада,
   |    ПериодМесяц,
   |    ПериодКвартал,
   |    ПериодПолугодие,
   |    ПериодГод
   |    //ПСЕВДОНИМЫ_СВОЙСТВА
   |    //ПСЕВДОНИМЫ_КАТЕГОРИИ
   |}
   |ИТОГИ
   |    СУММА(КоличествоНачальныйОстаток),
   |    СУММА(КоличествоНачальныйОстатокВЕдиницахДляОтчетов),
   |    СУММА(КоличествоНачальныйОстатокВБазовыхЕдиницах),
   |    СУММА(КоличествоПриход),
   |    СУММА(КоличествоПриходВЕдиницахДляОтчетов),
   |    СУММА(КоличествоПриходВБазовыхЕдиницах),
   |    СУММА(КоличествоРасход),
   |    СУММА(КоличествоРасходВЕдиницахДляОтчетов),
   |    СУММА(КоличествоРасходВБазовыхЕдиницах),
   |    СУММА(КоличествоКонечныйОстаток),
   |    СУММА(КоличествоКонечныйОстатокВЕдиницахДляОтчетов),
   |    СУММА(КоличествоКонечныйОстатокВБазовыхЕдиницах),
   |    СУММА(СтоимостьНачальныйОстаток),
   |    СУММА(СтоимостьПриход),
   |    СУММА(СтоимостьРасход),
   |    СУММА(СтоимостьКонечныйОстаток)
   |    //ИТОГИ_СВОЙСТВА
   |    //ИТОГИ_КАТЕГОРИИ
   |ПО
   |    ОБЩИЕ
   |{ИТОГИ ПО
   |    Номенклатура.*,
   |    Организация.*,
   |    Склад.*,
   |    ХарактеристикаНоменклатуры.*,
   |    СерияНоменклатуры.*,
   |    ДокументОприходования.*,
   |    СтатусПартии.*,
   |    Заказ.*,
   |    Качество.*,
   |    Регистратор.*,
   |    Период,
   |    ПериодДень,
   |    ПериодНеделя,
   |    ПериодДекада,
   |    ПериодМесяц,
   |    ПериодКвартал,
   |    ПериодПолугодие,
   |    ПериодГод
   |    //ПСЕВДОНИМЫ_СВОЙСТВА
   |    //ПСЕВДОНИМЫ_КАТЕГОРИИ
   |}";

Отбор по свойствам на уровне построителя