Ошибка "Недопустимый универсальный код"

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

Гость
#1
Помогите пожалуйста,
пишу такой код:

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set pdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) - и вот на этой строке выдается сообщение об ошибке "Недопустимый универсальный код"
Подскажите может кто знает почему так происходит?

А код этот находится в событии QuerySave()
 

Гость
#7
Проблема решилась переносом кода в событие QueryClose()
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#8
Для: Светлана1342
Проверте в деббагере что есть doc.ParentDocumentUNID - что он показывает, да кстати ф-ция db.GetDocumentByUNID работает со СТРОКОЙ
 
K

K-Fire

Гость
#9
<!--QuoteBegin-Светлана1342+1:02:2007, 13:58 -->
<span class="vbquote">(Светлана1342 @ 1:02:2007, 13:58 )</span><!--QuoteEBegin-->Помогите пожалуйста,
пишу такой код:

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set pdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) - и вот на этой строке выдается сообщение об ошибке "Недопустимый универсальный код"
Подскажите может кто знает почему так происходит?
[snapback]54688" rel="nofollow" target="_blank[/snapback]​
[/quote]

Такая ошибка вылезает когда документ по Unid-у не находится. Чтобы пользователя не смущать, можно поставить такое:

On error resume next
Set pdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID)
on error goto ErrorHandler
if pdoc is nothing then .....
 

AvasKvas

Well-Known Member
03.06.2009
78
0
32
#10
Народ, в чем загвостка у меня?

То же Set CopyDoc = dbCS.GetDocumentByUNID(IDstr) выдает ошибку, что недопустимый универсальный код!

Агент выполняет следующее:
рабочая база -db
через getDatabase получаю вторую базу dbCS

в обеихх базах ищу получаю колекцию документов
потом из каждой коллекции беру нужные поля и запихиваю их в массив, получаю два массива, одно из значений массива - UNID

тоесть у меня получился массив для db и для dbCS
сравниваю массивы и в резульиате сравнения получаю массив со значениями UNID для dbCS.

По значениям массива пытаюсь получить документ через Set CopyDoc = dbCS.GetDocumentByUNID(IDstr) (чтобы в дальнейшем этот документ удалить), но выдает ошибку!!
при чем в db все нормально открывается!

Не могу понять в чем дело!
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 439
351
homepage.mac.com
#11
если ЮНИД не является таковым - то и ошибка будет
ЮНИД и НОТЕИД - суть разные вещи
строка д.б. буквенно-цифровая (без всяких разделителей)
ежели ЮНИД получен из вновь-соданного дока и его не сохранили - получить из базы не получится
 

AvasKvas

Well-Known Member
03.06.2009
78
0
32
#12
Использую UNID, из давно созданных документов, которые толькочто юзал в коллекции! Сделал обработку на ошибки,получается так, что те документы, которые я хочу удалить уже не существуют или повреждены!
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 203
24
38
Киев
ToxaRat.com
#13
db.GetDocumentByUNID
если такого унида в базе нету то будет ошибка
унида может не быть в базе так как это новый документ
или вообще чужой и к этой базе отношения не имеет
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#14
Проблема решилась переносом кода в событие QueryClose()
А код этот находится в событии QuerySave()
судя по всему ошибка вылазила только на вновь созданных дочерних доках.
ответный документ становится таковым только после сохранения, соотв., в первый раз в событии QuerySave документ не является дочерним, и не имеет свойства ParentDocumentUNID.

если надо получить унид родительского дока до сохранения, то надо на форме ответного документа сделать поле с формулой @Text(@InheritedDocumentUniqueID), и в коде QuerySave можно использовать значение этого поля.
кроме того, у формы должно быть отмечено свойство Formulas inherit values from selected document, иначе поле будет содержать унид текущего, а не родительского дока.
тип формы может быть любой doc/resp.
 
Статус
Закрыто для дальнейших ответов.