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

  • Автор темы Gor
  • Дата начала
G

Gor

Всем доброго время суток.
Мне необходимо в поле добавлять имена пользователей из адресной книги, причем не переписывать, а добавлять через разделитель (; или ,). Использую PickList. На кнопку повесил

Код:
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
Что не так делаю?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Условие верное? sp1:=""? Может надо sp1=""?
Кстати, вместо всего этого попробуй команду:
@Command([MailAddress]; "sp1"; ""; "")
 
G

Gor

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: Gor
Можно @NameLookup пройтись по списку имен.
 
G

Gor

т.е.? Как?
Можно чуть поподробнее?

Чёт в примере написано как то не совсем понятно... Что должно быть в 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(.....)?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
@PickList вернет список имен.
Дальше с помощью @Transform (или в цикле @For) делаем @NameLookup. itemtoreturn - поле, значение которого надо вернуть. Смотри в адресной книге. Тебе, вроде бы, нужен "InternetAddress".
Код:
@Transform(@PickList([Name]); "x"; @NameLookup([ForceUpdate]; x; "InternetAddress"))
Кстати, этот кусок
Код:
@If(sp1:="";@SetField( "sp1"; @PickList( [Name] ) );@SetField("sp1";(@GetField("sp1")+ ";" + @PickList([Name])) ))
лучше заменить на этот:
Код:
@SetField("sp1"; @Unique(@Trim(@GetField("sp1") : @PickList([Name]))))
Т.е. твой полный код будет таким:
Код:
@SetField("sp1"; @Unique(@Trim(@GetField("sp1") : @Transform(@PickList([Name]); "x"; @NameLookup([ForceUpdate]; x; "InternetAddress")))))
 
G

Gor

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: Gor
Поставь @GetDocField в формуле для вариантов. Тогда тебе надо UNID домумента2 знать.
Или @DbLookup. Тогда надо представление, но можно по любому другому ключу найти документ2.
Если список пользователей достаточно статичный, то можно в профильный документ его сохранить. Тогда еще проще будет (смотри @GetProfileField и @SetProfileField).
 
G

Gor

таааак... Док с полем я вытащил! а разбор поля как сделать по разделителю ";" , чтобы каждое имя можно было отдельно выбрать в Dialog List?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: Gor
Т.е. поле в том документе2 не многозначное? Иначе всё самом собой бы разобралось. Тогда сделай @Explode.
 
Мы в соцсетях:

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