Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / отчеты в MS Word / 16 сообщений из 16, страница 1 из 1
20.12.2006, 08:46
    #34211968
Александр К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Доброе время суток! Есть у кого нибудь опыть формирования отчетов в Word (Cache Activate, WML)? Причем интересует многостраничные отчеты (~1000 стр.) + запросы пользователей в системе на CSP.
...
Рейтинг: 0 / 0
22.12.2006, 16:12
    #34219398
dials
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Александр КДоброе время суток! Есть у кого нибудь опыть формирования отчетов в Word (Cache Activate, WML)? Причем интересует многостраничные отчеты (~1000 стр.) + запросы пользователей в системе на CSP.

Есть.
Формат RTF.
Клиентская часть CSP, отчёты генерируются соответственно тоже из под CSP.
...
Рейтинг: 0 / 0
25.12.2006, 11:48
    #34222056
Александр К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
через Аctivate? Какова загрузка сервера при больших отчетах? Вариант WML + XSLT был бы идеальным, но в Cache нет нормально поддержки XSLT (опять же возвр. к Activate)...
...
Рейтинг: 0 / 0
25.12.2006, 12:48
    #34222274
dials
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Александр Кчерез Аctivate? Какова загрузка сервера при больших отчетах? Вариант WML + XSLT был бы идеальным, но в Cache нет нормально поддержки XSLT (опять же возвр. к Activate)...

Нет, не через Cache Activate.
Данный функционал ещё был реализован на ядре 4.1 и плавно мигрировал на 5.1.
Технология реализации проста:
1) Создаём Header/Footer/Body - RTF - шаблоны для всех необходимых отчётов
2) В шаблонах пишем параметры вида: @CustomerAddr, @CustomerCity и т.д.
3) При формировании отчёта последовательно загружаем шаблоны header/body/footer и обрабатываем их парсером.
4) Создаём парсер, который проходит по шаблону и выполняет подстановку значений в параметры из п.2
5) Сохраняем готовый документ скомпанованный из трёх частей.

Вот пример подготовки данных (В vars попадают данные которые необходимо подставить в отчёт):

Код: plaintext
1.
2.
3.
4.
5.
	
....
s vars("CustomerName")=$g(cinfo("CustomerName"),"") 
i vars("CustomerName")="" s vars("CustomerName")=$g(cinfo("Name"))
....


Пример загрузки и обработки header'а отчёта
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	s file=##class(%File).%New(dir_"header.rtf")

	d ..ResetParser()

	d file.Open("RU")

	i 'file.IsOpen w "<h1>Cannot open header file</h1>" q
	d file.Rewind()

	f  q:file.AtEnd  d
	. s len= 10000 
	. s s=file.Read(.len)
	. d ..ParseString(s)


кусок парсера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
.....
	n i,char
	f i= 1 : 1 :$l(s) d
	. s char=$e(s,i)
	. i ParseState="T" d
	. . i char="@" s ParseState="I",Identifier="" q
	. . w char
	. e  d
	. . i '..IsAlpha(char),'..IsDigit(char) d
	. . . x "w $g(vars("""_Identifier_"""))"
	. . . w:char'="@" char
	. . . s ParseState="T"
	. . e  s Identifier=Identifier_char 
....

Содержимое файла-шаблона BODY для одного из одного из отчётов:

Код: plaintext
1.
2.
3.
4.
\trowd \trgaph108\trrh350\trleft- 108  \clvertalt\cltxlrtb \cellx3402\clvertalt\cltxlrtb \cellx4500\clvertalt\cltxlrtb \cellx5500\clvertalt\cltxlrtb \cellx7088\clvertalt\cltxlrtb \cellx8412\pard 
\widctlpar\intbl\adjustright {\lang1024 @CustomerName\cell }\pard\plain \s2\keepn\widctlpar\intbl\outlinelevel1\adjustright \b\fs20\cgrid {\b0\lang1024 @CustomerCity\cell }\pard\plain \widctlpar\intbl\adjustright \fs20\lang1049\cgrid {\lang1024 @NumberOfProducts
\cell @Weight\cell @Cost\cell }\pard \widctlpar\intbl\adjustright {\lang1024 \row }



Аналогично формируется HEADER и FOOTER отчёта, с некоторыми изменениями.

Производительность достаточно высокая для формирования отчётов до 50 страниц.
Activate не использовался по причине реализации клиента на CSP и предъявляемых жёстких требований к кросс-браузерности клиента.
...
Рейтинг: 0 / 0
25.12.2006, 13:10
    #34222375
Александр К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Спасибо за ответ! Схема очевидна, но если отчет немного усложнить... к примеру заполнить таблицу (причем кол-во строк неизвестно) или необходимо вставить разрыв?
...
Рейтинг: 0 / 0
25.12.2006, 13:13
    #34222392
Александр К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Поспешил с вопросом, спасибо
...
Рейтинг: 0 / 0
25.12.2006, 13:21
    #34222426
Александр К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
http://www.microsoft.com/Rus/Msdn/publish/articles/XMLtoRTF.mspx
...
Рейтинг: 0 / 0
03.12.2007, 12:21
    #34981755
RustamK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Люди прошло много времени после появления этого топика. У меня подобная задача из СSP экпортировать в Word или rtf мне не важно просто содержимое из базы. Может появились готовые решения реализации такой задачи и не стоит изобретать велосипет. Признателен всем кто подскажет решение.
...
Рейтинг: 0 / 0
03.12.2007, 15:28
    #34982581
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Как-то так:
Создаёте класс.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Class User.WordReports Extends %CSP.Page
{

Parameter CHARSET = "utf-8";

ClassMethod OnPreHTTP() As %Boolean
{
	s %response.ContentType="application/msword"
	d %response.SetHeader("Content-Disposition","attachment;report.doc")
	s %response.Expires =  15 
	q  1 
}
}

Страница-отчёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
<csp:class super='User.WordReports' />
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
</head><body>
...
</body></html>


P.S. Пора FAQ делать.
--------
Cache for Windows (Intel) 5.2.3 (Build 710U) Tue Dec 12 2006 10:15:11 EST
...
Рейтинг: 0 / 0
03.12.2007, 16:02
    #34982745
MX -- ALEX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
RustamKЛюди прошло много времени после появления этого топика. У меня подобная задача из СSP экпортировать в Word или rtf мне не важно просто содержимое из базы. Может появились готовые решения реализации такой задачи и не стоит изобретать велосипет. Признателен всем кто подскажет решение.

велосипед есть
все что угодно из базы данных MSM-CACHE ---> в EXCEL
притом в красивом оформлении и с интерактивностью
mx@enters.eu
...
Рейтинг: 0 / 0
03.12.2007, 20:25
    #34983492
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Александр КобловКак-то так:
Создаёте класс.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Class User.WordReports Extends %CSP.Page
{

Parameter CHARSET = "utf-8";

ClassMethod OnPreHTTP() As %Boolean
{
	s %response.ContentType="application/msword"
	d %response.SetHeader("Content-Disposition","attachment;report.doc")
	s %response.Expires =  15 
	q  1 
}
}

Страница-отчёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
<csp:class super='User.WordReports' />
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
</head><body>
...
</body></html>


P.S. Пора FAQ делать.
--------
Cache for Windows (Intel) 5.2.3 (Build 710U) Tue Dec 12 2006 10:15:11 EST

А зачем UTF-8 ?
...
Рейтинг: 0 / 0
04.12.2007, 12:34
    #34984639
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
PtnА зачем UTF-8 ?
В каком месте?
Действительно, сейчас попробовал, достаточно либо параметр в классе оставить, либо
Код: plaintext
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
на странице.
А если и там и там убрать, то в Word'e вопросы вместо русских букв.
--------
Cache for Windows (Intel) 5.2.3 (Build 710U) Tue Dec 12 2006 10:15:11 EST
...
Рейтинг: 0 / 0
04.12.2007, 14:07
    #34985077
ГР
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Ptn

А зачем UTF-8 ?

Не все линухи кодировку вин поддерживают
...
Рейтинг: 0 / 0
04.12.2007, 19:19
    #34986239
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Я к тому что указывать нужно - если каше 8-ми битная устоновлена, то UTF-8 потребует дополнительной перекодировки
...
Рейтинг: 0 / 0
04.12.2007, 19:21
    #34986247
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
ГР Ptn

А зачем UTF-8 ?

Не все линухи кодировку вин поддерживают

Значить база в UTF-8 ? - если делать FAQ , думаю следует отметить тонкость
...
Рейтинг: 0 / 0
06.12.2007, 17:54
    #34992325
ГР
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчеты в MS Word
Ptn ГР Ptn

А зачем UTF-8 ?

Не все линухи кодировку вин поддерживают

Значить база в UTF-8 ? - если делать FAQ , думаю следует отметить тонкость

По идее это кодировка ответа клиенту. Но ворд сформированный файл не открыл. Кодировка моего сервера windows-1251.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / отчеты в MS Word / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]