Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/134: Рейтинг темы: голосов - 134, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
1

Doc, Uidoc, бэкэнд документа

29.07.2008, 19:08. Показов 24903. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в документе кнопка, на кот повешена функция, кот. меняет поле в этом документе и сохраняет.
но при запуске кнопки возможен вариант, когда уже существует бэкенд документ и следовательно действия кнопки невозможно
поэтому сперва в кнопке стоит переоткрытие
If Not doc.Save(False,False) Then
Set uidoc = ws.EditDocument( False,doc,,,, False)
ну, вот не работает это переоткрытие, не получаю на экран свежую версию документа
а писать пользователям "переоткройте док вручную" - не катит
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2008, 19:08
Ответы с готовыми решениями:

Uidoc.fieldsettext не срабатывает, если после идет Uidoc.document
Есть код в котором заполняю поле датой. Dim item As NotesItem Dim dateTime As NotesDateTime ...

Импорт С Документа Doc C Автматичиским Заполнением Полей Карточки.
В lotus Notes есть кнопка которая импортирует файлы doc и автоматически заполняет поля карточки...

Генерация doc документа
Всем привет. Стоит такая задача: нужно создать приложение, в котором я заполняю поля, отмечаю что...

Открытие документа .doc в java
Добрый день! Подскажите пожалуйста как можно средствами java открыть Вордовский документ? Уже весь...

14
0 / 0 / 0
Регистрация: 19.07.2007
Сообщений: 1,098
29.07.2008, 20:03 2
call uidoc.close
Set uidoc = ws.EditDocument( False,doc,,,, False)

А ваще, если док, который существует у вас на бекэнде получен с текущего уидока, то вообще нет смысла переоткрывать документ, так как данные будут актуальны и на уидоке...

Или я ваще уже лотус забыл?
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
29.07.2008, 22:59 3
Не понятно. Бэкэнд документ в любом случае существует в памяти.
Как я понял из кода, это попытка поймать возможный конфликт?
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
30.07.2008, 10:44 4
мне кажеться, что перед тем как что-то менять в документе, взятого с УИ, нужно перевести его в режим редактирования...
NotesUIDoc.EditMode = True, если такого права нет на основании авторс-полей, то придется делать серверную обработку, если такого права нет по логике, то надо делать правку на бэкэнде и переоткрывать документ
0
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
30.07.2008, 15:06 5
авторс и ридерс полей нет
вот собственно в чем проблема, запускаю кнопку на открытом доке, добавила там проверку:
If Not doc.Save(False,False) Then
Messagebox "невозможно сохранить"
End If
получаю сообщение, и все, дальше с этим документом работать нельзя, надо переоткрыть вручную

а хотелось бы, если Save=False переоткрыть докумет (получить его свежую версию) чтобы уже у него можно было проводить изменения
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
30.07.2008, 15:12 6
Свежая копия получается через NotesView.GetDocumentByKey.
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
30.07.2008, 15:32 7
doc.Save возвращает False если не было произведено изменений... зачем тогда переоткрывать?..

noteDatabase.GetDocumentByID
noteDatabase.GetDocumentByUNID
0
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
30.07.2008, 17:42 8
doc.Save возвращает False если сохранить неудалось
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
30.07.2008, 18:11 9
дело в том еще, что если даже сохранить и удастся, но документ не изменился, и записывать на диск не надо, то Save вернет False, хотя ошибок не будет
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
31.07.2008, 09:25 10
Save вернет False только если не сможет сохранить. В остальных случаях(даже если документ не изменился) Save вернет True.
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
31.07.2008, 11:07 11
Medevic
я тоже так думал, пока не написал явно

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


Код
    Dim s As New notessession
Dim doc As notesdocument

Set doc = s.currentdatabase.createdocument
If doc.save(True, False) Then
Print "saved"
Else
Print "not saved"
End If

Set doc = s.currentdatabase.AllDocuments.GetFirstDocument
If doc.save(True, False) Then
Print "saved2"
Else
Print "not saved2"
End If
я так думаю, что лотус перед тем как писать на диск делает сравнение данных...
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
31.07.2008, 11:17 12
Если из базы, то не будет.
А если взятый документ открыт в UI, как в нашем случае, то только, если не сможет сохранить.
0
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
31.07.2008, 13:49 13
у меня получилось, работает, но код кривой ...

1. если документ без бэкенда, то этот код работает как часы:

Код
uidoc.EditMode=True
If ws.DialogBox( "ChangeCrok" , True, True , True, False , False , False , "Запрос на продление", doc1, False, True, True )=True Then
Call doc.replaceitemvalue("WhyshCrok", doc1.getitemvalue("crok") )
If Not doc.Save(False,False) Then
Msgbox "Сохранение не удалось после вызова /запрос на продление/"
Exit Sub
End If
Call uidoc.RefreshHideFormulas   надо, иначе на экране не появляется WhyshCrok (WhyshCrok скрыто если="")
End If
2. но вот если есть бэкэнд документ, работает только так:

Код
Call uidoc.Close
Set docFirst = view.GetDocumentByKey (key_ )
Set uidoc= ws.EditDocument(True, docFirst)
If ws.DialogBox( "ChangeCrok" , True, True , True, False , False , False , "Запрос на продление", doc1, False, True, True )=True Then
Call docFirst.replaceitemvalue("WhyshCrok", doc1.getitemvalue("crok") )
crok=doc1.getitemvalue("crok")
If Not docFirst.Save(False,False) Then
Msgbox "Сохранение не удалось после вызова /запрос на продление/"
Exit Sub
End If
Call uidoc.Close  приходится переоткрыть, т.к.WhyshCrok не появился
Call ws.EditDocument(True, docFirst)
end if
0
0 / 0 / 0
Регистрация: 21.02.2005
Сообщений: 358
16.11.2009, 16:49 14
та что переоткрыть документ в режиме просмотра не получиться?
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
16.11.2009, 17:39 15
та что переоткрыть документ в режиме просмотра не получиться
насколько это жестоко :D
особенно учитывая что Call notesUIDocument.Reload( ) на чтении не работает
0
16.11.2009, 17:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2009, 17:39
Помогаю со студенческими работами здесь

Обработка doc документа в Excel
Приветствую, Существует следующая задача, имеется док документ с оглавлением, каждая глава имеет...

Создание doc документа на основе формы C#
Есть форма, на ней расставлено несколько textbox. Необходимо на их основе создать Word документ,...

Открытие документа word(.doc) на страничке
Вопрос такой, можно ли открыть скажем вордовский документ на страничек html(css) чтоб фото и текст...

Создать макет отчета из .doc документа
Уж очень сложный макет. Есть какие либо решения для импорта?

Открытие документа с расширением .txt и doc?
Здравствуйте форумчани. Расположил на форме компонент Батон1 и Батон2. При нажатии компонент...

Вывод на форму содержимого документа *.doc
Как научить форму выводить содержимое документа .doc .docx? Есть необходимость в мини doc ридере!...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru