Как при выходе за границы листа при печати - уменьшать ширину колонок и картинки- пока не поместится на 1 лист , печать макета на листе

1. SvetaS2014 06.01.24 22:15 Сейчас в теме
Добрый день, уважаемые форумчани. Прошу помощи
1С:Предприятие 8.3 (8.3.15.1869), "Управление производственным предприятием", формы обычные (не управляемые)

печатаю в макете
как устранить при печати не правильное разбитие листа
т.е. Необходимо автоматом уменьшать ширину колонок и картинки (картинки пропорционально) пока не поместится всё на 1 печатный лист по ширине
и по длине без разбития пополам картинки с переносом шапки отчета на следующий лист при печати в нём
автоматом - т.е. при нажатии пользователем на отдельную кнопку подбора величины

Т.е. вопрос - как отловить -что не помещается на 1 лист (неделимая область карточки обведенная рамкой) и автоматом подобрать границы ширины (границы ширины колонок и границы ширины рисунка)
и по длине сделать перенос шапки отчета на следующий лист?
неделимая область
ОблКаталог=Макет.ПолучитьОбласть(НомерСтроки_н+1,1,НомерСтроки_к,6);
              ТабДокумент.Вывести(ОблКаталог);

область шапки для переноса на следующий лист
ОбластьЗаголовокСтрока=Макет.ПолучитьОбласть(2,1,4,6);

в чем ошибка
ОбластьЗаголовокСтрока=Макет.ПолучитьОбласть(2,1,4,6);
        
        ТабШапка.Вывести(ОбластьЗаголовокСтрока);
        
        МассивОбластей.Очистить();        
        МассивОбластей.Добавить(ТабДокумент);
        
        Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда    
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
            МассивОбластей.Очистить();
        КонецЕсли;
Показать


весь код:
 Для i = 1 По строка[0].свойства.Количество() Цикл
             
            если  строка[0].свойства[i-1].выбор=Истина  Тогда   
                
                ОбластьПараметр1.Параметры.ИмяДопПоля=строка[0].свойства[i-1].наименование;
                           
                ТабДок.Область(5+(i-1),3).ШиринаКолонки = ШиринаРисунка;
                ТабДок.Область(5+(i-1),3).Шрифт=Новый Шрифт("Arial",РазШрифта,Ложь,Ложь,Ложь,Ложь);   //имя,размер,полужирный,наклонный,подчеркивание,зачеркивание
                
                 ТабДок.Область(5+(i-1),2).ШиринаКолонки  =ШиринаКол;
                 ТабДок.Область(5+(i-1),2).Шрифт=Новый Шрифт("Arial",РазШрифта,Ложь,Ложь,Ложь,Ложь); 

                ТабДок.Область(5+(i-1),1).ШиринаКолонки = ШиринаКол;
                            ТабДок.Область(5+(i-1),1).Шрифт=Новый Шрифт("Arial",РазШрифта,Ложь,Ложь,Ложь,Ложь); 

                ТабДок.Область(5+(i-1),1).ВысотаСтроки=ВысотаСтр;
                ТабДок.Область(5+(i-1),2).ВысотаСтроки=ВысотаСтр;

                            ОбластьПараметр1.Параметры.ЗначениеДопПоля=строка[0].свойства[i-1].значение;
               
                ТабДок.Вывести(ОбластьПараметр1);
                             ТабДок.Присоединить(ОбластьКартинка11);
               
                 ОбластьПараметр2.Параметры.ИмяДопПоля=строка[1].свойства[i-1].наименование;
                 ОбластьПараметр2.Параметры.ЗначениеДопПоля=строка[1].свойства[i-1].значение;
                
                ТабДок.Область(5+(i-1),4).ВысотаСтроки=ВысотаСтр;
                ТабДок.Область(5+(i-1),5).ВысотаСтроки=ВысотаСтр;
                ТабДок.Область(5+(i-1),4).ШиринаКолонки =ШиринаКол;
                ТабДок.Область(5+(i-1),4).Шрифт=Новый Шрифт("Arial",РазШрифта,Ложь,Ложь,Ложь,Ложь); 

                ТабДок.Область(5+(i-1),5).ШиринаКолонки =ШиринаКол;
                ТабДок.Область(5+(i-1),5).Шрифт=Новый Шрифт("Arial",РазШрифта,Ложь,Ложь,Ложь,Ложь); 

                ТабДок.Область(5+(i-1),6).ШиринаКолонки = ШиринаРисунка;
                            ТабДок.Область(5+(i-1),6).Шрифт=Новый Шрифт("Arial",РазШрифта,Ложь,Ложь,Ложь,Ложь); 

                ТабДок.Присоединить(ОбластьПараметр2);
                            ТабДок.Присоединить(ОбластьКартинка22);
         
            конецесли;         
                 
        КонецЦикла;
                  НомерСтроки_н=НомерСтроки;
              НомерСтроки=НомерСтроки+строка[0].свойства.Количество();
              НомерСтроки_к=НомерСтроки;
                                  
              ОбластьКартинка01 = ТабДок.Область(НомерСтроки_н+1,3,НомерСтроки_к,3);
              ОбластьКартинка01.Объединить();
              
              Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
              ОбластьКарточки1 =ТабДок.Область(НомерСтроки_н+1,1,НомерСтроки_к,3);
                      ОбластьКарточки1.Обвести(Линия, Линия, Линия, Линия); 
              
              
              Рисунок1 =  ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
              Рисунок1.Картинка = Изображение1;
              Рисунок1.Расположить(ОбластьКартинка01); 
                          
                          если Рисунок1.Высота>ВысотаРисунка тогда Рисунок1.Высота=ВысотаРисунка; конецесли;
              если Рисунок1.Ширина>ШиринаРисунка тогда Рисунок1.Ширина=ШиринаРисунка; конецесли;

              ОбластьКартинка02 = ТабДок.Область(НомерСтроки_н+1,6,НомерСтроки_к,6);
              ОбластьКартинка02.Объединить();
              
                             
              Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
              ОбластьКарточки2 =ТабДок.Область(НомерСтроки_н+1,4,НомерСтроки_к,6);
                          ОбластьКарточки2.Обвести(Линия, Линия, Линия, Линия); 
              
              Рисунок2 =  ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
              Рисунок2.Картинка = Изображение2;
              Рисунок2.Расположить(ОбластьКартинка02); 
              если Рисунок2.Высота>ВысотаРисунка тогда Рисунок2.Высота=ВысотаРисунка; конецесли;
              если Рисунок2.Ширина>ШиринаРисунка тогда Рисунок2.Ширина=ШиринаРисунка; конецесли;

              
              ОблКаталог=Макет.ПолучитьОбласть(НомерСтроки_н+1,1,НомерСтроки_к,6);
              ТабДокумент.Вывести(ОблКаталог);
          

          конеццикла;    
          
        ОбластьЗаголовокСтрока=Макет.ПолучитьОбласть(2,1,4,6);
        
        ТабШапка.Вывести(ОбластьЗаголовокСтрока);
        
        МассивОбластей.Очистить();        
        МассивОбластей.Добавить(ТабДокумент);
        
        Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда    
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
            МассивОбластей.Очистить();
        КонецЕсли;    
    
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Истина;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
ТабДок.РазмерСтраницы=  "A4"; 
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Вывести(ТабДок);
ТабДок.Показать();
Показать

помогите пожалуйста.
Заранее спасибо
Прикрепленные файлы:
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот