• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Обновление поля

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

oleg7

Помогите, пожалуйста
Есть база в нее берутся данные из Словаря
Можно ли агентом вручную (только выделенные документы) обновить данные из Словаря.
Например в словаре была запись "тест1", а ее в словаре переименовали в "тест_1" , так вот можно как-то автоматически подтянуть изменения?
 
Можно, если имеется однозначный способ определить соответствие словаря "тест_1" и документа, использующего "тест1"
 
для этого нужно использовать не сами значения а их синонимы
 
ToxaRat
если правильно понимаю, то имеется в виду поле Alias, но оно не заполнялось :)
 
oleg7 ,
неправильно понял, либо углубляешься в технические детали, которые нам неизвестны, и врядли мы сможем оценить верность твоего предположения, исходя из имеющихся у нас данных.

Если тебе надо обновить значение в документах, которое тянется из справочника, то необходимо как-то найти документы, которые использовали старое значение.
Для этого надо либо знать старое значение, либо использовать и сохранять в документах некое другое значение - ключ, которое поможет найти документы, которые используют старое справочное значение. Этот ключ и будет синонимом.
Если синонимы не использовались, необходимо знать старое значение, найти все документы с таким значением в нужном поле, и заменить актуальным значением из справочника.

Это что, какой-то БР? :)
 
решил, раз так не знаю как правильно делать... пойти другим путем и тоже ступор
Есть база, в которой заполняются данные (Словарь) , есть база в которой эти поля выбираются. Хочу написать агент, который в виде будет редактировать документы и сразу (например выделено 10 документов) будет менять определенное поле (Например Pole_Test) , т.е. мне не надо будет открывать каждый документ, а можно будет менять поле, если данные одинаковые (например по ним осортированы по этим данным)

Код:
myServer:=@Subset(@DbName;1);
myDb:= "DB.nsf";
myView := "TESTVIEW";
@Set("myField";"Pole_Test");
mySelection:=@PickList( [Custom] : [Single];myServer :myDb;myView;"";"";1);
@SetField(myField;mySelection);
SELECT @All

Данные добавляются, но вот PickList появляется ровно столько раз, сколько документов выделено в представлении. Как можно обновить нужное мне поле в нескольких документов, но только 1 раз выбрать данные в PickList?
 
Если есть поле, которое поддерживает уникальность взятого из словаря значения или хотябы предыдущая версия, чтобы знать что на что менялось, тогда можно сравнивать и менять.
 
Напиши LotusScript-агент.
делаю так
Код:
	Dim ws As New NotesUIWorkspace, DB As NotesDatabase, ODB As NotesDatabase
Dim session As New NotesSession
Set DB = session.CurrentDatabase	
Set ODB = session.GetDatabase ( DB.Server, "baza.nsf" )
Dim DocCol As NotesDocumentCollection
Dim RezCol As NotesDocumentCollection
Dim Doc As NotesDocument

Set DocCol = DB.UnprocessedDocuments
Set Doc = DocCol.GetFirstDocument
Set RezCol= ws.PickListCollection( 1 ,False, ODB.Server, ODB.FilePath,"TESTView", "1","1","")
If RezCol.Count = 0 Then Exit Sub
While Not(Doc Is Nothing)
Set Doc=DocCol.GetFirstDocument
Doc.PoleTest= RezCol							 ' выдает ошибку Type mismatch
Doc.Save True, False
Set Doc= DocCol.GetNextDocument(Doc)
Wend

Как мне в PoleTest подставить то, что я получаю в RezCol?
 
oleg7

хм, так правильно что ругается.... ви пробуете подставить в поле колекцию которую получили....

if rezcol.count > 0 then
set doccol = rezcol.getfirstdocument
while not doccol is nothing
doc.poletest = doccol.НАЗВАНИЕ_ПОЛЯ_ИЗ_КОТОРОГО_НУЖНО_ВЗЯТЬ_ЗНАЧ.
или
call doc.replaceitemvalue("poletest", doccol.getitemvalue("xxx")(0))

set doccol = rezcol.getnextdocument(doccol)
whend

end if
 
Cleric-Lviv ,
де теги кода?

oleg7 ,
почему ошибка, описано в посте Клерика.
Я же покритиковать код хочу ))

Код:
' описание переменных
' описывать переменные очень желательно по одной в каждой строке
' размещать переменные тоже желательно как-то логично сгрупировав, например, объекты классом NotesUIWorkspace и NotesSession обычно описывают в самом начале
' позже объекты БД, колекций, документов, т.е. по некоторой иерархии

Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim DB As NotesDatabase
Dim ODB As NotesDatabase
Dim RezCol As NotesDocumentCollection
Dim DocCol As NotesDocumentCollection
Dim RezDoc As NotesDocument
Dim Doc As NotesDocument

Set DB = session.CurrentDatabase	
Set ODB = session.GetDatabase ( DB.Server, "baza.nsf" )

' код тоже должен быть отдельными логическими блоками, а не смешан между собой

Set DocCol = DB.UnprocessedDocuments

' в агенте, который запускается на выделенных документах, эта проверка не обязательна, т.к. колекция будет заполнена документами, как минимум одним

If DocCol.Count > 0 Then

' сначала необходимо получить документ справочника

Set RezCol= ws.PickListCollection(3, False, ODB.Server, ODB.FilePath, "TESTView", "1", "1") ' согласно справке, первый параметр должен быть 3 (цифра три)
If RezCol.Count > 0 Then
Set RezDoc = RezCol.GetFirstDocument

' потом уже беремся за обработку

Set Doc = DocCol.GetFirstDocument
While Not(Doc Is Nothing)
' Set Doc=DocCol.GetFirstDocument ---- ЭТО что вообще такое было? вечный цикл? :)
Call Doc.ReplaceItemValue("PoleTest", RezDoc.GetItemValue("имя поля, которое копируем"))
Call Doc.Save(True, False)
Set Doc = DocCol.GetNextDocument(Doc)
Wend
End If
End If
 
Все работает просто отлично
Akupaka
спасибо за объяснения!
Cleric-Lviv
спасибо за помощь!
 
Akupaka

забил, писал на скорую руку :)


oleg7

всегда пожалуста)
 
Akupaka

ну не придирайся, а..... не вчив я російську і відповідно граматики не знаю!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab