1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
1 | |
Создание Response06.09.2006, 15:30. Показов 35160. Ответов 21
Метки нет (Все метки)
Вообщем потребовалось создать Response документ который содержит историю открытия документа-родителя. Проблема в том, как я понял, MakeResponse работает только в Back-ende, а мне нужно повесить создаение Response и запись в него значений на QueryOpen документа-родителя, а это уже Front-end. Кто что посоветует?
0
|
06.09.2006, 15:30 | |
Ответы с готовыми решениями:
21
Response Response ? Response To Response Response Document |
DmT
|
|
06.09.2006, 15:57 | 2 |
Для: Hedg
А чё тут посоветовать: создаешь документ ответа и фсё. Только поля ручками придется копировать, если таковые имеются. |
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
06.09.2006, 17:49 | 3 |
Вообщем наваял я тут код который работает. Но выглядит он ховайся в жито.
Код
Sub Postopen(Source As Notesuidocument) Dim session As New NotesSession Dim workspace As New NotesUIWorkspace Dim docA As NotesUIDocument Dim docA2 As NotesDocument Dim docB As NotesDocument Dim creator As String Dim number_doc As String Dim user As String Dim db As NotesDatabase Dim accessDate As Variant Dim ID As String Set db = session.CurrentDatabase Set docA = workspace.CurrentDocument user = session.UserName Messagebox user creator=docA.FieldGetText("Creator") number_doc=docA.FieldGetText("Номер") Set docA2=docA.document accessDate = docA2.LastAccessed ID = docA2.UniversalID Set docB = New NotesDocument ( db ) docB.Form = "Invoice_Hystory" Call docB.ReplaceItemValue("$Ref", ID) Call docB.ReplaceItemValue("Creator", creator) Call docB.ReplaceItemValue("number_document", number_doc) Call docB.ReplaceItemValue("readers", user+";") Call docB.ReplaceItemValue("open_time", Cstr(accessDate)) Call docB.Save( True, True ) End Sub И ещё какие будут предложения по его привидению в нормальный вид.
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
08.09.2006, 11:22 | 4 |
Хождение по мукам часть 2
Код
Sub Postopen(Source As Notesuidocument) Dim session As New NotesSession Dim workspace As New NotesUIWorkspace Dim docA As NotesUIDocument Dim docA2 As NotesDocument Dim response As NotesDocument Dim creator As String Dim number_doc As String Dim user As String Dim db As NotesDatabase Dim accessDate As Variant Dim ID As String Dim view As NotesView Dim dc As NotesDocumentCollection Set db = session.CurrentDatabase Set docA = workspace.CurrentDocument Set view = db.GetView("Response") Set docA2=docA.document ID = docA2.UniversalID accessDate = docA2.LastAccessed user = session.UserName creator=docA.FieldGetText("Creator") number_doc=docA.FieldGetText("ТНомер") Set dc = view.GetAllDocumentsByKey(number_doc) Set docA2 = dc.GetFirstDocument Set response = view.GetChild(docA2) If Not (response Is Nothyng) Then Call response.ReplaceItemValue("readers", user) Call response.ReplaceItemValue("open_time", Cstr(accessDate)) Call response.Save( True, True ) Else Set response= New NotesDocument ( db ) response.Form = "Invoice_Hystory" Call response.ReplaceItemValue("$Ref", ID) Call response.ReplaceItemValue("Creator", creator) Call response.ReplaceItemValue("number_document", number_doc) Call response.ReplaceItemValue("readers", user+";") Call response.ReplaceItemValue("open_time", Cstr(accessDate)) Call response.Save( True, True ) End If End Sub Код
Set response = view.GetChild(docA2)
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
10.09.2006, 09:40 | 5 |
Может docA2 is Nothyng ? :(
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
10.09.2006, 10:05 | 6 |
docA2 всегда есть, а мне нужно найти его потомка GetChild(docA2), если он существует дописать, если его нет то создать. Если брать docA2 is Nothyng - то прийдётся идти по всей коллекции и брать респонсы всех доков, а мне нужен респонс конкретного документа, открытого в текущий момен.
Я не доконца понимаю работу метода GetAllDocumentsByKey - коллекция не создаёться.
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
10.09.2006, 10:20 | 7 |
Для: Hedg
Если коллекция не создается (т.е. создается, но пустая), то docA2 is Nothyng. Отсюда и ошибка. Метод GetAllDocumentsByKey ищет в первой отсортированной колонке в представленнии по ключу. Для получения респонсов есть свойство NotesDocument.Responses. Текущий документ хранится в параметре Source.
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
10.09.2006, 10:44 | 8 |
docA2 не пустой - проверял.
GetAllDocumentsByKey ищет по ключу, может ли ключём являться значение поля?
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
10.09.2006, 10:49 | 9 |
Для: Hedg, если у тебя коллекция пустая, то docA2 тоже будет пустой.
Может.
0
|
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
|
|
10.09.2006, 11:18 | 10 |
Сообщение от Medevic
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
10.09.2006, 11:21 | 11 |
<!--QuoteBegin-Constantin A Chervonenko+11:09:2006, 10:05 -->
<span class="vbquote">(Constantin A Chervonenko @ 11:09:2006, 10:05 )</span><!--QuoteEBegin-->Вот тут по-осторожнее. Это свойство безупречно работало в 4.6.х. Потом (не скажу сейчас в какой версии 5-ки или 6-ки) его разломали mad.gif Пришлось от него оотказаться и переписывать уйму рабочих приложений. Недавно (под 6.5.5) проверял - вроде починили. Но осадок остался... [snapback]43569" rel="nofollow" target="_blank[/snapback]?[/quote] Да я и сам почти его не использую. Слишком много проблем. Лучше GetAllDocumentsByKey с UNID в качестве ключа. Гораздо удобнее. :(
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
10.09.2006, 11:57 | 12 |
Блин я жу незнаю что делать
Код
Sub Postopen(Source As Notesuidocument) Dim session As New NotesSession Dim workspace As New NotesUIWorkspace Dim view As NotesView Dim dc As NotesDocumentCollection Dim docA2 As NotesDocument Dim response As NotesDocument Dim creator As String Dim number_doc As String Dim user As String Dim db As NotesDatabase Dim accessDate As Variant Dim ID As String Set db = session.CurrentDatabase Set docA2=Source.Document ID = docA2.UniversalID accessDate = docA2.LastAccessed user = session.UserName creator=Source.FieldGetText("Creator") number_doc=Source.FieldGetText("ТНомер") Set view = db.GetView("Таблица\Invoice Facturen") Set dc = view.GetAllDocumentsByKey(ID) Set docA2=view.GetFirstDocument Set response = view.GetChild(docA2) If Not (response Is Nothyng) Then Call response.ReplaceItemValue("readers", user) Call response.ReplaceItemValue("open_time", Cstr(accessDate)) Call response.Save( True, True ) Messagebox "Документ истории изменён" Else Set response= New NotesDocument ( db ) response.Form = "Invoice_Hystory" Call response.ReplaceItemValue("$Ref", ID) Call response.ReplaceItemValue("Creator", creator) Call response.ReplaceItemValue("number_document", number_doc) Call response.ReplaceItemValue("readers", user+";") Call response.ReplaceItemValue("open_time", Cstr(accessDate)) Call response.Save( True, True ) Messagebox "Документ истории создан" End If End Sub
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
10.09.2006, 15:43 | 13 |
Я что-то не понимаю как работает Set dc = view.GetAllDocumentsByKey(ID), осуществляет поиск в документе по переданному значению. Как оно ищет? Нужно задавать поле в котором искать или метод обходит все поля?
0
|
DmT
|
|
10.09.2006, 15:58 | 14 |
Сообщение от Hedg
Usage For the GetAllDocumentsByKey method to work, you must have at least one sorted column for each key. Этот метод ищет документы по первому ОТСОРТИРОВАННОМУ столбцу. |
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
10.09.2006, 16:37 | 15 |
Т.е что бы Set dc = view.GetAllDocumentsByKey(ID) отрабатывал правильно, нужно создать представление с формулой отбора документов по форме, первый стобец которого должен отображать, для данного случая, данные из поля которое содержит UNID документа?
0
|
DmT
|
|
10.09.2006, 17:11 | 16 |
Для: Hedg
да |
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
10.09.2006, 18:30 | 17 |
Что-то не работает. Коллекция по прежнему пуста, возможно нужно задавать парметр сортировки.
GetAllDocumentsByKey(ID) , т.е. ID по чём отбирать, а какое нужно указывать значение для сортировки?
0
|
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
|
|
11.09.2006, 11:27 | 18 |
Сообщение от Medevic
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
11.09.2006, 11:47 | 19 |
Да не нужна мне сортировка респонсов, мне нужно дописывать в респонс открытого документа-родителя, а я немогу его найти. По идее должна создаться коллекция из одного документа и от него браться респонс. Но коллекция пустая.
0
|
0 / 0 / 0
Регистрация: 12.08.2006
Сообщений: 59
|
|
11.09.2006, 12:41 | 20 |
Код
Set view = db.GetView("Таблица\Invoice Facturen") Set dc = view.GetAllDocumentsByKey(ID) Set docA2=view.GetFirstDocument Set response = view.GetChild(docA2) Код
Set docA2=view.GetFirstDocument
0
|
11.09.2006, 12:41 | |
11.09.2006, 12:41 | |
Помогаю со студенческими работами здесь
20
Помогите с Response Опять вопрос по Response Неубиваемый Response Reference List... Слепить Response из двух документов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |