• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Guest

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

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

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

sanch

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set pdoc = db.GetDocumentByUNID(doc.NoteID)
попробуй так
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
ParentDocumentUNID это точно UNID? Поле текстовое ?
 
G

Guest

Документ точно является респонсом
 
G

Guest

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

morpheus

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

K-Fire

<!--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 .....
 
A

AvasKvas

Народ, в чем загвостка у меня?

То же 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
7 940
609
BIT
210
если ЮНИД не является таковым - то и ошибка будет
ЮНИД и НОТЕИД - суть разные вещи
строка д.б. буквенно-цифровая (без всяких разделителей)
ежели ЮНИД получен из вновь-соданного дока и его не сохранили - получить из базы не получится
 
A

AvasKvas

Использую UNID, из давно созданных документов, которые толькочто юзал в коллекции! Сделал обработку на ошибки,получается так, что те документы, которые я хочу удалить уже не существуют или повреждены!
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
db.GetDocumentByUNID
если такого унида в базе нету то будет ошибка
унида может не быть в базе так как это новый документ
или вообще чужой и к этой базе отношения не имеет
 
A

Akupaka

Проблема решилась переносом кода в событие QueryClose()
А код этот находится в событии QuerySave()
судя по всему ошибка вылазила только на вновь созданных дочерних доках.
ответный документ становится таковым только после сохранения, соотв., в первый раз в событии QuerySave документ не является дочерним, и не имеет свойства ParentDocumentUNID.

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

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