![]() |
![]() |
![]() |
|
Многоуровневая вложенность именованных областей табличного документа | ☑ | ||
---|---|---|---|---|
0
sprinter83
16.03.11
✎
15:53
|
Добрый день ссылка на макет
http://www.imagepost.ru/?v=761/0EZ3KMbzuq9gaNBoK8k6.png Вопрос в следующем. Есть Макет табличного документа, у него есть область "ЗаголовокКлиент" и вложенная в него область "СтрокаТовары". Как правильно заполнить данный макет. Может быть вопрос и простой, но ни когда с этим не встречался. Пробовал так, ни чего не выходит: ТабличныйДокумент = Новый ТабличныйДокумент Макет = ПолучитьОбщийМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокКлиент"); ОбластьМакета.Параметры.НомерЗаказа = Шапка.Номер; //заполняю остальные параметры //Получаю выборку из запроса Пока ВыборкаТовары.Следующий() Цикл ОбластьМакетаСтроки = Макет.ПолучитьОбласть("СтрокаТовары"); ОбластьМакетаСтроки.Параметры.Заполнить(ВыборкаТовары); ТабличныйДокумент.Вывести(ОбластьМакетаСтроки); КонецЦикла; ОбластьМакета.Параметры.Оплачено = ВыборкаДолг.СуммаОстаток; //заполняю другие параметры ТабличныйДокумент.Вывести(ОбластьМакета); Возврат ТабличныйДокумент; |
|||
1
RomaH
naïve
16.03.11
✎
16:10
|
ничего - это как?
хоть что-то да должно выйти |
|||
2
sprinter83
16.03.11
✎
16:16
|
Сначала выходит область СтрокаТовары
А потом уже "ЗаголовокКлиент" А нужно что бы область СтрокаТовары встраивалась в область ЗаголовокКлиент как на картинке |
|||
3
sprinter83
16.03.11
✎
16:18
|
В общем-то уже не сильно актуально, но всё-таки интересно как это работает.
|
|||
4
Ёпрст
гуру
16.03.11
✎
16:18
|
(2) дык и выводи 1 область
|
|||
5
Ёпрст
гуру
16.03.11
✎
16:25
|
(3) хз как в снеговике, в клюшках можно было выводить часть области через <>| ...
|
|||
6
sprinter83
16.03.11
✎
16:29
|
Если имеется ввиду так
ТабличныйДокумент = Новый ТабличныйДокумент Макет = ПолучитьОбщийМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокКлиент"); ОбластьМакета.Параметры.НомерЗаказа = Шапка.Номер; //заполняю остальные параметры //Получаю выборку из запроса Пока ВыборкаТовары.Следующий() Цикл ОбластьМакетаСтроки = Макет.ПолучитьОбласть("СтрокаТовары"); ОбластьМакетаСтроки.Параметры.Заполнить(ВыборкаТовары); КонецЦикла; ОбластьМакета.Параметры.Оплачено = ВыборкаДолг.СуммаОстаток; //заполняю другие параметры ТабличныйДокумент.Вывести(ОбластьМакета); Возврат ТабличныйДокумент; В таком случае ОбластьМакетаСтроки выводится только один раз и то пустая. т.е получаеться таблица получаеться так шапка таблицы, а затем одна пустая строка данной таблицы. http://www.imagepost.ru/?v=761/etyV7PuqHaU7Ka9GbSvB1.png |
|||
7
sprinter83
16.03.11
✎
16:36
|
Пробовал так ни чего не меняется,
Пока ВыборкаТовары.Следующий() Цикл ОбластьМакетаСтроки = Макет.ПолучитьОбласть("ЗаголовокКлиент|СтрокаТовары"); ОбластьМакетаСтроки.Параметры.Заполнить(ВыборкаТовары); ТабличныйДокумент.Вывести(ОбластьМакетаСтроки); КонецЦикла; |
|||
8
Ёпрст
гуру
16.03.11
✎
16:41
|
не реализовали поди в снеговике получение части области (при вложенных областях)
Видать тут только либо делать 3-мя отдельными секциями, либо высчитывать высоту секции и получать область как разность высот.. |
|||
9
sprinter83
16.03.11
✎
16:46
|
Я в общем-то 3-мя отдельными секциями зделал
|
|||
10
fimanich
16.03.11
✎
16:47
|
(0)красивый у тебя макет, просто песня.
Имхо, удалить область ЗаголовокКлиент, добавить область Шапка (строки 41-51) и Подвал (53-73), выводить области по очереди... |
|||
11
KindLion
16.03.11
✎
16:52
|
(0) Проще и быстрее всего - реализовать 3-мя отдельными областями, как советовали уже в (8).
Но, вообще-то задачка интересная - реализована эта фишка в 8-ке или нет. Посмотрю. Если найду - отпишусь. |
|||
12
KindLion
16.03.11
✎
17:04
|
Еще вариант - обращаться не к именованной области, а к области строк макета.
Вот так: ОбластьЗаголовка = ТабДок.Область("R41:R51"); //Заполнить параметры ТабДок.ВывестиОбласть(ОбластьЗаголовка); Пока ВыборкаТовары.Следующий() Цикл ОбластьСтрок |
|||
13
Ёпрст
гуру
16.03.11
✎
17:06
|
(12) это извращение - вставили/удалили строку и всё, ппц. отчету.
Ищи потом эти R41:R51 и правь везде.. |
|||
14
KindLion
16.03.11
✎
17:07
|
Сорри, отправилось раньше времени предыдущее сообщение
Вот так: ОбластьЗаголовка = ТабДок.Область("R41:R51"); //Заполнить параметры ТабДок.ВывестиОбласть(ОбластьЗаголовка); Пока ВыборкаТовары.Следующий() Цикл ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТовары"); // заполнить параметры строки ТабДок.ВывестиОбласть(ОбластьСтрока); КонецЦикла; ОбластьПодвала = ТабДок.Область("R53:R73"); //Заполнить параметры ТабДок.ВывестиОбласть(ОбластьПодвала); |
|||
15
KindLion
16.03.11
✎
17:08
|
(13) Да, это извращение.
Крайний случай при условии, если нельзя ломать макет. В противном случае - разбить на 3 области макет. Без вариантов, по-моему. |
|||
16
Ёпрст
гуру
16.03.11
✎
17:23
|
(15) почему ?
вариант - считать высоту секции и иметь область через разницу высот.. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |