Определение данных и справочника при создании документа.

Тема в разделе "Lotus - Xpages", создана пользователем imendan, 26 май 2016.

Метки:
  1. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Приветствую всех! Это мой первый опыт не только в Xpages, но и в технологии веб-приложений. Методом тыка и изучения всех доступных видео и электронных материалов я создал базу Служебные записки. Мне необходимо при создании новой служебной записки определить из справочника должность и департамент автора. Пробовал в beforePageLoad, afterPageLoad, queryNewDocument, но все мои попытки неудачны. Очень нуждаюсь в вашей помощи...
     
  2. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    это же в поля надо получить?
    делаешь их computed и там берёшь их из нужного справочника по username (на SSJS), если юзер уже авторизован при открытии базы
     
  3. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
    Код (Text):
    <xp:this.data>
        <xp:dominoDocument var="document1">
            <xp:this.postNewDocument><![CDATA[#{javascript:document1.replaceItemValue('UserName', session.getEffectiveUserName())}]]></xp:this.postNewDocument>
        </xp:dominoDocument>
    </xp:this.data>
     
    <xp:text escape="true" id="computedField1" value="#{document1.UserName}"></xp:text>
    Если будут вопросы - пиши..
     
  4. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
    Вот еще вариант.. просто положить филд, а в нем дефолт вэлью вычислить. Мне такой вариант нравится меньше)

    Код (Text):
    <xp:inputHidden id="inputText1" value="#{document1.UserNameV2}" defaultValue="#{javascript:session.getEffectiveUserName()}"></xp:inputHidden>
     
  5. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Спасибо, ребят! Сделал вот так...
    В beforePageLoad страницы повесил вот такой SSJS

    var nd:NotesDocument = null;
    if(null != document1){
    nd = document1.getDocument();

    var db: NotesDatabase = session.getDatabase("", "-.nsf");
    if (db!=null){
    var dc:NotesDocumentCollection = db.search("LNAddress=\"" + facesContext.getExternalContext().getRequest().getRemoteUser() + "\"");

    if (dc.getCount()>0) {
    var edoc:NotesDocument = dc.getFirstDocument();
    nd.replaceItemValue('author', edoc.getItemValue("Name"));
    nd.replaceItemValue('author_dep', edoc.getItemValue("Dep"));
    nd.replaceItemValue('author_lna', edoc.getItemValue("Address"));
    } else {
    nd.replaceItemValue('author_dep', 'not found');
    }



    }

    }

    Когда Edit Box в обычном состоянии, то значение передается документу, но в случае ComputedField, почему-то не передается. Добавляю еще один скрытый Edit Box. Значение не передается в карточку ((( ЧТО ДЕЛАТЬ?
     
    #5 imendan, 26 май 2016
    Последнее редактирование модератором: 26 май 2016
  6. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    1 есть некоторое недопонимание:
    проверку дока на null убираем - он существует полюбэ
    nd.replaceItemValue('author', edoc.getItemValue("Name")) меняем на
    document1.replaceItemValue('author', edoc.getItemValue("Name"))
    и т.д.
    в первом случае реплейсится только значение в памяти клиента
    во втором - в самом доке, созданном в памяти на сервере
    2 док искать лучше по ключу в вьюшке (view.getDocumentByKey), а не во всей базе (db.search), так шустрее

    ЗЫ
    обрати внимание на ивенты документа (там же где ты использовал beforePageLoad, ток чуть нижэ, там где Data\document1)
    в твоём случае логично использовать postNewDocument

    ещё, var username = session.getEffectiveUserName() (как romych написал)
    и, если это текущая база, то она просто database
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    "шустрее" искать энтрис...
    и брать колумн-вэлью
     
Загрузка...

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