Чето не понимаю.
1. Пользователь руками вставляет "поля" в условный шаблон печатного документа (например в ворде) типа @имя_директора, @юридический адрес, ...
2. Сохраняет как .rtf и цепляет в базу
3. на лотусскрипте детачим на диск, читаем как stream в переменную, делаем replace(переменная,"@имя_директора","реальное фио") и записываем назад.
вы серьёзно верите в работоспособность и скорость такого кода?
2. Сохраняет как .rtf и цепляет в базу
очень гуманно напоминать оператору, про дополнительные действия
(в моей схеме это шаг отсутствует)
и пропущен немаловажный момент - получение переменных в нотус из РТФ - это уже не проще
так же не учтено...
вот у нас по 200 полей в договоре и в "пакет" документов, помимо договора, входят допники (поля местами перемекаются)
да, и желательно в файле не просто указать имя поля, а типа конструкции <field|default value|description[example]> - вот это сильно усложнит задачу прямой замены
(оператору упрощает - он использует только ворд)
Ответственный за ворд шаблон это заполняет, в нотусне это разносится (при загрузке файла) по полям дока docfield
пакет может формироваться за один проход, а может только договор или допник
вот и предствьте свой реплэйс с 200-ми заменами(в цикле), да по нескольким РТФ
Добавлено: ну так, для информации, добавлю XSLT кот. выдергивает "поля" из FO (отрабатывает меньше секунды, договор на 52 страницы, полметра):<!--shcode--><pre><code class='xml'><?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl
utput method="text" indent="no"/>
<!-- <xsl:strip-space elements="fo:inline"/>-->
<!-- <xsl:strip-space elements="fo:*"/>-->
<xsl:template match="fo:root">
<xsl:apply-templates select="descendant::fo:inline"/>
</xsl:template>
<xsl:template match="fo:inline">
<xsl:call-template name="getparams">
<xsl:with-param name="string" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="getparams">
<xsl
aram name="string"/>
<xsl
aram name="lsep"><</xsl
aram>
<xsl
aram name="rsep">></xsl
aram>
<xsl:if test="string-length(normalize-space($string))>0">
<xsl:if test="contains($string, $lsep) and contains($string, $rsep)">
<xsl:variable name="after">
<xsl:value-of select="substring-after($string,$lsep)"/>
</xsl:variable>
<xsl:variable name="before">
<xsl:value-of select="substring-before($after,$rsep)"/>
</xsl:variable>
<xsl:variable name="next">
<xsl:value-of select="substring-after($after,$rsep)"/>
</xsl:variable><xsl:value-of select="$before"/><xsl:text>
</xsl:text>
<xsl:if test="string-length(normalize-space($next))>0">
<xsl:call-template name="getparams">
<xsl:with-param name="string" select="$next"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>[/CODE]
Добавлено: движок форума похачил lt и gt обозначения, в xml