Имя: Пароль:
1C
1С v8
получить среднюю цену
0 denis_solyanko
 
22.01.15
14:12
добрый день, задача в том что в запросе получаем все поступления которые были на номенклатуру, нужно расчитать среднюю цену, то есть нужно сложить все суммы по поступлениям и разделить на из количество как в цикле сложить, цены.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ПоступлениеТоваровУслугТовары.Номенклатура,
|    ПоступлениеТоваровУслугТовары.Цена,
|    ПоступлениеТоваровУслугТовары.СуммаНДС,
|    ПоступлениеТоваровУслугТовары.Цена - ПоступлениеТоваровУслугТовары.СуммаНДС КАК СуммаБезНДС,
|    ПоступлениеТоваровУслугТовары.Цена КАК Цена1
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|ГДЕ
|    ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура";
Счетчик = 0;    
Для каждого Строка из Товары цикл
Запрос.УстановитьПараметр("Номенклатура",Строка.Номенклатура);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Себестоимость=0;
СтароеЗначение = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Себестоимость = ВыборкаДетальныеЗаписи.СуммаБезНДС +СтароеЗначение/ВыборкаДетальныеЗаписи.Количество();
СтароеЗначение=ВыборкаДетальныеЗаписи.СуммаБезНДС;
КонецЦикла;
Строка.Себестоимость = Себестоимость;
КонецЦикла;
1 elCust
 
22.01.15
14:14
Согласовано. Можете выполнять.
2 Дмитрий
 
22.01.15
14:17
А в поступлении товаров и услуг только цена поступает, количество не поступает?

Или строго по одному приходят товары?
3 Maniac
 
22.01.15
14:20
Праивльно сделать запрос по регистру Закупки.

Прибавит в 1000 раз скорость. И там просто поделить в запросе
4 Maniac
 
22.01.15
14:24
ВЫБРАТЬ
    ЗакупкиОбороты.Номенклатура,
    ЗакупкиОбороты.ХарактеристикаНоменклатуры,
    СУММА(ЗакупкиОбороты.КоличествоОборот) КАК КоличествоОборот,
    ВЫБОР
        КОГДА СУММА(ЗакупкиОбороты.КоличествоОборот) > 0
            ТОГДА СУММА(ЗакупкиОбороты.СтоимостьОборот) / СУММА(ЗакупкиОбороты.КоличествоОборот)
        ИНАЧЕ 0
    КОНЕЦ КАК СредняяЦена,
    СУММА(ЗакупкиОбороты.СтоимостьОборот) КАК СтоимостьОборот
ИЗ
    РегистрНакопления.Закупки.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ЗакупкиОбороты

СГРУППИРОВАТЬ ПО
    ЗакупкиОбороты.Номенклатура,
    ЗакупкиОбороты.ХарактеристикаНоменклатуры
5 denis_solyanko
 
22.01.15
14:30
(4) у меня нету такого регистра бухгалтерия
6 Maniac
 
22.01.15
14:32
Ок. С тебя пузырь.


ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
    СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
    ВЫБОР
        КОГДА СУММА(ПоступлениеТоваровУслугТовары.Количество) > 0
            ТОГДА СУММА(ПоступлениеТоваровУслугТовары.Сумма) / СУММА(ПоступлениеТоваровУслугТовары.Количество)
        ИНАЧЕ 0
    КОНЕЦ КАК СредняяЦена,
    СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры
7 denis_solyanko
 
22.01.15
14:35
в общем суть такова допусти было 2 поступления, по две номенклатуры
поступление 1
карандаш 2шт цена 10
ручка 2шт    цена 5

Поступление 2
карандаш 1шт  цена 9
ручка    1шт  цена 6

средняя по строке карандаш =  (20+9)/3(Это количество общее со всех поступленй по данной номенклатуре 2+1)
средняя по строке ручка = (10+6)/3
8 Maniac
 
22.01.15
14:36
Глаза разбуй.
9 denis_solyanko
 
22.01.15
14:53
(8) интернет подвис просто))))
спасибо выручил)) чего пузырь то))