helpf.pro
Регистрация

v8: Как при печати Макета недопустить разбитие пополам неделимой области (выводимой

Svetas2024
08.01.2024 11:42Прочитано: 1235

Добрый день, уважаемые форумчани. Прошу помощи

1С:Предприятие 8.3 (8.3.15.1869), "Управление производственным предприятием ",  формы обычные (не управляемые)

печатаю в макете

но при выводе по листам неделимая область с картинкой (обведённая рамкой) делится пополам.Как устранить деление пополам её вместе с картинкой , чтобы она не делилась, а переходила на следующий лист, но вместе с шапкой макета. И так на каждом листе.

Код 1C v 8.3
 Макет = ЭтотОбъект.ПолучитьМакет("МакетКаталогПоЭлементам");

ОбластьШапка1= Макет.ПолучитьОбласть("ШапкаСтока|Шапка1");
ОбластьШапка2= Макет.ПолучитьОбласть("ШапкаСтока|Параметры1");
ОбластьШапка3= Макет.ПолучитьОбласть("ШапкаСтока|Шапка2");
ОбластьШапка4= Макет.ПолучитьОбласть("ШапкаСтока|Параметры2");

ОбластьКартинка11= Макет.ПолучитьОбласть("параметр|Шапка1");
ОбластьПараметр1= Макет.ПолучитьОбласть("параметр|Параметры1");
ОбластьКартинка22= Макет.ПолучитьОбласть("параметр|Шапка2");
ОбластьПараметр2= Макет.ПолучитьОбласть("параметр|Параметры2");

ОбластьШапка4.Параметры.Дата = ТекущаяДата();
ТабДок.Вывести(ОбластьШапка1);
ТабДок.Присоединить(ОбластьШапка2);
ТабДок.Присоединить(ОбластьШапка3);
ТабДок.Присоединить(ОбластьШапка4);
МассивОбластей = Новый Массив;

НомерСтроки=5;

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

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

ТабДок.Защита = Истина;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
ТабДок.РазмерСтраницы=  "A4";
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Вывести(ТабДок);
ТабДок.Показать();

неделимая область (которая не должна разрываться вместе с картинкой) имеется в виду область обведённая линией и содержащая картнику.

Код 1C v 8.3
  Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
              ОбластьКарточки1 =ТабДок.Область(НомерСтроки_н+1,1,НомерСтроки_к,3);
                      ОбластьКарточки1.Обвести(Линия, Линия, Линия, Линия);
                        
                             
              Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
              ОбластьКарточки2 =ТабДок.Область(НомерСтроки_н+1,4,НомерСтроки_к,6);
                          ОбластьКарточки2.Обвести(Линия, Линия, Линия, Линия);

а то получается что картинка делится пополам между страницами - это недопустимо

шапка имеется виду

Код 1C v 8.3
 ОбластьЗаголовокСтрока= ТабДок.Область(2,1,4,6);   

как такое устранить?чтобы картинка не отображалась отдельно от надписи на другом листе (а переносилась вся карточка) и чтобы картинка не делилась пополам, а сначала переносилась шапка, а потом вся карточка.

Как такое исправить?Помогите, пожалуйста.

Заранее спасибо

Yandex
Возможно, вас также заинтересует
Реклама на портале
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.