31.08.2006, 12:57
общий
это ответ
Здравствуйте, Palkin!
Сверните таблицу по сумме и количеству, зная сумму и количество узнаете среднюю цену
Таб.Свернуть("Номенклатура", "Сумма,Количество")
Таб.НоваяКолонка("Цена","Число",15,6);
Таб.ВыбратьСтроки()
Пока Таб.ПолучитьСтроку Цикл
Таб.Цена=Таб.Сумма/Таб.Количество(если колво не нулевое)
Обращаю Ваше внимание на то, что в цене нужно поставить достаточное количество знаков после запятой, как минимум 6. Ни в коем случае не 2, как ставят многие бумагомаратели. Округлить до двух знаков всегда успеете
Брать цену из последней строки - глюконеустойчивый метод, результат превзойдет все ваши кошмарные ожидания.
Но если все же нужна цена из последней строки (мало ли какая поставлена задача), то сделать это несложно. Создайте еще одну таблицу значений, и копируйте из первой таблицы во вторую данные
ТЗ=СоздатьОбъект("ТаблицаЗначений")
ТЗ.НоваяКолонка
Таб.ВыбратьСтроки
Пока Таб.ПолучитьСтроку()=1 Цикл
Стр=0;
Если ТЗ.НайтиЗначение(Таб.номенклатура,Стр,"Номенклатура")=0 Тогда
ТЗ.НоваяСтрока
ТЗ.Номенклатура=Таб.Номенклатура
Иначе
ТЗ.ПолучитьСтрокуПоНомеру(Стр)
КонецЕсли
ТЗ.Сумма=ТЗСумма+Таб.Сумма
ТЗ.Количество=ТЗ.Количество+Таб.Количество
ТЗ.Цена=Таб.Цена
КонецЦикла
В данном примере цена в ТЗ постоянно обновляется, и есть ценой последней строки данной номенклатуры