День добрый!
Пытаюсь разобраться с данным методом.
"Описание:
Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ."
У меня выводится стабильно НИЖЕ, т.е. друг под другом два табличных документа. Макеты разные. Один содержится произвольное количество строк, второй имеет статический внешний вид.
Подумал что дело в разных макетах, сделал один макет, получаю нужную мне область, для второй таблицы. Тоже самое, выводится друг под другом.
Вопрос. Как вывести два разных макета, на печать на одном листе, не друг под другом, а рядом.
На картинке, как хочу сделать.
Пытаюсь разобраться с данным методом.
"Описание:
Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ."
У меня выводится стабильно НИЖЕ, т.е. друг под другом два табличных документа. Макеты разные. Один содержится произвольное количество строк, второй имеет статический внешний вид.
Подумал что дело в разных макетах, сделал один макет, получаю нужную мне область, для второй таблицы. Тоже самое, выводится друг под другом.
Вопрос. Как вывести два разных макета, на печать на одном листе, не друг под другом, а рядом.
На картинке, как хочу сделать.
Прикрепленные файлы:
По теме из базы знаний
- Как присоединить области с разным количеством строк? Способ формирования печатной формы под тип ценников, но с различными по высоте областями.
- Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок
- Методы работы с универсальным отчетом в подсистеме "Варианты отчетов" на БСП
- Методика подключения новых объектов к производительному методу RLS в 1С
- Печать в docx методами БСП без COM объекта
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Сегодня разбирался с такой же проблемой.
Делать нужно так:
Если делать так:
или так:
то результат вам не понравится... он будет на две строки и искажён
Делать нужно так:
ТабличныйДокумент.Вывести(ОбластьМакет1);
ТабличныйДокумент.Присоединить(ОбластьМакет2);
Если делать так:
ТабличныйДокумент.Присоединить(ОбластьМакет1);
ТабличныйДокумент.Присоединить(ОбластьМакет2);
или так:
ОбластьМакет1.Присоединить(ОбластьМакет2);
то результат вам не понравится... он будет на две строки и искажён
Можете использовать метод Табличного документа:
ВставитьОбласть(<ИсходнаяОбласть>, <ОбластьПриемник>, <Сдвиг>, <ЗаполнятьПараметры>)
То есть ОбластьПриемник - у Вас будет, вероятно, область фиксированного макета, который Вы вставляете в область первого табличного документа. Размеры исходной области и области-приемника должны совпадать, поэтому и адрес нужно четко указывать, т.е. не ТабДок.Область() , а ТабДок.Область(1, 5, 7, 5) , например.
ВставитьОбласть(<ИсходнаяОбласть>, <ОбластьПриемник>, <Сдвиг>, <ЗаполнятьПараметры>)
То есть ОбластьПриемник - у Вас будет, вероятно, область фиксированного макета, который Вы вставляете в область первого табличного документа. Размеры исходной области и области-приемника должны совпадать, поэтому и адрес нужно четко указывать, т.е. не ТабДок.Область() , а ТабДок.Область(1, 5, 7, 5) , например.
Первый макет это обычная накладная. В которой может быть любое количество строк. Разные секции, горизонтальные вертикальные. Опробовано уже и с разными макетами и с разными областями одного и того же макета, результат один, присоединение идет снизу, как метод "ВывестиОбласть".
Второй макет это таблица с определенными показателями. Которые конечные, скажем 10 строк.
В целях исключения ситуации "мы не заметили, мы потеряли, нам не привезли", надо все печатать на одном листе.
Как угадать область, для ВставитьОбласть, если табличный документ уже сформирован? Например в документе 2 строки, в макете1 печатаются 2 строки, а нужно добавить второй макет, где все равно 10 строк. Т.е. второй макет перекроет и строки и подвал первого макета.
Нашел похожую форму. Во вложении
Второй макет это таблица с определенными показателями. Которые конечные, скажем 10 строк.
В целях исключения ситуации "мы не заметили, мы потеряли, нам не привезли", надо все печатать на одном листе.
Как угадать область, для ВставитьОбласть, если табличный документ уже сформирован? Например в документе 2 строки, в макете1 печатаются 2 строки, а нужно добавить второй макет, где все равно 10 строк. Т.е. второй макет перекроет и строки и подвал первого макета.
Нашел похожую форму. Во вложении
Прикрепленные файлы:
(4) Flashlike,
1. Создаешь два табличных документа, в которые выводишь свои таблички (в каждую свой), но не показываешь их
2. Создаешь третий табличный документ. В него сначала методом Вывести выводишь ограничинную (по ширене) область первой таблицы. Ширину и высоту определяешь при помоши соотвествующих свойств табличного документа. Затем методом Присоединить выводишь второй табличный документ.
3. Показываешь пользователю готовый (тетий) табличный документ.
Как-то так.
1. Создаешь два табличных документа, в которые выводишь свои таблички (в каждую свой), но не показываешь их
2. Создаешь третий табличный документ. В него сначала методом Вывести выводишь ограничинную (по ширене) область первой таблицы. Ширину и высоту определяешь при помоши соотвествующих свойств табличного документа. Затем методом Присоединить выводишь второй табличный документ.
3. Показываешь пользователю готовый (тетий) табличный документ.
Как-то так.
Получилось. Спасибо всем откликнувшимся.
Все дело было именно в ширине области.
примерный код, который получился.
Остался один штрих. Большой штрих. При "ВставитьОбласть" не переносится форматирование, типа ширины и высоты. Нужен отдельный цикл, который поправит ширину и высоту ячеек.
Все дело было именно в ширине области.
примерный код, который получился.
Общая = Новый ТабличныйДокумент;
НомерКолонкиДляВторойТаб=Таб.ШиринаТаблицы+1;
НомерПоследнейКолонкиВторойТаб=Таб.ШиринаТаблицы+Таб2.ШиринаТаблицы;
Общая.ВставитьОбласть(Таб.Область("R1C1:R"+Таб.ВысотаТаблицы+"C"+Таб.ШиринаТаблицы),Общая.Область("R1C1:R"+Таб.ВысотаТаблицы+"C"+Таб.ШиринаТаблицы),,);
Общая.ВставитьОбласть(Таб.Область("R1C1:R"+Таб2.ВысотаТаблицы+"C"+Таб2.ШиринаТаблицы),Общая.Область("R1C"+НомерКолонкиДляВторойТаб+":R"+Таб2.ВысотаТаблицы+"C"+НомерПоследнейКолонкиВторойТаб),,);
Остался один штрих. Большой штрих. При "ВставитьОбласть" не переносится форматирование, типа ширины и высоты. Нужен отдельный цикл, который поправит ширину и высоту ячеек.
Тут надо четко понимать, что следует манипулировать именно прямоугольными областями табличного документа, четко ограниченными и по горизонтали и по вертикали.
Насколько понял, проблема у Вас была в том, что область "Макет1" не прямоугольная, а по всей длине строк.
Потому и Присоединить() добавляет снизу. Чтобы присоединение было сбоку, необходимо делать ограничение области не только по строкам, но и по столбцам.
Попробую пояснить подробнее:
Т.е. ПолучитьОбласть не всех строк, а пересечения имен области, разделенных знаком вертикальной черты "|".
см. код :
У Вас, скорее всего что-то вроде Макет.ПолучитьОбласть("Шапка"), если опираться на мой пример. Нет ограничения по столбцам, "|ЛеваяЧасть)". Т.е. вы берете строки с именем "Шапка" со всеми столбцами до конца документа. И, соответственно, платформа присоединяет снизу.
см. также скрин кода (1), макет(2) и результат работы кода по макету (3).
Также обратите внимание выделенные синим именованные области.
Насколько понял, проблема у Вас была в том, что область "Макет1" не прямоугольная, а по всей длине строк.
Потому и Присоединить() добавляет снизу. Чтобы присоединение было сбоку, необходимо делать ограничение области не только по строкам, но и по столбцам.
Попробую пояснить подробнее:
Т.е. ПолучитьОбласть не всех строк, а пересечения имен области, разделенных знаком вертикальной черты "|".
см. код :
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок = Новый ТабличныйДокумент;
ЛеваяОбласть = Макет.ПолучитьОбласть("Шапка|ЛеваяЧасть");
ТабДок.Вывести(ЛеваяОбласть);
ПраваяОбласть = Макет.ПолучитьОбласть("Шапка|ПраваяЧасть");
ТабДок.Присоединить(ПраваяОбласть);
ТабДок.Показать("Результат");
ПоказатьУ Вас, скорее всего что-то вроде Макет.ПолучитьОбласть("Шапка"), если опираться на мой пример. Нет ограничения по столбцам, "|ЛеваяЧасть)". Т.е. вы берете строки с именем "Шапка" со всеми столбцами до конца документа. И, соответственно, платформа присоединяет снизу.
см. также скрин кода (1), макет(2) и результат работы кода по макету (3).
Также обратите внимание выделенные синим именованные области.
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот