|
Присоединение табличного документа |
☑ |
0
Liova
29.08.12
✎
10:49
|
Делаю отчет из нескольких частей - имеются общие строки, далее часть с одной группировкой колонок, потом с другой группировкой колонок (данные разнородные в разрезе колонок, одинаковые только строки).
Сделал два ТД, в одном левая часть, в другом - правая, строки совпадают.
Теперь хочу Присоединить() правую часть к левой, но получается аналог Вывести().
ТД и ТД2 - табличные документы
ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТД);
ЭлементыФормы.ПолеТабличногоДокумента.Присоединить(ТД2);
ЧЯДНТ? Пробовал Присоединить(ТД.ПолучитьОбласть()) - всё аналогично
|
|
1
Liova
29.08.12
✎
11:57
|
Ап
|
|
2
kosts
29.08.12
✎
11:59
|
(0) Зачем сливать 2 в 1. Сразу формируй в один ТД.
|
|
3
rutony
29.08.12
✎
12:01
|
Попробуй табличные документы засунуть в области и выводить, присоединять
|
|
4
Liova
29.08.12
✎
12:01
|
(2) Неудобно сначала выводить кучу шапок (состав колонок зависит от итогов) а потом кучу данных. А так каждый отдельный блок есть, в код легко поменять местами/убрать/добавить что-нибудь.
|
|
5
Liova
29.08.12
✎
12:02
|
(3) Что имеется ввиду под "засунуть"?
|
|
6
Rie
29.08.12
✎
12:03
|
(0) Поподробнее - что такое ТД и ТД2.
Если ты ТД получил из области, тянущейся в бесконечность (например, "R8") - то не сможет от Присоединить.
|
|
7
Liova
29.08.12
✎
12:07
|
(6) ТД - Табличный документ, к которому из макета выводились и присоединялись области.
ТД2 - аналогично.
Если, например, я присоединю к ТД ТД2, то ТД2 выведется справа от последней строки ТД.
|
|
8
Rie
29.08.12
✎
12:09
|
(7) Откуда берётся этот табличный документ?
|
|
9
1Сергей
29.08.12
✎
12:10
|
(7) ПолучитьМакет()
|
|
10
Liova
29.08.12
✎
12:12
|
(8) Выводом и присоединением Макет.ПолучитьОбласть("Строка|Колонка")
|
|
11
kosts
29.08.12
✎
12:12
|
Формируй не в табличные документы, а сохраняй области в таблицу значений.
Потом пробегись по таблице значений вытащи области в тебе нужном порядке и выведи в табличный документ.
|
|
12
Rie
29.08.12
✎
12:13
|
Похоже, что (3) прав.
Или не
Вывести(ТД);
а
Вывести(ТД.ПолучитьОбласть(ТаОбластьЧтоРеальноЗаполнена));
|
|
13
Liova
29.08.12
✎
12:29
|
(12) Работает. Только туплю с тем, как мне получить область или её размеры, не считать же при выводе?
|
|
14
Liova
29.08.12
✎
12:58
|
ОбщийТД = Новый ТабличныйДокумент;
//ОбщийТД.Вывести(ТД.ПолучитьОбласть());
//ОбщийТД.Присоединить(ТД2.ПолучитьОбласть());
ОбщийТД.Вывести(ТД.ПолучитьОбласть(1, 1, ТД.ВысотаТаблицы, ТД.ШиринаТаблицы));
ОбщийТД.Присоединить(ТД2.ПолучитьОбласть(1, 1, ТД2.ВысотаТаблицы, ТД2.ШиринаТаблицы));
Так получает то, что мне надо. Причем закоментированный код дает совсем другие области.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший