Непонятная выдача результата doc.NoteID

  • Автор темы Автор темы Ficoos
  • Дата начала Дата начала
  • Теги Теги
    @noteid

Ficoos

Lotus Team
15.03.2016
150
5
BIT
282
Доброго дня, форумчане! Есть такая штука, как программный запуск агента на сервере с передачей параметра NoteID.
Так вот, в параметр передается только несколько значимых символов из doc.NoteID. Ну например: в свойствах документа NoteID = "NT0000128A", а в качестве параметра doc.NoteID или Cstr(doc.NoteID)
передается "128А". Это глюк у меня или это просто решается путем вычисления длины строки и добавление нулей впереди переданного параметра?
Я уже решил как это сделать, но хотелось бы понять природу такого поведения команд.
 
Последнее редактирование:
Доброго дня, форумчане! Есть такая штука, как программный запуск агента на сервере с передачей параметра NoteID.
Так вот, в параметр передается только несколько значимых символов из doc.NoteID. Ну например: в свойствах документа NoteID = "NT0000128A", а в качестве параметра doc.NoteID или Cstr(doc.NoteID)
передается "128А". Это глюк у меня или это просто решается путем вычисления длины строки и добавление нулей впереди переданного параметра?
Я уже решил как это сделать, но хотелось бы понять природу такого поведения команд.
Это особенность работы Fornula / LS / Java.

Formula вернет NTXXXXXXXX
LS и Java только последние реальные цифры
Dots (если знаете) может вообще вернуть не hex запись, а decimal , например 25323 и потом надо в hex преобразовывать.
 
Это особенность работы Fornula / LS / Java.

Formula вернет NTXXXXXXXX
LS и Java только последние реальные цифры
Dots (если знаете) может вообще вернуть не hex запись, а decimal , например 25323 и потом надо в hex преобразовывать.
Значит придется решать путем заплаток на код...
Прикольно, что в хелпе для Notes Designer написано, что NoteID для класса NotesDocument возвращает строку 8 символов. Вот прохвосты! )))
 
Краткий ID, типа "128А, в пределах той же самой базы работает без проблем. Если нужно вызвать агент из другой базы и передавать ему документ, тогда лучше делать временный документ и записывать туда UNID.
 
Краткий ID, типа "128А, в пределах той же самой базы работает без проблем. Если нужно вызвать агент из другой базы и передавать ему документ, тогда лучше делать временный документ и записывать туда UNID.
В агенте документ выбирается из представления. а код: db.GetDocumentByID(noteid) или db.GetDocumentByUNID(unid) не всегда находят документ даже в собственной базе, особенно, если этот документ новый и только что сохранен в базе. А представление можно сначала обновить, а потом в нем можно найти документ по ключу.
Спасибо за помощь, идеи и разъяснения!!!
 
Да, с видом бывает такое, но с NoteID. В таких случаях можно получить документ, взять его UNID и получить документ по UNID.
Если брать доки из вида перебором, то NoteID при перепросчёте вида могут сбиваться. В таких случаях перед взятием документов желательно сделать NotesView.AutoUpdate = False, а после работы с видом вернуть обратно в True. Я уже и не помню, чтобы такие проблемы были.

P.S. Краткий NoteID генерируется потому, что при вызове агентов любая строка, переданная в качестве ParameterDocID режется до нескольких символов (4 или 5, не помню). Если передать туда, к примеру UNID, то в агенте там будет только начальный кусок. Это неприятно. Лучше бы сделали вместо передачи NoteID передачу строки с более-менее вменяемой длиной, в которой можно было бы передавать параметры (NoteID и др.), но имеем то, что имеем...

Добавлено: обсуждение по "P.S." переехало в соотв. тему Передача параметров агентам.
 
Последнее редактирование:
Мы в соцсетях:

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