Имя: Пароль:
1C
1С v8
Запрос. Итоги в дереве значений
0 Nuuq
 
05.07.13
16:56
Подскажите про запрос.

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

Как вывести в итоговую строку дерева значений цену последнего поступления?
http://piccy.info/view3/4811249/4542b30ffdf9dcf99cf17562912ec4e2/
1 ale-sarin
 
05.07.13
16:58
Итоги Цена По Максимум(Период)
Как-то так.
2 ale-sarin
 
05.07.13
17:00
+1 Похоже спорол я хрень. Домой пора.
3 Nuuq
 
05.07.13
17:01
:)
{Форма.Форма.Форма(772)}: Ошибка при вызове метода контекста (Выполнить): {(19, 1)}: Синтаксическая ошибка "ПО"
<<?>>ПО
4 Dethmont
 
05.07.13
18:06
|ИТОГИ
   |    МАКСИМУМ(Период),
   |    КОЛИЧЕСТВО(Регистратор)
   |    СУММА(Цена)
5 Поросенок Петр
 
05.07.13
18:41
Не взлетит.
6 Nuuq
 
10.07.13
10:25
Ну я конечно перебрал полученное дерево в цикле и новым запросом заполнил нужную мне цену
   Для Каждого Стр Из РезультатВыборкиЗакупочные.Строки Цикл
       ЗапросЦена = Новый Запрос;
       ЗапросЦена.Текст =
       "ВЫБРАТЬ ПЕРВЫЕ 1
       |    ЦеныСрезПоследних.ЦенаСНДС
       |ИЗ
       |    РегистрСведений.Цены.СрезПоследних(&НаДату, ) КАК ЦеныСрезПоследних
       |ГДЕ
       |    ЦеныСрезПоследних.Номенклатура.Ссылка = &Номенклатура
       |    И ЦеныСрезПоследних.ТипЦен.Ссылка = ЗНАЧЕНИЕ(Справочник.ТипыЦен.ОсновнойТипЦенЗакупки)
       |
       |УПОРЯДОЧИТЬ ПО
       |    Период УБЫВ";
       ЗапросЦена.УстановитьПараметр("НаДату",ЭтотОбъект.Дата2);
       ЗапросЦена.УстановитьПараметр("Номенклатура", Стр.Номенклатура);
       РезультатЦена = ЗапросЦена.Выполнить().Выгрузить();
       Если РезультатЦена.Количество() = 0 Тогда
           Продолжить;
       Иначе
           Стр.Цена = РезультатЦена.Получить(0).ЦенаСНДС;
       КонецЕсли;
       РезультатЦена.Очистить();
   КонецЦикла;

Но всетаки это "не красиво",
как получить с помощью запроса такие итоги?
7 Nuuq
 
10.07.13
10:32
...может быть можно так
ИТОГИ
   &Цена КАК Цена,
   МАКСИМУМ(Период),
   КОЛИЧЕСТВО(Регистратор)
ПО
   Номенклатура

и тут же в текущем запросе сделать еще один, который обрабатывает эту переменную &Цена