![]() |
|
Выгрузка прайс - листа с группировками по номенклатуре в эксель. Не групируется | ☑ | ||
---|---|---|---|---|
0
GreenDay1986
21.09.11
✎
11:41
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |Склады.Номенклатура.Родитель КАК Родитель, |1 КАК Поле1, |Склады.Номенклатура.Код КАК Код, |Склады.Номенклатура.Артикул КАК Артикул, |Склады.Номенклатура.ссылка КАК Наименование, |Склады.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК Коэффициент, |Склады.КоличествоОстаток КАК Остаток, |ВЫРАЗИТЬ(Цен.Цена - (Цен.Цена/100)*&Скидка КАК ЧИСЛО(10,2)) КАК Цена |ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаСреза)КАК Склады |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза,ТипЦен = &Цена) КАК Цен |ПО Склады.Номенклатура.Ссылка = Цен.Номенклатура.Ссылка |"; Если ЗначениеЗаполнено(Родитель) = Ложь Тогда Запрос.Текст = Запрос.Текст + "СГРУППИРОВАТЬ ПО Склады.Номенклатура, |Склады.Номенклатура.Родитель, |Склады.КоличествоОстаток, |ВЫРАЗИТЬ(Цен.Цена - (Цен.Цена/100)*&Скидка КАК ЧИСЛО(10,2)) |УПОРЯДОЧИТЬ ПО Склады.Номенклатура.Наименование |ИТОГИ Сумма(Поле1) ПО Наименование ТОЛЬКО ИЕРАРХИЯ |"; Иначе Запрос.Текст = Запрос.Текст + "ГДЕ Склады.Номенклатура.Родитель = &Ном |СГРУППИРОВАТЬ ПО Склады.Номенклатура, |Склады.Номенклатура.Родитель, |Склады.КоличествоОстаток, |ВЫРАЗИТЬ(Цен.Цена - (Цен.Цена/100)*&Скидка КАК ЧИСЛО(10,2)) |УПОРЯДОЧИТЬ ПО Склады.Номенклатура.Наименование |ИТОГИ Сумма(Поле1) ПО Наименование ТОЛЬКО ИЕРАРХИЯ |"; КонецЕсли; Запрос.УстановитьПараметр("Скидка",(-1)*Число(ТипЦены.ПроцентСкидкиНаценки)); Запрос.УстановитьПараметр("ДатаСреза",КонецДня(Дата)); Запрос.УстановитьПараметр("Ном",Родитель); Запрос.УстановитьПараметр("Цена",Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("00002")); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамCИерархией); Док = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); Область = Макет.ПолучитьОбласть("Шапка"); Область.Параметры.Дата = Формат(Дата,"ДФ = дд.ММ.гггг"); Область.Параметры.Скидка = -(ТипЦены.ПроцентСкидкиНаценки); Док.Вывести(Область); Область = Макет.ПолучитьОбласть("Заголовок"); Док.Вывести(Область); Док.НачатьАвтогруппировкуСтрок(); Пока Выборка.Следующий() Цикл СтрокаРодитель = Макет.ПолучитьОбласть("Родитель"); СтрокаРодитель.Параметры.Родитель = Выборка.Родитель; Док.НачатьГруппуСтрок("СтрокаРодитель"); Док.Вывести(СтрокаРодитель,Выборка.Уровень(1),"Группа"); Выборка1 = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока Выборка1.Следующий() Цикл // Ном = Выборка1.Родитель; // Если Справочники.Номенклатура.НайтиПоКоду(Ном.Код).Ссылка.ЭтоГруппа = Истина ТОГДА // Строка = Макет.ПолучитьОбласть("Строка"); // Строка.Параметры.Наименование = Выборка1.Родитель; // Иначе Строка = Макет.ПолучитьОбласть("Строка"); Строка.Параметры.Наименование = Выборка1.Наименование; Строка.Параметры.Коэффициент = Выборка1.Коэффициент; Строка.Параметры.Остаток = Выборка1.Остаток; Строка.Параметры.Цена = Формат(Выборка1.Цена,"ЧДЦ = 2"); Строка.Параметры.Код = Выборка1.Код; Строка.Параметры.Артикул = Выборка1.Артикул; Док.Вывести(Строка); // КонецЕсли; // Док.Вывести(Область); КонецЦикла; Док.ЗакончитьГруппуСтрок(); КонецЦикла; Док.ЗакончитьАвтогруппировкуСтрок(); УровеньГруппировки = 1; Док.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки); Если ФлагОстатки = Ложь Тогда Док.Область("C5:C5").Видимость = Ложь; Иначе Док.Область("C5:C5").Видимость = Истина; КонецЕсли; Док.АвтоМасштаб = Истина; Док.ОтображатьСетку = Истина; Док.ОтображатьЗаголовки = Истина; Док.Записать("C:\ПрайсЛистХБС.xls",ТипФайлаТабличногоДокумента.XLS); КоличествоСтрок = Выборка.Количество(); Попытка Таблица = Новый COMОбъект("Excel.Application") ; Книга = Таблица.Workbooks.Open("C:\ПрайсЛистХБС.xls"); Исключение Предупреждение(ОписаниеОшибки()+"Не удалось сформировать обьект"); КонецПопытки; Лист = Книга.WorkSheets(1); Лист.Range("I9:"+"I"+строка(ФОРМАТ(КоличествоСтрок+7,"ЧГ="))).FormulaR1C1 = "=RC[-5]*RC[-3]*RC[-2]+RC[-1]*RC[-3]" ; Лист.Cells(3,6).FormulaR1C1 = "=SUM(R[6]C[3]:R["+строка(ФОРМАТ(КоличествоСтрок+7,"ЧГ="))+"]C[3])"; Лист.Range("7:8").Rows.Group(); Лист.Range("15:16").Rows.Group(); //Лист.Protect("asd86",истина,истина,истина,истина,истина,истина,истина,истина,истина,истина,истина,истина); //Лист.Range("G9:"+"H"+строка(ФОРМАТ(КоличествоСтрок+7,"ЧГ="))).Locked = Ложь; Таблица.ActiveWindow.SplitRow = 7; Таблица.ActiveWindow.FreezePanes = 1; Книга.SaveAs("C:\ПрайсЛистХБС.xls"); Таблица.Workbooks.Close(); КонецПроцедуры Не группруется в эксель по номенклатурным групппам. |
|||
1
Wobland
21.09.11
✎
11:47
|
всё не читал, но заметил, что второй параметр в Вывести() не используется
|
|||
2
GreenDay1986
21.09.11
✎
11:53
|
Прайс группируется, но + появляется та где есть подпапки(вложенные номенклатурные группы). Может кто-нибудь посоветует как в общем случае сделать выгрузку в эксель с группировкой ном.групп. Когда щелкаем на + рядом с группой чтобы она открывалась
|
|||
3
GreenDay1986
26.09.11
✎
11:14
|
Док.НачатьАвтогруппировкуСтрок();
ВыборкаГруппа = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаГруппа.Следующий() Цикл Если ВыборкаГруппа.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда Область = ОбластьГруппаИерархия; Иначе Область = ОбластьГруппа; КонецЕсли; Область.Параметры.Заполнить(ВыборкаГруппа); Док.Вывести(Область,ВыборкаГруппа.Уровень()); ВыборкаСтрока = ВыборкаГруппа.Выбрать(); Пока ВыборкаСтрока.Следующий()Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаСтрока); Док.Вывести(ОбластьСтрока,ВыборкаСтрока.Уровень(),,Ложь); КонецЦикла; КонецЦикла; Док.ЗакончитьАвтогруппировкуСтрок(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |