ПЕЧАТЬ 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.