Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 03:24

Связать области макета

Автор anna_m, 30 июл 2021, 14:11

0 Пользователей и 1 гость просматривают эту тему.

anna_m

Добрый день!

Задача: напечатать извещения для контрагентов.
Проблема: "прижать" подписанта вниз

Суть: был один запрос, который выводит инфо по данным контрагента и его подписанту (связано через муниципальные образования, за каждое МО отвечает отдельный человек). Вся информация из этого запроса выводилась в одной области макета.
Но появилась проблема, либо у контрагента с длинным названием организации подписант уходит на другую  страницу, либо, если уменьшить отступ подписантов от основного  текста, чтоб влезли все наверняка, подписанты у контрагентов с коротким наименованием находятся очень высоко на листе (а должны быть привязаны к концу страницы).
Если разбить на две области, то
1) как мне связать между собой два запроса по муниципальному образованию (ссылкиНаОбъект нет, это внешняя обработка, ни к какому документу не привязана), потому как печатать надо сразу по всем муниципальным образованиям и подписанты должны соответствовать
2) есть ли какой-то инструмент по привязке области к краю страницы, или придется извращаться?

Формы обычные, не управляемые

LexaK

в 1С используется такой механизм проверки помещения печатных областей на лист
в ТабДоке сначала задается формат листа А4 и ориентация портрет/ландшафт
затем в ТабДок выводятся области макета с заполненными данными
перед этим может выполняться такая проверка ТабДок.ПроверитьВывод(...) см. СП

для вашей задачи примерно такой алгоритм (возможны варианты)
создаете 3 (три) области
1.ОбластьШапка - с информацией, с наменованиями и т.д.
2.ОбластьПодписи - с подписями
3.ОбластьПустаяСтрока - просто одна пустая строка

алгоритм работы такой
1.формируете/заполняете и выводите в ТабДок,  ОбластьШапка

2.Формируете/заполняете  ОбластьПодписи и помещаете ее в Массив
3.в цикле в массив добавляем пустые строчки, что бы Подписи оказались в конце страницы

ну и далее такой код

МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьПодписи);
Пока ТабДок.ПроверитьВывод(МассивОбластей) Цикл
//перед подписями вставляем пустую стороку пока помещается на странице
МассивОбластей.Вставить(0, ОбластьПустаяСтрока); //именно вставить
КонецЦикла;

МассивОбластей.Удалить(0); //удаляем пустую строку на которой вышли из цикла

//выводим получившийся массив областей в ТабДок
Для каждого лкОбл Из МассивОбластей Цикл
ТабДок.Вывести(лкОбл);
КонецЦикла;




3.пишите цикл
создаете массив
если помогло нажмите: Спасибо!

anna_m

Цитата: LexaK от 30 июл 2021, 15:30в 1С используется такой механизм проверки помещения печатных областей на лист
в ТабДоке сначала задается формат листа А4 и ориентация портрет/ландшафт
затем в ТабДок выводятся области макета с заполненными данными
перед этим может выполняться такая проверка ТабДок.ПроверитьВывод(...) см. СП

для вашей задачи примерно такой алгоритм (возможны варианты)
создаете 3 (три) области
1.ОбластьШапка - с информацией, с наменованиями и т.д.
2.ОбластьПодписи - с подписями
3.ОбластьПустаяСтрока - просто одна пустая строка

алгоритм работы такой
1.формируете/заполняете и выводите в ТабДок,  ОбластьШапка

2.Формируете/заполняете  ОбластьПодписи и помещаете ее в Массив
3.в цикле в массив добавляем пустые строчки, что бы Подписи оказались в конце страницы

ну и далее такой код

МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьПодписи);
Пока ТабДок.ПроверитьВывод(МассивОбластей) Цикл
//перед подписями вставляем пустую стороку пока помещается на странице
МассивОбластей.Вставить(0, ОбластьПустаяСтрока); //именно вставить
КонецЦикла;

МассивОбластей.Удалить(0); //удаляем пустую строку на которой вышли из цикла

//выводим получившийся массив областей в ТабДок
Для каждого лкОбл Из МассивОбластей Цикл
ТабДок.Вывести(лкОбл);
КонецЦикла;




3.пишите цикл
создаете массив



Спасибо ,попробую!

anna_m

LexaK, спасибо еще раз, все получилось в лучшем виде

Похожие темы (5)

Рейтинг@Mail.ru

Поиск