D
Dimok-163rus
Ребят, проблема такая:
- по шаблону(заложенному в справочнике) создается документ, куда присваивается значение полей,
- после этого созданный документ/файл присваивается в поле"Sfakt" этой формы.(но файл присваивается форме по умолчанию почему то*)
Все отрабатывает, но, когда нажимаем на кнопку генерации, открывается "форма по умолчанию" и в неё вкладывается этот файл с какой то радости, сохраняем все, файл правильно сгенерированный, присоединяется не в поле, в которое надо этой формы, а висит где то...Рисунки приложил.
Почему открывается форма по умолчанию вот вопрос <_<
Рис1. - начальная форма, в которой находится кнопка
Рис.2 и Рис.3 - форма по умолчанию, в которую файлик вкладывается, после нажатия на кнопку генерации,
Рис.4 - открытие начальной формы, после сохранения
'открыть на редактирование тек. док
Call ws.EditDocument(True, pdoc)
использует форму по умолчанию получается, может как то можно прописать какую форму функция должна брать!?
- по шаблону(заложенному в справочнике) создается документ, куда присваивается значение полей,
- после этого созданный документ/файл присваивается в поле"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)
использует форму по умолчанию получается, может как то можно прописать какую форму функция должна брать!?