• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Выгрузка В Ворд

  • Автор темы Dimok-163rus
  • Дата начала
D

Dimok-163rus

Ребят, проблема такая:

- по шаблону(заложенному в справочнике) создается документ, куда присваивается значение полей,

- после этого созданный документ/файл присваивается в поле"Sfakt" этой формы.(но файл присваивается форме по умолчанию почему то*)

Все отрабатывает, но, когда нажимаем на кнопку генерации, открывается "форма по умолчанию" и в неё вкладывается этот файл с какой то радости, сохраняем все, файл правильно сгенерированный, присоединяется не в поле, в которое надо этой формы, а висит где то...Рисунки приложил.
Почему открывается форма по умолчанию вот вопрос <_<
Рис1. - начальная форма, в которой находится кнопка
Рис.2 и Рис.3 - форма по умолчанию, в которую файлик вкладывается, после нажатия на кнопку генерации,
Рис.4 - открытие начальной формы, после сохранения


Код:
Sub Click(Source As Button)

'обработчик ошибок
On Error Goto MesError
'_________________________________________
Dim ws As New NotesUIWorkspace
Dim sess As New NotesSession

Dim pdoc As NotesDocument, childdoc As NotesDocument, tmpDoc As NotesDocument, profile As NotesDocument
Dim dc As NotesDocumentCollection

Dim db As NotesDatabase, sprdb As NotesDatabase

Dim uidoc As NotesUIDocument

Dim view As NotesView

'Поля, необходимо которые выгрузить
Dim Seria(0) As Variant 
Dim Number_reg(0) As String
Dim Data_reg_izm(0) As Variant
Dim Pravo_vlad(0)As Variant	
Dim Dol_podp(0)As Variant
Dim Osn_podpis(0)As Variant
Dim Podpisant(0)As Variant


Set uidoc = ws.CurrentDocument
Set pdoc = uidoc.Document	
Set db = sess.CurrentDatabase

'Профиль системы и база справочника
Set profile = db.GetProfileDocument("ConfigPrf")
If profile.pthRefer(0)="" Then
Messagebox "В профиле конфигурации системы не указан путь к БД Справочники!",0 ,"Ошибка настройки системы"
Exit Sub
End If

Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

'Продолжать?	
Dim askme As Variant
askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")	
If askme=0 Then
Exit Sub
End If
'--------------------------------------------------------------------------------------------------------------------------------------
Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0))	
'Что делаем с полями
'	Msgbox childdoc.Name(0)	
'	Msgbox childdoc.Seria(0)
'	Msgbox childdoc.Number_reg(0) 
'	Msgbox childdoc.Data_reg_izm(0)  
'	Msgbox childdoc.Pravo_vlad(0)
'	Msgbox pdoc.Dol_podp(0)
'	Msgbox pdoc.Osn_podpis(0)
'	Msgbox pdoc.Podpisant(0)
'	Msgbox Today

'-------------------------------------------------------------------------------------------------------------------------------------------	

'	Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

Dim coll1 As NotesDocumentCollection
Dim dt1 As New NotesDateTime("")
Dim doc1 As NotesDocument 'Справочный док

'По коду шаблона ищем в справочнике шаблонов нужную карточку шаблона
pth_str$=""
Set coll1 = sprdb.Search({Form = "TmpForm_Profile" & ShortName = "P001"},Nothing,0)
'	Msgbox "Количество док-тов : " & coll1.Count 
Dim rttmp As NotesRichTextItem
If coll1.Count >0 Then
Set doc1 = coll1.GetFirstDocument
Set rttmp = doc1.GetFirstItem("TmpDoc")
Forall o In rttmp.EmbeddedObjects
If Right(o.Name,4)=".dot" Then
pth_str$ = o.Name
Goto ExtrMark
End If
End Forall
End If
If pth_str$="" Then
Messagebox "Невозможно перейти к генерации поручения: в справочнике шаблонов отсутствует шаблон поручения!",,"Внимание!"
Exit Sub
End If

'pth_str$ шаблон найденный

ExtrMark:	
'Создаем каталог временной выгрузки на С
Dim dt As New NotesDateTime( "" )
Call dt.SetNow
dt_date$ = dt.DateOnly
dt_time$ = dt.TimeOnly
dt_date$ = Left(dt_date$,2)+Right(Left(dt_date$,5),2)+Right(dt_date$,2)
dt_time$ = Left(dt_time$,2)+Right(Left(dt_time$,5),2)+Right(dt_time$,2)

'Environ$ - возвращает значение типа str
tmppth_str = Environ$("TEMP") + "\TmpTpl_"+dt_date$+"_"+dt_time$
'tmppth_str строковое выражение, значение которого является именем создаваемого каталога.
Mkdir tmppth_str

'Выгружаем шаблон в созданную директорию
Dim object As NotesEmbeddedObject
Set object = rttmp.GetEmbeddedObject(pth_str$ )
'в созданный каталог помещаем наш шаблон
Call object.ExtractFile (tmppth_str & "\" & Cstr(pth_str$))

'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------	
Dim Word As Variant
Dim WordDoc As Variant

'Новый объект Word

Set Word = CreateObject("Word.Application") 'Создание объекта Word'a
Call Word.documents.add(tmppth_str & "\" & Cstr(pth_str$)) 'Создаем новый документ на основе соответствующего шаблона
Set WordDoc = Word.activedocument

'Присваивание полям-Word'a значений из полей notes-документа
worddoc.FormFields(1).result = childdoc.Name(0)
worddoc.FormFields(2).result = childdoc.Seria(0)
worddoc.FormFields(3).result = childdoc.Number_reg(0)
worddoc.FormFields(4).result = childdoc.Data_reg_izm(0) 	
worddoc.FormFields(5).result = childdoc.Pravo_vlad(0)
worddoc.FormFields(6).result = Today
worddoc.FormFields(7).result = pdoc.Dol_podp(0)		
worddoc.FormFields(8).result = pdoc.Osn_podpis(0)
worddoc.FormFields(9).result = pdoc.Podpisant(0)	
worddoc.FormFields(10).result = Today	

nm_doc$ = ReplaceChr(ReplaceChr({"}, {"}, " "),{/}," ")+"File1.doc"
WordDoc.saveas(tmppth_str + "\"+nm_doc$)

'проверяем есть ли поле в документе
'rttmp - шаблон
If pdoc.HasItem("Sfakt") Then
Set rttmp = pdoc.GetFirstItem("Sfakt")
Else
Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")
End If

'Добавляет в RTF-поле присоединенный файл или ссылку на него.
Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, nm_doc$, tmppth_str + "\"+nm_doc$)

WordDoc.close

'открыть на редактирование тек. док
Call ws.EditDocument(True, pdoc)

'	Удаляем директорию
Kill tmppth_str & "\" & Cstr(pth_str$)
Kill tmppth_str + "\"+nm_doc$
Rmdir tmppth_str
Exit Sub

MesError:	
'Обработка сбоев 
ErrNo = Err
ErrLine = Erl
ErrMessage = Error
Messagebox "Button Click " + Cstr(Err) + " " + Cstr(Erl) + " " + Error
Exit Sub
End Sub


'открыть на редактирование тек. док
Call ws.EditDocument(True, pdoc)

использует форму по умолчанию получается, может как то можно прописать какую форму функция должна брать!?
 

Вложения

  • Форма_начальная.jpg
    Форма_начальная.jpg
    170,2 КБ · Просмотры: 814
  • Форма_по_умолчанию.jpg
    Форма_по_умолчанию.jpg
    178,3 КБ · Просмотры: 820
  • Форма_по_умолчанию_продолжение_.jpg
    Форма_по_умолчанию_продолжение_.jpg
    212,5 КБ · Просмотры: 831
  • Форма_начальная_после_генерации.jpg
    Форма_начальная_после_генерации.jpg
    176 КБ · Просмотры: 615
A

alexas

Надо полагать в pdoc поле Form отсутствует.

pdoc.Form = "YourForm"
Call ws.EditDocument(True, pdoc)
 
A

alexas

мне не поле Form надо, а саму форму )
сама форма открыта, я же вложил файлы jpeg
В поле Form хранится название формы по которой будет открываться док.
Если поля нет или оно пустое - док будет открываться по форме "по умолчанию"

P.S.
Надо внимательнее читать, что пишут гуру: link removed
 
D

Dimok-163rus

В поле Form хранится название формы по которой будет открываться док.
Если поля нет или оно пустое - док будет открываться по форме "по умолчанию"

P.S.
Надо внимательнее читать, что пишут гуру: link removed

форма пустая написал, удалил форму по умолчанию теперь, вот что пишет... <_<
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    10,3 КБ · Просмотры: 656

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
удалил форму по умолчанию
Феерично...

Тебе все правильно сказали, но форму удалять не надо было.
Просто сохранить надо документ.
Не знаю с какой версии, но ws.editDocument переполучает документ как-то и без сохранения поля в нем не появляются.

В каждой своей форме создай поле Form = "<имя формы>", текстовое.
 
D

Dimok-163rus

я не удалил форму по умолчанию, а просто убрал флажок с неё...

убрал строку одну, теперь у меня не вызывается вторая форма на редактирование(что уже хорошо), а просто не присваивается полю RTF файл, поля RTF не находит в pdoc

Код:
Sub Click(Source As Button)

'обработчик ошибок
On Error Goto MesError
'_________________________________________
Dim ws As New NotesUIWorkspace
Dim sess As New NotesSession

Dim pdoc As NotesDocument, childdoc As NotesDocument, tmpDoc As NotesDocument, profile As NotesDocument
Dim dc As NotesDocumentCollection

Dim db As NotesDatabase, sprdb As NotesDatabase

Dim uidoc As NotesUIDocument

Dim view As NotesView

'Поля, необходимо которые выгрузить
Dim Seria(0) As Variant 
Dim Number_reg(0) As String
Dim Data_reg_izm(0) As Variant
Dim Pravo_vlad(0)As Variant	
Dim Dol_podp(0)As Variant
Dim Osn_podpis(0)As Variant
Dim Podpisant(0)As Variant


Set uidoc = ws.CurrentDocument
Set pdoc = uidoc.Document	
Set db = sess.CurrentDatabase

'Профиль системы и база справочника
Set profile = db.GetProfileDocument("ConfigPrf")
If profile.pthRefer(0)="" Then
Messagebox "В профиле конфигурации системы не указан путь к БД Справочники!",0 ,"Ошибка настройки системы"
Exit Sub
End If

Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

'Продолжать?	
Dim askme As Variant
askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")	
If askme=0 Then
Exit Sub
End If
'--------------------------------------------------------------------------------------------------------------------------------------
Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0))	
'Что делаем с полями
'	Msgbox childdoc.Name(0)	
'	Msgbox childdoc.Seria(0)
'	Msgbox childdoc.Number_reg(0) 
'	Msgbox childdoc.Data_reg_izm(0)  
'	Msgbox childdoc.Pravo_vlad(0)
'	Msgbox pdoc.Dol_podp(0)
'	Msgbox pdoc.Osn_podpis(0)
'	Msgbox pdoc.Podpisant(0)
'	Msgbox Today

'-------------------------------------------------------------------------------------------------------------------------------------------	

'	Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

Dim coll1 As NotesDocumentCollection
Dim dt1 As New NotesDateTime("")
Dim doc1 As NotesDocument 'Справочный док

'По коду шаблона ищем в справочнике шаблонов нужную карточку шаблона
pth_str$=""
Set coll1 = sprdb.Search({Form = "TmpForm_Profile" & ShortName = "P001"},Nothing,0)
'	Msgbox "Количество док-тов : " & coll1.Count 
Dim rttmp As NotesRichTextItem
If coll1.Count >0 Then
Set doc1 = coll1.GetFirstDocument
Set rttmp = doc1.GetFirstItem("TmpDoc")
Forall o In rttmp.EmbeddedObjects
If Right(o.Name,4)=".dot" Then
pth_str$ = o.Name
Goto ExtrMark
End If
End Forall
End If
If pth_str$="" Then
Messagebox "Невозможно перейти к генерации поручения: в справочнике шаблонов отсутствует шаблон поручения!",,"Внимание!"
Exit Sub
End If

'pth_str$ шаблон найденный

ExtrMark:	
'Создаем каталог временной выгрузки на С
Dim dt As New NotesDateTime( "" )
Call dt.SetNow
dt_date$ = dt.DateOnly
dt_time$ = dt.TimeOnly
dt_date$ = Left(dt_date$,2)+Right(Left(dt_date$,5),2)+Right(dt_date$,2)
dt_time$ = Left(dt_time$,2)+Right(Left(dt_time$,5),2)+Right(dt_time$,2)

'Environ$ - возвращает значение типа str
tmppth_str = Environ$("TEMP") + "\TmpTpl_"+dt_date$+"_"+dt_time$
'tmppth_str строковое выражение, значение которого является именем создаваемого каталога.
Mkdir tmppth_str

'Выгружаем шаблон в созданную директорию
Dim object As NotesEmbeddedObject
Set object = rttmp.GetEmbeddedObject(pth_str$ )
'в созданный каталог помещаем наш шаблон
Call object.ExtractFile (tmppth_str & "\" & Cstr(pth_str$))

'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------	
Dim Word As Variant
Dim WordDoc As Variant

'Новый объект Word

Set Word = CreateObject("Word.Application") 'Создание объекта Word'a
Call Word.documents.add(tmppth_str & "\" & Cstr(pth_str$)) 'Создаем новый документ на основе соответствующего шаблона
Set WordDoc = Word.activedocument

'Присваивание полям-Word'a значений из полей notes-документа
worddoc.FormFields(1).result = childdoc.Name(0)
worddoc.FormFields(2).result = childdoc.Seria(0)
worddoc.FormFields(3).result = childdoc.Number_reg(0)
worddoc.FormFields(4).result = childdoc.Data_reg_izm(0) 	
worddoc.FormFields(5).result = childdoc.Pravo_vlad(0)
worddoc.FormFields(6).result = Today
worddoc.FormFields(7).result = pdoc.Dol_podp(0)		
worddoc.FormFields(8).result = pdoc.Osn_podpis(0)
worddoc.FormFields(9).result = pdoc.Podpisant(0)	
worddoc.FormFields(10).result = Today	

nm_doc$ = ReplaceChr(ReplaceChr({"}, {"}, " "),{/}," ")+"File1.doc"
WordDoc.saveas(tmppth_str + "\"+nm_doc$)

'проверяем есть ли поле в документе
'rttmp - шаблон
If pdoc.HasItem("Sfakt") Then
Set rttmp = pdoc.GetFirstItem("Sfakt")
Else
Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")
End If

WordDoc.close

'Добавляет в RTF-поле присоединенный файл или ссылку на него.
Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, nm_doc$, tmppth_str + "\"+nm_doc$)

'открыть на редактирование тек. док
'Call ws.EditDocument(True, pdoc)

'	Удаляем директорию
Kill tmppth_str & "\" & Cstr(pth_str$)
Kill tmppth_str + "\"+nm_doc$
Rmdir tmppth_str
Exit Sub

MesError:	
'Обработка сбоев 
ErrNo = Err
ErrLine = Erl
ErrMessage = Error
Messagebox "Button Click " + Cstr(Err) + " " + Cstr(Erl) + " " + Error
Exit Sub
End Sub

Когда идет проверка на "есть ли поле RTF в документе:

Код:
'проверяем есть ли поле в документе
'rttmp - шаблон
If pdoc.HasItem("Sfakt") Then
Set rttmp = pdoc.GetFirstItem("Sfakt")
Else
Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")
End If

отрабатывает условие второе:
Код:
Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")

получается в моем документе RTF поля нет, его надо объявлять что ли?
Вложил рис. с формой, в которой поле RTF (Sfakt) имеется
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    292,8 КБ · Просмотры: 424
A

alexas

форма пустая написал, удалил форму по умолчанию теперь, вот что пишет... <_<
Нет смысла удалять форму "по умолчанию" для разрешения твоей ситуации - в доке надо иметь Item с именем "Form" и содержанием "Название формы" (по ней и будет открываться док).
Если pdoc создаешь в UI - cоздай на форме текстовое поле с именем "Form" и увидишь что оно пустое.
Если pdoc создаешь в бекграунде (т.е. агентом, скриптом ...) - в скрипте (на кнопке) напиши "msgbox pdoc.Form(0)" непосредственно перед "ws.EditDocument(..." - получишь пустой месседж!

P.S.
savl
пардон, тебя я не заметил :). Исчез.
 
D

Dimok-163rus

Форму по умолчанию я не удалил, сказал же, она не должна идти по умолчанию - такое задание, флажок должен быть снят - снял флажок!
Теперь у меня не присваивается полю RTF объект, вот что не отрабатывает:

Код:
'Выгружаем шаблон в созданную директорию
Dim object As NotesEmbeddedObject
Set object = rttmp.GetEmbeddedObject(pth_str$ )
'в созданный каталог помещаем наш шаблон
Call object.ExtractFile (tmppth_str & "\" & Cstr(pth_str$))

Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")

'Добавляет в RTF-поле присоединенный файл или ссылку на него.
Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, nm_doc$, tmppth_str + "\"+nm_doc$)

ws.EditDocument я убрал - оно не нужно
 
A

alexas

tmppth_str & "\" & Cstr(pth_str$)) = tmppth_str + "\"+nm_doc$ - это ТАК ?????
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Dim-ok
Еще раз: форма нужна для отображения документа на экране.
Если поле Form - нет в документе, то открывается форма по умолчанию, поэтому она должна быть в базе Иначе все время будет ошибка такая.
Поле должно содержать имя формы(или Alias), по которой он создан.

Теперь про файл:
Чтобы увидеть файл после прикрепления кодом. документ надо переоткрыть. такая вот особенность работы.
Код:
Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, nm_doc$, tmppth_str + "\"+nm_doc$)
call pDoc.save(true,doc.Isresponse)
call uidoc.close
call ws.editdocument(false,pdoc)
Call uidoc
 
D

Dimok-163rus

Добавил в форму текстовое поле Form, по умолчанию поставил значение своей формы "SFakt".

call pDoc.save(true,pdoc.IsResponse)
call uidoc.close
call ws.editdocument(false,pdoc)
Call uidoc.close

у меня три раза ошибка лотуса чет выскакивала <_<
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    190,4 КБ · Просмотры: 520
D

Dimok-163rus

убрал первое закрыть call uidoc.close, отработала программа, создала док, теперь полю присвоен файл, но как я только нажимаю созранить или выйти, занова открываю док этот, так у меня файлик о5 лежит вне формы ) Замкнутый круг пля ) Код и рисунки форм до и после генерации:

Код:
Sub Click(Source As Button)

'обработчик ошибок
On Error Goto MesError
'_________________________________________
Dim ws As New NotesUIWorkspace
Dim sess As New NotesSession

Dim pdoc As NotesDocument, childdoc As NotesDocument, tmpDoc As NotesDocument, profile As NotesDocument
Dim dc As NotesDocumentCollection

Dim db As NotesDatabase, sprdb As NotesDatabase

Dim uidoc As NotesUIDocument

Dim view As NotesView

'Поля, необходимо которые выгрузить
Dim Seria(0) As Variant 
Dim Number_reg(0) As String
Dim Data_reg_izm(0) As Variant
Dim Pravo_vlad(0)As Variant	
Dim Dol_podp(0)As Variant
Dim Osn_podpis(0)As Variant
Dim Podpisant(0)As Variant


Set uidoc = ws.CurrentDocument
Set pdoc = uidoc.Document	
Set db = sess.CurrentDatabase

'Профиль системы и база справочника
Set profile = db.GetProfileDocument("ConfigPrf")
If profile.pthRefer(0)="" Then
Messagebox "В профиле конфигурации системы не указан путь к БД Справочники!",0 ,"Ошибка настройки системы"
Exit Sub
End If

Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

'Продолжать?	
Dim askme As Variant
askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")	
If askme=0 Then
Exit Sub
End If
'--------------------------------------------------------------------------------------------------------------------------------------
Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0))	
'Что делаем с полями
'	Msgbox childdoc.Name(0)	
'	Msgbox childdoc.Seria(0)
'	Msgbox childdoc.Number_reg(0) 
'	Msgbox childdoc.Data_reg_izm(0)  
'	Msgbox childdoc.Pravo_vlad(0)
'	Msgbox pdoc.Dol_podp(0)
'	Msgbox pdoc.Osn_podpis(0)
'	Msgbox pdoc.Podpisant(0)
'	Msgbox Today

'-------------------------------------------------------------------------------------------------------------------------------------------	

'	Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

Dim coll1 As NotesDocumentCollection
Dim dt1 As New NotesDateTime("")
Dim doc1 As NotesDocument 'Справочный док

'По коду шаблона ищем в справочнике шаблонов нужную карточку шаблона
pth_str$=""
Set coll1 = sprdb.Search({Form = "TmpForm_Profile" & ShortName = "P001"},Nothing,0)
'	Msgbox "Количество док-тов : " & coll1.Count 
Dim rttmp As NotesRichTextItem
If coll1.Count >0 Then
Set doc1 = coll1.GetFirstDocument
Set rttmp = doc1.GetFirstItem("TmpDoc")
Forall o In rttmp.EmbeddedObjects
If Right(o.Name,4)=".dot" Then
pth_str$ = o.Name
Goto ExtrMark
End If
End Forall
End If
If pth_str$="" Then
Messagebox "Невозможно перейти к генерации поручения: в справочнике шаблонов отсутствует шаблон поручения!",,"Внимание!"
Exit Sub
End If

'pth_str$ шаблон найденный

ExtrMark:	
'Создаем каталог временной выгрузки на С
Dim dt As New NotesDateTime( "" )
Call dt.SetNow
dt_date$ = dt.DateOnly
dt_time$ = dt.TimeOnly
dt_date$ = Left(dt_date$,2)+Right(Left(dt_date$,5),2)+Right(dt_date$,2)
dt_time$ = Left(dt_time$,2)+Right(Left(dt_time$,5),2)+Right(dt_time$,2)

'Environ$ - возвращает значение типа str
tmppth_str = Environ$("TEMP") + "\TmpTpl_"+dt_date$+"_"+dt_time$
'tmppth_str строковое выражение, значение которого является именем создаваемого каталога.
Mkdir tmppth_str

'Выгружаем шаблон в созданную директорию
Dim object As NotesEmbeddedObject
Set object = rttmp.GetEmbeddedObject(pth_str$ )
'в созданный каталог помещаем наш шаблон
Call object.ExtractFile (tmppth_str & "\" & Cstr(pth_str$))

'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------	
Dim Word As Variant
Dim WordDoc As Variant

'Новый объект Word

Set Word = CreateObject("Word.Application") 'Создание объекта Word'a
Call Word.documents.add(tmppth_str & "\" & Cstr(pth_str$)) 'Создаем новый документ на основе соответствующего шаблона
Set WordDoc = Word.activedocument

'Присваивание полям-Word'a значений из полей notes-документа
worddoc.FormFields(1).result = childdoc.Name(0)
worddoc.FormFields(2).result = childdoc.Seria(0)
worddoc.FormFields(3).result = childdoc.Number_reg(0)
worddoc.FormFields(4).result = childdoc.Data_reg_izm(0)	 
worddoc.FormFields(5).result = childdoc.Pravo_vlad(0)
worddoc.FormFields(6).result = Today
worddoc.FormFields(7).result = pdoc.Dol_podp(0)		
worddoc.FormFields(8).result = pdoc.Osn_podpis(0)
worddoc.FormFields(9).result = pdoc.Podpisant(0)	
worddoc.FormFields(10).result = Today	

nm_doc$ = ReplaceChr(ReplaceChr({"}, {"}, " "),{/}," ")+"File1.doc"
WordDoc.saveas(tmppth_str + "\"+nm_doc$)

'проверяем есть ли поле в документе
'rttmp - шаблон
If pdoc.HasItem("Sfakt") Then		
Msgbox "есть поле"
Set rttmp = pdoc.GetFirstItem("Sfakt")
Else		
Msgbox "нет поля"
Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")
End If

WordDoc.close

'Добавляет в RTF-поле присоединенный файл или ссылку на него.
Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, nm_doc$, tmppth_str + "\"+nm_doc$)

'открыть на редактирование тек. док

Call pdoc.save(True,pdoc.IsResponse)
Call uidoc.close
Call ws.editdocument(False,pdoc)

'	Удаляем директорию
Kill tmppth_str & "\" & Cstr(pth_str$)
Kill tmppth_str + "\"+nm_doc$
Rmdir tmppth_str
Exit Sub

MesError:	
'Обработка сбоев 
ErrNo = Err
ErrLine = Erl
ErrMessage = Error
Messagebox "Button Click " + Cstr(Err) + " " + Cstr(Erl) + " " + Error
Exit Sub
End Sub
 

Вложения

  • 1.jpg
    1.jpg
    173,4 КБ · Просмотры: 486
  • 2.jpg
    2.jpg
    175,6 КБ · Просмотры: 543
  • 3.jpg
    3.jpg
    165,4 КБ · Просмотры: 486

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Добавил в форму текстовое поле Form, по умолчанию поставил значение своей формы "SFakt".
Молодец))))) а форма то такая есть? Имя у нее какое, у существенного факта?
В дизайнере имя формы есть, вот его и надо прописать в это поле.

поcледний close? Я видимо ошибся.

Судя по всему файл прикрепился, вот только что за ошибка непонятная...
Еще надо word.close делать до того, как ты будешь прикреплять файл
 
D

Dimok-163rus

Молодец))))) а форма то такая есть? Имя у нее какое, у существенного факта?
В дизайнере имя формы есть, вот его и надо прописать в это поле.

поcледний close? Я видимо ошибся.

Судя по всему файл прикрепился, вот только что за ошибка непонятная...
Еще надо word.close делать до того, как ты будешь прикреплять файл


SFakt называется форма, а вот файл после закрытия как написал в предыдущем сообщении уходит вниз формы при повторном открытии, как будто не закрепился в поле RTF по закрытию формы
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
RTF может сносится при закрытии?
Посмотри через свойство документа после того как откроешь документ, если оно там.
И чему равно поле Form.

Может поможет:
Код:
call pDoc.ComputeWithForm(false,false)
call pDoc.save(true,doc.Isresponse)
 
D

Dimok-163rus

call pDoc.ComputeWithForm(false,false)
call pDoc.save(true,doc.Isresponse)

не помогли (

Открыл док после генерации, Form = SFakt (Верно)
Sfakt поле, в нем ничего нет
 
A

alexas

Сорри, в 10 комменте был неправ - спойлер не читал, написал по контексту, как понял.
В коде...
'Добавляет в RTF-поле присоединенный файл или ссылку на него.
Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, nm_doc$, tmppth_str + "\"+nm_doc$)
Смотрим Help:
Syntax
Set notesEmbeddedObject = notesRichTextItem.EmbedObject( type%, class$, source$, [ name$ ] )
...........
class$
String.
... If you are using EMBED_OBJECTLINK or EMBED_ATTACHMENT, specify an empty string ("").
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
читать всю треду не удосужился... <_<, может коллеги уже и говорили
Такое может возникнуть если РТ поле не создано!
т.е. для вновь созданных доков:
- док не сохранялся с пересчетом по форме (CWF) - если создан программно (хотя и здесь м.б. нюансы). Выше это выполнялось...
- док не сохранялся интерактивно
- поле не было принудительно создано (именно как рт айтем) - даже если поле есть на форме - это нужно сделать, если не выполнены к-л из условий выше
поле точно РТ типа?

и перестаньте путать в объяснениях форму и документ...
документ - это то что хранится с данными, в БД, форма - это док типа дизайнноты и он напрямую не связан с доком, кот. вы создаете программно или интерактивно вне дизайнера
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!