- •Введение
- •Синтаксис формул
- •Лексические элементы формул
- •Переменные
- •Предопределенные поля
- •Временные переменные
- •Константы
- •Операторы выполнения операций
- •Порядок выполнения вычислений
- •Ключевые слова
- •Функции
- •Побочные эффекты
- •Ограничения применимости @-функций и команд, налагаемые списком управления выполнением (ecl)
- •Ограничения применимости @-функций и команд для Web-приложений
- •Как выполняются формулы
- •Порядок выполнения
- •Формулы, возвращающие значения
- •Формулы, выполняющие последовательность действий
- •Выполнение формул, содержащих вызовы @-команд
- •Обработка ошибок в формулах
- •Описание @-функций Domino
- •Функции - базовые конструкции языка формул
- •Функции выполнения циклов
- •Функции определения и преобразования типов данных
- •Функции для работы со строками
- •Определение вхождения подстроки в строку
- •Выделение и замена части строки
- •Функции для работы со значениями типа "дата-время"
- •Функции, работающие с компонентами значения типа "дата-время"
- •Функции для работы с численными значениями
- •Функции для работы со списками
- •Работа с переменными окружения
- •Установка значения временной переменной
- •Функции для работы с текущим документом
- •Определения свойств, характеристик и состояния текущего документа
- •Операции с полями
- •Операции с документом
- •Функции для работы с паролями
- •Функции для работы с почтой
- •Функции, определяющие почтовые настройки
- •Работа с идентификаторами документов
- •Получение информации из баз данных Domino
- •@DbColumn - выбор значений из колонки
- •@DbLookup - выбор из колонки или поля значений по ключу
- •Получение информации из баз данных, поддерживающих odbc-драйверы
- •Функции для работы с видами
- •Функции, используемые в формулах отбора документов
- •Функции, используемые в формулах колонок
- •Функции, работающие с именами пользователей
- •Функции, работающие с правами доступа
- •Функции, работающие с профильными документами
- •Функция выбора требуемого фрейма
- •Диалог с пользователем
- •Функции, определяющие тип и характеристики используемого программного обеспечения
- •Функции, используемые в Web-приложениях
- •Информационные функции
- •Функции для обработки ошибок
- •Описание @-команд Domino
- •Команды для работы с текущим и выделенными документами
- •Команды открытия объектов
- •Команды для работы с профильными документами
- •Команды обновления отображаемой информации
- •Команды для работы с видами и папками
- •Команды запуска приложений
- •Команды для работы с почтой
- •Алфавитный список @-функций
- •Алфавитный список @-команд
- •Разработка тестовых приложений
- •Простые операции с документами
- •Создание нового документа по форме
- •Редактирование текущего документа
- •Удаление документа
- •Печать документа и вида
- •Упражнение
- •Формулы полей
- •Упражнение
- •Получения доступа к данным, находящимся вне текущего документа
- •Доступ к данным вида
- •Наследование
- •Функция @DialogBox
- •Функция @PickList
- •Формулы скрытия информации
- •Формулы скрытия абзаца формы
- •Формулы скрытия акций формы и вида
- •Формулы скрытия столбцов вида и строк аутлайна
- •Упражнение
- •Формулы работы с видами
- •Формула отбора документов
- •Формулы столбцов вида
- •Наложения фильтра на вид
- •Работа с почтой
- •Работа с именами пользователей
- •Работа с уровнями доступа
- •Блокировка документов на редактирование
- •Операции с папками
- •Функции, используемые в Web-приложениях
- •Формулы по месту применения
- •Формулы панели инструментов - Toolbar button
- •Формулы агентов
- •Формула секции с управляемым доступом
- •Остальные функции
- •Литература
- •1 Введение 3
- •2 Синтаксис формул 5
- •3 Лексические элементы формул 6
- •4 Как выполняются формулы 30
- •5 Обработка ошибок в формулах 36
- •6 Описание @-функций Domino 39
- •11 Литература 412
-
Функции, работающие с именами пользователей
@V3UserName
Область применения: без ограничений.
Эта функция эквивалентна функции @UserName из версии 3.х. Более того, когда БД версии 3.х автоматически конвертируется в формат версии 4, все вызовы @UserName заменяются на вызовы @V3UserName.
Функция возвращает имя текущего пользователя или имя сервера в сокращенном формате ([Abbreviate]). При использовании @V3UserName в локальной базе данных, в частном виде базы данных на сервере или когда формула, содержащая @V3UserName, выполняется на станции, возвращается имя пользователя. Имя сервера возвращается только тогда, когда формула, содержащая @V3UserName, выполняется на сервере.
Одним из применений @V3UserName является отображение в виде только документов, имеющих отношение к текущему пользователю. Например, в базе данных заявок на обслуживание можно использовать @V3UserName в частном виде "Наряды", чтобы показывать только наряды на выполнение работ конкретного сотрудника, скрывая от него наряды остальных:
SELECT @V3UserName = AssignedTo
Однако, может быть создан другой частный вид, извлекающий все документы, поэтому нельзя полагаться на @V3UserName как на механизм соблюдения секретности.
Учтите, что не рекомендуется использовать @V3UserName в общем виде - это может привести к непредсказуемым результатам.
Пример. Формула поля формы возвращает имя текущего пользователя (под ID которого работает станция), например "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU".
@V3UserName
@UserName
@UserName( порядковый_номер_имени )
Область применения: без ограничений.
При вызове без параметров функция во всем аналогична функции @ V3UserName, но возвращает имя в каноническом формате ([Canonicalize]).
При вызове с параметром, если порядковый_номер_имени равен нулю, возвращается основное имя, если параметр равен единице - возвращается альтернативное имя.
Пример 1. Формула поля формы возвращает имя текущего пользователя (под ID которого работает станция), например "CN=Evgeny V Polyakov/OU=ITDep/OU=Technic/O=Center_TV/C=RU".
@UserName
Пример 2. Формула поля формы возвращает альтернативное имя текущего пользователя (под ID которого работает станция), например "CN=Евгений В Поляков/OU=ОтделИТ/OU=ТехДирекция/O=ТВЦентр/C=RU".
@UserName( 1 )
@Name( [формат]; имя )
@Name( [формат]; список_имен )
Область применения: без ограничений. При использовании с именами, полученными из адресных книг Lotus Notes/Domino, не работают форматы [A], [G], [I], [P], [Q] и [S]. Они предназначены для работы с именами адресов, пришедших из внешней (не Lotus Notes/Domino) почты.
Функция позволяет оперировать с иерархическими именами. Иерархические имена доступны в версиях Notes/Domino, начиная с 3.0. С помощью @Name можно преобразовывать иерархическое имя в различные форматы или возвращать конкретные составляющие имени.
Иерархическое имя состоит из ряда составляющих, включающих полное имя, подразделение, организацию и страну. Использование иерархических имен гарантирует, что каждый пользователь или сервер имеет свое неповторимое имя.
Разработчик базы данных отвечает за управление вводом и отображение имен пользователей в приложениях Notes/Domino. Он может предложить пользователям вводить имена в сокращенном формате, а затем с помощью @Name развернуть имена до канонического формата. И наоборот, можно отображать имена в сокращенном формате, используя @Name для преобразования хранимых в каноническом формате имен в сокращенный формат.
Если используются поля типа Names, Authors или Readers, Domino автоматически преобразует введенные в них иерархические имена в соответствующий формат для отображения и хранения. Если пользователь вводит имя в сокращенном формате, при сохранении имени Domino преобразует его в канонический формат. Имя всегда отображается в поле типа Names, Authors или Readers в сокращенном формате.
Если в виде отображается информация из поля, содержащего иерархическое имя, автоматическое преобразование отсутствует - имя выводится в каноническом формате. При желании можно преобразовать это имя в сокращенный формат с помощью @Name.
Параметр имя используется для указания имени пользователя или сервера, над которым следует выполнить нужное преобразование. Можно задать и список имен - преобразование выполняется поэлементно и возвращается список.
Параметр [формат] задает формат возвращаемого функцией имени. Он может быть одним из следующих:
-
[Abbreviate] - при этом параметре функция выделяет из "имени" и возвращает сокращенное иерархическое имя без указателей компонентов;
-
[Canonicalize] - возвращается имя в каноническом формате, добавляя, если необходимо, недостающие составляющие имени вместе с их метками;
-
[CN] - возвращается собственно имя без иерархических составляющих;
-
[HierarchyOnly] - возвращается иерархическое имя без компоненты [CN];
-
[ToKeyword] – аналогична [HierarchyOnly], но в возвращаемом значении заменяет символы слеш на обратный слеш и меняет порядок вывода компонент слева направо (т.е. сначала выводится компонента страны, затем организации и т. д.). Удобно использовать для категоризации в формулах колонок;
-
[S] - возвращается компонент фамилии (last name);
-
[G] - возвращается компонент имени (first name);
-
[I] - возвращается компонент инициала отчества;
-
[Q] - возвращается компонент префикса имени (например, Jr);
-
[C] - возвращается компонент принадлежности к стране;
-
[O] - возвращается компонент организации;
-
[OUn] - возвращается указанная составляющая подразделения из иерархического имени; n может находиться в пределах от 1 до 4, например, OU1. В канонической записи имени составляющие OU не нумеруются; однако, они пересчитываются справа налево, так что первая встреченная метка OU воспринимается как OU1, вторая - как OU2, и т.д. Domino не воспринимает [OU] (без номера) как [формат];
-
[A] - возвращается имя домена административного управления (ADMD);
-
[P] - возвращается имя домена личного управления (PRMD);
-
[Address821] - возвращает, если это возможно, интернет составляющую имени в формате RFC821 в не зависимости от того в каком формате был исходный адрес, в RFC821 или RFC822. Другими словами собственно интернет адрес;
-
[LP] - возвращается локальная часть (LocalPart) стандартного интернет адреса по формату RFC822. Другими словами часть адреса до домена;
-
[PHRASE] - возвращается описательная часть (Phrase Part) стандартного интернет адреса по формату RFC822. Другими словами часть адреса до собственно адреса.
В R 6 появился целый ряд флагов для нахождения соответствия между информацией в Domino и LDAP:
-
[ToAT] – возвращается имя LDAP AttributeType при передаче функции в качестве параметра имени Domino поля;
-
[ToField] – возвращается имя Domino поля при передаче функции в качестве параметра имени LDAP AttributeType;
-
[ToDatatype] – возвращается имя типа данных Domino при передаче функции в качестве параметра имени LDAP Syntax;
-
[ToSyntax] – возвращается имя LDAP Syntax при передаче функции в качестве параметра имени типа данных Domino;
-
[ToForm] – возвращается имя Domino формы при передаче функции в качестве параметра имени LDAP ObjectClass;
-
[ToOC] – возвращается имя LDAP ObjectClass при передаче функции в качестве параметра имени Domino формы или подформы.
Пример 1. Возвращает "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU".
@Name( [Abbreviate]; "CN=Evgeny V
Polyakov/OU=ITDep/OU=Technic/O=Center_TV/C=RU" )
Пример 2. Возвращает "Evgeny V Polyakov". Поскольку после имени отсутствует косая черта, это не иерархическое имя, оно и в каноническом формате остается таким же.
@Name( [Canonicalize]; "Evgeny V Polyakov" )
Пример 3. Возвращает "CN=Evgeny V Polyakov/OU=ITDep/OU=Technic/O=Center_TV/C=RU ".
@Name( [Canonicalize]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 4. Возвращает "Evgeny V Polyakov".
@Name( [CN]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 5. Возвращает "ITDep/Technic/Center_TV/RU".
@Name( [HierarchyOnly]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 6. Возвращает "RU\Center_TV\Technic\ITDep".
@Name( [ToKeyword]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 7. Возвращает пустую строку, так как формат [S] предназначен для работы с внешней почтой.
@Name( [S]; @UserName )
Пример 8. Возвращает "RU".
@Name( [C]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 9. Возвращает "Center_TV".
@Name( [O]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 10. Возвращает "ITDep".
@Name( [OU2]; "Evgeny V Polyakov/ITDep/Technic/Center_TV/RU" )
Пример 11. Возвращает "tveugen@cityline.ru", если в поле From находится " "Eugene" <tveugen@cityline.ru> "
@Name( [Address821]; From )
Пример 12. Возвращает "tveugen", если в поле From находится ""Eugene" <tveugen@cityline.ru>"
@Name( [LP]; From )
Пример 13. Возвращает ""Alexander M. Sizov"", если в поле From находится ""Alexander M. Sizov" <asizov@r1.safe.inkom.ru>"
@Name( [PHRASE]; From )
Пример 14. Возвращает "givenName”.
@Name([ToAT]; "FirstName")
Пример 15. Возвращает "PhoneNumber".
@Name([ToField]; "homePhone")
Пример 16. Возвращает "Directory String".
@Name([ToSyntax]; "Text")
Пример 17. Возвращает "Number".
@Name([ToDatatype]; "Integer")
Пример 18. Возвращает "dominoServer".
@Name([ToOC]; "Server")
Пример 19. Возвращает "Database".
@Name([ToForm]; "dominoServerMailInDatabase")
@UserNameLanguage( порядковый_номер_языка )
Область применения: В DOMINO R 6.0.1 НЕ ДОКУМЕНТИРОВАНА.
При параметре порядковый_номер_языка равном 1 возвращает тег альтернативного языка, ассоциированного с ID-файлом текущего пользователя. Если порядковый_номер_языка равен 0, возвращается пустая строка.
Пустая строка также возвращается, если пользователь не имеет альтернативного имени.
Пример. Функция может вернуть значение "ru".
@UserNameLanguage( 1 )