ошибка в формуле

Тема в разделе "Lotus - Программирование", создана пользователем Gor, 28 авг 2007.

  1. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Всем доброго время суток.
    Мне необходимо в поле добавлять имена пользователей из адресной книги, причем не переписывать, а добавлять через разделитель (; или ,). Использую PickList. На кнопку повесил

    Код (Text):
    FIELD sp1:=sp1;
    @If(sp1:="";@SetField( "sp1"; @PickList( [Name] ) );@SetField("sp1";(@GetField("sp1")+ ";" + @PickList([Name])) ))
    Вылетает ошибка - Incorrect Data type for operator or Data function: Number expected
    Что не так делаю?
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Условие верное? sp1:=""? Может надо sp1=""?
    Кстати, вместо всего этого попробуй команду:
    @Command([MailAddress]; "sp1"; ""; "")
     
  3. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Да, действительно, спасибо поправил условие, всё заработало.
    А вот если поставить @Command([MailAddress]; "sp1"; ""; "") выдаёт Cannot execute the specified command
    Ещё вопросик небольшой когда из адресной выбираешь человека он в поле подставляет всегда каноническое имя его из PickLista, в другом варианте как нибудь подставить можно ?? типа - RPolyakov@domen.ru ?
     
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Gor
    Можно @NameLookup пройтись по списку имен.
     
  5. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    т.е.? Как?
    Можно чуть поподробнее?

    Чёт в примере написано как то не совсем понятно... Что должно быть в itemreturn?
    @NameLookup( [ lookupType ] ; username; itemtoreturn )
    @NameLookup ( [NOUPDATE]; "Katsushi":"Jones":"Smith": "Yoshito"; "Item")
    Мне прямо на кнопку повесить @NameLookup где -
    FIELD sp1:=sp1;
    @If(sp1:="";@SetField( "sp1"; @PickList( [Name] ) );@SetField("sp1";(@GetField("sp1")+ ";" + @PickList([Name])) )) перед @If(.....)?
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    @PickList вернет список имен.
    Дальше с помощью @Transform (или в цикле @For) делаем @NameLookup. itemtoreturn - поле, значение которого надо вернуть. Смотри в адресной книге. Тебе, вроде бы, нужен "InternetAddress".
    Код (Text):
    @Transform(@PickList([Name]); "x"; @NameLookup([ForceUpdate]; x; "InternetAddress"))
    Кстати, этот кусок
    Код (Text):
    @If(sp1:="";@SetField( "sp1"; @PickList( [Name] ) );@SetField("sp1";(@GetField("sp1")+ ";" + @PickList([Name])) ))
    лучше заменить на этот:
    Код (Text):
    @SetField("sp1"; @Unique(@Trim(@GetField("sp1") : @PickList([Name]))))
    Т.е. твой полный код будет таким:
    Код (Text):
    @SetField("sp1"; @Unique(@Trim(@GetField("sp1") : @Transform(@PickList([Name]); "x"; @NameLookup([ForceUpdate]; x; "InternetAddress")))))
     
  7. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Огромное спасибо! всё получилось.
    Ещё один вопросик назрел=)
    В поле документа1 необходимо указывать имя пользователя.
    Данное поле должно быть Dialog List.
    Все имена пользователей содержатся в одном поле документа2.
    Каким образом возможно их выбрать? Между именами пользователей в поле документа2 разделитель ";"
    @DbColumn не подходит как я понимаю...
    Опять на собаках? В формуле выбора для Dialog Listа? С собаками просто сложности большие испытываю... Как обратиться к полю документа2, разобрать его итд...и вообще так ли надо?
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Gor
    Поставь @GetDocField в формуле для вариантов. Тогда тебе надо UNID домумента2 знать.
    Или @DbLookup. Тогда надо представление, но можно по любому другому ключу найти документ2.
    Если список пользователей достаточно статичный, то можно в профильный документ его сохранить. Тогда еще проще будет (смотри @GetProfileField и @SetProfileField).
     
  9. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    таааак... Док с полем я вытащил! а разбор поля как сделать по разделителю ";" , чтобы каждое имя можно было отдельно выбрать в Dialog List?
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Gor
    Т.е. поле в том документе2 не многозначное? Иначе всё самом собой бы разобралось. Тогда сделай @Explode.
     
  11. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    :) всё получилось
     
Загрузка...

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