Имя: Пароль:
1C
1С v8
ТабличныйДокумент, метод Присоединить() работает по-разному! (с примером кода)
0 xintrea
 
12.11.12
16:37
Здравствуйте!

1С 8.2. Управляемое приложение.


Делаю программную генерацию отчета. Обнаружил странную особенность метода Присоединить(), не знаю как обойти.

Проблема в следующем. Предположим, нужно вывести колонку с надписью, а справа от нее еще 10 колонок с цифрами 1..10. Вот так (правильно):


Надпись 1 2 3 4 5 6 7 8 9 10


Так вот, если надпись, выводимая в табличный документ через метод Вывести(), является табличным документом, созданным на основе табличного документа, куда и будет сделан вывод, то цифры будут присоединены в той же строке (что мне и нужно).

Но если надпись, выводимая в табличный документ через метод Вывести(), является другим табличным документом, то цифры будут присоединены на следующей строке! Вот так (неправильно):


Надпись
1 2 3 4 5 6 7 8 9 10


Чтобы было понятнее, вот пример кода:


&НаКлиенте
Процедура КомандаПоказатьТаблицу(Команда)

ТабДок = Новый ТабличныйДокумент;

ДниТабДок = ТабДок.ПолучитьОбласть("R1C1"); // Вариант 1 - правильный
// ДниТабДок = Новый ТабличныйДокумент; // Вариант 2 - неправильный

ДниТабДок.Область("R1C1").Текст = "Дни";
ТабДок.Вывести(ДниТабДок);

Для К=1 По 10 Цикл
 Секция = ТабДок.ПолучитьОбласть("R1C1");
 Секция.Область().Текст = "День "+К;
 ТабДок.Присоединить(Секция);
КонецЦикла;

ТабДок.Показать();

КонецПроцедуры


То есть, от того, на основе чего был сделан последний вставленный табличный документ, зависит поведение метода Присоединить().

Но я не могу всё делать на основе одного документа. У меня в отчете несколько шаблонов, несколько созданных в коде табличных документов. И я не могу их толком прилепить справа. Они всегда прилепляются снизу, а не на той же строке!

Вопрос. Как обойти эту особенность? Что я делаю не так?
1 х86
 
12.11.12
16:59
сорри но что-то мне подсказывает что код чуть кривоват
2 xintrea
 
12.11.12
17:21
(1) Это максимально упрощенный код из официальной справки по методу Присоединить(). В чем кривость кода?

Мне нужно, чтобы можно было работать с любым документом, чтобы любой табличный документ можно было присоединять справа.

А получается, что можно справа присоединить только тот, который сгенерирован на основе документа, куда и будем присоединять.
3 х86
 
12.11.12
17:47
как-то так
   ТабДок = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   
   ОбластьДни = Макет.ПолучитьОбласть("ОбластьДни");
   ДопОбласть = Макет.ПолучитьОбласть("ДопОбласть");
   
   ОбластьДни.Параметры.Заполнить(...);
   ТабДок.Вывести(ОбластьДни);
   
   Для К=1 По 10 Цикл
       ДопОбласть.Параметры.Заполнить(...);
       ТабДок.Присоединить(ДопОбласть);
   КонецЦикла;
   
   ТабДок.Показать();
4 xintrea
 
14.11.12
08:30
Вы сами проверили, то что написали?
5 НЕА123
 
14.11.12
08:54
(0)
ТабДок.Вывести(ДниТабДок.ПолучитьОбласть("R1C1"));

так не кошерно?

а вообще
(1)+1
6 Serg_1960
 
14.11.12
09:02