1С Предприятие. Практика программирования на платформе v7

Создание печатной формы документа


В Конфигураторе создается не сама печатная форма, а только «заготовка» для её построения, состоящая из 2-х частей: шаблона печатной формы и алгоритма, описывающего порядок построения формы. Непосредственно сама печатная форма документа создается при работе документа в режиме «1С:Предприятие».

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

Упражнение 18. Создадим табличный шаблон и алгоритм создания печатного Документа по шаблону с помощью конструктора печати.

Конструктор печати документа можно запустить из меню Конструкторы при активном модуле формы документа. Работа с конструктором печати подробно описана во 2 т. Конфигурирования и администрирования 1С:Предприятия 7.7, стр. 201-209.

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

отформатировать выражения в ячейках, используя метод  Формат (<Форматируемое

102______________________ 1С:Предприятие. Практика программирования на платформе V7

значением <«Форматная   строка»>) . Форматную строку в ячейках табличного

шаблона можно задать непосредственно, не используя метод Формат(). Конструктор печати не использует идентификаторы реквизитов формы, в нашем примере — «Кф», и не видит у какого числового реквизита табличной части установлен «Итог по колонке».

Основные свойства табличного редактора

В системе «1С:Предприятие» в глобальном контексте и для объектов имеющих форму предусмотрен редактор таблиц, внешне похожий на Excel, в котором создаются шаблоны печатных форм. Информация, предназначенная для печати, располагается в ячейках шаблона и группируется по горизонтальным (и вертикальным) секциям. Вывод из исходного шаблона таблицы в результирующую таблицу осуществляется программно по секциям шаблона при помощи свойств служебного объекта «Таблица». Ячейки шаблона могут выполнять четыре типа преобразований: Текст - воспринимает символы в ячейке как строку текста, Выражение - воспринимает символы в ячейке как текст на встроенном языке, который транслируется и вычисляется, а затем преобразуется в текстовую строку результирующей таблицы, причем все незначащие символы отбрасываются, Шаблон и Фикс.шаблон позволяют в одной ячейке выводить и текст, и значение вычисленного выражения, текст, который должен быть проинтерпретирован как выражение берется в квадратные скобки []. Фиксированный шаблон позволяет задать определенную длину для значения выражения в квадратных скобках равную количеству знакомест между скобками. Для ячейки можно задать ширину столбца и высоту строки. Единицей измерения этих параметров является количество символов шрифта по умолчанию для табличных документов, последний задается в меню Сервис - Параметры -Интерфейс.






VIII. Документы и журналы документов_________________________________________ 103

Оформление заголовка печатной формы

Прежде всего, введем заголовок документа. Заголовок будет состоять, очевидно, из названия документа, номера документа и даты документа. Для ввода заголовка щелкните мышью в ячейку в верхней части. Содержимое ячейки может быть оформлено различным образом: изменяются начертание и размер текста, обрамление ячейки, цвет фона и текста. Все эти изменения выполняются при помощи палитры свойств ячейки. Для вызова палитры свойств ячейки выберите пункт «Свойства» меню «Действия» главного меню Конфигуратора. Откроем палитру свойств данной ячейки. В появившейся палитре свойств в закладке «Текст» нам нужно изменить значение поля «Тип». Щелкнем в него мышкой и выберем строку «Шаблон». (Этот тип позволяет совместить в одной ячейке и обычный текст, и одно или несколько выражений. Для того, чтобы выделить выражения в тексте ячейки, нужно просто заключать их в квадратные скобки). Теперь мы указали, что в данной ячейке будет располагаться не обычный текст, а выражение типа Шаблон на встроенном языке. Результат этого выражения при построении печатной формы документа будет выводиться в ячейке вместо самого выражения. Если заголовок документа это просто текст, то номер и дата документа зависят от конкретного документа, то есть они будут меняться. Для отражения данных документа в ячейку должно быть внесено выражение. Как мы уже отмечали, у документа есть два предопределенных реквизита -«Дата» и «Номер», которые мы не вводим при создании вида документа, но они всегда существуют. Они автоматически были внесены в диалог формы ввода документа. Для использования в выражениях для этих реквизитов существуют спе-циальные идентификаторы ДатаДок и НомерДок.

Установите курсор в окно редактирования и наберите на клавиатуре следующую строку:

[ПредставлениеВида()]№   [НомерДок]   от   [ДатаДок  #ДДДММММГГГГ]

и нажмите клавишу Enter, чтобы подтвердить введенный текст. Таким образом, в заголовок документа введены — строка названия документа и, в прямоугольных скобках, выражения, значения которых будут вставлены в символьную строку. Дата документа отформатирована в виде: 2 цифры - число, затем месяц прописью и 4 цифры - номер года (другие возможные значения форматной строки для различных базовых типов данных смотрите в I томе «Описания встроенного языка» », стр. 80-82 - метод «Формат»).



Разместим в печатном шаблоне реквизит «Основание». Введём поясняющий текст и выражение для вывода значения реквизита. Выберем ячейку (щелкнем в нее мышкой). Наберем на клавиатуре поясняющий текст «Основание». Разумеется этот текст может быть произвольным. Закончим ввод текста нажатием клавиши Enter. Теперь активизируем ячейку правее и введем в нее выражение. Для этого вызовем палитру свойств и изменим значение поля «Тип». Щелкнем в него мышкой и выберем строку «Выражение». В качестве

104______________________ 1С:Предприятие. Практика программирования на платформе \/7

выражения введем слово «Основание», которое в данном случае является идентификатором общего реквизита (его мы создавали, когда разрабатывали структуру документа) и не может быть другим. Закроем палитру кнопкой «ОК».

Создание табличной части печатной формы документа

Реквизиты табличной части документа вводятся в таблицу так же, как и реквизиты шапки, с той лишь разницей, что выражение будем размещать не справа от поясняющего текста, а на следующей строке, в другой секции. Фактически, сформирована таблица, которая повторяет табличную часть документа. Заголовки граф этой таблицы схожи с заголовками граф табличной части документа, а содержимое строк - это выражения для вывода реквизитов табличной части документа.

В качестве первого реквизита в форме расположен специальный реквизит, содержащий номер строки. Так же как номер и дата документа, реквизит «Номер строки» автоматически создается системой в документе, если существует хотя бы один реквизит табличной части. Его имеет смысл расположить в печатной форме, чтобы строки в ней были пронумерованы.

Выберите закладку «Положение», щелкнув мышью ее название.



Управляющие элементы этой закладки позволяют задавать вертикальное и горизонтальное выравнивание текста в ячейке. Зададим положение текста в середине ячейки, для этого щелкнем мышью слово «Центр» в группе «По горизонтали» и «По вертикали».

Изменим размер и атрибуты текста ячейки. Для этого используем закладку «Шрифт». Установим в закладке размер шрифта 10 и включим атрибут «жирности». Теперь перейдем к закладке «Рамка».





V///. Документы и журналы документов_________________________________________ 105

Управляющие элементы этой закладки предназначены для создания рамки вокруг ячейки или группы ячеек. На этой закладке выберем стиль рамки, щелкнув мышью нужный образец в группе «Стиль». В группе «Рамка» выберем вид рамки, точнее, вдоль каких границ ячейки будет идти рамка. Если мы щелкнем мышью поле «Обвести» - рамка будет идти вокруг ячейки.

Расположим следующие поясняющие тексты и выражения:



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

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

Очень важно, чтобы реальное содержимое ячейки таблицы соответствовало тому типу, который установлен для ячейки в поле Тип «Свойств ячейки», текст, выражение, шаблон. Несоответствие может вызывать различные неприятные эффекты. Например, если для ячейки с выражением установлен тип «Текст», то при построении печатной формы выражение будет выведено в форму, как обычный текст. То есть, вместо ожидаемых цифр в форме мы увидим какой-то непонятный текст.

И наоборот: если для текстовой ячейки установлен тип «Выражение», то при построении печатной формы программа совершенно логично будет считать текст в такой ячейке выражением и попытается его вычислить. Результатом такого «вычисления» будет, скорее всего, сообщение об ошибке. К счастью, подобные «эффекты» легко обнаружить и устранить.

106______________________ 1C:Предприятив. Практика программирования на платформе V7

Создание секции

Выберем из меню «Таблица» пункт «Включить секцию».



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



Секция является частью табличного документа. Секции бывают вертикальные и горизонтальные. Горизонтальная секция является совокупностью нескольких строк; как минимум, секция состоит из одной строки. Фактически, секция нужна только для того, чтобы назвать одну или несколько строк некоторым именем. Для создания секции выделите строки или столбцы табличного шаблона. Выделенные строки закрашиваются инверсным цветом. В главном меню Конфигуратора выберем позицию «Таблица» пункт «Включить в секцию». Появится диалог, в котором нужно указать имя секции. Изменим предложенное имя «Секция 1» и нажмем кнопку «ОК». В левой части окна появится обозначение выделенной нами секции.



VIII. Документы и журналы документов_________________________________________ 107

Описание алгоритма печати документа

Для манипулирования табличным документом в языке существует служебный объект «Таблица».

Процедура Печать()

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Печать");

Таб.ВывестиСекцию("Шапка");

Таб.Опции(0,0, Таб.ВысотаТабпицы(),0);

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Таб.ВывестиСекцию("Строка");

КонецЦикла;

//         Пропись("*.spl"); // Определение файла прописи

Таб.ВывестиСекцию("Подвал");

Таб.ТолькоПросмотр(1);

Таб.Показать("Печать документа "+ПредставлениеВида()+" "+НомерДок,"");

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

Дадим пояснения по строкам.

Строка Таб=СоздатьОбъект («Таблица») создает в модуле объект языка типа «Таблица». Он обязательно должен быть присвоен некоторой формальной переменной, которая в дальнейшем и будет использована для управления этим объектом. В отличие от реквизита документа, формальные переменные не хранятся в информационной базе, а «живут» до окончания процедуры. Использование объекта через создание переменной с некоторым именем позволяет использовать одном модуле несколько однотипных объектов. Итак, мы получили переменную Таб, которая содержит объект типа «Таблица».



Теперь мы можем выполнять различные действия над этим объектом, указывая методы этого объекта. Название метода записывается через точку после самого объекта и после него всегда ставятся круглые скобки. В скобках могут Указываться параметры. Опишем те действия, которые производятся с переменной Таб.

Таб.ИсходнаяТаблица(«Печать»);

В этой строке вызывается метод ИсходнаяТа6лица(«...»), который назначает исходный табличный документ. Мы уже упоминали, что в форме может быть несколько табличных документов. Например, вдокументе «Счет» может быть 2 печатные формы: для печати рублевого счета и для печати валютного счета.

108______________________ 1С:Првдприятие. Практика программирования на платформе V7

Метод Исходная Таблица(«...») позволяет выбрать, какую печатную форму мы будем использовать в данной процедуре. Если в форме объекта всего один табличный документ, то вызов метода ИсходнаяТаблица(«...») можно опустить.

Таб.ВывестиСекцию («Шапка») ;

Эта строка выполняет включение в результирующую таблицу подготовленной нами секции. Напомню, что мы выделили в табличном документе: две секции «Шапка» и «Строка».

Таб.Опции(0,0, Таб.ВысотаТаблицы(),0); Таб.ТолькоПросмотр(1);

Таб.Показать("Печать документа "+ПредставлениеВида()+" "+НомерДок,"");

Метод Опции(,,,,) отключает в готовом документе показ сетки ячеек и заголовков строк, определяет количество фиксированных строк и столбцов.

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

Метод ТолькоПросмотр(< ?>) определяет, что печатная форма будет использоваться только для просмотра и печати, а не для редактирования.

Метод Показатъ(<?>) открывает сформированную форму печатного документа, чтобы ее можно было бы посмотреть и вывести на принтер. Если этот метод не вызывать, то мы при работе с данным документом так и не увидим печатной формы.



Вывод строк документа располагается после вывода шапки, но до вызова метода Показать(<?>). Метод документа, начинающий обработку строк называется - ВыбратьСтроки().

Для организации обхода (выборки) строк документа используется конструкция встроенного языка

Пока ПолучитьСтроку()=1 Цикл

Таб.ВывестиСекцию(«Строка»);

КонецЦикла

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

Чтобы «привести модуль в порядок», можно воспользоваться следующим приемом: выбрать из меню «Действия» пункт «Выделить все», а затем, из этого

VIII. Документы и журналы документов_________________________________________ 109_

же меню, пункт «Форматировать блок». В результате все строки модуля будут выровнены в соответствии с принятым стандартом.

Редактирование в документе секции для печати итогов

В нижней части печатной формы документа находится область печати итогов по колонке «Сумма». Для записи выражения использован метод документа Итог(«<Реквизит >») , который предназначен для получения суммы значений числового реквизита документа по всем строкам. В скобках в качестве параметра нужно указать в двойных кавычках идентификатор того реквизита, с установленным флагом «Итог по колонке», данные по которому суммируются. При печати денежных величин иногда необходимо выводить их прописью. Для этого используется форматная строка «ЧПДС». Если необходимо напечатать величину в альтернативной валюте, используется метод Пропись(<"Файл прописи.spl">) до установки форматной строки «ЧПДС».

Режим объединения ячеек табличного шаблона

Разместим по центру заголовок документа. Сначала выделим область в строке, в которой расположен заголовок, начиная с его правой ячейки и до ячейки, расположенной над самой левой колонкой табличной части. Далее выберите из меню «Таблица» пункт «Объединить», чтобы выделенные ячейки воспринимались как одна область для центрирования.



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

При расположении текста в пределах нескольких ячеек, объединяемых командой «Объединить», необходимо, чтобы текст размещался в крайней левой ячейке из группы объединяемых ячеек. Если это не так, то при выполнении команды

110______________________ 1С:Предприятие. Практика программирования на платформе V7

«Объединить» текст «пропадет». Увидеть «пропавший» текст можно, если вызвать палитру свойств для ячейки, в которой находится этот текст.




Содержание раздела