замена формы документа

Тема в разделе "Lotus - Программирование", создана пользователем nadezdaMP, 30 ноя 2009.

Статус темы:
Закрыта.
  1. nadezdaMP

    nadezdaMP Гость

    задача простая - при сохранении нового(только нового) документа нужно его форму заменить,
    Код (Text):
    ...
    If Source.IsNewDoc Then
    Call Source.Document.ReplaceItemValue("Form", "temp_f_company")
    End If
    ...
    пробовала все возможные варианты, в querysave, и в Queryclose,
    и кнопку свою с обработчиком ставлю, ничего не получается.
    что что, а форму документа заменить не получилось. вопрос почему?

    ps понятно что остается создавать новые доки по форме temp_f_company, просто интересует почему заменить форму не вышло.
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    поле "Form" на форме поцепи
     
  3. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    В пост сэйв надо. Если документ только создается, то уидок.документ будет ничто. После первого сохранения он появится. И тогда можно пробовать заменить.
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В постсэйве Source.IsNewDoc = False полюбому. Поэтому:
    1. Объявляем в глобалс документа
    Код (Text):
    Public IsNewDoc as Boolean
    2. В кверисэйв пишем
    Код (Text):
    If Source.IsNewDoc Then IsNewDoc = True
    3. В постсэйве пишем
    Код (Text):
    If IsNewDoc Then
    Call Source.Document.ReplaceItemValue("Form", "temp_f_company")
    End If
     
  5. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Вот только если после п.3 документ закрыть, то новое значение Form не сохранится. Вобщем, пользуйте поле на форме, как Akupaka советовал.
     
  6. nadezdaMP

    nadezdaMP Гость

    гм. а так заработало... :rolleyes:

    Код (Text):
    Sub Querysave(Source As Notesuidocument, Continue As Variant)
    If Source.IsNewDoc Then
    Call Source.Document.ReplaceItemValue("NewField", "1")
    End If
    End Sub

    Sub Queryclose(Source As Notesuidocument, Continue As Variant)
    If Source.Document.GetItemValue("NewField")(0) = "1" Then
    Call Source.Document.ReplaceItemValue("Form", "temp_f_company")
    Call Source.Document.ReplaceItemValue("NewField", "0")
    Call Source.Document.Save(True, False, FALSE)
    End If
    End Sub
    Добавлено: тему еще одну открывать не хотелось бы,
    вопрос -
    есть ли какой-нибудь способ отличить: из дизайнера агент запускается или с клиента-сервера?
     
  7. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    Сomputed поле Form не подойдет)
    Мой пример: в бд есть форма с таблицей Show only one row at a time(закладки)
    Так вот нужно было сделать несколько кнопок, при click что бы по умолчанию открывалась определенная закладка.
    Скриптом не стал делать (нужно было весь код на PostOpen переносить на кнопки).
    Сделал несколько форм и поля $My_Table куда и пишу название закладки

    В форме есть поле Form - Computed, где и должно идти переименование формы.

    Так вот у некоторых при сохранении поле Form=""

    Может, я что то неправильно делаю))
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ну, собственно это то же самое, что я рекомендовал, только Вы сохраняете признак "новизны" документа не в глобальной переменной, а в поле. На мой взгляд, не стоит засорять документ лишними полями, так что лучше заменить
    Код (Text):
          Call Source.Document.ReplaceItemValue("NewField", "0")
    на
    Код (Text):
          Call Source.Document.RemoveItem("NewField")
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    партия не ищет легких путей :rolleyes:

    "видимо что-то случилось!" (с) :)
     
  10. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    А теперь создайте новый документ и попробуйте закрыть без сохранения. :rolleyes:
     
  11. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    Ага, не пойму в чем дело. у некоторых работало нормально, у некоторых поле Form="". "то ли сани не едут, то ли..."©
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    дык Querysave не отрабатывал, ничего не должно случится, не? :rolleyes:
     
  13. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Хм... Да, фальтстарт. Извиняюсь. :rolleyes:
    Всё равно так не кузяво, с полем лучше.

    Хотя, стоп. Сценарий:
    1. Содаём новый документ
    2. Пользователь заполняет поля
    3. Сохраняет БЕЗ ЗАКРЫТИЯ
    4. Пользователь ещё заполняет поля
    5. Не хочет сохранять то, что в п.4. Закрывает без сохранения.

    Сохранилось то, что не хотелось (п.4)
     
  14. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    конечный результат вычисления значения поля Form единый для всех случаев, поэтому частный случай нельзя отнести к ошибкам :rolleyes:

    зы: не универсально, но все же...
    зы2: но с полем мне тоже больше нравится ))
     
  15. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Конечным результатом пушечного выстрела по воробьям был один убитый воробей, поэтому частный случай уничтожения соседней деревушки нельзя отнести к ошибкам применённого метода охоты.
    Такая вот логика? :rolleyes:

    P.S. Двойной сэйв -- тоже очень некачественное решение.
     
  16. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    :) :rolleyes:
     
  17. nadezdaMP

    nadezdaMP Гость

    спасибо всем за помощь!))))))
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей