![]() |
|
Вывести родителя в область группировок | ☑ | ||
---|---|---|---|---|
0
GreenDay1986
05.10.11
✎
15:18
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Макет = ПолучитьМакет("Макет"); Док = Новый ТабличныйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |Склады.Номенклатура.Родитель КАК Родитель, |ПРЕДСТАВЛЕНИЕ(Склады.Номенклатура.Родитель), |Склады.Номенклатура.ссылка КАК Наименование, |Склады.Номенклатура.Представление, |1 КАК Поле1, |Склады.Номенклатура.Код КАК Код, |Склады.Номенклатура.Артикул КАК Артикул, |Склады.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК Коэффициент, |Склады.КоличествоОстаток КАК Остаток, |ВЫРАЗИТЬ(Цен.Цена - (Цен.Цена/100)*&Скидка КАК ЧИСЛО(10,2)) КАК Цена |ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаСреза)КАК Склады |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза,ТипЦен = &Цена) КАК Цен |ПО Склады.Номенклатура.Ссылка = Цен.Номенклатура.Ссылка |ГДЕ Склады.Номенклатура.ПометкаУдаления <> Истина |"; Если ЗначениеЗаполнено(Родитель) = Ложь Тогда Запрос.Текст = Запрос.Текст + "СГРУППИРОВАТЬ ПО Склады.Номенклатура, |Склады.Номенклатура.Родитель, |Склады.КоличествоОстаток, |ВЫРАЗИТЬ(Цен.Цена - (Цен.Цена/100)*&Скидка КАК ЧИСЛО(10,2)) |УПОРЯДОЧИТЬ ПО Склады.Номенклатура.Наименование |ИТОГИ Сумма(Поле1) ПО Наименование ТОЛЬКО ИЕРАРХИЯ |"; Иначе Запрос.Текст = Запрос.Текст + "ГДЕ Склады.Номенклатура.Родитель = &Ном |СГРУППИРОВАТЬ ПО Склады.Номенклатура, |Склады.Номенклатура.Родитель, |Склады.КоличествоОстаток, |ВЫРАЗИТЬ(Цен.Цена - (Цен.Цена/100)*&Скидка КАК ЧИСЛО(10,2)) |УПОРЯДОЧИТЬ ПО Склады.Номенклатура.Наименование |ИТОГИ Сумма(Поле1) ПО Наименование ТОЛЬКО ИЕРАРХИЯ |"; КонецЕсли; Запрос.УстановитьПараметр("Скидка",(-1)*Число(ТипЦены.ПроцентСкидкиНаценки)); Запрос.УстановитьПараметр("ДатаСреза",КонецДня(Дата)); Запрос.УстановитьПараметр("Ном",Родитель); Запрос.УстановитьПараметр("Цена",Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("00002")); Результат = Запрос.Выполнить(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьГруппа = Макет.ПолучитьОбласть("Группа"); ОбластьГруппаИерархия = Макет.ПолучитьОбласть("ГруппаИерархия"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьШапка.Параметры.Дата = Формат(Дата,"ДФ = дд.ММ.гггг"); ОбластьШапка.Параметры.Скидка = -(ТипЦены.ПроцентСкидкиНаценки); Док.Вывести(ОбластьШапка); Док.Вывести(ОбластьЗаголовок); Док.НачатьАвтогруппировкуСтрок(); ВыборкаГруппа = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаГруппа.Следующий() Цикл Если ВыборкаГруппа.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда Область = ОбластьГруппаИерархия; Иначе Область = ОбластьГруппа; КонецЕсли; Область.Параметры.Заполнить(ВыборкаГруппа); Док.Вывести(Область,ВыборкаГруппа.Уровень(),,Ложь); ВыборкаСтрока = ВыборкаГруппа.Выбрать(); Пока ВыборкаСтрока.Следующий()Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаСтрока); Док.Вывести(ОбластьСтрока,ВыборкаСтрока.Уровень(),,Ложь); КонецЦикла; КонецЦикла; Док.ЗакончитьАвтогруппировкуСтрок(); Рекурсивно создаем группировки по Родителю в табличном документе,беда в том что номенклатуру по родителю группируется, но в табличном документе не выводятся названия родителей(групп) |
|||
1
luckyluke
05.10.11
✎
15:35
|
(0) я так понимаю конструктором запросов не пользуешься по религиозным причинам?
Что ты имел ввиду под словами "Рекурсивно создаем группировки" я не понял, ибо рекурсии я не вижу в твоём коде. И описание проблемы "в табличном документе не выводятся названия родителей" побуждает меня записаться в телепаты... но у меня вообще плохо с этим делом. |
|||
2
GreenDay1986
05.10.11
✎
15:49
|
Поясняю - Создаю табличный документ типа
Имя Родителя1 - Ном1 - Ном2 Имя Родителя2 - Ном3 - Ном4 При нажатии на Имя Родителя Номенклатура сворачивается/разворачивается. У меня не выводятся Имя Родителя1, Имя Родителя2 и т.д. Конструктором да, по ним :))) |
|||
3
luckyluke
05.10.11
✎
16:15
|
(2) четсно говоря лень разбираться во всём твоём коде и понимать что ты хотел сделать, но тебе по всей видимости нужно почитать про ОбходРезультатаЗапроса.ПоГруппировкамСИерархией
|
|||
4
GreenDay1986
05.10.11
✎
16:20
|
делаю прайс - лист в группировкой по номенклатуре выгрудаемый в эксель(программно, с формулами). С Иерархией не катит, не то. :) Пробовал
|
|||
5
luckyluke
05.10.11
✎
16:27
|
(5) ну судя по структуре из (2) как раз самое то.
|
|||
6
chingiz
05.10.11
✎
17:59
|
Нет времени читать (0), но в макете тебе нужно сделать Область твоей группы и под ней область строчек группы.
И выводить: ТабДок.НачатьГруппуСтрок("Группа",Ложь); ТабДок.Вывести(ОбластьСтрока); ТабДок.ЗакончитьГруппуСтрок(); Для вывода, насколько помню нужно использовать ТаблицуЗначений. |
|||
7
GreenDay1986
10.10.11
✎
10:54
|
Автогруппировко
|
|||
8
GreenDay1986
10.10.11
✎
10:55
|
Автогрупировкой строк получилось. Урррра! Кто бы еще подсказал как программно разлочить область группировок получившуюся ,если предварительно защитить лист :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |