О целесообразности использования
HTML/XML
-форматов для формирования «галактических» выходных форм.

В настоящем документе изложены результаты проведённых в отделе консалтинга  экспериментов по использованию HTML[1] и XML-форматов для формирования выходных форм (отчётов) путём организации взаимодействия системы «Галактика» с MS Office и Internet/Intranet. Вариант схемы организации взаимодействия «Галактики» с MS Word через XML-формат данных представлен на рисунке:

Рисунок 1 Вариант схемы организации взаимодействия «Галактики» с MS Word

Взаимодействие с MS Excel организуется точно так же.

 

Способ двухэтапный:

  1.  Формирование средствами «Галактики» (через присоединённую форму) выходного файла в XML-формате.

  2.  Формирование документа 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-файла.

Перекомпиляция пользовательских ресурсов (при изменении набора/имён полей в базовой форме и при изменении версии «Атлантиса»)

Проблемы с различной кодировкой русских текстов
 в системе «Галактика» и в 
MS Office

Отсутствуют

Постоянные.

Использование HTML/XML-формата для генерации «галактических» форм позволяет удовлетворить любые пожелания Заказчиков по преобразованию существующих «галактических» отчетов в особо изысканную форму представления данных. Возможности оформления ограничены при этом только возможностями используемой Заказчиком версии MS Office.

Разработанные технологии использования среды MS Office для представления «галактических» отчетов отличаются исключительной простотой и удобством их дальнейшей эксплуатации. Так, например, при разработке отчетов в формате MS Word Заказчик получает:

На рисунке 2 приведён образец оформления счета с графическим логотипом фирмы в среде MS Word.
 

Рисунок 2 Пример оформления «галактического» счета в среде MS Word

 

Пример переделки присоединенной формы для получения XML-формата.

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

 

!
!
 Разработал:  Кондраль В.А.
 Назначение:  Счета, договара продаж , закупок, консигнации 

.linkform 'PRBDOC_102xml' prototype is 'PRBDOC'

.NameInList 'Счет СТАНДАРТНЫЙ (для России) - Печать через XML и Word-Cервер'

.group 'Продажа'

.F 'InvSale.xml'

.Set thousand separator = ' '

.FIELDS

  replace(mnd,'<','&lt;') replace(nomer,'<','&lt;') replace(ddoc,'<','&lt;')

  replace(post,'<','&lt;') replace(bpost,'<','&lt;') rspost mfobik mpost replace(adpost,'<','&lt;') telpost

  replace(pol,'<','&lt;') replace(bpol,'<','&lt;') rspol mfobik mpol replace(adpol,'<','&lt;') telpol

  replace(skl,'<','&lt;') replace(pname,'<','&lt;')

  np replace(barkod,'<','&lt;') replace(mc,'<','&lt;') replace(ed,'<','&lt;') kol cena summa

  i1 i2 sdoc op1 op2 op2doc

  d1 d2 d3

  k1 sdoc n2 replace(k3,'<','&lt;') 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

 



[1] Методика генерации и примеры отчётов в HTML-формате приведены  в  нашей статье

Взаимодействие системы «Галактика» с другими программными системами