ПЕЧАТЬ BISPC

Цель данной статьи не пересказать содержание документации "Открытая система печати", а показать процесс создания своей процедуры печати BisPC.


ШАБЛОН ОТКРЫТОЙ СИСТЕМЫ ПЕЧАТИ


В классификаторе ВидДок (Открытая система печати) создаем вид документа (Базовый модуль Печать Открытая система печати) по Insert создаем вид печатного документа, назовем его, например doc1.

В Генераторе отчетов создаем шаблон. Для создания шаблонов заходим Базовый модуль Печать Генератор отчетов, в нем Insert указываем имя шаблона. Заполняем следующие доп. реквизиты:

  - Вид печатного документа

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

  - Режим печати

Для Word шаблона указываем DocVar.

Для Excel шаблона указываем XlsVar.

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

По F3 заполняем шаблон :

Для переменных:

Для передачи значений переменных в шаблоны Word и Excel указываем имя переменной и тег для подстановки значения данной переменной, которые будет передавать процедура печати:

Teg_DocVar_name:<#teg_name#>

  • Teg-DocVar-name – имя переменной в шаблоне;
  • teg-name - имя тега.

Для таблиц:

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

[table]:N
<#table-data#>

[table/]:N

  • N - номер таблицы;
  • table-data - содержимое таблицы;

table-date - представляет собой значение всех ячеек таблицы, разделенных "~n". При этом, в шаблонах Word и Excel заполнение таблицы осуществляется слева направо и сверху вниз.


ПРОЦЕДУРА ПЕЧАТИ


При написании своей процедуры печати, объявляем в ней инклюд-файл doc-prn.def, который содержит в себе описание временной таблицы TTName, в которую будут записываться имена и значения тегов, подставляемых в созданный шаблон. Для заполнения данной таблицы, в doc-prn.def так же описана процедура Insert_TTName, имеющая два входных параметра: наименование и значение тега .

Для передачи значений переменных:

Run Insert_TTName(teg-name, teg-data).

  • teg-name - наименование тега, CHAR типа;
  • teg-data - значение тега, CHAR типа.

Для передачи содержимого таблицы:

SUBSCRIBE TO "get-ttnames" ANYWHERE RUN-PROCEDURE "get-ttnames".
RUN Insert_TTName("table-data", "").
UNSUBSCRIBE TO "get-ttnames".

PROCEDURE get-ttnames:

DEFINE PARAMETER BUFFER ttnames FOR ttnames.
IF ttnames.tvalue = "" THEN
COPY-LOB tdata TO ttnames.tlong.
END PROCEDURE.

где tdate - передаваемое содержимое таблицы, значение тега table-data LONGCHAR типа.

Пример tdata:

tdate = cell1 + "~n" + cell2 + "~n" + ... + "~n" + cellN.
где cellN - значение N-ой ячейки CHAR типа.

Соответственно, основное назначение нашей процедуры печати заключается в отборе необходимых передаваемых значений шаблону и заполнение ими таблицы TTName.

В конце нашей процедуры вызываем процедуру printvd.p, которой необходимо передать имя вида печатного документа и таблицу тегов TTName.

RUN printvd.p (vid-doc, INPUT TABLE TTName).
где vid-doc - вид документа, CHAR типа

Проверить передаваемые шаблону значения тегов можно нажав при печати в момент запроса количества экземпляров F3 и в открывшемся окне выбора шаблонов Ctrl+F3


ШАБЛОН BISPC


Если печать осуществляется через BisPC в Word то создаем в папке Templates Word-документ с именем совпадающим с именем шаблона ОСП и расширением tpl.

Если печать осуществляется через BisPC в Excel то создаем в папке Templates Excel-документ с именем совпадающим с именем шаблона ОСП и расширением tpl.xls.

Переменные:

В местах где мы хотим вставит переменные для подстановки данных в шаблоне Word создаем поля (Вставка Поле) со значением DocVariable, указывая при этом имя переменных Teg_DocVar_name.

Для вставки переменной в ячейку таблицы Excel необходимо встать на ячейку в которую должна осуществляться подстановка значения, выбрать Вставка Имя и указать имя как Teg_DocVar_name.

Таблицы:

Word:
В шаблоне Word создаем таблицу содержащую например шапку и одну пустую строку. Выбираем Файл → Свойство и на закладке Прочее добавляем свойство tableN_StartRow. N - номер таблицы. В значении свойства указываем номер пустой строки в созданной нами таблице.

Excel:
Первым делом, если это необходимо создаем шапку таблицы, а так же, если таблица будет иметь нарисованные границы, то прорисовываем первую пустую строку таблицы. Выделяем диапазон ячеек представляющий первую строку таблицы и выбираем Вставка → Имя и указать имя как tableN.