Вход | Регистрация
 

Как вставить табличный документ в другой табличный документ?

Как вставить табличный документ в другой табличный документ?
Я
   RomaH
 
27.02.20 - 10:54
с кодом из СП получается чудовище Франкенштейна
https://dl.dropboxusercontent.com/s/rqovj9g5thyykug/2020-02-27_10h48_12.png?dl=0

Процедура ВставитьТабличныйДокумент(ТабличныйДокумент,РезультатИсследования);
    
    НачалоНовогоФорматаСтрок = ТабличныйДокумент.ВысотаТаблицы + 1;
    ОбластьПрямоугольная = РезультатИсследования.Область(1, ,РезультатИсследования.ВысотаТаблицы);
    ТабличныйДокумент.ВставитьОбласть(ОбластьПрямоугольная, ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, 1));
    ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, ,НачалоНовогоФорматаСтрок + РезультатИсследования.ВысотаТаблицы - 1, ).СоздатьФорматСтрок();
    
    Для Счетчик = 1 По РезультатИсследования.ШиринаТаблицы Цикл
        ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = РезультатИсследования.Область(1, Счетчик).ШиринаКолонки;
    КонецЦикла;
КонецПроцедуры


конкретно на этом виде документа - для красивости надо еще объединить две верхние ячейки по горизонтали и задать ширину колонок "Растягивать по горизонтали"
   RomaH
 
1 - 27.02.20 - 10:57
еще проблема - во вставляемом ТД могут попадаться строки со своим форматом строк

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

и как объединять ячейки кодом?
   RomaH
 
2 - 27.02.20 - 11:02
даже не как объединить - а как узнать какие ячейки объединены?
   RomaH
 
3 - 27.02.20 - 11:32
если нет вертикального объединения вроде более-менее
https://dl.dropboxusercontent.com/s/ul3xca2jqjz5rnk/2020-02-27_11h27_59.png?dl=0

вопрос  только по строкам без текста - при вставке области не "понимает" область печати  - строка над "Пациентом"
   FIXXXL
 
4 - 27.02.20 - 13:03
(2) почитай СП про СоздатьФорматСтрок
   FIXXXL
 
5 - 27.02.20 - 13:05
(4) +
Пример:

// ТДПриемник - табличный документ, в кот. устанавливается новый формат


// Отчет - табличный документ, на основании кот. будет установлен новый формат


Процедура ДобавитьОтчет(ТДПриемник, Отчет)

    НачалоНовогоФорматаСтрок = ТДПриемник.ВысотаТаблицы + 1;
    ОбластьПрямоугольная = Отчет.Область(1, , Отчет.ВысотаТаблицы, );
    ТДПриемник.ВставитьОбласть(ОбластьПрямоугольная, ТДПриемник.Область(НачалоНовогоФорматаСтрок, 1));
    ТДПриемник.Область(НачалоНовогоФорматаСтрок, , 
        НачалоНовогоФорматаСтрок + Отчет.ВысотаТаблицы - 1, ).СоздатьФорматСтрок();
    // назначим ширину колонок у новой области формата строк


    Для Счетчик = 1 По Отчет.ШиринаТаблицы Цикл
        ТДПриемник.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = Отчет.Область(1, Счетчик).ШиринаКолонки;
    КонецЦикла;
    ТДПриемник.ВывестиГоризонтальныйРазделительСтраниц();

КонецПроцедуры// ДобавитьОтчет
   Franchiser
 
6 - 27.02.20 - 13:12
ТабличныйДокумент (SpreadsheetDocument)
Вывести (Put)
Синтаксис:
Вывести(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)
Параметры:
<Таблица> (обязательный)
Тип: ТабличныйДокумент, ПолеТабличногоДокумента.
Выводимая таблица.
<Уровень> (необязательный)
Тип: Число.
Уровень используется для автоматической группировки строк табличного документа. Соседние строки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
<ИмяГруппы> (необязательный)
Тип: Строка.
Название группы, к которой относятся выводимые строки.
Значение по умолчанию: Пустая строка.
<Открыта> (необязательный)
Тип: Булево.
Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде.
Значение по умолчанию: Истина.
Возвращаемое значение:
Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
Описание:
Выводит табличный документ в результирующий табличный документ, добавляя его со следующей строки вслед за самой нижней выведенной строкой, начиная с первой колонки.
Табличные документы, которые выводятся при помощи данного метода, не рекомендуется передавать между клиентом и сервером и обратно.
   RomaH
 
7 - 27.02.20 - 14:00
Прикольно
Процедура ВставитьТабличныйДокумент(ТабличныйДокумент,РезультатИсследования);
    
    Для НомерСтроки = 1 По РезультатИсследования.ВысотаТаблицы Цикл 
        
        НачалоНовогоФорматаСтрок = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        ОбластьПрямоугольная = РезультатИсследования.Область(НомерСтроки, ,НомерСтроки);
        ТабличныйДокумент.ВставитьОбласть(ОбластьПрямоугольная, ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, 1));
        ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, ,НачалоНовогоФорматаСтрок).СоздатьФорматСтрок();
        
        СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,,НомерСтроки);
        
        Если СтрокаРезультатата.ШиринаТаблицы = 0 Тогда
            СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,1,НомерСтроки,1);
        КонецЕсли;
        
        Для Счетчик = 1 По Макс(СтрокаРезультатата.ШиринаТаблицы,1) Цикл
            ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = СтрокаРезультатата.Область(1, Счетчик).ШиринаКолонки;
            ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).РастягиватьПоГоризонтали = СтрокаРезультатата.Область(1, Счетчик).РастягиватьПоГоризонтали;
        КонецЦикла;
        
    КонецЦикла;
    
КонецПроцедуры


ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = СтрокаРезультатата.Область(1, Счетчик).ШиринаКолонки;

тут ширину на пустой строке нифига не присваивает
справа 60, а слева остается 9
   Franchiser
 
8 - 27.02.20 - 14:04
(7) Так не работает
ТабличныйДокумент.Вывести(ТабДок) ?
   RomaH
 
9 - 27.02.20 - 14:05
конечный результат

Процедура ВставитьТабличныйДокумент(ТабличныйДокумент,РезультатИсследования);
    
    Для НомерСтроки = 1 По РезультатИсследования.ВысотаТаблицы Цикл 
        
        НачалоНовогоФорматаСтрок = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        ОбластьПрямоугольная = РезультатИсследования.Область(НомерСтроки, ,НомерСтроки);
        ТабличныйДокумент.ВставитьОбласть(ОбластьПрямоугольная, ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, 1));
        ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, ,НачалоНовогоФорматаСтрок).СоздатьФорматСтрок();
        
        СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,,НомерСтроки);
        
        Если СтрокаРезультатата.ШиринаТаблицы = 0 Тогда
            СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,1,НомерСтроки,1);
            ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок,1).Текст = " ";
        КонецЕсли;
        
        Для Счетчик = 1 По Макс(СтрокаРезультатата.ШиринаТаблицы,1) Цикл
            ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).РастягиватьПоГоризонтали = СтрокаРезультатата.Область(1, Счетчик).РастягиватьПоГоризонтали;
            ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = СтрокаРезультатата.Область(1, Счетчик).ШиринаКолонки;
        КонецЦикла;
        
    КонецЦикла;
    
КонецПроцедуры


вроде красиво
но не будет работать на ячейках объединенных по вертикали
   RomaH
 
10 - 27.02.20 - 14:05
(8) а ты писатель или читатель?
   Franchiser
 
11 - 27.02.20 - 14:08
(10) тему прочитал, дальше не понял зачем тебе это все
   RomaH
 
12 - 27.02.20 - 14:09
(11) так нахера тогда пишешь?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.