Шаблон печатной формы документа в формате платформы
Общее
Печатные формы документов описываются в формате XML и состоят из различных секций документа, которые в ходе процедуры генерации печатной формы документа образуют документ в формате Microsoft Word (.docx). Для формирования печатной формы можно использовать любую информацию, доступную в экземпляре конфигурации.
Свойства формы:
| Свойство | Тип | Описание |
|---|---|---|
| Name | string | Имя формы |
| EntityName | string | Для какого сущности данных эта форма |
| ModelExpression | ObjectExpression | Вычисляемое выражение, возвращающее объект произвольной структуры, содержащий все необходимые данные для формирования печатной формы документа |
| FileName | StringExpression | Алгоритм, по которому создаётся имя файла (результата работы печатной формы) |
| FontSettings | FontSettings | Шрифт формы по умолчанию |
| SpaceBeforeSectionExpression | DoubleExpression | Вертикальный отступ перед секцией печатной формы в сантиметрах |
| DefaultLineSpacingExpression | DoubleExpression | Межстрочный интервал текста внутри секции печатной формы в линиях |
| FontFamilyExpression | StringExpression | Выражение, возвращающее имя семейства шрифтов секции печатной формы |
| FontSizeExpression | DoubleExpression | Выражение, возвращающее размер шрифта формы |
| Margins | PageMargins | Отступы печатной формы от краев страницы |
| Sections | PrintFormSection[] | Секции формы |
| Header | PrintFormSection[] | Секции, являющиеся «шапкой» (PrintFormSection) |
| FirstHeader | PrintFormSection[] | Секции, являющиеся «шапкой» для первой секции (PrintFormSection) |
| Footer | PrintFormSection[] | Секции, являющиеся «подвалом» (PrintFormSection) |
| FirstFooter | PrintFormSection[] | Секции, являющиеся «подвалом» для первой секции (PrintFormSection) |
Наследники сущности PrintFormSection (виды секций):
| Сущность | Описание |
|---|---|
| CityAndDateSection | Секция, выводящая город составления и дату документа. |
| GridSection | Секция, позволяющая организовать (сверстать) содержимое документа в виде статической таблицы. Является контейнером для других секций. |
| GridTableSection | Секция, позволяющая организовать (сверстать) содержимое документа в виде таблицы со статическим заголовком и динамическим телом таблицы. Является контейнером для других секций. |
| HeadingSection | Секция, выводящая заголовок и подзаголовок документа. |
| NumberAndDateSection | Секция, выводящая дату и номер документа. |
| PageBlockSection | Секция, вставляющая в документ новый блок страниц с независимой настройкой ориентации, полей и колонтитулов. |
| PageBreakSection | Секция, вставляющая принудительный разрыв страницы, но не начинающая новый блок страниц документа. |
| RepeatSection | Секция, получающая в качестве параметра массив произвольных объектов и добавляющая в документ для каждого такого объекта копию вложенных в нее секций. |
| StartDateEndDateSection | Секция, выводящая блок с датой начала и датой окончания периода. |
| TableSection | Секция, выводящая таблицу со статическим заголовком и динамическим телом таблицы. |
| TextSection | Секция, выводящая произвольный форматированный текст. |
| TitleValueHintSection | Секция, выводящая в документ текст, визуально оформленный как машинописное заполнение формы, предназначенной для заполнения вручную, с возможностью добавления подстрочных подсказок. |
Свойства сущности PageMargins:
| Свойство | Тип | Описание |
|---|---|---|
| Inside | DoubleExpression | Внутреннее поле |
| Top | DoubleExpression | Верхнее поле |
| Outside | DoubleExpression | Вешнее поле |
| Bottom | DoubleExpression | Внутреннее поле |
Свойства сущности FontSettings:
| Свойство | Тип | Описание |
|---|---|---|
| FontFamily | string | Название шрифта |
| FontSize | double | Размер шрифта |
Пример описания печатной формы:
<!-- обязательный заголовок файла, в котором описывается форм а -->
<?xml version="1.0" encoding="utf-8"?>
<!-- имя формы, для какого сущности данных эта форма -->
<PrintForm Name="LayoutOfAxesActForm2018" EntityName="LayoutOfAxesAct">
<!-- алгоритм формирования имени файла -->
<FileName>'АРООКС' + (model.Properties.DocumentNumber ? ' №' + model.Properties.DocumentNumber : '') + (model.Properties.DocumentDate ? ' от ' + formatDate(model.Properties.DocumentDate) : '')</FileName>
<!-- шрифт -->
<FontSettings FontFamily="Arial" FontSize="9" />
<FontFamilyExpression>Common.getProjectFontFamily()</FontFamilyExpression>
<FontSizeExpression>Common.getProjectFontSize()</FontSizeExpression>
<!-- поля -->
<Margins>
<Inside>Common.getProjectPageMargins().marginInside</Inside>
<Top>Common.getProjectPageMargins().marginTop</Top>
<Outside>Common.getProjectPageMargins().marginOutside</Outside>
<Bottom>Common.getProjectPageMargins().marginBottom</Bottom>
</Margins>
<!-- секции -->
<Sections>
<!-- секция TitleValueHint -->
<TitleValueHint AllowInlineTitle="!!Project.Properties.AllowInlineTitles" TitleOnly="false" Visible="true" BoldTitle="Common.boldTitles()" BoldValue="Common.boldContent()">
<Title>'Объект строительства'</Title>
<Value>Project.Properties.FullName</Value>
<Hint>'(Наименование объекта строительства)'</Hint>
<TitlePostfix>null</TitlePostfix>
</TitleValueHint>
<!-- секция Heading -->
<Heading Bold="Common.boldTitles()">
<Heading>'АКТ'</Heading>
<Subheading>'разбивки осей объекта капитального строительства на местности'</Subheading>
</Heading>
<!-- секция NumberAndDate -->
<NumberAndDate>
<Number>model.Properties.DocumentNumber</Number>
<Date>model.Properties.DocumentDate</Date>
<DateHint>'(дата составления акта)'</DateHint>
</NumberAndDate>
<!-- секция Repeat -->
<Repeat>
<ArrayExpression Array="model.Properties.ResponsiblePersonGroups">
<TitleValueHint AllowInlineTitle="false" TitleOnly="false" Visible="true" BoldTitle="Common.boldTitles()" BoldValue="Common.boldContent()">
<Title>$item.Properties.RoleTitle</Title>
<Value>PrintForms.responsiblePersonsTextExpression($item)</Value>
<Hint>PrintForms.responsiblePersonsHintExpression($item)</Hint>
<TitlePostfix>null</TitlePostfix>
</TitleValueHint>
</ArrayExpression>
</Repeat>
<!-- секция TitleValueHint -->
<TitleValueHint AllowInlineTitle="true" TitleOnly="false" Visible="true" BoldTitle="Common.boldTitles()" BoldValue="Common.boldContent()">
<Title>'составили настоящий акт о том, что произведена разбивка в натуре осей'</Title>
<Value>model.Properties.Axes</Value>
<Hint>''</Hint>
<TitlePostfix>null</TitlePostfix>
</TitleValueHint>
<!-- секция Text -->
<Text Visible="Common.boldTitles()">
<Chunk Bold="true">'Акт составлен в '</Chunk>
<Chunk Bold="false" Underline="true">model.Properties.NumberOfCopies ? formatInteger(model.Properties.NumberOfCopies) : '____'</Chunk>
<Chunk Bold="true">' экземплярах'</Chunk>
</Text>
<!-- секция TitleValueHint -->
<TitleValueHint AllowInlineTitle="true" TitleOnly="false" Visible="true" BoldTitle="Common.boldTitles()" BoldValue="Common.boldContent()">
<Title>'Приложения'</Title>
<Value>model.Properties.Attachments</Value>
<Hint>'(схема закрепления осей)'</Hint>
<TitlePostfix>null</TitlePostfix>
</TitleValueHint>
<!-- секция Repeat -->
<Repeat>
<ArrayExpression Array="model.Properties.ResponsiblePersonGroups">
<TitleValueHint AllowInlineTitle="false" TitleOnly="false" Visible="true" BoldTitle="Common.boldTitles()" BoldValue="Common.boldContent()">
<Title>$item.Properties.RoleTitle</Title>
<Value>PrintForms.responsiblePersonSignaturesExpression2018($item)</Value>
<Hint>'(фамилия, инициалы, подпись)'</Hint>
<TitlePostfix>null</TitlePostfix>
</TitleValueHint>
</ArrayExpression>
</Repeat>
</Sections>
</PrintForm>