Вывод области печати разных размеров в этикетках



Как вывести этикетку (паспорт качества) с разным количеством параметров

Не знаю, будет ли полезна кому-либо эта статья, но для меня явилось открытием, что не так просто вывести области табличной части в виде этикеток размером, к примеру, в пол-листа, если лист у нас в положении ландшафт.

Такого вида:

 

Т.е.  на листе по 2 штуки в нашем случае(можно 3, 4, …). Общее количество этикеток произвольное .

Вы скажете — нет ничего проще: используй метод Вывести(), далее Присоединить () , далее опять Вывести() и т.д.

Но не так то все просто:  наша область этикетки состоит не из 1 секции, а из нескольких, причем средняя часть каждый раз может содержать различное количество строк, т.е. выводятся некие параметры, количество которых может меняться.

После того как были прочесаны просторы интернета, удалось найти способ, который подойдет всем.

 

ТабДокумент        = Новый ТабличныйДокумент();
ТабДокумент1      = Новый ТабличныйДокумент();    //            Создаем 2 таблицы
ТекСтолбец = 0;

ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Столбец");        // по вертикали необходимо чтобы граница какая-то присутствовала в макете
ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Столбец");      // в данном варианте поле Столбец ограничивает макет по вертикали
ОбластьПараметры = Макет.ПолучитьОбласть("Параметры|Столбец");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал|Столбец");
ОбластьКоличество = Макет.ПолучитьОбласть("Количество|Столбец");
Для Каждого СтрокаТЧ ИзСерии Цикл
ТабДокумент1.Очистить();                                     //очищать обязательно!!!
ТабДокумент1.Вывести(ОбластьШапка);
Анализы=СтрокаТЧ.Документ.Анализы;
Для Каждого Индекс Из Анализы Цикл
ОбластьСтрока.Параметры.РезультатАнализа =Индекс.ЗначениеПоказателя;
ТабДокумент1.Вывести(ОбластьСтрока);       // вот количество этих строк разное
КонецЦикла;
ТабДокумент1.Вывести(ОбластьПодвал);
Если ТекСтолбец =0 Тогда
ТабДокумент.Вывести(ТабДокумент1.ПолучитьОбласть(1, 1, ТабДокумент1.ВысотаТаблицы,   ТабДокумент1.ШиринаТаблицы));     // Высота таблицы и Ширина рассчитываются системно
ТекСтолбец = ТекСтолбец + 1;
Иначе
ТабДокумент.Присоединить(ТабДокумент1.ПолучитьОбласть(1, 1, ТабДокумент1.ВысотаТаблицы, ТабДокумент1.ШиринаТаблицы));
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТекСтолбец =0;
КонецЕсли;

   

Главная фишка в использовании «ПолучитьОбласть(1, 1, ТабДокумент1.ВысотаТаблицы, ТабДокумент1.ШиринаТаблицы)», без этого чудо-оператора постоянно получалось не то, что нужно, области скакали как им было угодно, то они выводились все на одной странице, то каждый раз выводились с новой. Можно было использовать размеры выводимой области, но это подходит только для макетов, где ты точно знаешь размер выводимой области, в нашем варианте и строки разные, и количество их может отличаться.

Приложена обработка на основании документа Сертификация номенклатуры, потому что проблема возникла именно для печати паспортов качества. Понимаю, что не у всех используется данный документ, но, как говорится, у кого что болит..

Надеюсь, все же кому-то эта статья пригодится.  Когда у меня возникла эта проблема, я рванула на Инфостарт, но, к сожалению, в этом вопросе здесь был пробел. Давайте сделаем сайт Инфостарт без пробелов 🙂

2 Comments

  1. makas

    Симпатичная форма печатается +

    Reply
  2. masik85

    (1) makas, спасибки, хоть кому-то пригодилась :))

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *