Имя: Пароль:
1C
1С v8
Как объединить табличные документы
0 web1984
 
04.09.15
16:21
Хочу получить один табличный документ из двух табличных документов.
Шапку делаю обычной процедурой печати через макет.
Таблицу делаю через скд.

Объедению две таблицы через

    МегаТабДокумент = Новый ТабличныйДокумент;
    МегаТабДокумент.Вывести(ТабДок);
    МегаТабДокумент.Вывести(ТабДок2);

ТабДок Шапка
ТабДок результат  СКД.

В шапке области и свой формат строк.
В СКД тоже свой макет со своим форматом строк.

При объединении пропадает формат строк СКД. Подозреваю из-за того что нет областей в СКД. Не знаю как сделать область программно. Подскажите в чем может быть причина?

Вариант все сделать через СКД не предлагать и наоборот.
1 aka AMIGO
 
04.09.15
16:24
"наоборот" - это как?
2 web1984
 
04.09.15
18:07
Сделать все программно.
3 web1984
 
04.09.15
20:04
Нашел пока один полувыход. Сделал в шапке первую строку по формату строк таблицы.
4 web1984
 
04.09.15
21:09
Нашел решение.


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

Документ1 = ЛюбаяФункцияПечатиВозвращающаяТабличныйДокумент();

ДокументОбщий .Вывести(Документ1 );
ДокументОбщий .ВывестиГоризонтальныйРазделительСтраниц();

Документ2 = ЛюбаяФункцияПечатиВозвращающаяТабличныйДокумент();
ЗадатьФорматСтрок(Документ2); //Новая процедура

ДокументОбщий .Вывести(Документ2 );
ДокументОбщий .ВывестиГоризонтальныйРазделительСтраниц();

ДокументОбщий .Показать();

///////////////////////////
Процедура ЗадатьФорматСтрок(прТаб)

лкКоличествоСтрок = прТаб.ВысотаТаблицы;
лкКоличествоКолонок = прТаб.ШиринаТаблицы;
лкШирина1 = "";
лкШирина2 = "";
лкСтрока1 = 0;
лкСтрока2 = 0;
Для лкСтр=1 По лкКоличествоСтрок Цикл

лкШирина2 = "";
Для лкКол=1 По лкКоличествоКолонок Цикл
лкШирина2 = лкШирина2 + "," + прТаб.Область(лкСтр,лкКол).ШиринаКолонки;
КонецЦикла;
Если лкШирина1 = лкШирина2 Тогда
лкСтрока2 = лкСтрока2 + 1;
Иначе
Если лкСтрока1 <> 0 Тогда
прТаб.Область(лкСтрока1,,лкСтрока2).СоздатьФорматСтрок();
КонецЕсли;
лкШирина1 = лкШирина2;
лкСтрока1 = лкСтр;
лкСтрока2 = лкСтр;
КонецЕсли;

КонецЦикла;

Если лкСтрока1 <> 0 Тогда
прТаб.Область(лкСтрока1,,лкСтрока2).СоздатьФорматСтрок();
КонецЕсли;

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