1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

Добраться до дока, используя Js

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

  1. KLif

    KLif Гость

    Репутация:
    0
    Всем привет.

    Вообщем такая проблема ... нужно, используя JS, получить документ (не текущий). Кто-нибудь знает как это сделать?
     
  2. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.920
    Симпатии:
    1
    Для: KLif
    навряд мне кажеться ... но это только моё имхо... JavaScript'a я не особый знаток, но насколько мне извесно работьа с базами он не умеет... буду рад ошибиться
     
  3. Sandr

    Sandr Гость

    Репутация:
    0
    куда вам его плучить надо?
    Если просто открыть, то это создайте урл типа http://hostname/dbName/0/docUNID?OpenDocument

    Если Вы хотите с ним что-либо скриптом делать, то делайте агент, который будет запускаться по @Command([ToolzRunmakro];MyAgent). А там опять таки по униду получаете на LS документ и работайте с ним... В этом способе текущий документ будет notessession.documentcontext, в нем Вы можете где-то хранить унид нужного документа.


    Агент также можете запустить по урлу. Что-то типа http://hostname/dbName/MyAgent?OpenAgent&unid=myDocUnid

    где myDocUnid - унид нужного Вам документа.
    тут вам прийдется получать нужный документ из параметра ссылки через Query_String


    Думаю, дальше сами разберетесь...
     
  4. KLif

    KLif Гость

    Репутация:
    0
    Не совсем понятно как использовать эти урл ... что просто какой то переменной присваиваешь урл? ... У меня есть доки которые хранят поля с опр структурой данных, в текущем доке мне нужно добраться до этого поля и по нему посторить html таблицу ... всё оборвалось на попытке добраться до дока ...
     
  5. Sandr

    Sandr Гость

    Репутация:
    0

    window.document.location = url
     
  6. KLif

    KLif Гость

    Репутация:
    0
    Спасибо, вы мне очень помогли.
     
  7. KLif

    KLif Гость

    Репутация:
    0
    Возникло два вопроса:

    1) можно ли сделать так, чтоб переменная просто содержала документ, а не открывала его?
    window.document.location = url (так идёт сразу открытие нужного дока)

    2) чему нужно присвоить урл, чтобы запустить агента?
     
  8. KLif

    KLif Гость

    Репутация:
    0
    Нашёл способ, но почему то не работает на практике ...

    1) кинул на форму

    <iframe name="buffer" src="about:blank" style="width:0px; height:0px; overflow:hidden; border:none;">
    </iframe>

    2) в JS запускаю агента и гружу его в этот фрейм

    Код (Text):
    window.frames['buffer'].location = "http://localhost/UserSt.nsf/GetProfileStructure?OpenAgent&unid="+document.forms[0].ProfileDocUNID.value
    3) код агента, currentdoc - текущий документ, doc - док, откуда хочу вытащить значение поля

    Код (Text):
    Set db = session.CurrentDatabase
    param = session.CurrentAgent.parameterDocID
    Set doc = db.GetDocumentByID(param)                    
    Set currentdoc = session.DocumentContext                   
    Call currentdoc.ReplaceItemValue("test", doc.GetItemValue("Structure")(0))
    Так вообще можно делать? никаких ошибок нет, просто ничего не происходит ...
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-KLif+30:01:2008, 10:13 -->
    <span class="vbquote">(KLif @ 30:01:2008, 10:13 )</span><!--QuoteEBegin-->Так вообще можно делать? никаких ошибок нет, просто ничего не происходит ...
    [snapback]95722" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну дык. Ты сохрани изменения в документе, переоткрой его в бравзере и всё будет хорошо. :)
     
  10. fvoice

    fvoice Гость

    Репутация:
    0
    Для: KLif
    попробуйте:
    Код (Text):
    Set db = session.CurrentDatabase
    param = session.CurrentAgent.parameterDocID
    Set doc = db.GetDocumentByID(param)                  
    print |Значение поля Structure = |+doc.Structure(0)
    на LS агенте Вы не можете менять то что в браузере, вы можете формировать, то что хотите увидеть, на сервере, и выводить это на экран.

    <!--QuoteBegin-KLif+30:01:2008, 13:13 -->
    <span class="vbquote">(KLif @ 30:01:2008, 13:13 )</span><!--QuoteEBegin-->window.frames['buffer'].location = "http://localhost/UserSt.nsf/GetProfileStructure?OpenAgent&unid="+document.forms[0].ProfileDocUNID.value
    [snapback]95722" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    мне кажется достаточно:
    Код (Text):
    window.frames['buffer'].location = "http://localhost/UserSt.nsf/GetProfileStructure?OpenAgent
     
  11. KLif

    KLif Гость

    Репутация:
    0
    1) доки сохранял, и в JS делал window.reload ...но после вызова агента, след строчки кода скрипта не идут, а именно рефрешь окна браузера ... я почему то думал что он поможет обновить текущий док ... но не вышло

    2) идешник нужен, что агент знал с каким доком работать, это нужно ...
    3) странно, но принт не сработал

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

    Что собственно я пытаюсь сделать: хочу получить значение поля из нужного документа и работать с этим значением в текущем доке ...
     
  12. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Потому что нельзя использовать свойство session.CurrentAgent.parameterDocID.
    Выцеплять UNID надо другими средствами. А именно смотреть поле currentdoc.QUERY_STRING_DECODED. И оттуда его получать.
     
  13. KLif

    KLif Гость

    Репутация:
    0
    QUERY_STRING_DECODED - что это за поле, и почему оно всегда пустое?
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: KLif
    Спроси у хелпа. :)
     
  15. KLif

    KLif Гость

    Репутация:
    0
    Что то я стал забывать о стандартном лотусовском хелпе :D
    Вообщем, обошёлся без этого поля ... потому что в курентном доке могу хранить унид нужного дока .... но всё равно где то косяк:

    Код (Text):
        Set db = session.CurrentDatabase
    Set currentdoc = session.DocumentContext   
    Set doc = db.GetDocumentByUNID(currentdoc.GetItemValue("ProfileDocUNID")(0))
    Call doc.ReplaceItemValue("test", "fwefwefwe")
    Call doc.Save(False, True)
    Просто для теста, создал поле и пытаюсь в него забить строку ... после открываю док ручками из вьюхи, поле пустое .... агент не сработал? Это может быть из за того что у меня currentdoc не сохранён? мне как бы не надо его сохранять ... и вообще, если он не сохранён могу я его получить с помощью DocumentContext ... хелп вроде непротив ...
     
  16. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: KLif
    Используй Print для дебага.
     
  17. Sandr

    Sandr Гость

    Репутация:
    0
    Мысля с iframe была хорошей... делаете этот айфрейм пиксельного размера (шоб неьбыло видно док), а потом JSом стучитесь туда...

    window.frames['buffer'].document.getElementById("Structure").value, тока учтите, что на форме того документа, значение поля которого хотите получить, долдны стоять галка generate HTML for all fields.

    А ваще лучше так, на эту форму лепите кнопку c id = "MyButton", пихаете её в <DIV style-"display:none></DIV> (див должен быть помечен как ХТМЛ) и делаете так window.frames['buffer'].document.getElementById("MyButton").click();

    по клику кнопки делаете @command([ToolzRunMakro];"MyAgent")

    В агенте документ получаетете через notessession.documentcontext

    Дальше лотус скриптом делаете все что Вам надо
     
  18. KLif

    KLif Гость

    Репутация:
    0
    О господи наконецто :D)

    Код (Text):
    window.frames['buffer'].location = "http://localhost/UserSt.nsf/AllProfiles/" + proText + "?OpenDocument"
    document.forms[0].test.value = window.frames['buffer'].document.forms[0].Structure.value
    1. загрузка нужного дока во фрейм
    2. вытаскиваем нужное поле и его значение присваемваем полю в тек. доке

    Вроде всё работает ... целый день убил на написание пары строк ... абидно

    Всем спасибо :)
     
Загрузка...

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