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

Truncated Document

29.03.2012, 19:50. Показов 17309. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В какой момент я словил эту хрень - не знаю
доки произвольные, сервер 8.5.3 (недавно с семерки поднял), клиент 7.0.4
на серваке появились такие доки (TRUNCATED), заметили случайно
локальная реплика содержит копии полные (я не заметил разницы)
причем пишет так (size) 37738 (bytes) + (truncated) в св-вах
из чего заключаю - никакие они не транкейтед (т.к. кол-во недогруженного не указано)
но интерфейсно этот док не полноценен (в режим редактирования не переходит), где и какой флаг покрутить - ума не приложу
доп. полей в нём не замечено
админских методов я не нашёл
осталось применить ч-нить из программных, но вот чё - не знаю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2012, 19:50
Ответы с готовыми решениями:

Document Locking
Есть БД с документами. В документах хранится нумерация. В базе разрешено блокирование...

Document locking
Тут натыкаюсь на: --------------------------- IBM Notes --------------------------- The...

Next Document Using Xpages
Здраствуйте! Народ кто-нить знает как на Xpages можно закодить кнопочки некст, прев документ?У меня...

About Document В Xpages
Привет. Можно ли организовать, чтобы при первом открытии БД на xPages - вываливалось About...

16
Tyo
29.03.2012, 21:02 2
Скинуть флаг Trancated можно на Notes C API. Схема:

member = NOTE_FLAGS
NSFNoteGetInfo(
NOTEHANDLE note_handle,
WORD member,
void far *value_ptr);

noTruncated = value_ptr and not NOTE_FLAG_ABSTRACTED

NSFNoteSetInfo(
NOTEHANDLE note_handle,
WORD member,
noTruncated);
Jomsor
01.04.2012, 12:18 3
от кого-то слышал про это, возникает когда репликация идет по полям (Replication ettings - Advanced - Fields), получается документ не полностью реплицированный а только часть (truncated-урезанный)
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
02.04.2012, 15:17 4
у мя ваще нет (да и не люблю эту фичу) селективной репликации
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
02.04.2012, 18:21 5
TIA


member = NOTE_FLAGS
это прям так и писать?
т.е. _NOTE_FLAGS =7
0
Tyo
02.04.2012, 18:57 6
>это прям так и писать?
Да.
NSFNoteGetInfo(hNote,7,flags)
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
02.04.2012, 19:22 7
код получился такой

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Function UnTruncate(db As NotesDatabase, doc As NotesDocument) As String
Dim dbHandle As Long
Dim status As Integer
Dim Path As String * 256
Dim NoteID As Long
Dim NoteHandle As Long
Dim NoteClass As Long
 
On Error Goto ErrH
Set handles to NULL (to help in error handling)
dbHandle = 0
NoteID = Clng("&H" & doc.NoteID)
 
Call OSPathNetConstruct("", db.Server, db.FilePath, Path)
If Path = "" Goto ErrH
 
status = NSFDbOpen( Path, dbHandle)
If status <> 0 Goto ErrH
 
status = NSFNoteOpen(dbHandle, NoteID, 0&, NoteHandle)
If status <> 0 Goto ErrH
 
Const NOTE_FLAGS=7
status=NSFNoteGetInfo(NoteHandle, NOTE_FLAGS, NoteClass)
If status <> 0 Goto ErrH
Print {NoteClass> &H} & Hex(NoteClass)
 
Dim noTruncated As Long
noTruncated = NoteClass And Not NOTE_FLAG_ABSTRACTED
Print {NOTE_FLAG_ABSTRACTED> &H} & Hex(NOTE_FLAG_ABSTRACTED)
Print {noTruncated> &H} & Hex(noTruncated)
 
status=NSFNoteSetInfo(NoteHandle, NOTE_FLAGS, noTruncated)
If status <> 0 Goto ErrH
status = NSFNoteUpdate(NoteHandle, 0)
If (status <> 0) Goto ErrH
 
Quit:
If (NoteHandle <> 0) Then
Call NSFNoteClose(NoteHandle)
End If
If (dbHandle <> 0) Then
Call NSFDbClose(dbHandle)
End If
Exit Function
ErrH:
If Err Then
Print Cstr(Err), Error$
Resume Quit
Else
Print {status>} & Cstr(status)
End If
End Function
но пущать на боевых доках боязно
проверял на тесте..., снимает статус - да, но при каждом проходе увелич. кол-во байт
я не считаю это криминальным (возможно меняются служебные поля), но хотелось бы услышать тех кто с СиАПИ более знаком
значит и вопрос к TIA - исключая отсутствия обработки Сишных ошибок - это близко к правде (то что написано)?
0
Tyo
02.04.2012, 20:03 8
На правду похож, но за последствия  не отвечаю , т.к. причина появления Truncated не выяснена. Для чистоты надо бы подправить типы.
Dim noTruncated As INTEGER
Dim NoteClass As INTEGER

Код можно сильно сократить, если использовать недокументированный NotesDocument.Handle
Количество байт, на которое увеличивается документ, сопоставимо с увеличением $UpdatedBy и $Revisions?

Вспомнил один случай, когда появлялись truncated без ограниченной по размеру репликации. Если у документа есть НЕ-SUMMARY поля, а открыть документ в режиме получения только SUMMARY-полей, то после сохранения документа выставится trancated, т.е. NOTE_FLAG_ABSTRACTED. После сохранения у документа терялись НЕ_SUMMARY поля
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
03.04.2012, 12:49 9
TIA спасибо за поправки
а по ситуации - она мне неясна и инфы в тырнете мало (нашёл близких тока два варианта, ссылки вначале)
НО доки полные (нет отличия от "небитых")
единственно что заметил - на body (РТ поле) флаг SIGN SEAL (но это есть у тех, кот. небитые)
откуда он появляется - не знаю, в коде тупо Call rtitem.EmbedObject( EMBED_ATTACHMENT,"" , fname, fnam(0))
в св-вах поля тоже нет подписи, как и на форме - не взведён флаг

Добавлено: Dim NoteClass As INTEGER - это точно? я брал код из разных источников...
непример так
Declare Sub NSFNoteGetInfo Lib "nnotes.dll" _
Alias "NSFNoteGetInfo" ( _
ByVal note_handle as Long, _
ByVal note_member as Integer, _
value_ptr as Long)
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
03.04.2012, 13:01 10
SIGN SEAL есть и установлен у некоторых (закономерности не могу выявить)
0
0 / 0 / 0
Регистрация: 07.02.2010
Сообщений: 1,063
03.04.2012, 13:21 11
lmike, дык это, наверное, у формы в свойствах поля Body стоит "Подписывать..."? Может, часть док-тов по др. форме создавалась?
ЗЫ. Имею в виду - по одноименной форме, но в ней нет такого свойства у поля Body.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
03.04.2012, 14:30 12
Мыш ни у одной формы я не нашёл такой пымпочки (в дизайне)
0
Tyo
03.04.2012, 15:59 13
> Dim NoteClass As INTEGER - это точно? я брал код из разных источников...
NSFNoteGetInfo используется для извлечения разной информации о документе. Какой именно указывается в параметре note_member.
Размерность данных, на которые указывает value_ptr зависит от note_member. Для флагов это Integer. Выдержка из референса по Notes C API:

The note flags WORD is one of the members of the note header data . The various byts of the note flags WORD identify different attributes of the note.

Сишный WORD имеет туже размерность, что нотусовый Integer - 2 б.

Поэтому декларировать надо:
Declare Sub NSFNoteGetInfo Lib "nnotes.dll" _
Alias "NSFNoteGetInfo" ( _
ByVal note_handle as Long, _
ByVal note_member as Integer, _
value as integer)

Т.к. value передатётся ByRef, в dll передастся указатель на value, что и требует сигнатура
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
03.04.2012, 16:24 14
TIA еще раз спасибо
0
0 / 0 / 0
Регистрация: 07.02.2010
Сообщений: 1,063
04.04.2012, 09:56 15
lmike, вот это странно. Мож косячным клиентом каким-то доки создавались? Спецом проверил в 8.5.3 FP1 - если у Body галки "Подписывать" и "Шифровать" не стоят, то Body без всяких SEAL создается... "Field Flags" ваще пустое...
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
04.04.2012, 12:00 16
вот и меня это обстоятельство высаживает
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
04.04.2012, 13:42 17
дополню...
декларе:

LotusScript
1
2
3
4
5
6
7
Public Const NOTE_FLAG_ABSTRACTED = &H0002
 
Declare Public Function NSFNoteSetInfo Lib APIModule Alias "NSFNoteSetInfo" _
(Byval nHandle As Long, Byval member As Integer, V As Any) As Integer
 
Declare Public Function NSFNoteGetInfo Lib APIModule Alias "NSFNoteGetInfo" _
(Byval hNote As Long, Byval member As Integer, V As Any ) As Integer
применение:

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Dim wks As New NotesUIWorkspace
Dim ses As New NotesSession
Dim db As NotesDatabase
Set db=ses.CurrentDatabase
 
Dim doc As NotesDocument
Set doc=wks.CurrentDocument.Document
Dim uiview As NotesUIView
Set uiview=wks.CurrentView
If uiview Is Nothyng Then
If Not doc Is Nothyng Then Call UnTruncate(db, doc)
Exit Sub
End If
Dim NDC As NotesDocumentCollection
Set NDC=uiview.Documents
Set doc=NDC.GetFirstDocument
Do While Not doc Is Nothyng
Call UnTruncate(db, doc)
Set doc=NDC.GetNextDocument(doc)
Loop
0
04.04.2012, 13:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2012, 13:42
Помогаю со студенческими работами здесь

The Document Is Already Locked By Someone Else.
Есть агент, который исполняется на сервере. Блокирую документ пользователем ns.username. Пытаюсь...

Document Refresh
В БД есть основной документ и ответы(респонсы). В основном документе есть поле, в котором...

Document Locking
На базе не стоит &quot;Allow document locking&quot;. Каждый документ открывается сразу на редактирование. И...

Response Document
В общем хочу выделить во view документ и нажать на кнопочку. При нажатии на кнопочку чтобы...


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

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