Имя: Пароль:
1C
1С v8
Как сделать "горизонтальные" результаты запроса?
0 Джайрикон
 
04.04.12
15:50
Есть таблица цен:
БУК ЦЕНА  ТИП
"А" 15руб закупочная
"А" 24руб оптовая
"А" 30руб розничная
"Б" 19руб закупочная
"В" 12руб розничная
"Г" 61руб розничная

Как получить запросом таблицу:
БУК ЗАКУП РОЗН  ОПТ
"А" 15руб 30руб 24руб
"Б" 19руб _____ _____
"В" _____ 12руб _____
"Г" _____ 61руб _____

Колонки ЗАКУП РОЗН ОПТ задаются в запросе вручную,
а не берутся "автоматически" из колонки ТИП.
1 m-serg74
 
04.04.12
15:53
через ВЫБОР КОГДА ТОГДА КОНЕЦ КАК ЗАКУП не?
2 Kashemir
 
04.04.12
15:53
3 КМ155
 
04.04.12
15:58
(0) три левых соединения
4 golden-pack
 
04.04.12
16:00
+Обязательно СКД
5 Джайрикон
 
04.04.12
16:31
(2) На этом примере попытался сделать свой рабочий запрос. Но получается: Цена1 заполняет какой-то ценой, а Цена2 и Цена3 остаются строго пустыми.
//Цена1 заполняет какой-то ценой, а Цена2 и Цена3 остаются
ВЫБРАТЬ
 Ц.Номенклатура.Ссылка КАК Номенклатура,
 МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип1 ТОГДА Ц.Цена ИНАЧЕ NULL КОНЕЦ) КАК Цена1,
 МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип2 ТОГДА Ц.Цена ИНАЧЕ NULL КОНЕЦ) КАК Цена2,
 МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип3 ТОГДА Ц.Цена ИНАЧЕ NULL КОНЕЦ) КАК Цена3
ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата) КАК Ц
СГРУППИРОВАТЬ ПО Ц.Номенклатура.Ссылка
6 Джайрикон
 
04.04.12
16:34
(3) Левые соединения. Никак не могу сообразить даже приблизительно что можно сделать.
7 Maxus43
 
04.04.12
16:36
самое простое (1), чем не устраивает?
8 Джайрикон
 
04.04.12
16:36
(4) Система Компоновки Данных. Пока что опыта здесь ноль.
9 hhhh
 
04.04.12
16:38
(8) всё-таки с какого бодуна вы поставили NULL там? Для красоты? Попробуйте

МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип1 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ) КАК Цена1,
10 Джайрикон
 
04.04.12
16:40
(7) Нужные данные разнесены по строкам. А конструкция ВЫБОР КОГДА ТОГДА КОНЕЦ работает (насколько я понимаю) только с данными в одной выбираемой строке, а мне нужно три данных из трёх разных строк.
11 Maxus43
 
04.04.12
16:42
(10) 3 поля и делай.
Выбор когда "ЗАКУП" Тогда Сумма Иначе 0 Конец
Выбор когда "РОЗН" Тогда Сумма Иначе 0 Конец
Выбор когда "ОПТ" Тогда Сумма Иначе 0 Конец
12 Джайрикон
 
04.04.12
16:42
(9) Вместо NULL поставил 0. Результат прежний: Цена1 заполняется, а Цена2 и Цена3 пустые.
13 hhhh
 
04.04.12
16:46
(12) ну тогда &Тип2 и &Тип3 проверь.

и пиши по человечески

ВЫБРАТЬ
 Ц.Номенклатура КАК Номенклатура,

и

СГРУППИРОВАТЬ ПО Ц.Номенклатура

а то какой-то экзотический запрос получается.
14 Джайрикон
 
04.04.12
16:46
(11) Цена2 и Цена3 всё так же пустые
ВЫБРАТЬ
 Ц.Номенклатура.Ссылка КАК Номенклатура,
 ВЫБОР КОГДА Ц.ТипЦен=&Тип1 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ КАК Цена1,
 ВЫБОР КОГДА Ц.ТипЦен=&Тип2 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ КАК Цена2,
 ВЫБОР КОГДА Ц.ТипЦен=&Тип3 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ КАК Цена3
ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата) КАК Ц
УПОРЯДОЧИТЬ ПО Ц.Номенклатура.Ссылка
15 Джайрикон
 
04.04.12
16:49
(13)
   З.Параметры.Вставить("Тип1",Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная"));
   З.Параметры.Вставить("Тип2",Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая"));
   З.Параметры.Вставить("Тип3",Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Крупная"));

Всё тут нормально, такие значения есть.
16 m-serg74
 
04.04.12
18:07
(15) ты обманываешь))) проверь есть ли в рег. записи для таких типов на такую дату...
17 КМ155
 
04.04.12
18:12
(10) а так:
ВЫБРАТЬ
   Товар.Ссылка,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихТип1.Цена, 0) КАК Цена_первыйТип,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихТип2.Цена, 0) КАК Цена_второйТип,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихТип3.Цена, 0) КАК Цена_третийТип

ИЗ
   Справочник.Номенклатура КАК Товар
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &первыйТип) КАК ЦеныНоменклатурыСрезПоследнихТип1
       ПО (ЦеныНоменклатурыСрезПоследнихТип1.Номенклатура = Товар.Ссылка)
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &второйТип) КАК ЦеныНоменклатурыСрезПоследнихТип2
       ПО (ЦеныНоменклатурыСрезПоследнихТип2.Номенклатура = Товар.Ссылка)
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &третийТип) КАК ЦеныНоменклатурыСрезПоследнихТип3
       ПО (ЦеныНоменклатурыСрезПоследнихТип3.Номенклатура = Товар.Ссылка)
Ошибка? Это не ошибка, это системная функция.