• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как добавить поле в уже созданный документ?

  • Автор темы Guest
  • Дата начала
G

Guest

В дезайнере добавил парачку полей на форму, вот хочу автоматом пройтись заполнить, а когда открываю через UnprocessedDocuments, то говорить мол таких полей нет :)
Помогите, пересохранение не помогло
 
D

Dikobraz Grey

А фрагмент агента, заполняющий эти поля можно посмотреть?
 
G

Guest

Set Db=Session.CurrentDatabase

If Db.UnprocessedDocuments.Count>0 Then

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set Doc = collection.GetFirstDocument()

While Not(Doc Is Nothing)
Set itemContractStatus = Doc.GetFirstItem( "ContractStatus" )
Set itemInvoiseType = Doc.GetFirstItem( "InvoiseType" )
Set itemContractParties = Doc.GetFirstItem( "ContractParties" )

If itemContractStatus.Contains("1 Черновик") Then
Call itemContractStatus.AppendToTextList( "5 Архив" )
Call itemInvoiseType.AppendToTextList( "Расходный" )

Call Doc.CopyItem( itemContractParties, "ContractCompany" )
Call Doc.Save( False, True )
End If

Set doc = collection.GetNextDocument(doc)
Wend

End If

А фрагмент агента, заполняющий эти поля можно посмотреть?
itemInvoiseType и ContractCompany являются новыми полями, которых в открывающемся документе нема :)
 
A

abbatik

Вообще странно, если ты говоришь, что их там нету, что ты в них ищешь?

А для создания, вместо GetFirstItem, используй ReplaceItemValue
 
D

Dikobraz Grey

вот что про иницализацию новых полей пишет хелп:
Код:
Dim variableName As New NotesItem( notesDocument, name$, value
[, specialType% ] )

Таким образом необходимо не искать поля в документе, где их нет (не путайте документ и форму)), а создать эти поля:


Код:
Set itemContractStatus = New NotesItem(Doc,"ContractStatus", "")


а вообще то проще написать следующим образом:


Код:
Set Db=Session.CurrentDatabase

If Db.UnprocessedDocuments.Count>0 Then

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set Doc = collection.GetFirstDocument()

While Not(Doc Is Nothing)
Set itemContractStatus = Doc.GetFirstItem( "ContractStatus" )

If itemContractStatus.Contains("1 Черновик") Then
Call Doc.AppendItemValue("ContractStatus", "5 Архив" )
Call Doc.AppendItemValue("InvoiseType", "Расходный" )

Call Doc.replaceItemValue("ContractCompany", Doc.GetItemValue("ContractParties"))
Call Doc.Save( False, True )
End If

Set doc = collection.GetNextDocument(doc)
Wend

End If


надеюсь, нигде не описался :)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Здесь применяются к неновому документу, без проверки на существование поля. Может лишние поля наплодить.

Результат работы не равен AppendToTextList.
 
Мы в соцсетях:

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