общие поля двух документах

k85

Lotus Team
11.10.2011
262
1
BIT
13
есть задача: есть несколько формы, они связаны одним номером, вот надо в одной менять поле, а в основной форме получать измененный параметр и использовать полученный параметр в расчетах.
таких форм несколько. а передавать в основную. Но из основной в те, из которых пришли данные, тоже должны отправляться параметры.
правильно ли понимаю, что надо при сохранении по номеру искать документ и вносить в него новый параметр и делать изменения поля, которое суммирует параметры. или может есть более просто вариант?
 

k85

Lotus Team
11.10.2011
262
1
BIT
13
как отображать данные поля (одной формы ) в другой форме
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
как отображать данные поля (одной формы ) в другой форме
@DbLockup
заполнять на квериопене
наследовать
агенты

способов уйма, цель тянуть одно поле из одного документа в другой какая?
 

k85

Lotus Team
11.10.2011
262
1
BIT
13
@DbLockup
заполнять на квериопене
наследовать
агенты

способов уйма, цель тянуть одно поле из одного документа в другой какая?
один из вариантов отображать состояние документа (из второго док.) - то есть в первом док. просто отображается информация из второго док
второй вариант отображать сумму документа (из второго док.) - сумму в первом документе потом необходимо использовать в расчете
оба параметра могут меняться и их надо автоматически менять в первом документе. и делать изменения без открытия первого документа
 
Последнее редактирование:

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
один из вариантов отображать состояние документа (из второго док.) - то есть в первом док. просто отображается информация из второго док
второй вариант отображать сумму документа (из второго док.) - сумму в первом документе потом необходимо использовать в расчете
оба параметра могут меняться и их надо автоматически менять в первом документе. и делать изменения без открытия первого документа
создайте псевдо 3й документ который показывает и 1й и 2й и позволяет их из себя менять раз такая динамика нужна
 

k85

Lotus Team
11.10.2011
262
1
BIT
13
создайте псевдо 3й документ который показывает и 1й и 2й и позволяет их из себя менять раз такая динамика нужна
что-то не дошло, 3я форма с просто этими полями? а потом их вызывать в основных или неправильно понимаю?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
В подчиненном доке сдёрнуть данные из основного - @getdocfield в вычисляемое поле
Отправить в основной - @setdocfield. Если интерактивно - на onchange нажать на кнопу с сетдокфилд жаваскриптом
Изменения туда-сюда могут быть итеративными - если вычисления проводятся в "другом" доке - его пересчитать (если в нём нет "тяжёлых" функций, типа дибилукап) . Если есть - всё посчитать в редактируемом доке и отправить в подчинённый.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
что-то не дошло, 3я форма с просто этими полями? а потом их вызывать в основных или неправильно понимаю?
надо понимать основы - форма это лишь способ отобразить или редактировать документ, на один и тот же док можно создать кучу форм - всё упирается в задачи
я уже не говорю про подформы

если нужна дикая динамика и интерактив то сделайте всё через кнопки и события и переоткрывайте всё
 

k85

Lotus Team
11.10.2011
262
1
BIT
13
вроде срабатывает
но есть проблема, кнопка сохранить
Код:
    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document
    
    Call uidoc.Refresh   
    Call uidoc.Save
    Call uidoc.Close (False)
но из одной формы срабатывает событие OnSubmit, в нем и делаю проверку , а из второй формы не переходит на это событие
не подскажете почему такое может происходить?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
но из одной формы срабатывает событие OnSubmit, в нем и делаю проверку , а из второй формы не переходит на это событие
не подскажете почему такое может происходить?
щас мы вам нагадаем не видя ни код ни тип ни кнопки ;)
 

k85

Lotus Team
11.10.2011
262
1
BIT
13
в onSubmit
Код:
    Set item = doc.GetFirstItem("myField") - отбор по нужному полю, которое уникально для документа
    sKey = item.text
    Set docNew = view.GetDocumentByKey(sKey,True) ' нахожу данный док по ключу
   
    Call funNew(docNew,"field")
    Call docNew.ComputeWithForm(True,False)
    Call docNew.Save (True, False) ' здесь обновляется только то поле, которое в функции было добавлено , а пересчет всех полей не происходит
       
                End If

функция Function funNew
проверяю и обновляю нужные поля

новые поля обновляются , добавляются в документ 2.
но когда выполняется строчка Call docNew.ComputeWithForm(True,False) - обновлены только поля из функции, а все остальные поля без изменений
 
Последнее редактирование:

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
Код:
@If(field1 = ""; ""; @Adjust( field1 ; field2 + @TextToNumber(field3) ; 0 ; 0 ; 0 ; 0 ; 0 ))
по идее должно отработать
мысли -
1 точно ли все аргументы в Adjust приходят числами?
2 точно ли, что ComputeWithForm не возвращает ошибку?
...
rerr = doc.ComputeWithForm ...
msgbox rerr
call doc.save...
...
 

k85

Lotus Team
11.10.2011
262
1
BIT
13
по идее должно отработать
мысли -
1 точно ли все аргументы в Adjust приходят числами?
2 точно ли, что ComputeWithForm не возвращает ошибку?
...
rerr = doc.ComputeWithForm ...
msgbox rerr
call doc.save...
...
msgbox rerr - False

вот думаю, может это поле просто отдельно в скрипте на lotusscript обновлять, если были изменения в поле
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
msgbox rerr - False

вот думаю, может это поле просто отдельно в скрипте на lotusscript обновлять, если были изменения в поле
часто это единственный выход. Ващще, компьютвизформ - "вещь в себе", часто работает не так, как ожидаешь.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
часто это единственный выход. Ващще, компьютвизформ - "вещь в себе", часто работает не так, как ожидаешь.
чем дальше развивается нотус - тем хуже работают CFD , я все формы на скрипт события переписываю
 
  • Нравится
Реакции: alexas1

k85

Lotus Team
11.10.2011
262
1
BIT
13
есть документ1 , делаю в нем изменения поля, сохраняю и данные отображаются в документе2, но при этом необходимо вернуть назад сумму из документа2 в документ1 (и здесь что-то проблема)

пробую так
в документ1
Код:
        при сохранении
        If были изменения в нужных полях Then
                
                Call функция (документ1, документ2,"Поле1, Поле2 ")
                Call документ2.ComputeWithForm(False,False)
                Call документ2.Save (True, False)
            End If
        
            Call документ1.save(True,True)
Код:
функция
копирует значений полей из документа1 в документ2
Set item = документ1.GetFirstItem (поле1)
Call документ2.ReplaceItemValue (поле1, item)

также срабатывает в обратную сторону от документа2 в документ1 , если документ2 сохранить

пробую как-то в функции вызвать пересохранение документа2. но по кнопке сохранить Call uidoc.Refresh + Call uidoc.Save отправляются обновленные поля документа2, а из функции только отправляются от док1, а назад ничего нет (от док2)
Код:
функция, пробую по uidoc вызвать сохранение док.2

Set item = документ1.GetFirstItem (поле1)

Call документ2.ReplaceItemValue (поле1, item)

    Set uidoc=ws.editdocument(True,документ2)
    If Not uidoc Is Nothing Then
        Call uidoc.Refresh
        Call uidoc.save
' ошибок нет
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
@k85 домина не транзакционная система...
а вы еще и рекурсию добавляете...
можно делать всё инмемори, нужно оба дока загружать в память и проделывать манипуляции, а потом оба и сохранять, с перезаписью на диске...
при этом могут появится конфликты
привлекать для этого еще и ЮИ нотуса - это "за гранью"
оно (ЮИ) не мультипоточно (в классичепком понимании), глюкаво, завязано на СиАПИ (а это чревато малевичами)
 
  • Нравится
Реакции: k85 и alexas1
Мы в соцсетях:

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