Имя: Пароль:
1C
1С v8
v8: запрос по СКД: соединить остатки и цены
0 mrzed12
 
10.12.12
14:49
Добрый день, вопрос по СКД

Есть остатки и цены наменклатур. Нужно вывести в отчет:
Номенклатура / Остатки / Цена1 / Цена2 / и т.д.

Цена - это список типов цен номенклатуры
Я получаю запросом Остатки и запрос на цены. Потом если через соединение (или объединение пробовал) получается вот такой результат:
ТМЦ1    5шт   цена1
ТМЦ1    5шт   цена2

Получается, отчет не разворачивает цены в строку.. Если цена из одного элемента типа цены, то разумеется, все путем.
1 sidalexsandr
 
10.12.12
14:55
Запрос выложи
2 mrzed12
 
10.12.12
14:56
ВЫБРАТЬ
   ВложенныйЗапрос.Склад КАК Склад,
   ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   СУММА(ВложенныйЗапрос.КоличествоОстаток) КАК КоличествоОстаток,
   СУММА(ВложенныйЗапрос.КоличествоВРезерве) КАК КоличествоВРезерве,
   СУММА(ВложенныйЗапрос.КоличествоКПолучению) КАК КоличествоКПолучению,
   СУММА(ВложенныйЗапрос.КоличествоКПередаче) КАК КоличествоКПередаче,
   СУММА(ВложенныйЗапрос.КоличествоЗаказаноУПоставщиков) КАК КоличествоЗаказаноУПоставщиков
ПОМЕСТИТЬ Остатки
ИЗ
   (ВЫБРАТЬ
       ТоварыНаСкладахОстатки.Склад КАК Склад,
       ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
       ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
       ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
       0 КАК КоличествоВРезерве,
       0 КАК КоличествоКПолучению,
       0 КАК КоличествоКПередаче,
       0 КАК КоличествоЗаказаноУПоставщиков
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.Остатки({(&Период)}, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ТоварыНаСкладахОстатки
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыВРозницеОстатки.Склад,
       ТоварыВРозницеОстатки.Номенклатура,
       ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
       ТоварыВРозницеОстатки.КоличествоОстаток,
       0,
       0,
       0,
       0
   ИЗ
       РегистрНакопления.ТоварыВРознице.Остатки({(&Период)}, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ТоварыВРозницеОстатки
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыВРезервеНаСкладахОстатки.Склад,
       ТоварыВРезервеНаСкладахОстатки.Номенклатура,
       ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры,
       0,
       ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
       0,
       0,
       0
   ИЗ
       РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки({(&Период)}, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ТоварыВРезервеНаСкладахОстатки
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыКПолучениюНаСкладыОстатки.Склад,
       ТоварыКПолучениюНаСкладыОстатки.Номенклатура,
       ТоварыКПолучениюНаСкладыОстатки.ХарактеристикаНоменклатуры,
       0,
       0,
       ТоварыКПолучениюНаСкладыОстатки.КоличествоОстаток,
       0,
       0
   ИЗ
       РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки({(&Период)}, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ТоварыКПолучениюНаСкладыОстатки
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыКПередачеСоСкладовОстатки.Склад,
       ТоварыКПередачеСоСкладовОстатки.Номенклатура,
       ТоварыКПередачеСоСкладовОстатки.ХарактеристикаНоменклатуры,
       0,
       0,
       0,
       ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток,
       0
   ИЗ
       РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки({(&Период)}, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ТоварыКПередачеСоСкладовОстатки
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ЗаказыПоставщикамОстатки.ЗаказПоставщику.Склад,
       ЗаказыПоставщикамОстатки.Номенклатура,
       ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры,
       0,
       0,
       0,
       0,
       ЗаказыПоставщикамОстатки.КоличествоОстаток
   ИЗ
       РегистрНакопления.ЗаказыПоставщикам.Остатки({(&Период)}, {(ЗаказПоставщику.Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ЗаказыПоставщикамОстатки) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос.Склад,
   ВложенныйЗапрос.Номенклатура,
   ВложенныйЗапрос.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Остатки.Склад,
   Остатки.Номенклатура,
   Остатки.Номенклатура.Артикул КАК Артикул,
   Остатки.ХарактеристикаНоменклатуры,
   Остатки.КоличествоОстаток,
   Остатки.КоличествоВРезерве,
   Остатки.КоличествоКПолучению,
   Остатки.КоличествоКПередаче,
   Остатки.КоличествоЗаказаноУПоставщиков,
   Остатки.КоличествоОстаток - Остатки.КоличествоВРезерве - Остатки.КоличествоКПередаче КАК КоличествоСвободныйОстаток,
   NULL КАК ТипЦен,
   NULL КАК Цена,
   NULL КАК ТипЦенВалютаЦены
ИЗ
   Остатки КАК Остатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   NULL,
   ВложенныйЗапрос.Номенклатура,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   ВложенныйЗапрос.ТипЦен,
   ВложенныйЗапрос.Цена,
   ВложенныйЗапрос.ТипЦенВалютаЦены
ИЗ
   (ВЫБРАТЬ
       ВложенныйЗапрос.Номенклатура КАК Номенклатура,
       ВложенныйЗапрос.ТипЦен КАК ТипЦен,
       ВложенныйЗапрос.Цена КАК Цена,
       ВложенныйЗапрос.ТипЦен.ВалютаЦены КАК ТипЦенВалютаЦены
   ИЗ
       (ВЫБРАТЬ
           ВложенныйЗапрос.Номенклатура КАК Номенклатура,
           ВложенныйЗапрос.ТипЦен КАК ТипЦен,
           ВЫРАЗИТЬ(ВЫБОР
                   КОГДА ВложенныйЗапрос.ТипЦен.Рассчитывается
                       ТОГДА ВЫБОР
                               КОГДА ВложенныйЗапрос.ТипЦен.СпособРасчетаЦены = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип)
                                   ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) + ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * (ВложенныйЗапрос.ТипЦен.ПроцентСкидкиНаценки / 100)
                               ИНАЧЕ 0
                           КОНЕЦ
                   ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
               КОНЕЦ * ВЫБОР
                   КОГДА ЦеныНоменклатурыСрезПоследних.Валюта = ВложенныйЗапрос.ТипЦен.ВалютаЦены
                       ТОГДА 1
                   ИНАЧЕ ЕСТЬNULL(КурсыВалютНоменклатуры.Курс, 1) / ЕСТЬNULL(КурсыВалютНоменклатуры.Кратность, 1) / (ЕСТЬNULL(ВложенныйЗапрос.ТипЦеныКурс, 1) / ЕСТЬNULL(ВложенныйЗапрос.ТипЦеныКратность, 1))
               КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена
       ИЗ
           (ВЫБРАТЬ
               Номенклатура.Ссылка КАК Номенклатура,
               ТипыЦенНоменклатуры.Ссылка КАК ТипЦен,
               КурсыВалютТипЦены.Курс КАК ТипЦеныКурс,
               КурсыВалютТипЦены.Кратность КАК ТипЦеныКратность,
               КурсыВалютТипЦены.Валюта КАК ТипЦеныВалюта
           ИЗ
               Справочник.Номенклатура КАК Номенклатура
                   ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютТипЦены
                       ПО ТипыЦенНоменклатуры.ВалютаЦены = КурсыВалютТипЦены.Валюта
                   ПО (ТипыЦенНоменклатуры.Ссылка В (&ТипЦен))) КАК ВложенныйЗапрос
               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютНоменклатуры
                   ПО ЦеныНоменклатурыСрезПоследних.Валюта = КурсыВалютНоменклатуры.Валюта
               ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                   И ВложенныйЗапрос.ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос
3 eklmn
 
гуру
10.12.12
14:56
ГРУППИРОВАТЬ ПО Номенклатура
4 Pro-tone
 
10.12.12
14:56
попробую протелепатить

Цена1...Н должна быть ресурсом СКД, в настройках - выбранным полем и выводиться в таблицу колонкой.
5 eklmn
 
гуру
10.12.12
14:56
едрид мадрид ЧТО ЭТО?
6 Wobland
 
10.12.12
14:57
соединять каждый раз с другой таблицей про тип цен
7 Pro-tone
 
10.12.12
14:59
(0) задачу сформулируй сначала, языком человеческим как хотят начальники чтобы было?
8 Kashemir
 
10.12.12
15:01
Самое простое решение - присоединить цену набором, раз уж она у тебя на фиксированную дату.
9 eklmn
 
гуру
10.12.12
15:01
В строках номенклатура, в колонках типцен
10 mrzed12
 
10.12.12
15:02
(5) ну так это ж полный запрос..

небольшие пояснения:
получаю таблицу и типы цен.

ВЫБРАТЬ
 Номенклатура.Ссылка КАК Номенклатура,
 ТипыЦенНоменклатуры.Ссылка КАК ТипЦен,
.
.
 ИЗ
   Справочник.Номенклатура КАК Номенклатура
     ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
..
     ПО (ТипыЦенНоменклатуры.Ссылка В (&ТипЦен))

а задача в том, чтоб был отчет типа "Анализа доступности товаров на складах", но добавить колонки с ценами. учтем что валюта цены на один товар может быть в одной валюта, на другой товар в другой, поэтому в итоге мы все сводим к валюте типы цены по текущему курсу..
11 mrzed12
 
10.12.12
15:03
(8) набором тоже пробовал