evairian
Гость
|
|
« : 22-10-2009 12:56 » |
|
Здравствуйте, подскажите, как правильно сделать. Мне нужно из регистра ПРОДАЖИ вывести ПРОДАЖНУЮ СТОИМОСТЬ. Выводит совсем не то.
Процедура ВыводНом(ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость) Для сч = 1 по ТЗ.КоличествоСтрок() Цикл ТЗ.ПолучитьСтрокуПоНомеру(сч); Если ТЗ.Родитель = ТМЦ Тогда Иначе Продолжить; КонецЕсли; Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда Если тз.ТМЦ.МинЦена <>0 Тогда ТекЦена = тз.ТМЦ.МинЦена; ПродСтоимость = РегПродажи.ПродСтоимость; КонецЕсли; Таб.ВывестиСекцию("Группа" + тз.Уровень); ВыводНом(тз.ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость); Иначе Таб.ВывестиСекцию("Строка" + тз.Уровень); КонецЕсли; КонецЦикла; КонецПроцедуры
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Наименование = Справочник.Номенклатура.Наименование; |МинЦена = Справочник.Номенклатура.МинЦена; |Группировка Номенклатура упорядочить по Номенклатура.Наименование; |"//}}ЗАПРОС ;
Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в ВыбТМЦ);"; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запр = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ПродСтоимость = Регистр.Продажи.ПродСтоимость; //|Функция СуммаПродСт = Сумма(ПродСтоимость);
|"//}}ЗАПРОС ; Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; РегПродажи = СоздатьОбъект("Регистр.Продажи"); РегПродажи.ВыбратьИтоги(); Пока РегПродажи.ПолучитьИтог() = 0 Цикл ПродСтоимость = РегПродажи.ПродСтоимость; //Сообщить("ПродСтоимость " + Строка(РегПродажи.ПродСтоимость)); КонецЦикла;
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("НаименованиеГруппа"); Таб.ВывестиСекцию("Заголовок");
ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Уровень", "Число"); ТЗ.НоваяКолонка("Родитель", "Справочник.Номенклатура"); ТЗ.НоваяКолонка("ТМЦ" ,"Справочник.Номенклатура"); Пока (Запрос.Группировка(("Номенклатура")) = 1) Цикл ТМЦ = Запрос.Номенклатура; ТЗ.НоваяСтрока(); ТЗ.Уровень = ТМЦ.Уровень(); ТЗ.Родитель = ТМЦ.Родитель; ТЗ.ТМЦ = ТМЦ; КонецЦикла;
Для сч = 1 по ТЗ.КоличествоСтрок() цикл ТЗ.ПолучитьСтрокуПоНомеру(сч); Если ТЗ.Уровень = 1 Тогда ТекЦена = тз.ТМЦ.МинЦена; ПродСтоимость = РегПродажи.ПродСтоимость; Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда Таб.ВывестиСекцию("Группа" + тз.Уровень); Иначе Таб.ВывестиСекцию("Строка" + тз.Уровень); КонецЕсли; ВыводНом(ТЗ.ТМЦ,ТЗ,ТЗ.ТМЦ.МинЦена,Таб,РегПродажи,ПродСтоимость); КонецЕсли; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("НаименованиеГруппа", ""); КонецПроцедуры
Это то, что есть, нужно что-то исправить. Помогите, пожалуйста.
|