Значки настроения для lotus notes

Иконки в представлении

Иконки Font Awesome — как задать цвет каждой иконки по отдельности?
Добрый вечер/день/утро! Прошу помочь разобраться. Нашел на просторах код кнопок для блока соц.

При размещении иконки Font Awesome в разметке появились дополнительно 4 иконки в разных частях разметки
При размещении иконки Font Awesome в

одной из секций разметки HTML (строка 62) появились ещё 4.

Группировка в представлении
Имеется запрос: SELECT c.FriendlyName ‘Инв. №’, c.ComputerName ‘Имя компьютера’, .

данные в представлении
у меня в представлении есть 5 полей при добавлении документа в этом представлении не отображается.

Пиши так: id_icon1:id_icon2:id_icon3:id_icon4:id_icon5 — и будет тебе счастье

P.S. — сорри за дезу — не до пяти, а до десяти иконок в столбце (проверял 8.0.1). Свои и лотусовые иконки не смешиваются.

wowa
А чем плох вариант с двумя столбцами? Будет выглядеть примерно так:

nvy , дак что оно мне покажет?
допустим для числа 123 покажет три иконки?
Мне надо, если 3 документа, и столбец имеет такие значения:
1234567.00
0.00
9876543.00

то чтобы отобразило:
1234567.00
«Иконка»
9876543.00

Добавлено: И все же хотелось бы увидеть формулу для столбца, имя поля ,например, = «field_1»
Спасибо

«Иконку», случайно, не «0» красивый хотят видеть?

Omh
Klido
Полностью поддерживаю, о чём выше уже постил. Но человек, как правило, пока сам не набъёт шишек, других плохо слушает.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Значик в представлении
Лотусисты привет! Вот такая задача встала, делаю представлене и для одной из колонок исползую.

Ответы В Представлении
Добрый день! Подскажите, пожалуйста, почему не разворачивается ветвь с ответами в представлении у.

Отбор в представлении
Нужна помощь вот по такому вопросу: Необходимо что бы пользователи при просмотре представления.

Запрос в представлении
Здравствуйте, помогите исправить запрос (называется в бд 8-3) так чтобы, он создавал.

Источник

IBM Lotus Notes: наведите порядок на рабочем столе

Существует много способов навести порядок на рабочем столе. Сегодня мы расскажем о новой версии решения, которое вот уже 20 лет пользуется успехом на рынке офисного ПО, — IBM Lotus Notes/Domino 8. Обзор продукта и дополнительные видеоролики выложены под катом.

Lotus Notes является платформой для построения приложений автоматизации управленческих и документных процессов. Особенностью системы является объектно-ориентированная архитектура, благодаря которой возможно создание информационных систем, автоматизирующих работу со сложноструктурированными данными и неформализованными динамическими процессами. В терминологии IBM Notes — это программное обеспечение клиентской рабочей станции, а Domino — программное обеспечение сервера.

Что включает в себя IBM Lotus Notes 8?

Встроенные средства совместной работы и обмена сообщениями
В современной рабочей среде информация сыплется практически отовсюду. Электронная почта, ленты новостей, обмен сообщениями, приложения, документы… Этого вполне достаточно, чтобы засорить любой рабочий стол. Вот почему в IBM Lotus Notes 8 все бизнес-приложения и средства совместной работы, которые используются ежедневно, собраны в одном интерфейсе. А благодаря инструментам Lotus Symphony для повышения производительности теперь можно открывать, редактировать и отправлять по почте файлы Microsoft Office, Adobe и др., не переходя в отдельное окно.

Единый интерфейс
IBM Lotus Notes 8 выходит в обновленном формате с наглядным интерфейсом в стиле Web. Теперь все необходимые приложения и инструменты будут у вас под рукой, а значит — повысятся скорость и эффективность работы. Эскизы страниц и сгруппированные закладки позволят быстро переходить от одного открытого приложения или окна сообщения к другому максимум в два щелчка мыши.

Встроенные функции мгновенного обмена сообщениями между коллегами
IBM Lotus Notes 8 позволяет воспользоваться встроенной функцией безопасного мгновенного обмена сообщениями и узнать статус сотрудника из любой части Lotus 8, включая электронную почту, календарь или список контактов. Чтобы побеседовать с коллегой, больше не нужно переходить из окна одного приложения в другое. Lotus 8 работает именно так, как вам нравится.

Модернизированная электронная почта
Сегодня большая часть работы, в том числе и совместной, протекает с помощью электронной почты. В Lotus Notes 8 эти процессы стали проще. В новом «Режиме диалога» можно сгруппировать входящие письма по теме или диалогу и не просматривать отдельные сообщения. «История совместной работы» позволяет видеть все электронные письма, мгновенные сообщения и документы, относящиеся к конкретному проекту, и быстро получать к ним доступ. А с помощью функции «Отозвать сообщение» можно сразу отозвать любое электронное письмо, отправленное случайно.

Более простой календарь и список контактов
С новыми «умными» электронной почтой, календарем и списком контактов Lotus Notes 8 станет хорошим подспорьем в работе. Обновленный наглядный календарь поможет выбрать идеальное время для встречи. А режим «Визитка» позволит быстро найти необходимую информацию в списке контактов и в данных о людях.

И, как обещали, другие ролики IBM Lotus Notes…

Источник


Использование панели инструментов


Отображение и скрытие панели инструментов

Чтобы отобразить либо скрыть панель инструментов, используйте команду Файл – Параметры – Параметры панели инструментов. Lotus Notes откроет окно с параметрами панели инструментов:

Используйте флаг «Показывать панели инструментов» для отображения/скрытия панели инструментов.

Примечание: Вы также можете изменить вид панели инструментов, используя различные переключатели и флаги (например, выбрать отображение не только значков, но и текста для каждой кнопки панели инструментов).

Полезный совет: чтобы быстро открыть окно с параметрами панели инструментов, кликните правой кнопкой мыши в любом месте панели инструментов и выберите команду «Параметры панели…».

Настройка панели инструментов

Чтобы выбрать, какие панели инструментов необходимо отображать, откройте окно с параметрами панели инструментов и перейдите на вкладку «Панели инструментов»:

Полезный совет: чтобы быстро выбрать необходимые панели инструментов, кликните правой кнопкой мыши в любом месте панели инструментов и выберите нужные пункты и списка панелей инструментов:

Полезный совет: Вы можете менять расположение панелей инструментов, перетаскивая их мышью: используйте выступы в начале каждой панели инструментов:

Источник

Значки настроения для lotus notes

Set Session = CreateObject(«Lotus.NotesSession»)
‘ Set objSession = GetObject(«», «notes.NotesSession») ‘ ��� ������� ����� ��������������
‘��������� ������ ������ ��� notes 5.x � ����
Call Session.Initialize(«AZ»)

MailDbName = Session.GetEnvironmentString(«mailFile», True)
Set Maildb = Session.GetDatabase(«», MailDbName)
If Maildb.IsOpen = True Then
Else
Set dirdb = Session.GetDbDirectory(«»)
Set Maildb = dirdb.OpenMailDatabase

End If
Set Maildoc = Maildb.CreateDocument
Maildoc.SaveMessageOnSend = True
Call Maildoc.ReplaceItemValue(«Form», «Memo»)

Dim SendTo(2) As String
Dim i As Integer
Dim DomNotesItem As Object

SendTo(0) = «123@mail.ru»
SendTo(1) = «456@mail.ru»

Call Maildoc.AppendItemValue(«SendTo», «»)
Set DomNotesItem = Maildoc.GetFirstItem(«SendTo»)
For i = 0 To UBound(SendTo)
If SendTo(i) <> «» Then
Call DomNotesItem.AppendToTextList(SendTo(i))
End If
Next

Call Maildoc.ReplaceItemValue(«Subject», «������»)
Set rtitem = Maildoc.CreateRichTextItem(«Body»)
Call Maildoc.ReplaceItemValue(«ReturnReceipt», «1»)
Call Maildoc.ReplaceItemValue(«Importance», «1»)
Call Maildoc.ReplaceItemValue(«DeliveryPririty», «H»)
Call Maildoc.ReplaceItemValue(«PosteDate», Now())
Call rtitem.AppendText(«������ ����, �������. ������������ � ��������.» & vbCrLf & vbCrLf)
Call rtitem.ADDNEWLINE(1)
Set Object = rtitem.EmbedObject(1454, «», Environ(«USERPROFILE») & «\Documents\» & «������.pdf»)
Call rtitem.ADDNEWLINE(2)
Call rtitem.AppendText(«Access 2003» & vbCrLf)
Set Object = rtitem.EmbedObject(1454, «», «H:\Shortcut — ���� 32 bit.mdb.lnk»)
Call rtitem.ADDNEWLINE(2)
Call rtitem.AppendText(«Access 2010» & vbCrLf)
Set Object = rtitem.EmbedObject(1454, «», «H:\ShortCut — ���� 64 bit.accdb.lnk»)
Call Maildoc.ComputeWithForm(False, False)
Call Maildoc.Send(False)

Set Maildb = Nothing
Set Maildoc = Nothing
Set Session = Nothing

Источник

Разработка приложений для Lotus Domino/Notes R5. Краткий курс, общая концепция (стр. 3 )

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5

Хранение списков

Как уже ранее говорилось, поля могут содержать массивы значений. Для того чтобы сделать поле «многозначным» используется опция на 1 закладке свойств «Allow multiple values». Эта опция включается не для всех типов полей. Вкупе с этой опцией идут опции ввода и отображения списковых значений. То есть — что является разделителем элементов списка при вводе данных и при отображении. Это включается на 3 закладке свойств:

Списки могут состоять из строк, чисел, дат и т. д. О том, как эти значения задаются, читайте в следующем пункте и в разделе, посвященном программированию на языках формул и Lotus Script.

Значения полей по умолчанию

Когда курсор стоит на поле, то в нижней половине окна отображается список свойств и событий поля, а в правой – код и значения этих свойств и событий. Полю можно дать значение по умолчанию – это то значение, которое будет у поля при его инициализации (например, при открытии нового документа по форме, или при добавлении нового поля на форму и открытии по форме существующего документа или при создании документа из кода и пересчете его по форме.)

Итак, ввод значения по умолчанию делается следующим образом:

В приведенном примере, при создании документа в это поле посчитается имя пользователя, который создает документ. Используется вызов языка формул @UserName, который выдает имя текущего пользователя в сессии Lotus Notes.

Строка является частным случаем языка формул, и я могла написать в значении по умолчанию просто “ВАСЯ ПУПКИН” – в двойных кавычках. Если я кавычки не напишу, то строка будет интерпретироваться как название переменной.

Для полей, содержащих список значений, в качестве значения по умолчанию я могу задать список. Например, на форме, которую мы создали, необходимо ввести поле, которое разруливает права доступа на редактирование. Мы назовем поле editors, у него будет включена опция «Allow multiple values», тип поля будет Authors и значением по умолчанию будут роли, которые обладают правом на редактирование документа участника голосования – то есть “[MemberEdit]”:”[Supervisor]”. Обратите внимание, что названия ролей в поле пишутся в квадратных скобках. Списковые значения объединяются через двоеточие. И еще названия ролей очень чувствительны к регистру!

Читайте также:  Резкое чувство голода утром

Кстати, если я впишу в качестве значения по умолчанию – список, а флаг многозначности не поставлю – то после сохранения документа – все элементы списка «слипнутся» в одну строку. Ошибка достаточно распространенная – будьте внимательны.

А еще это поле – оно не является частью интерфейса пользователя и его надо скрыть, то есть в закладке свойств этого поля, отвечающей за скрытие, будут стоять опции скрытия от Notes клиента и от web.

Типы редактируемости и вычисляемости полей

Самый простой вид полей – это поля, которые редактируются. В них вводятся значения, и они имеют тип Editable. В нашем случае – на нашей подформе поле, в котором хранится автор документа, должно показывать автора, но его (автора) никто редактировать не должен. Такие поля, которые информацию показывают, но редактировать не дают – это один из типов Computed *. Их 3 вида:

1. Computed – это вычисляемое по формуле поле, которое будет вычисляться каждый раз при открытии и пересчете документа. Это поле сохраняется в физическом документе. То есть, если я сделаю поле с автором документа — этого типа и поставлю формулу @UserName, то при каждом редактировании и пересчете в этом поле будет прописано имя пользователя, который в данный момент открыл этот документ. Для Васи это будет Вася, а для Пети – Петя. Каждый увидит в этом поле себя. Нас это устроит – нет.

2. Computed for display – это поле аналогично предыдущему за одним исключением – оно существует только при открытии документа. Оно не сохраняется в физическом документе. Такие поля бывают нужны, когда мы создаем интерфейс, в котором разным ролям доступны на редактирование разные куски формы. Тогда для каждого элемента информации мы создаем 2 поля – одно актуальное редактируемое поле, в которое эта информация вносится той ролью, которая может ее редактировать. Второе поле – типа Computed for display, которое показывает эту информацию тем ролям, которые не могут редактировать актуальное поле. И на эти поля установлены противофазные формулы скрытия, то есть могу редактировать – вижу поле А, не вижу Б, не могу редактировать – вижу Б и не вижу А. В нашей ситуации это поле также не подходит.

3. Computed when compose – Это поле которое вычисляется 1 раз – при инициализации. На физическом документе оно сохраняется. То есть при создании документа в него посчитается автор и так в нем и останется. Это-то поле нам и надо для автора. И для даты создания, кстати, тоже, так как пересчитывать ее каждый раз не имеет смысла.

Стили и размеры полей – просто попробуйте поиграть с ними сами. Самые нижние свойства первой закладки отвечают за положение поля в порядке обхода. То есть при нажатии клавиши Tab курсор будет перескакивать в следующее поле в порядке обхода. Порядок задается просто цифрами 1,2,3,4,5,6,7…. В одно из полей я могу поместить курсор по умолчанию.

Продолжим дизайн нашей подформы.

Поле – дата создания документа – в значении по умолчанию мы используем формулу, выдающую дату создания @created:

Теперь из подформы перейдем в форму и посмотрим – что у нас получилось – Design->Preview in Notes:

Но мне не очень нравятся вычисляемые поля в рамках, поэтому я сделаю их не Native OS Style, а Notes style. Кроме того, надо это поле перенести на строку вниз ;)) Это можно сделать, выделив его, и нажать CntrlX-CntrlV

Далее я создаю поля для того, кто последний раз изменил документ и даты последнего изменения.

В документе существует поле $UpdatedBy, в котором в хронологическом порядке сохраняются все когда-либо редактировавшие этот документ. То есть последний в этом списке и есть – последний редактировавший.

Очевидно, что значение этого поля считается каждый раз заново, так как список пополняется время от времени. А вот смысла перегружать документ информацией из него же взятой – нет, поэтому поле будет типа Computed for display – то есть не будет сохраняться в документе.

Для подсчета значения поля используется формула, которая возвращает указанное количество элементов списка, переданного в качестве первого параметра. -1 означает возврат одного элемента списка с конца. В качестве списка передано поле $UpdatedBy. При обращении к полю по имени, в формулу реально при подсчете подставляется его значение.

Следующее поле – дата последнего изменения, она будет computed for display, и вычисляться по формуле @modified.

Следующее поле будет редактируемым. Мы должны дать пользователям возможность вкладывать в него различные объекты. Поэтому его тип будет Rich text. Вложение объектов делается из меню File->Attach (Import), но не все пользователи знают о такой возможности, поэтому прямо рядом с полем мы сделаем 2 кнопочки, которые помогут пользователям с вложением объектов.

Итак, поле – rich text, editable.

7.1.8. Hotspots

Для создания кнопки – поставьте курсор в то место где хотите ее отобразить, и далее в меню Create-> Hotspot->button.

Получится довольно некрасивая серая кнопка, смотреть на нее тошно. Поэтому я предлагаю сделать ее же, но в красивом виде.

Action hotspot

Для этого используется в том же меню Create->Hotspot->Action hotspot. Это объект, который можно повесить на текст или картинку. К этому объекту привязан исполняемый код.

Теперь по шагам. Сначала я напишу текст или из библиотеки картинок загружу картинку (Create -> Image resource), которая будет представлять мою кнопку.

Потом выделю ее мышкой и создам на выделении action hotspot. Потом, поставив курсор на объект с hotspot, в меню я загружу Hotspot properties.

На вышеприведенной картинке у нас 2 кнопки – плюс – для присоединения и стрелка для импорта. С каждой картинкой мы работаем отдельно. Начнем с присоединения:

Теперь на картинку «одет» hotspot со специфичными свойствами:

Надо снять галочку с Show border around… — чтобы убрать этот розовый квадрат.

Остальные закладки свойств регулируют стиль отображения.

В нижнем правом окне задается код, который выполняется по факту щелчка мышкой на Hotspot, здесь может использоваться как язык формул, так и Lotus script & simple action – для программирования под lotus, а также Java script для программирования под web. Сейчас я использую команду из языка формул, которая откроет диалог выбора файла и вложит выбранный, в указанное мной РТФ поле, на которое первая команда установит курсор:

Для импорта файла также создается hotspot, только используется другая команда:

Теперь на закладке параметров скрытия свойств этих hotspots надо указать, что они не видны в режиме чтения, и открытия на чтение, так как мы можем редактировать поле только в режиме редактирования, и использование этих кнопочек в режиме чтения выдаст ошибку.

Теперь перейдите в форму и сделайте ее preview в клиенте Notes. Понажимайте на кнопочки.

Бегло опишу — какие еще бывают hotspot-ы:

Button

Это обычная серая кнопка – у нее можно задать параметры отображения, подпись, скрытие и т. п. Кнопка программируется на языке формул, lotus script, simple action или java script

Позволяет сделать какой-то элемент формы ссылкой – на URL, на один из элементов дизайна базы и т. п.

Text Pop-up

При наведении мышки на элемент формы, на который «одет» hotspot такого вида всплывает текстовая подсказка

Formula Pop-up

Формульное всплывающее окно позволяет посчитать текст в окне по формуле.

Теперь мы создадим на подформе вычисляемое поле история изменений. Это поле будет вычисляемым. Так как историю нельзя давать редактировать. Но считаться она будет не от каких-либо параметров документа или среды окружения, а только от самой себя. Поэтому в формулу для этого поля мы поставим название его самого. А модифицировать его значения будут какие-либо изменения статусов или внесения комментариев при сохранении.

При этом каждая запись в историю – будет отдельным элементом списка значений этого поля. Поэтому в нем мы включаем галочку многозначности. И так как мы ее включили – то сразу надо указать опции отображения на 3 закладке. В них я указала, что история должна отображаться через перевод строки.

Итак, с подформой мы закончили. Теперь перейдем к форме.

Сразу надо сказать, что с точки зрения удобства и выработанных стандартов восприятия документов необходимо его разбить на зоны – как минимум зона заголовка и зона основного тела документа.

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

Сейчас мы для нашей формы участника голосования создадим заголовок и таблицу с закладками. На первой закладке мы разместим всю бизнес логику формы, а на 2 закладке – нашу подформу с дополнительной информацией.

Заголовок я оформлю в виде простого текста – КАРТОЧКА УЧАСТНИКА ГОЛОСОВАНИЯ ВАСИ ПУПКИНА.

Надо отметить, что часть такого текста является у меня статической, а часть – вычисляемой. Для вычисляемой части я могу использовать поле типа computed for display, которое будет считаться по значению полей Фамилия, Имя, Отчество.

7.1.9. Вычисляемый текст

А могу использовать то, что называется Computed Text и по смыслу пересекается с полями вычисляемого для показа типа.

Это сущность со свойствами текста и формулой, по которой этот текст вычисляется. Здесь мы использовали формулу, которая взяла значения из поля FirstName, слила его с пробелом, потом если в поле MiddleName не пустая строка – то взяла его значение, добавила после него пробел и добавила значение поля Lastname.

При этом мы сделаем поля FirstName & Lastname – обязательными для ввода в них информации.

Что такой текст создать – меню Create-> Computed text.

Заголовок мы создали, теперь создадим под заголовком таблицу с закладками. Обратите внимания, что в такой таблице каждая закладка – это строка таблицы. Я сделаю таблицу с 2 строками и 1 столбцом. Меню create->Table.

Читайте также:  Мир это радость мир это праздник

На предпоследней закладке свойств таблицы – мы указываем текстовую метку для закладки. По сути одна закладка — это одна ячейка для таблицы нашего вида – так как у ней 1 колонка. Я хочу, чтобы у моей таблицы не была видна граница. Вы свою отредактируйте, как вам хочется. Я пройдусь по всем закладкам и на 2 закладке свойств таблицы – для каждой ячейки проставлю 0-ую ширину границы. В итоге она будет выглядеть так:

Я еще и указала на 1 закладке свойств таблицы Fit to Window

Подформу я перенесла на 2 закладку таблицы, которую я сейчас назову «Дополнительная информация».

Мне не нравится нулевой отступ таблицы в моей таблице с закладками от левого края экрана. Я отрегулирую это свойствами таблицы с закладками – на 1 закладке свойств таблицы – параметры отступа.

Верхний отступ мне тоже не нравится – я его уменьшу, отрегулировав размер текста и видимость текста на подформе – того который прямо перед таблицей – и в дальнейшем везде буду придерживаться этого стиля. Вот что у меня получилось:

Теперь я перехожу в основную закладку формы. Для сохранения стиля я скопирую таблицу из подформы и вставлю ее на 1-ую закладку формы, далее я изменю все подписи к полям и добавлю (удалю) строки таблицы до необходимого количества.

Обратите внимание – при вставке таблицы в таблицу с закладками — система задаст вам 2 вопроса – первый – копировать ли – на него надо ответить «ДА» и второй – при копировании – вставлять в логику существующей таблицы – на него надо ответить НЕТ. Тогда новая таблица вставится в ячейку существующей, иначе же – ну просто попробуйте что будет – описывать это бесполезно J. Вам это пригодиться – когда вы будете переносить данные одного куска таблицы в другой – причем таблицы будут идентичной топологии – тогда вы сможете копировать содержимое ячеек в соответствующие ячейки.

Далее я отформатировала верхний отступ моей «голубенькой» таблицы от закладки – уменьшив шрифт до 4 и выбрав Ариал. Вот что у меня в итоге получилось:

Теперь будем переименовывать поля и перепрописывать свойства.

Имена первых 3 полей у меня уже предопределены – формулой на вычисляемом тексте. Поэтому сейчас я введу их названия, поставлю им свойства – редактируемый текст, без флага многозначности.

Теперь я сделаю то, о чем говорила ранее – контроль ввода значений для полей имени и фамилии.

7.1.10. Проверка значений полей (валидация) и трансляция

Когда вы ставите курсор на поле и поле редактируемое (список событий и свойств полей отличается для редактируемых и вычисляемых) – то в нижнем левом окне кроме значения по умолчанию вы видите – Input Translation & Input Validation (для полей имени человека не забудьте удалить значения по умолчанию оставшиеся от старых полей).

Первое событие – трансляция происходит при сохранении документа и его пересчете – здесь вы можете что-то сделать со значением, введенным в поле, и результат вашей операции запишется в поле при сохранении или пересчете. Ну, например, обрезать с начала и конца пробелы @trim(FirstName), @trim(Lastname) & @Trim(MiddleName) или наоборот присоединить префикс и постфикс.

Событие валидации – это проверка значения поля на корректность. Здесь если проверка не прошла успешно вы можете выдать предупреждение и сохранение или пересчет остановятся.

У полей есть связанная с этой опцией свойство на 1-ой закладке свойств – compute after validation – эта опция включает вычисление значения поля только после того как «провалидированы» значения других полей формы.

Теперь перейдем к практике – я прописала в трансляцию обрезание пробелов на конце и в начале введенного значения, а на событие валидации я впишу следующую формулу:

Формула состоит из @if(условия; что делать, если условие выполнено; что делать, если условие не выполнено), все параметры и вызов формулы от вызова отделяются точкой с запятой.

Мы проверяем – а не пусто ли наше поле и если пусто – вызываем @Failure – которая просто выдает сообщение и возвращает не успешное выполнение команды. А если значение поля не пусто – то выполнится команда @success, которая даст знать системе, что валидация прошла успешно.

Теперь внесите аналогичный код на поле LastName. И исправьте ошибку, которая была на картинке в имени поля – FirstName, а не LastName. (Я специально вношу такие опечатки, так как исправление ошибок в документе – запоминается и способствует лучшему восприятию и запоминанию J)

Теперь продолжаем работать над следующими полями. Поле с именем, зарегистрированным в системе – это Names, редактируемое, у этого поля есть опция включения диалога из адресной книги – ей мы и воспользуемся:

И включите на 2 закладке опцию display entry helper button. Теперь сделайте preview формы в клиенте и попробуйте выбрать в это поле значение из адресной книги.

Далее поле Вес в голосовании – это числовое редактируемое поле, которое содержит информацию о проценте акций, принадлежащих голосующему. Поэтому на второй закладке свойств поля я указываю тип отображения – percent:

Следующее поле – статус и оно не редактируется вручную – для его редактирования мы сделаем 2 кнопки.

В принципе можно было бы дать и пользователю это поле переключать – но это значимая операция, поэтому ее хочется выделить как нечто значимое. Посему мы сделаем на форме кнопки.

Думаю, поле статус вы сделаете сами – не редактируемый Radio button с вариантами выбора «Черновик», «Активный», «Неактивный» — мы будем его переключать из кода кнопок. Значение по умолчанию «Черновик». Так как поле вычисляется само от себя, то значение по умолчанию задается @if(status=””;”Черновик”;status)

Мы можем создать кнопки на форме – в виде hotspot-button, а можем вынести их на панель кнопок вверху формы. На панель выносят кнопки, действие которых относится к документу в целом. В нашем случае – вопрос — куда их поместить. Это дело вкуса – можно рассмотреть работу со статусом – как работу с документом в целом, а можно рассмотреть изменение статуса как работу с полем СТАТУС. Мне больше нравится вынести кнопки наверх.

7.2. Кнопки

Итак, я создам кнопки. Сразу, как только я решала создать кнопку, возникает вопрос – куда ее положить – на конкретную форму? Или в библиотеку кнопок? Логика проста – если она относится только к этой конкретной форме и не может быть переиспользована – то ей место на форме. Хотя можно все равно вынести ее в библиотеку – если это удобно и декларируется как общее место хранения всех кнопок при разработке.

Но если кнопка переиспользуется – то НЕЛЬЗЯ хранить ее на форме. (Более того, когда кнопка хранится в библиотеке, и используется в большом количестве форм, то вы тем самым экономите в размерах базы данных, В самом деле, совсем плохо, когда один и тот же код листов на 10, будет заполнять половину базы данных).

В данном конкретном случае – изменение статуса участника – это приватное дело формы участника, поэтому для демонстрации такой возможности я создам кнопки изменения статуса – на форме.

Итак, я перехожу в правое верхнее окошко (если оно у вас закрыто – просто сдвиньте его границу). Поставьте курсор на список кнопок, потом в меню create -> action.

У вас в списке кнопок появится еще одна кнопка (Untitled) и откроется окно ее свойств, которое можно открыть, просто 2 раза по ней щелкнув мышкой.

Я задаю имя кнопки (если использовать слеш – то кнопка будет открываться каскадом), номер ее позиции в списке кнопок, формулы скрытия, открытия и свойства отображения рисунков на кнопке.

Набор стандартных иконок Lotus – хорош, но не стилен J, поэтому я внесу в библиотеку картинок иконки для кнопок из дизайна стандартного почтового ящика, и буду использовать на кнопках их. (Внести новые иконки можно, просто открыв ваш почтовый ящик в дизайнере и скопировав их оттуда)

Вторая закладка с формулами скрытия. Нам надо подумать – в каких ситуациях наша кнопка имеет смысл. Можем мы изменить поле документа в режиме чтения? Нет! Значит, скрываем на чтение и preview на чтение.

Если у нас документ и так в состоянии «Активный» — нужна нам кнопка перехода в это состояние? Нет! Значит, нам в окно формул надо внести формулу, при выполнении которой кнопка будет скрыта status=”Активный” – то есть если в поле статус стоит такая строка, то кнопка скроется.

Надо опечатку поправить! J

Вот, что в итоге получилось:

Я забыла убрать в поле «системное имя» значение по умолчанию от старого поля, скопированного с подформы – поэтому получилась дата в этом поле. Надо убрать!

Теперь на кнопку надо «одеть» код. Он пишется в нижнем правом окне.

Что будет делать эта кнопка? Она будет изменять значение поля статус, добавлять новую запись в историю документа и обновлять документ на экране пользователя.

Формула, которая выполняет эти операции, выглядит следующим образом (кстати, мы с вами по ходу изучаем на примерах язык формул):

В первой строке полю status присваивается новое значение, для обозначения, что речь идет не о переменной, а о поле – при присвоении используется ключевое слово field. Присвоение значения делается оператором «:=».

Все операнды отделяются точкой с запятой.

В переменную tmp мы сохраняем текущее содержимое поля history.

В переменной tmp1 мы формируем строку для новой записи в историю. Строка состоит из сконвертированного в строку текущего дата\время, приведенного к приемлемому для восприятия виду имени текущего пользователя @Username и просто смысловой строки.

Далее в поле history (вспомните, что оно у нас многозначное – содержит списки) мы вносим список, состоящий из предыдущего значения этого поля и новой сформированной исторической записи.

Читайте также:  Одна ноздря плохо чувствует запахи

Теперь мы просто обновляем документ, чтобы все изменения отобразились на экране.

Теперь сделайте Preview вашей формы с кнопкой и нажмите на нее – посмотрите на поле статус, на поле история и на видимость самой кнопки – которая скрылась в этом статусе.

Теперь по аналогии надо сделать кнопку для перевода в неактивный статус. Я думаю если все понятно по первой кнопке, то вторую вы сделаете элементарно – просто скопировав первую и изменив несколько строк в формулах скрытия и коде. Кстати – сохраните картинку – у вас кнопка каскадная – и обе кнопки будут выпадать их одной кнопки верхнего уровня:

Еще один момент! Когда запускается пересчет формы по факту нажатия кнопки – то происходит валидация формул полей и в написанном нами варианте формул валидации – при простом нажатии кнопки перехода из состояния в состояние – выскакивает окно о не введенном имени, фамилии (если они не введены). Такие предупреждения хорошо ограничивать только событием сохранения документа. Как это делается:

Есть ряд формул, которые возвращают true при происхождении некоторого события, например @Isdocbeingedited – знаменует, что документ редактируется, или @IsdocBeingSaved — заменует, что происходит сохранение документа. Это как раз то, что нам надо – в условии проверки заполнения полей в формуле валидации надо вставить также условие проверки того, что документ находится в процессе сохранения.

7.2.1. Библиотека кнопок

Вообще на каждом документе должны присутствовать действия основной работы с документами – Сохранение, Отказ от сохранения, переход в режим редактирования.

Если проанализировать, то переход в режим редактирования могут делать роли, которые обладают правом на редактирование этого документа. Кнопку закрытия окна документа – могут видеть все, кнопку сохранения все, кто перевел документ в режим редактирования. Кнопку отказа от сохранения – аналогично сохранению.

Очевидно, что кнопки видны в разных режимах:

1. Редактировать – в режиме чтения

2. Сохранить – в режиме редактирования

3. Закрыть в режиме чтения

4. Отменить в режиме редактирования.

Кнопку редактировать – можно сделать отдельно для каждой формы – если в нее каждый раз прописывать новую формулу скрытия для разных ролей. Но, мы можем ввести стандарт для хранения информации о списке редакторов документа – в нашем случае пусть все редакторы документа хранятся в поле Editors. Поэтому мы можем не делать 10 кнопок редактирования для 10 форм, а сделать одну, в которой формула скрытия будет выглядеть следующим образом:

Сейчас я расскажу, что эта формула делает:

1. У нас есть функция, которая возвращает список всех ролей в текущей базе текущего пользователя и всех групп в адресной книге, в которые он входит и всех видов его имени — @userNamesList

2. В поле editors хранится список ролей, групп и имен, которые могут редактировать этот документ.

3. Нам надо понять – есть ли непустое пересечение этих списков

4. Для этого мы делаем Replace значений первого списка – вторым на пустые строки – то есть при нахождении в первом списке элемента, который есть также во втором – этот элемент заменится на «»

5. Далее на результате replace мы применяем @Trim, который на списковом параметре делает удаление всех пустых элементов списка.

6. Что мы имеем – если пересечение списков имело место, то кол-во элементов в исходном editors больше, чем количество элементов в результате @trim(@replace()). И тогда кнопка не скрывается, иначе мы ее скрываем

Всего 2 строчки и столько логики – весьма элегантно на мой взгляд J.

В общем, мы создаем 4 кнопки в библиотеке кнопок.

Зайдите в Shared actions – одна Untitled кнопка в библиотеке будет по умолчанию, остальные вы можете создать из меню create -> shared action.

Логика работы с кнопкой аналогична логике кнопки на форме.

Аналогично я прописываю кнопки Сохранить, Закрыть, Отменить.

Для кнопок Закрыть и Отменить проставите скрытие в режимах самостоятельно. Команда для них одна — @command([FileCloseWindow]).

Теперь мы скроем нашу кнопку редактирования на форме и вставим наши кнопки из библиотеки.

Для этого перейдите в форму в окно с кнопками, поставьте в него курсор и из меню Create->Insert Shared action – добавьте все созданные нами кнопки. После этого укажите последовательность кнопок на панели.

Я поставлю первыми Сохранение и Редактирование, потом будут идти кнопки бизнес логики (в нашем случае изменение статусов), потом кнопки отмены и закрытия. Вот что у меня получилось:

Теперь откройте форму в клиенте, сохраните ее, потом откройте заново, перейдите в режим редактирования – поиграйтесь с тем, что получилось.

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

Вот что у меня получилось:

И теперь мы перейдем к дизайну представлений, который понадобиться нам далее.

7.3. Представления

На этом этапе дизайна у вас в базе есть только представление по умолчанию, в котором вы виде все свои документы просто пронумерованными в порядке создания в базе.

Сейчас моя цель сделать следующее – чтобы для полей страна и город – можно было выбрать одно из уже введенных значений (чтобы по 100 раз «Россия» не писать) или ввести новое.

А для этого мне потребуются представления уже существующей информации о введенных странах и городах.

В рамках этой задачи осветим построение представлений.

7.3.1. Линейные представления (вьюхи)

Что собой представляют вьюхи – сказано в самом начале документа, давайте вплотную займемся их конструированием.

В дизайнере перейдите в пункт views и там нажмите New View:

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

Какие бывают типы?

Типы вьюх

1. Shared – это вью, которую видят все одинаково. Разумеется, в настройках доступа можно отрегулировать группы и роли, которые имеют и не имеют доступ к этой вью. Кроме того, в зависимости от прав доступа, разные люди будут видеть в этой вью разное количество и список документов. Однако если в такой вью, вы используете колонки для подсчета, например суммарных значений по различным категориям – то независимо от прав доступа человек будет видеть актуальные суммы всех документов по категории. То есть, даже если мне не доступна половина финансовых документов, в такой вью я увижу суммарные значения по всем документам. Этим эти вьюхи плохи.

2. Shared, contains documents not in any folder – такая вью на множестве документов, которые задаются формулой выбора задает подмножество тех, которые не лежат ни в одной из папок.

3. Shared, contains deleted documents – если в базе разрешено Soft deletion – это задается администратором на последней закладке свойств базы – то в такую вью будут попадать документы, которые были удалены и их оттуда можно восстановить.

4. Shared, private on first use – это общее представление, которое становится «приватным» — то есть видимым и принадлежащим только конкретному пользователю, после того как пользователь первый раз откроет это представлении. Что произойдет – создастся копия этого представления, принадлежащая пользователю. Такие представления удобно использовать для решения задач показа, например, документов созданных пользователем. Формула выбора будет Author=@UserName – для каждого пользователя, и чтобы представление каждый раз на сервере не пересчитывалось – его стоит сделать именно такого типа. В такое представление, например, не попадут финансовые документы, которые мне не доступны и я не увижу в суммах по категориям цифры, которые не должна видеть. У таких представлений есть и минусы – при изменении дизайна родительской вью на сервере, это никак не скажется на локальной копии, поэтому каждый раз при изменении дизайна вам придется оповещать всех пользователей вашей системы, чтобы они удалили старую вью и открыли ее заново. Место хранения приватного варианта вью определяется самим пользователем при ее создании

5. Shared, desktop private on first use – аналог предыдущего типа, только такая вью будет храниться на десктопе пользователя (desktop. dsk файл) и для ее удаления (чтобы получить новую версию дизайна) необходимо удалить с рабочей области иконку базы, подтвердив удаление приватных вью, и открыть базу заново.

6. Private – это представление доступное только самому пользователю. Он сам его создает, если ему не хватает стандартных представлений базы. При наличии прав в ACL на создание приватных вью – такое представление будет храниться в базе на сервере, если прав нет – то в desktop. dsk

Какие бывают типы вьюх – пробежались.

Свойства вью

Вью создалась, теперь надо задать ее свойства. Для открытия окна свойств в меню Design->View Properties.

На первой закладке указывается название вью и ее алиас, комментарии, а также основной вид вьюхи.

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

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

Далее, 2-ая закладка свойств:

1. Объявляет вью первой открываемой при открытии базы. Если не задан frameset, и на нем не указано открытие другой вьюхи, то будет открываться эта. В базе должна быть вью с таким атрибутом, в случае отсутствия оной бывают проблемы при внешнем обращении к базе.

2. Эта опция объявляет, что по умолчанию дизайн вновь создаваемых вью наследуется с этой вью.

Источник

Оцените статью