Имя: Пароль:
1C
1С v8
Прошу помощи с запросом
0 Rounder
 
25.02.13
11:52
Возможно ли такое вообще сделать с помощью запроса?
Есть справочник Номенклатура, есть план видов характеристик СвойстваОбъектов, есть регистр сведений ЗначенияСвойствОбъектов.
Т.о. у каждой номенклатуры есть определенный набор свойств (допустим, что этот набор одинаков для каждой номенклатуры, различны только значения свойств)
Как получить список - где в одной плоскости с реквизитами лягут и все свойства номенклатуры:

Наименование Вид Код Свойство1 Свойство2 Свойство3 ...
1 Волшебник
 
25.02.13
11:53
на каждое свойство нужно отдельное левое соединение
2 Fragster
 
гуру
25.02.13
11:53
при выводе ты ты можешь таколей получить запросто. а не при выводе оно нафиг не надо
3 Волшебник
 
25.02.13
11:53
условие соединения: номенклатура = номенклатура и вид свойства = &нужное
4 Kom-off
 
25.02.13
11:53
Если набор свойств известен и заранее определен, то самый простой способ организовать на получение каждого свойства свое левое соединение к РС.ЗначенияСвойствОбъектов. Сколько колонок со свойствами, столько и левых соединений.
5 Fragster
 
гуру
25.02.13
11:55
а если свойств 500, то можно запустить отчет и пойти обедать, например
6 Тролль главный
 
25.02.13
11:55
а зачем все это?
7 Rounder
 
25.02.13
11:56
(6) Нужно для каждого вида номенклатуры иметь свой динамический список.
8 IVT_2009
 
25.02.13
11:58
То же самое решал через левосторонний запрос. Надо было в линейку положить емкость , крепость и производителя. Тормознуто как то получилось только.


ПостроительОтчета.Текст = "ВЫБРАТЬ
                             |    Номенклатура.Наименование,
                             |    Номенклатура.Ссылка
                             |ПОМЕСТИТЬ Товар
                             |ИЗ
                             |    Справочник.Номенклатура КАК Номенклатура
                             |;
                             |
                             |////////////////////////////////////////////////////////////////////////////////
                             |ВЫБРАТЬ РАЗЛИЧНЫЕ
                             |    ЗначенияСвойствОбъектов.Значение,
                             |    ЗначенияСвойствОбъектов.Объект.Ссылка
                             |ПОМЕСТИТЬ Емкость
                             |ИЗ
                             |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                             |ГДЕ
                             |    ЗначенияСвойствОбъектов.Свойство.Наименование = ""Емкость""
                             |;
                             |
                             |////////////////////////////////////////////////////////////////////////////////
                             |ВЫБРАТЬ РАЗЛИЧНЫЕ
                             |    ЗначенияСвойствОбъектов.Значение,
                             |    ЗначенияСвойствОбъектов.Объект.Ссылка
                             |ПОМЕСТИТЬ Крепость
                             |ИЗ
                             |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                             |ГДЕ
                             |    ЗначенияСвойствОбъектов.Свойство.Наименование = ""Крепость""
                             |;
                             |
                             |////////////////////////////////////////////////////////////////////////////////
                             |ВЫБРАТЬ РАЗЛИЧНЫЕ
                             |    ЗначенияСвойствОбъектов.Значение,
                             |    ЗначенияСвойствОбъектов.Объект.Ссылка
                             |ПОМЕСТИТЬ Производитель
                             |ИЗ
                             |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                             |ГДЕ
                             |    ЗначенияСвойствОбъектов.Свойство.Наименование = ""Производитель""
                             |;
                             |
                             |////////////////////////////////////////////////////////////////////////////////
                             |ВЫБРАТЬ РАЗЛИЧНЫЕ
                             |    Штрихкоды.Штрихкод,
                             |    Штрихкоды.Владелец.Ссылка
                             |ПОМЕСТИТЬ ШК
                             |ИЗ
                             |    РегистрСведений.Штрихкоды КАК Штрихкоды
                             |;
                             |
                             |////////////////////////////////////////////////////////////////////////////////
                             |ВЫБРАТЬ
                             |    Товар.Ссылка.Ссылка КАК Товар,
                             |    ВЫРАЗИТЬ(Емкость.Значение как ЧИСЛО(15,2)) как Емкость,
                             |    ВЫРАЗИТЬ(Крепость.Значение КАК ЧИСЛО(15,2)) КАК Крепость,
                             |    Производитель.Значение КАК Производитель,
                             |    ШК.Штрихкод
                             |ИЗ
                             |    Товар КАК Товар
                             |        ЛЕВОЕ СОЕДИНЕНИЕ Емкость КАК Емкость
                             |        ПО Товар.Ссылка = Емкость.ОбъектСсылка
                             |        ЛЕВОЕ СОЕДИНЕНИЕ Крепость КАК Крепость
                             |        ПО Товар.Ссылка = Крепость.ОбъектСсылка
                             |        ЛЕВОЕ СОЕДИНЕНИЕ Производитель КАК Производитель
                             |        ПО Товар.Ссылка = Производитель.ОбъектСсылка
                             |        ЛЕВОЕ СОЕДИНЕНИЕ ШК КАК ШК
                             |        ПО Товар.Ссылка = ШК.ВладелецСсылка";
                             

ПостроительОтчета.Выполнить();
ПостроительОтчета.Вывести();
9 Kom-off
 
25.02.13
11:59
(5) Во всем надо знать меру. И вообще, программирование - поиск компромисов.
10 Rounder
 
25.02.13
12:00
т.е. иных вариантов нету?
11 Web00001
 
25.02.13
12:01
В СКД можно вывести данные в таблицу, то есть сделать макет, который на основании входных данных делает отчет и вывести его в таблицу значений.
12 dimannazarov
 
25.02.13
12:05
13 GANR
 
25.02.13
12:05
(0) В запросах СКД есть ХАРАКТЕРИСТИКА, а СКД можно при желании кодом собрать. Как отладить СКД см. сообщение № 5 в ветке v8: СКД: изсчезают ВыранныеПоля. В книге Радченко написано как это сделать с помощью построителя.
14 Web00001
 
25.02.13
12:06
(11) СКД -> Вывод в кросстаблицу - сохранение результатов в таблице значений. Макет СКД прикрепить к обработке. У меня так история продаж сделано по всем складам, заранее сказать по каким складам были продажи нельзя ведь. А так получается в каждой колонке отдельный склад, по которому были продажи.
15 Fragster
 
гуру
25.02.13
12:09
(13) характеристика, это по сути левое соединение, причем их количество как раз по количеству разных характеристик.
16 Rounder
 
25.02.13
12:12
Всем спасибо. Буду пробовать. Не исключено что вернусь к этой теме.
Закон Брукера: Даже маленькая практика стоит большой теории.