Мои заметки по 1с: Разрыв страницы в СКД

Метод табличного документа ПроверитьПрисоединение()

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

Как сделать разрыв страницы при использовании СКД?

На текущий момент это возможно сделать только объеденив хитрости программирования и конструктора макета. Но в целом это не сложно. 

Для начала определяемся с местом разрыва на примере это выглядит так:

25.09.png

Смысл таков, чтобы каждый партнер или контрагент начинался с нового листа ну это удобно для печати например.

Этапы интеграции:

  • Добавляем детальную запись новую, для удобства устанавлием имя “Разрыв страницы”. А в выбранных полях этой надстройки укажем – ПараметрыДанных.РазрывСтраницы
25.093.png

Манипуляции с макетом компоновки данных закончили. Теперь переходим в модуль объекта отчета и в предопределенной процедуре ПриКомпоновкеРезультата пишем следующий код:

///////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    ВариантРазрывСтраницы = Ложь;
   
Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    Для каждого Искомое Из Настройки.ПользовательскиеПоля.Элементы Цикл

        Если Искомое.Заголовок = “РазрывСтраницы” Тогда
           
ВариантРазрывСтраницы = Истина;
            Прервать;
        КонецЕсли;

    КонецЦикла;

    Если ВариантРазрывСтраницы Тогда

        СтандартнаяОбработка = Ложь;

        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
       
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
       
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
       
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

        ПроцессорВывода.НачатьВывод();

        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
        Пока
ЭлементРезультата <> Неопределено Цикл
            Если
ЭлементРезультата.ЗначенияПараметров.Количество() = 1 Тогда
                Если
ЭлементРезультата.ЗначенияПараметров[0].Значение = “ЭтоРазрывСтраницы” Тогда
                   
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;
            Иначе
               
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
            КонецЕсли;
           
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
        КонецЦикла;
       
ПроцессорВывода.ЗакончитьВывод();

    КонецЕсли;

КонецПроцедуры

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

Метод табличного документа ПроверитьПрисоединение()

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

Напечатать ТОРГ-12 на одной странице в 1С: Бухгалтерия 3.0 возможно только в том случае, если в реализации товаров и услуг только одна позиция номенклатуры. Когда позиций две и более, на печать накладная выводится на двух страницах.

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

На основании реализации формируем документ ТОРГ-12.

29-0.png

Так как в документе две позиции, появилось место разрыва страниц. Оно обозначено пунктиром.

29-1.png

Выделяем одну ячейку в документе под линией разрыва.

29-2.png

Открываем Меню- Таблица- Настройка печати- Удалить разрыв страницы.

29-3.png

Линия разрыва устранена.

29-4.png

Открываем поочередно Предварительный просмотр- Параметры страницы. В этом окне заполняем только поле Масштаб:

масштаб- значение 75;

устанавливаем флаг в строке По ширине страницы.

29-5.png

Настройка завершена. Документ сформирован на одной странице (1С показывает поле Страница 1 из 1).

Большинство обучающих материалов по программированию в системе 1С при описании формирования печатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.

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

Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).

Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:

ТабДок . ИмяПринтера = “HP LaserJet 3050 Series PCL 6” ;

При печати пакета документов можно сэкономить время, установив признак разбора по копиям:

ТабДок . РазборПоКопиям =истина;

Число копий можно указать так:

ТабДок . КоличествоЭкземпляров = 5 ;

Разумеется, можно задать поля:

ТабДок . ПолеСлева = 20 ; //Поле слева 20мм, остальные поля 10мм (по умолчанию)

Еще несколько свойств страницы:

ТабДок . ОриентацияСтраницы = ОриентацияСтраницы . Ландшафт ;
ТабДок . ЭкземпляровНаСтранице = 2 ; //на листе будет размещено 2 страницы
ТабДок . Автомасштаб =истина; //аналогично настройкам масштаба «по ширине страницы»

При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати»).

Свойство «РазмерСтраницы» позволяет задать стандартные форматы страницы – “ A 3”, “A4”, “ A 5” (полный список вариантов доступен в справке 1С).

ТабДок . РазмерСтраницы = “A3” ; // буква А должна быть английской

Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):

ТабДок . РазмерСтраницы = “Custom” ; //нестандартный размер
ТабДок . ВысотаСтраницы = 350 ;
ТабДок . ШиринаСтраницы = 350 ;

Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:

ТабДок . ВерхнийКолонтитул . Выводить =истина; //будет напечатан верхний колонтитул
ТабДок . РазмерКолонтитулаСверху = 7 ; //размер колонтитула 7мм (по умолчанию 10мм)
ТабДок . ВерхнийКолонтитул . ВертикальноеПоложение = ВертикальноеПоложение . Верх ;
ТабДок . ВерхнийКолонтитул . НачальнаяСтраница = 2 ; //колонтитул выводится со второй страницы
ШрифтКолонтитула =Новый Шрифт ( “Courier New” , 8 ,,Истина);
ТабДок . ВерхнийКолонтитул . Шрифт = ШрифтКолонтитула ; //наклонный шрифт
ТабДок . ВерхнийКолонтитул . ТекстВЦентре = “Верхний колонтитул” ;
ТабДок . ВерхнийКолонтитул . ТекстСправа = “Стр.[&НомерСтраницы] из [&СтраницВсего]” ; //нумерация страниц
ТабДок . ВерхнийКолонтитул . ТекстСлева = “[&Дата]” ; //текущая дата

Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.

1) Непосредственно на принтер:

ТабДок . Напечатать ( РежимИспользованияДиалогаПечати . НеИспользовать );
ТабДок . Напечатать (истина);

2) Перед печатью будет выведен диалог печати:

ТабДок . Напечатать ( РежимИспользованияДиалогаПечати . Использовать );
ТабДок . Напечатать (ложь);

Кроме того можно управлять и разбиением документа на страницы. Оценить количество страниц в документе по настройкам текущего принтера можно так:

С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.

Надо иметь ввиду, что работа последних трех методов зависит от установленного принтера. Если методу не удается его найти, вызывается исключение.

Принудительно вставить разрывы страниц позволяют методы «ВывестиВертикальныйРазделительСтраниц()» и «ВывестиГоризонтальныйРазделительСтраниц()».

Таким образом, можно управлять постраничным выводом на печать и контролировать заполнение страницы:

Если Не ТабДок . ПроверитьВывод ( МассивВыводимыхОбластей ) Тогда
ТабДок . ВывестиГоризонтальныйРазделительСтраниц ();
КонецЕсли;

Важной характеристикой платформы «1С:Предприятие 8.2» является строгое разделение свойств и методов по контексту исполнения. Если все приведенные выше свойства доступны в любом контексте, то перечисленные методы недоступны на тонком клиенте. Исключением является метод «Напечатать()», доступность которого по понятным причинам ограничена клиентской частью. Это означает, что формирование табличного документа должно происходить на сервере, а отправлять его на печать следует в клиентской процедуре.

  • Автор: Мария Сухоруких
  • Распечатать
Оцените статью:

(0 голосов, среднее: 0 из 5)

Работа с табличным документом в языке 1С 8.3, 8.2 (в примерах)

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

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Milkin_Vladimir_Photo_180.jpg

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

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

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...