О целесообразности использования
|
В настоящем документе изложены результаты проведённых в отделе консалтинга экспериментов по использованию HTML[1] и XML-форматов для формирования выходных форм (отчётов) путём организации взаимодействия системы «Галактика» с MS Office и Internet/Intranet. Вариант схемы организации взаимодействия «Галактики» с MS Word через XML-формат данных представлен на рисунке:
Рисунок 1 Вариант схемы организации взаимодействия «Галактики» с MS Word
Взаимодействие с MS Excel организуется точно
так же.
Способ двухэтапный:
Формирование средствами «Галактики» (через
присоединённую форму) выходного файла в XML-формате.
Формирование документа Word или Excel программой на VBScript, Jscript или Perl по данным из XML-файла с использованием
шаблонов документов MS Office
по механизму OLE-Automation.
Имеются методики формирования документов двух основных
типов – простой, без спецификаций (пример
– стандартное платёжное поручение) и документ с простой спецификацией (счёт, накладная).
Способ может использоваться вместо имеющихся в
«Галактике» (формирование присоединённых форм в RTF- или SYLK-форматах). В таблице – некоторые сравнительные
характеристики двух способов.
XML-способ |
RTF/SYLK-способ |
Использование собственной присоединённой формы для каждого выходного документа
«Галактики» |
|
Возможно
использование одной присоединённой формы для класса документов (отбор информации
на этапе формирования Office-документа) |
Обязательно |
Использование собственного Office-шаблона для каждого выходного документа |
|
Обязательно |
Обязательно |
Компиляция ресурсного файла после изменений Office-шаблона для документа |
|
Не требуется |
Обязательно |
Использование инструментальных средств (кроме компонентов MS Office) для разработки нового
выходного документа |
|
Не требуется
(при наличии присоединённой формы для класса документов) |
Компилятор
форм FCOM. |
Формирование и печать выходных документов на удалённом компьютере. |
|
Возможно,
в т.ч. при связи по протоколу HTTP. Удалённый компьютер (сервер документов) может обрабатывать XML-вывод нескольких клиентов
«Галактики». |
Формирование
и печать производятся на компьютере с клиентом «Галактики». |
Использование оформительских свойств Office-компонентов (шрифты, цвет,
графика, программные объекты) |
|
Без ограничений |
Ограниченно,
в рамках возможностей форматов RTF
и SYLK. |
Возможность централизованной рассылки изменений выходных форм. |
|
Рассылка
по e-mail или с корпоративного
Web-сервера
шаблона (30-50 Кб) и/или скрипта формирования документа (15 Кб на каждую изменённую
форму). |
Рассылка
по e-mail или с корпоративного
Web-сервера
дополнительного ресурсного файла (50-90 Кб на каждую изменённую форму). |
Действия при изменениях версии системы «Галактика» |
|
Централизованная
корректировка присоединённых форм генерации XML-файла. |
Перекомпиляция
пользовательских ресурсов (при изменении набора/имён полей в базовой форме и при
изменении версии «Атлантиса») |
Проблемы с различной кодировкой русских текстов |
|
Отсутствуют |
Постоянные. |
Использование HTML/XML-формата для генерации «галактических» форм позволяет удовлетворить любые пожелания Заказчиков по преобразованию существующих «галактических» отчетов в особо изысканную форму представления данных. Возможности оформления ограничены при этом только возможностями используемой Заказчиком версии MS Office.
Разработанные технологии использования среды MS Office для представления «галактических» отчетов отличаются исключительной простотой и удобством их дальнейшей эксплуатации. Так, например, при разработке отчетов в формате MS Word Заказчик получает:
свободно редактируемый
(в среде MS Word) шаблон, содержащий все задействованные элементы графического и текстового
оформления документа (стандартные текстовые фрагменты, заготовки таблиц, графические
элементы и т.д.).
набор средств для извлечения
данных из базы «Галактики» (присоединённая форма с
XML-выводом) и формирования документа по шаблону и XML-данным (COM-объект, формирующий и заполняющий
документ, и сценарий печати, организующий взаимодействие компонентов).
полностью автоматический
режим печати сформированных документов (оператор освобождается как от необходимости
ожидать загрузки и выгрузки MS Word, так и от необходимости вручную запускать печать:
сценарий печати выполняется как отдельная задача операционной системы, MS Word на экран не выводится,
а сразу печатает сформированные документы);
возможность обеспечения
высокой производительности формирования и печати документов (например, когда несколько
операторов системы «Галактика» формируют счета на продажу и печатают их для вручения
клиентам). Данная возможность реализуется путем запуска сценария печати и MS Word на отдельном компьютере
(имеющем по сети доступ к каталогам OUT операторов «Галактики»).
На рисунке 2 приведён
образец оформления счета с графическим логотипом фирмы в среде MS Word.
Рисунок 2 Пример оформления «галактического» счета в среде MS Word
В нижеприведенном примере желтым цветом выделены
добавленные в существующую форму PRBDOC элементы языка
XML. Нетрудно
заметить, что эти вставки в основном являются именами полей базовой формы и могли
быть вставлены автоматически при наличии несложной программы.
! ! |
Разработал: Кондраль
В.А. Назначение: Счета, договара продаж , закупок, консигнации |
.linkform
'PRBDOC_102xml' prototype is 'PRBDOC'
.NameInList 'Счет СТАНДАРТНЫЙ (для
России) - Печать через XML и Word-Cервер'
.group 'Продажа'
.F
'InvSale.xml'
.Set
thousand separator = ' '
.FIELDS
replace(mnd,'<','<') replace(nomer,'<','<')
replace(ddoc,'<','<')
replace(post,'<','<')
replace(bpost,'<','<') rspost mfobik mpost
replace(adpost,'<','<') telpost
replace(pol,'<','<')
replace(bpol,'<','<') rspol mfobik mpol
replace(adpol,'<','<') telpol
replace(skl,'<','<')
replace(pname,'<','<')
np replace(barkod,'<','<')
replace(mc,'<','<') replace(ed,'<','<') kol cena summa
i1 i2 sdoc op1 op2 op2doc
d1 d2 d3
k1 sdoc n2 replace(k3,'<','<') k4
k5 kDay
.ENDFIELDS
<?xml version="1.0"
encoding="cp866"?>
<!--
Нажмите Esc и ждите, пока напечатается!!! |
-->
<docList>
<nPrint>1</> <!-- copies to print(-1 - ask for me)
-->
<saveDoc>1</> <!-- save documents ( 0 - don't save)
-->
.{
<doc>
<mnd>^</>
<nomer>^</> <ddoc>^</> <!--номер и
дата документа-->
<post>^</>
<!--наименование поставщика-->
<bpost>^</>
<!--наименование банка поставщика-->
<rspost>^</> <mfobikpost>^</> <mpost>^</> <!--счет и
БИК-->
<adpost>^</> <telpost>^</> <!--адрес, телефон-->
<pol>^</>
<!--получатель-->
<bpol>^</>
<rspol>^</> <mfobikpol>^</> <mpol>^</>
<adpol>^</> <telpol>^</>
<skl>^</> <!--склад-->
<pname>^</> <!--примечание из ДО-->
.{
CheckEnter IsExClass
.}
.{
CheckEnter IsGroup
.}
<!-- спецификация счета-набор строк -->
.{
<SpecRow>
<np>^</>
<barkod>^</>
<mc>^</>
<ed>^</>
<kol>&'&&&&&&&&&&&&&&&&&.&&&</>
<cena>&'&&&&&&&&&&&&&&&&&&.&&</>
<summa>&'&&&&&&&&&&&&&&&&&&.&&</>
</SpecRow>
.}
<!-- итоги по счёту -->
<i1>^</> <i2>&'&&&&&&&&&&&&&&&&&&.&&</> <sdoc>^</>
<op1>^</>
<op2>&'&&&&&&&&&&&&&&&&&&.&&</> <op2doc>^</> <d1>^</>
<d2>&'&&&&&&&&&&&&&&&&&&.&&</> <d3>^</>
<k1>&'&&&&&&&&&&&&&&&&&&.&&</> <sdoc>^</>
<n2>&'&&&&&&&&&&&&&&&&&&.&&</>
<k3>^</>
<k4>^</> <k5>^</> <kDay>^</>
</doc>
.if
Delimiter
<!--
========= new document =============================== -->
.end
.}
</docList>
.endform
Константин
М. Дьяков
e-mail: kostya@galaktika.ru