Здравствуйте. Подскажите, как правильно присоединить область справа в макете, чтобы выводилось "как надо", а не "как получается"?
Пытаюсь так, Шапка2 выводится справа, но уже после строк:
Пытаюсь так, Шапка2 выводится справа, но уже после строк:
ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1|ОблЛев");
ТабДокумент.ВывестиОбласть(ОбластьШапка1);
//...вывод циклом строки1... ТабДокумент.ВывестиОбласть(строка1|ОблЛев);
ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка2|ОблПрав");
ТабДокумент.Присоединить(ОбластьШапка2);
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Найденные решения
Накропал пример. И, чудо, получилось!
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
Прикрепленные файлы:
ОтлДваОтчета.erf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Ну наверное
а
Еще есть хитрость выводить/присоединять через 2 табличных документа.
Вот приводил пример другому челу
Не ТабДокумент.ВывестиОбласть(ОбластьШапка1);
а
ТабДокумент.Вывести(ОбластьШапка1);
Еще есть хитрость выводить/присоединять через 2 табличных документа.
Вот приводил пример другому челу
&НаСервере
Функция ПечатьНаСервере()
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
ШапкаПраваяЧасть = Макет.ПолучитьОбласть("ШапкаПраваяЧасть|Колонка");
СтрокаПраваяЧасть = Макет.ПолучитьОбласть("СтрокаПраваяЧасть|Колонка");
ПодвалПраваяЧасть = Макет.ПолучитьОбласть("ПодвалПраваяЧасть|Колонка");
ЛеваяЧасть = Макет.ПолучитьОбласть("ЛеваяЧасть|Колонка");
ПраваяЧасть = Макет.ПолучитьОбласть("Таблица");
ЛеваяЧасть = Макет.ПолучитьОбласть("Шапка");
ТабДок = Новый ТабличныйДокумент;
Для Сч = 1 По 5 Цикл
Если Сч > 1 Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДокПраво = Новый ТабличныйДокумент;
ТабДок.Вывести(ЛеваяЧасть);
ТабДокПраво.Вывести(ШапкаПраваяЧасть);
Для к = 1 По 15 Цикл
ТабДокПраво.Вывести(СтрокаПраваяЧасть);
КонецЦикла;
ТабДокПраво.Вывести(ПодвалПраваяЧасть);
ТабДок.Присоединить(ТабДокПраво);
КонецЦикла;
Возврат ТабДок;
КонецФункции
Показать
Увы! Сие есть сложная задача - нарисовать на одном листе рядом два отчета.
Сразу скажу уверенно - работая с одним объектом ТД можно делать только так:
- вывел Область Шапка1
- присоединил Область Шапка2
вывод строк отчета в цикле:
- вывел Область Строка1
- присоединил Область Строка2
Т.е. как будто наращиваешь лист либо вниз, либо справа.
Поверь, как бы ты не сомневался в своих и моих знаниях, это так.
(2) Пытался разобрать пример и не понял его задумки.
- первое:
ЛеваяЧасть = Макет.ПолучитьОбласть("ЛеваяЧасть|Колонка");
ПраваяЧасть = Макет.ПолучитьОбласть("Таблица");
ЛеваяЧасть = Макет.ПолучитьОбласть("Шапка");
переменная "ЛеваяЧасть" перезатирает себя
- роль "ТабДокПраво" неясна. В нее выводится правая часть. Но потом результат присоединяется к левой.
Но присоединится то, не ко всему документу, а к только что выведенной секции.
Так тоже самое, что сразу Присоединить!
- зачем ее создавать в цикле?
ТабДокПраво = Новый ТабличныйДокумент;
Сразу скажу уверенно - работая с одним объектом ТД можно делать только так:
- вывел Область Шапка1
- присоединил Область Шапка2
вывод строк отчета в цикле:
- вывел Область Строка1
- присоединил Область Строка2
Т.е. как будто наращиваешь лист либо вниз, либо справа.
Поверь, как бы ты не сомневался в своих и моих знаниях, это так.
(2) Пытался разобрать пример и не понял его задумки.
- первое:
ЛеваяЧасть = Макет.ПолучитьОбласть("ЛеваяЧасть|Колонка");
ПраваяЧасть = Макет.ПолучитьОбласть("Таблица");
ЛеваяЧасть = Макет.ПолучитьОбласть("Шапка");
переменная "ЛеваяЧасть" перезатирает себя
- роль "ТабДокПраво" неясна. В нее выводится правая часть. Но потом результат присоединяется к левой.
Но присоединится то, не ко всему документу, а к только что выведенной секции.
Так тоже самое, что сразу Присоединить!
- зачем ее создавать в цикле?
ТабДокПраво = Новый ТабличныйДокумент;
(3) в 2 Я набросал ответ на вопрос одного пользователя
Где. Левая часть Статичная информация, Правая часть таблица
Где. Левая часть Статичная информация, Правая часть таблица
Прикрепленные файлы:
ПечатьМакетаВ2колонки.epf
// Сейчас работает такая схема:
ТабДок1 = Новый ТабличныйДокумент();
ТабДок2 = Новый ТабличныйДокумент();
//... собираем оба документа как удобно ...
ТабДок3 = Новый ТабличныйДокумент();
ТабДок3.Присоединить(ТабДок1); // именно присоединить в пустой док, при "Вывести" будет не то
ТабДок3.Присоединить(ТабДок2);
Накропал пример. И, чудо, получилось!
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
Прикрепленные файлы:
ОтлДваОтчета.erf
(6)
Добавлю от себя,
что первая выводимая таблица должна быть МЕНЬШЕ или равна второй!
Иначе присоединяться таблица не будет!
Так что, первое вывести можно какую нибудь ячейку, а к ней присоединить первую и вторую таблицу.
А вообще, автор, спасибки большое за подняту тему! Благодарность тебе в карму!
Добавлю от себя,
что первая выводимая таблица должна быть МЕНЬШЕ или равна второй!
Иначе присоединяться таблица не будет!
Так что, первое вывести можно какую нибудь ячейку, а к ней присоединить первую и вторую таблицу.
А вообще, автор, спасибки большое за подняту тему! Благодарность тебе в карму!
Возможно ли в 1С сделать такую штуку? (рисунок в прикреплении)
сверху самая широкая колонка
Ее ширина равна сумме ширин нижестоящих двух колонок(бежевым цветом отмечены)
Каждая бежевая колонка имеет ширину, равную сумме ширин нижестоящих зеленых колонок
количество и размер зеленых колонок в каждой бежевой колонке заранее неизвестен - макет будет динамический - в одной бежевой например, 4, во второй - 3 и так далее, макет должен "тянуть" соответственно все колонки
Есть такой метод:
// в области одна ячейко
Все замечательно... но вывести на показ ты такую область больше не сможешь)))))))))
Метод
больше не работает!!!))))
Просто тупо перестает выводить колонки с измененным размером и все что после них
Бред но факт!!!
получается такой тд в 1С невозможно нарисовать???
сверху самая широкая колонка
Ее ширина равна сумме ширин нижестоящих двух колонок(бежевым цветом отмечены)
Каждая бежевая колонка имеет ширину, равную сумме ширин нижестоящих зеленых колонок
количество и размер зеленых колонок в каждой бежевой колонке заранее неизвестен - макет будет динамический - в одной бежевой например, 4, во второй - 3 и так далее, макет должен "тянуть" соответственно все колонки
Есть такой метод:
ОблТест = Макет.ПолучитьОбласть("Обл_тест|Обл_тест1");
ОблТест.Область("R1:R1").ШиринаКолонки = 20;
Все замечательно... но вывести на показ ты такую область больше не сможешь)))))))))
Метод
ТабДокумент.Присоединить(ОблТест)
больше не работает!!!))))
Просто тупо перестает выводить колонки с измененным размером и все что после них
Бред но факт!!!
получается такой тд в 1С невозможно нарисовать???
Прикрепленные файлы:
Попробуйте еще такой вариант.
ТабличныйДокумент = Новый ТабличныйДокумент;
Шапка = Новый ТабличныйДокумент;
ЛеваяКолонка = Новый ТабличныйДокумент;
ПраваяКолонка = Новый ТабличныйДокумент;
ТабличныйДокумент.Вывести(Шапка);
ТабличныйДокумент.Вывести(ЛеваяКолонка.ПолучитьОбласть(1, 1, ЛеваяКолонка.ВысотаТаблицы, ЛеваяКолонка.ШиринаТаблицы));
ТабличныйДокумент.Присоединить(ПраваяКолонка.ПолучитьОбласть(1, 1, ПраваяКолонка.ВысотаТаблицы, ПраваяКолонка.ШиринаТаблицы));
//Если требуется выровнять колонки по высоте - можно сделать так:
Пока ПраваяКолонка.ВысотаТаблицы > ЛеваяКолонка.ВысотаТаблицы Цикл
ЛеваяКолонка.Вывести(ОбластьРазрыв);
КонецЦикла;
Пока ЛеваяКолонка.ВысотаТаблицы > ПраваяКолонка.ВысотаТаблицы Цикл
ПраваяКолонка.Вывести(ОбластьРазрыв);
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот