Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Повторение области печати на каждой странице

Повторение области печати на каждой странице
Я
   KoalaJustKoala
 
24.05.21 - 07:36
Доброго времени суток!
Создал вот такую вот область печати, которую нужно выводить на каждой странице:
https://prnt.sc/13bz459

Пытался сделать через ТабДокумент.ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторениеСреза");
Или: ТабДокумент.ПовторятьПриПечатиКолонки = Макет.ПолучитьОбласть("ПовторениеСреза");
Так же сейчас пробовал через ПроверитьВывод():
Если ТабДокумент.ПроверитьВывод(ТабДокумент) Тогда
            
            Сообщить("1");
            
        Иначе
             ТабДокумент.ПовторятьПриПечатиСтроки
            ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза");
            ТабДокумент.Вывести(ОбластьМакетаСрез);
            Сообщить("2")
            
        КонецЕсли;

Выдает что-то такое: https://prnt.sc/13bz9id
https://prnt.sc/13bz9v3
https://prnt.sc/13bza41

Хотя если убрать это если:
https://prnt.sc/13bzc0r
https://prnt.sc/13bzc6l

Помогите с повторением на каждой странице, пожалуйста(
Не понимаю, что и где я пишу не так(
 
 Партнерская программа EFSOL Oblako
   KoalaJustKoala
 
1 - 24.05.21 - 07:58
Добавляю код с момента выполнения запроса, т.к. сам запрос не важен:

ВыборкаСтрокТовары = Запрос1.Выполнить().Выбрать();
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
    Макет       = ПолучитьМакет("Накладная");
    
    
    // Выводим шапку накладной

    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение");
    ТабДокумент.Вывести(ОбластьМакета);
        
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.ПредставлениеПоставщика = Шапка.Поставщик;
    ОбластьМакета.Параметры.Поставщик = Шапка.СкладОтправитель;
    
    ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.ТипКода = "4";
    ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.КонтрольныйСимвол = "";
    ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.Сообщение = ?(ПустаяСтрока(""),Штрихкод,"");
    ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.ТекстКода = Штрихкод;
    
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.ПредставлениеПолучателя = Шапка.Покупатель;
    ОбластьМакета.Параметры.Получатель = Шапка.СкладПолучатель;
    ТабДокумент.Вывести(ОбластьМакета);
    
    // Вывести табличную часть

    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
        ВыводитьКоды = Истина;
        Колонка = "Артикул";
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
        ВыводитьКоды = Истина;
        Колонка = "Код";
    Иначе
        ВыводитьКоды = Ложь;
    КонецЕсли;
    
    ВыводитьЦены = Истина;
    ИмяШапки  = "ШапкаТаблицыСЦенами";
    ИмяСтроки = "СтрокаСЦенами";
    ИмяРазделителя = "Разделитель";
    
    ОбластьНомера = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть(ИмяШапки + "|Данные");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    ОбластьКолонкаТовар = Макет.Область("Товар");
    Если Не ВыводитьКоды Тогда
        ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
        + Макет.Область("КолонкаКодов").ШиринаКолонки;
    КонецЕсли;
    
    ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные");
    
    ОбластьНомераР = Макет.ПолучитьОбласть(ИмяРазделителя + "|НомерСтроки");
    ОбластьКодовР  = Макет.ПолучитьОбласть(ИмяРазделителя + "|КолонкаКодов");
    ОбластьДанныхР = Макет.ПолучитьОбласть(ИмяРазделителя + "|Данные");
    
    
    
    Ном = 0;
    ФлЕстьКоличествоМест = ложь;
    Всего = 0;
    Предыдущий = 11;
    // Выборка товаров

    Пока ВыборкаСтрокТовары.Следующий() Цикл
        
        Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
            Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
            Продолжить;
        КонецЕсли;
        
        Ном = Ном + 1;
        ФлЕстьКоличествоМест = ложь;
        
        ОбластьНомера.Параметры.НомерСтроки = Ном;
        
        
        Если Предыдущий <> ВыборкаСтрокТовары.Сортировка тогда
            ТабДокумент.Вывести(ОбластьНомераР);
            ТабДокумент.Присоединить(ОбластьКодовР);
            ТабДокумент.Присоединить(ОбластьДанныхР);
        КонецЕсли;
        
        предыдущий = ВыборкаСтрокТовары.Сортировка;
        
        
        ТабДокумент.Вывести(ОбластьНомера);
        Если ВыводитьКоды Тогда
            Если Колонка = "Артикул" Тогда
                ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
            Иначе
                ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
            КонецЕсли;
            
            ТабДокумент.Присоединить(ОбластьКодов);
            
        КонецЕсли;
        
        ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
        ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар)
        + УниверсальныеМеханизмы.ПредставлениеХарактеристик(ВыборкаСтрокТовары);
        ОбластьДанных.Параметры.Производитель=ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Производитель.Наименование +
        ", "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Производитель.СтранаПроисхождения;
        
        ОбластьДанных.Параметры.Штрихкод = "";
        
        ЗапросНаКатегориюУслуги = Новый Запрос;
        ЗапросНаКатегориюУслуги.Текст = "ВЫБРАТЬ
        |    КатегорииОбъектов.Объект
        |ИЗ
        |    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
        |ГДЕ
        |    КатегорииОбъектов.Категория = &Категория
        |    И КатегорииОбъектов.Объект = &Объект";
        ЗапросНаКатегориюУслуги.Параметры.Вставить("Категория", Справочники.КатегорииОбъектов.НайтиПоНаименованию("Услуги"));
        ЗапросНаКатегориюУслуги.Параметры.Вставить("Объект", СсылкаНаОбъект.СкладПолучатель.Магазин);
        Если Не ЗапросНаКатегориюУслуги.Выполнить().Пустой() Тогда
            ЗапросНаШтрихкод = Новый Запрос;
            ЗапросНаШтрихкод.Текст = "ВЫБРАТЬ
            |    Штрихкоды.Штрихкод
            |ИЗ
            |    РегистрСведений.Штрихкоды КАК Штрихкоды
            |ГДЕ
            |    Штрихкоды.Владелец = &Владелец";
            ЗапросНаШтрихкод.Параметры.Вставить("Владелец", ВыборкаСтрокТовары.Номенклатура);
            ВыборкаЗапросаНаШтрихкод = ЗапросНаШтрихкод.Выполнить().Выбрать();
            Если ВыборкаЗапросаНаШтрихкод.Следующий() Тогда
                ОбластьДанных.Параметры.Штрихкод = "Штрихкод: " + ВыборкаЗапросаНаШтрихкод.Штрихкод;
            КонецЕсли;
        КонецЕсли;
        
        //ОбластьДанных.Параметры.Серия=ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование 

        //+ " № сертификата: "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.ТипСертификата.Наименование

        //+" "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСтрока+" действ. до: " 

        //+Формат(ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСрокГодности,"ДФ=dd.MM.yy");

        
        ОбластьДанных.Параметры.Серия=ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование 
        + " № Заключения о безопасности и качестве: "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.ТипСертификата.Наименование
        +" "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСтрока+" действ. до: " 
        +Формат(ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСрокГодности,"ДФ=dd.MM.yy");
         
        
        ТабДокумент.Присоединить(ОбластьДанных);
        
        
        
        Всего = Всего + ВыборкаСтрокТовары.Сумма;
        Если ТабДокумент.ПроверитьВывод(ТабДокумент) Тогда
            
            Сообщить("1");
            
        Иначе
            
            ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза");
            ТабДокумент.Вывести(ОбластьМакетаСрез);
            Сообщить("2")
            
        КонецЕсли;
    КонецЦикла;
    
    // Вывести подвал

    ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные");
    
    ОбластьДанных.Параметры.Всего = Всего;
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    
    // Вывести подписи.

    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабДокумент;
   KoalaJustKoala
 
2 - 24.05.21 - 08:23
Переиграл и уничтожил, хехехе
https://prnt.sc/13c114r

На всякий случай расскажу тут как, мало ли кому понадобится:
Я создал массив который опирается на мои строки с данным:

    ПоследниеСтроки = Новый Массив;
    ПоследниеСтроки.Добавить(ОбластьДанных);

Создал его перед циклом с заполнением строк!
После чего в самом цикле, почти в конце добавил Проверку на вывод:
        Если НЕ ТабДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда
                    
            ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза");
            ТабДокумент.Вывести(ОбластьМакетаСрез);
            
        КонецЕсли;

В итоге и получилась такая вот красота :3 
Хехехе :3
   SiAl-chel
 
3 - 24.05.21 - 08:26
(2) Молодец.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.