|
Как вставить табличный документ в другой табличный документ? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
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, Счетчик).ШиринаКолонки; КонецЦикла; КонецПроцедуры конкретно на этом виде документа - для красивости надо еще объединить две верхние ячейки по горизонтали и задать ширину колонок "Растягивать по горизонтали" |
|||
1
RomaH
naïve
27.02.20
✎
10:57
|
еще проблема - во вставляемом ТД могут попадаться строки со своим форматом строк
я правильно понимаю, что для корректной вставки надо вставлять каждую строку по отдельности для каждой колонки этой строки копировать свойства и как объединять ячейки кодом? |
|||
2
RomaH
naïve
27.02.20
✎
11:02
|
даже не как объединить - а как узнать какие ячейки объединены?
|
|||
3
RomaH
naïve
27.02.20
✎
11:32
|
если нет вертикального объединения вроде более-менее
https://dl.dropboxusercontent.com/s/ul3xca2jqjz5rnk/2020-02-27_11h27_59.png?dl=0 вопрос только по строкам без текста - при вставке области не "понимает" область печати - строка над "Пациентом" |
|||
4
FIXXXL
27.02.20
✎
13:03
|
(2) почитай СП про СоздатьФорматСтрок
|
|||
5
FIXXXL
27.02.20
✎
13:05
|
(4) +
Пример: // ТДПриемник - табличный документ, в кот. устанавливается новый формат // Отчет - табличный документ, на основании кот. будет установлен новый формат Процедура ДобавитьОтчет(ТДПриемник, Отчет) НачалоНовогоФорматаСтрок = ТДПриемник.ВысотаТаблицы + 1; ОбластьПрямоугольная = Отчет.Область(1, , Отчет.ВысотаТаблицы, ); ТДПриемник.ВставитьОбласть(ОбластьПрямоугольная, ТДПриемник.Область(НачалоНовогоФорматаСтрок, 1)); ТДПриемник.Область(НачалоНовогоФорматаСтрок, , НачалоНовогоФорматаСтрок + Отчет.ВысотаТаблицы - 1, ).СоздатьФорматСтрок(); // назначим ширину колонок у новой области формата строк Для Счетчик = 1 По Отчет.ШиринаТаблицы Цикл ТДПриемник.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = Отчет.Область(1, Счетчик).ШиринаКолонки; КонецЦикла; ТДПриемник.ВывестиГоризонтальныйРазделительСтраниц(); КонецПроцедуры // ДобавитьОтчет |
|||
6
Franchiser
гуру
27.02.20
✎
13:12
|
ТабличныйДокумент (SpreadsheetDocument)
Вывести (Put) Синтаксис: Вывести(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>) Параметры: <Таблица> (обязательный) Тип: ТабличныйДокумент, ПолеТабличногоДокумента. Выводимая таблица. <Уровень> (необязательный) Тип: Число. Уровень используется для автоматической группировки строк табличного документа. Соседние строки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются. <ИмяГруппы> (необязательный) Тип: Строка. Название группы, к которой относятся выводимые строки. Значение по умолчанию: Пустая строка. <Открыта> (необязательный) Тип: Булево. Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде. Значение по умолчанию: Истина. Возвращаемое значение: Тип: ОбластьЯчеекТабличногоДокумента. Область, в которую был осуществлен вывод. Описание: Выводит табличный документ в результирующий табличный документ, добавляя его со следующей строки вслед за самой нижней выведенной строкой, начиная с первой колонки. Табличные документы, которые выводятся при помощи данного метода, не рекомендуется передавать между клиентом и сервером и обратно. |
|||
7
RomaH
naïve
27.02.20
✎
14:00
|
Прикольно
Процедура ВставитьТабличныйДокумент(ТабличныйДокумент,РезультатИсследования); Для НомерСтроки = 1 По РезультатИсследования.ВысотаТаблицы Цикл НачалоНовогоФорматаСтрок = ТабличныйДокумент.ВысотаТаблицы + 1; ОбластьПрямоугольная = РезультатИсследования.Область(НомерСтроки, ,НомерСтроки); ТабличныйДокумент.ВставитьОбласть(ОбластьПрямоугольная, ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, 1)); ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, ,НачалоНовогоФорматаСтрок).СоздатьФорматСтрок(); СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,,НомерСтроки); Если СтрокаРезультатата.ШиринаТаблицы = 0 Тогда СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,1,НомерСтроки,1); КонецЕсли; Для Счетчик = 1 По Макс(СтрокаРезультатата.ШиринаТаблицы,1) Цикл ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = СтрокаРезультатата.Область(1, Счетчик).ШиринаКолонки; ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).РастягиватьПоГоризонтали = СтрокаРезультатата.Область(1, Счетчик).РастягиватьПоГоризонтали; КонецЦикла; КонецЦикла; КонецПроцедуры ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = СтрокаРезультатата.Область(1, Счетчик).ШиринаКолонки; тут ширину на пустой строке нифига не присваивает справа 60, а слева остается 9 |
|||
8
Franchiser
гуру
27.02.20
✎
14:04
|
(7) Так не работает
ТабличныйДокумент.Вывести(ТабДок) ? |
|||
9
RomaH
naïve
27.02.20
✎
14:05
|
конечный результат
Процедура ВставитьТабличныйДокумент(ТабличныйДокумент,РезультатИсследования); Для НомерСтроки = 1 По РезультатИсследования.ВысотаТаблицы Цикл НачалоНовогоФорматаСтрок = ТабличныйДокумент.ВысотаТаблицы + 1; ОбластьПрямоугольная = РезультатИсследования.Область(НомерСтроки, ,НомерСтроки); ТабличныйДокумент.ВставитьОбласть(ОбластьПрямоугольная, ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, 1)); ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, ,НачалоНовогоФорматаСтрок).СоздатьФорматСтрок(); СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,,НомерСтроки); Если СтрокаРезультатата.ШиринаТаблицы = 0 Тогда СтрокаРезультатата = РезультатИсследования.ПолучитьОбласть(НомерСтроки,1,НомерСтроки,1); ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок,1).Текст = " "; КонецЕсли; Для Счетчик = 1 По Макс(СтрокаРезультатата.ШиринаТаблицы,1) Цикл ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).РастягиватьПоГоризонтали = СтрокаРезультатата.Область(1, Счетчик).РастягиватьПоГоризонтали; ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = СтрокаРезультатата.Область(1, Счетчик).ШиринаКолонки; КонецЦикла; КонецЦикла; КонецПроцедуры вроде красиво но не будет работать на ячейках объединенных по вертикали |
|||
10
RomaH
naïve
27.02.20
✎
14:05
|
(8) а ты писатель или читатель?
|
|||
11
Franchiser
гуру
27.02.20
✎
14:08
|
(10) тему прочитал, дальше не понял зачем тебе это все
|
|||
12
RomaH
naïve
27.02.20
✎
14:09
|
(11) так нахера тогда пишешь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |