Имя: Пароль:
1C
1С v8
Отчет с выводом динамических столбцов.
0 Grasher134
 
07.04.12
13:27
https://picasaweb.google.com/lh/photo/P4u2nflmQH8DR3P8PChNimAUAlAwb6ZQPXww7H07vNk?feat=directlink

Нужно получить отчет вида

(шапка)

(дата)[(Счет1)..(счетN)](Сумма)
......
(итоги)

Никак не могу решить где надо множить колонки. Пробовал с макетом, приведенным выше, в цикле делать Присоединить(). Получается муть. Сначала выводится шапка таблицы, а потом справа выводятся эти колонки. Надо как-то выводить шапку таблицы по кускам.
1 Grasher134
 
07.04.12
13:46
2 Grasher134
 
07.04.12
14:01
ап
3 ale-sarin
 
07.04.12
14:06
Что-то типа такого:
1. Перед выводом шапки надо знать сколько колонок будет у строки
2. Первую колонку строки - "вывести", остальные - "присоединить"

Как-то так.
Или я неправильно понял вопроса?
4 a_alenkin
 
07.04.12
14:19
СКД
5 catena
 
07.04.12
14:26
Вы не умеете готовить Присоединить(). Оно не используется отдельно от Вывести().
Бьете макет на области, первую колонку в строке надо всегда ВЫВОДИТЬ, остальные колонки ПРИСОЕДИНЯТЬ, и всегда помнить, что отчет выводится ПОСТРОЧНО, нельзя вывести колонку и прилепить к ней еще колонку.


Но мне кажется, в восьмерке проще решить все запросом. Я как с 7.7 ушла, ни разу еще присоединить() не использовала, если память не подводит.
6 echo77
 
07.04.12
14:29
на СКД кросс-таблицу в настройках фигануть - самое простое
7 Grasher134
 
09.04.12
14:21
Спасибо всем. Просто я пытался сделать через присоединить, результат выше. СКД не очень получается использовать, т.к. я не могу сделать норм запрос.

Моя на СКД не работал, не приходилось. Все как-то загрузками-выгрузками был занят
8 Grasher134
 
09.04.12
14:51
Можете хотя бы сказать, у меня макет правильный или нет?

И если правильный, выводить надо в таком порядке?
<1c>
Макет = ПолучитьМакет("Макет");

   ОбластьЗаголовок1 = Макет.ПолучитьОбласть("ОбластьЗаголовок1");

   ОбластьПустаяСтрока1 = Макет.ПолучитьОбласть("ОбластьПустаяСтрока1");

   ОбластьЗаголовок2 = Макет.ПолучитьОбласть("ОбластьЗаголовок2");

   ОбластьПустаяСтрока2 = Макет.ПолучитьОбласть("ОбластьПустаяСтрока2");

   ОбластьЗаголовокТаблицыДата = Макет.ПолучитьОбласть("ОбластьЗаголовокТаблицы|ОбластьДата");

   ОбластьЗаголовокТаблицыСчет = Макет.ПолучитьОбласть("ОбластьЗаголовокТаблицы|ОбластьСчет");

   ОбластьЗаголовокТаблицыСумма = Макет.ПолучитьОбласть("ОбластьЗаголовокТаблицы|ОбластьСумма");

   ОбластьИтог = Макет.ПолучитьОбласть("ОбластьИтог");
   ОбластьДата = Макет.ПолучитьОбласть("ОбластьДата");
   ОбластьСчет = Макет.ПолучитьОбласть("ОбластьСчет");
   ОбластьСумма = Макет.ПолучитьОбласть("ОбластьСумма");

ТабличныйДокумент = ЭлементыФормы.ТабличныйДокумент;
   ТабличныйДокумент.Очистить();
   ТабличныйДокумент.Вывести(ОбластьЗаголовок1);
   ТабличныйДокумент.Вывести(ОбластьПустаяСтрока1);
   ТабличныйДокумент.Вывести(ОбластьЗаголовок2);
   ТабличныйДокумент.Вывести(ОбластьПустаяСтрока2);

       ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицыДата);
       For i = 1 to 5 do
       
       ТабличныйДокумент.Присоединить(ОбластьЗаголовокТаблицыСчет);
       
       Enddo;
ТабличныйДокумент.Присоединить(ОбластьЗаголовокТаблицыСумма);
</1c>
9 Grasher134
 
09.04.12
15:04
Так вроде выводит. Спасибо (5).

Последний вопрос: Как заполнять потом эту таблицу? Она поймет Область*.Параметры.Заполнить? Или опять в цикле отдельно каждую ячейку?
10 ale-sarin
 
09.04.12
15:26
(9) Перед тек, как "ТабличныйДокумент.Присоединить(ОбластьЗаголовокТаблицыСчет)" надо заполнить параметры выводимой области.
11 Grasher134
 
09.04.12
15:33
(10) Т.е.

Для i = 1 по 5 Цикл
       ОбластьСтрокаТаблицыДата.Параметры.Заполнить(...);
   ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыДата);
   For к = 1 to 5 do
   ОбластьСтрокаТаблицыСчет.Параметры.Заполнить(...);    ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыСчет);
    Enddo;
       ОбластьСтрокаТаблицыСумма.Параметры.Заполнить(...);
   ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыСумма);
КонецЦикла;

Или можно будет
ОбластьСтрокаТаблицы.Параметры.Заполнить(...)?
12 ale-sarin
 
09.04.12
16:21
(11) Пойми, в твоем случае "ОбластьСтрокаТаблицыСчет" это отдельная ячейка. И в каждой из выводимых ячеек разное значение.
Поэтому - еще раз - перед выводом области надо указать значения ее параметров.
13 Grasher134
 
09.04.12
16:40
(12) Да, понял.. Спасибо всем еще раз.
Закон Брукера: Даже маленькая практика стоит большой теории.