Возникла необходимость работать с задачами Lotus Notes из конфигурации Terrasoft по следующим пунктам:

  • Создать задачу в Lotus Notes
  • Удалить задачу из Lotus Notes
  • Получить список задач текущего пользователя

Прежде всего нужно в настройках пользователя (Файл - Настройки - Настройки пользователя) на вкладке "E-mail" указать интеграцию с Lotus Notes, перегрузить клиент, затем там же в настройках пользователя на вкладке Lotus Notes указать путь к исполняемому файлу и файлу настроек (на машине должен быть установлен Lotus Client).
Последующие операции проводились на версиях Lotus Notes 8.5 и Terrasoft 3.3.2.220.

Инициализация
Для установки соединения с Lotus Notes потребуется scr_LotusUtils, а именно функция InitializeLotus(). При этом пользователю будет выдано окошко логина, а в атрибутах коннектора появится проинициализированный экземпляр коннектора Лотуса.
Если вызвать инициализацию по второму разу, то ничего не произойдет, поскольку в скрипте библиотеки прописана проверка на этот случай.
Итак, инициализация сводится к одной строчке

InitializeLotus();

Создание записи в Lotus Notes
Вначале получаем почтовую базу Лотуса

var Lotus = Connector.Attributes('Lotus');
var MailDB = Lotus.MailDB;

Далее создаем в ней новый документ
var doc = MailDB.CreateDocument();

В календаре LotusNotes можно создавать записи разных типов. То, какой тип будет создан, определяется параметром Form
Для создания записей с типом "встреча" или "собрание" этот параметр нужно заполнить значением 'Appointment':
doc.AppendItemValue('Form', 'Appointment');

Для конкретно задач нужно использовать значение 'Task'.
Атрибутов у создаваемого документа Лотуса есть довольно много, но минимальный необходимый набор следующий:
doc.AppendItemValue('Chair', Lotus.Session.UserName); //устанавливаем текущего лользователя Лотуса председателем записи
doc.AppendItemValue('Subject', Dataset.ValAsStr('Title')); //заголовок записи
// для записи с типом "собрание"
//doc.AppendItemValue('AppointmentType','3');
// для записи с типом "встреча"
doc.AppendItemValue('AppointmentType','0');
doc.AppendItemValue('StartDateTime', Dataset.ValAsDateTime('StartDate')); // дата/время начала
doc.AppendItemValue('EndDateTime', Dataset.ValAsDateTime('DueDate')); // дата/время окончания
doc.AppendItemValue('CalendarDateTime', Dataset.ValAsDateTime('StartDate')); // заполняем для корректного отображения в календаре Лотуса

После этого осталось только сохранить созданную запись в базу:
doc.Save(true,true);

При создании задачи (doc.AppendItemValue('Form', 'Task');) нужно заполнять несколько другие атрибуты создаваемого документа:

doc = MailDB.CreateDocument();
doc.AppendItemValue('Form','Task');
doc.AppendItemValue('Chair',Lotus.Session.UserName);
doc.AppendItemValue('Subject','your subject here');
doc.AppendItemValue('StartDate',Today.getVarDate());
doc.AppendItemValue('DueDateTime',DateToStr(EndTime))
doc.AppendItemValue('CalendarDateTime',Today.getVarDate());
doc.Save(true,true);

Очень полезно при создании записи сохранить ее уникальный номер в Лотусе. Этот номер можно впоследствии использовать для быстрого нахождения записи.

var UNID = doc.UniversalID;
Номер имеет строковый тип.

Удаление записи Lotus Notes
Процесс удаления намного короче (при условии, что сохранен уникальный номер UNID созданной ранее записи):

var doc = MailDB.GetDocumentByUNID(UNID);
if (doc.Remove(false)) {
   ShowInformationDialog('Задача успешно удалена из календаря Lotus Notes');
} else {
   ShowInformationDialog('Невозможно удалить задачу из Lotus Notes');
}

Получение всех записей текущего пользователя
Список записей будем получать из представления календаря Лотуса:

var Calendar = MailDB.GetView("($Calendar)");

Для удобства получения из записи атрибута будем использовать дополниетльную функцию
function GetItem(Task, ItemName) {
   return Task.GetItemValue(ItemName).getItem(0);
}

Простой вариант - перебор всех записей, и по имеющимся атрибутам определение нужной.
var Task = Calendar.GetFirstDocument();
while (Task != null) {
   Form = GetItem(Task, 'Form');
   StartDateTime = GetItem(Task, 'StartDateTime');
   EndDateTime = GetItem(Task, 'EndDateTime');
   Owner = GetItem(Task, 'Chair');
   Subject = GetItem(Task, 'Subject');
   AppointmentType = GetItem(Task, 'AppointmentType');
   UNID = Task.UniversalID;
   // если нужно - можно получать больше атрибутов или другие

   // здесь необходимые действия ...

   Task = Calendar.GetNextDocument(Task);
}

Замечания и конструктивная критика приветствуются.

Нравится

Поделиться

0 комментариев
Показать все комментарии

В этой ветке форума есть такой вопрос, однако дальнейшей инфы нет.
С 2006-го года что-нибудь изменилось?.. быть может уже добавлена соответствующая интеграция.
Лично на мой взгляд не надо даже тулбара. Просто синхронизация календаря, контактов (по желанию) и возможность отсылать почту из ситемы через Lotus client пользователя.
Очень надеюсь что это уже решенная проблема.

Заранее спасибо за ответ

Нравится

15 комментариев

Добрый день, Сергей!

На данный момент интеграцию с Lotus Notes следует рассматривать как проектное решение.
Все возможности для управления клиентским приложением Lotus Notes доступны благодаря предлагаемой объектной модели. В базовой версии Terrasoft CRM такой интеграции пока нет и в версии 3.3.x, видимо, не будет, однако ее можно реализовать самостоятельно либо заказать в виде проектного решения.
В компании уже имеется опыт подобных решений, были реализованы отправка и получение почтовых сообщений.
Если интересен второй вариант, обращайтесь к Вашему поставщику Terrasoft CRM.

Плохо :( и странно...
CRM используется в компаниях с развитым электронным документооборотом. Лотус один из достойных представителей этого документооборота. А решения для него нет... вернее есть, но оно как-то де факто идет :(
Получается плачевная на самом деле картина для пользователей лотуса. Мы платим за программное обеспечение, одна из основных функций которого в базовой комплектации функционировать не будет. (т.е. уже остаемся в минусе)и заказывать дополнительно как проектное решение - это дополнительные расходы. Результат - дополнительные расходы.
Может можно пойти на встречу клиентам и сделать для лотуса какое-то базовое решение? Пусть это будет самый минимальный функционал, но он будет.
Тем более если есть опыт подобных решений. сделать различные версии. Для Outlook, The Bat!, Lotus

Сергей, спасибо Вам за ценную идею, пожелание по созданию базового решения по интеграции с Lotus Notes с минимальным набором функций зарегистрировано и будет учтено при выпуске новой версии продукта. Однако, озвучить сроки выхода базовой версии с поддержкой Lotus Notes команда разработки пока не готова.
Насчет интеграции с The Bat - вопрос неоднократно обсуждался на форуме, есть некоторые сложности со стороны объектной модели продукта The Bat.

Просто в этом случае Лотус и иже с ним можно использовать только как транспорт.
Формировать письмо в CRM, инструменты редактирования использовать ваши. а при нажатии на "отправку" будет вызываться клиент, к примеру Лотус (так же как он вызывается по mailto:) и в открытое сообщение передается адрес, тема и тело письма. Хотя бы на этом уровне.

Потому что сейчас мы приобрели CRM, но в связи с тем, что корпоративный стандарт у нас - Лотус, мы остались вовсе без почтовой функции в CRM.

Утилита интеграции с Lotus Notes реализована как отдельный компонент - http://community.terrasoft.ru/node/3792

Хм... с большим удовольствием бы ознакомился, да не могу попасть. :( Говорят, недостаточно прав. :(

Странно, недостаточно прав :(

--
www.it-sfera.com.ua
Terrasoft Solution Partner

+1 меня тоже не пускают, говорят недостоин)) секретный раздел комьюнити))

ООО "Лайнсервис"
www.ls-crm.ru

Думаю, доступ только для сотрудников :)
Для простых смертных: "Недостаточно прав!"

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Ну, надеюсь дождемся, когда можно будет и в массах увидеть ;)

Кстати, можно хотя бы узнать, что дает эта утилита, для каких версий Lotus подходит, и, главное, как можно стать обладателем этого чуда ;)

Заранее спасибо

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

А то ссылка дана в закрытый раздел, дополнительной информации никакой нет :(

Ссылка открыта для общего доступа. С нетерпением ждем ваших вопросов и комментариев!

Радует!
А есть возможность тестирования.
Может триальная версия?... и каковы цены на этот компонент?
И еще вопрос, с версией лотуса 6.5 совместимо?.. или не тестировалось?

Заранее спасибо

"Sergey Kalnitskiy" написал:А есть возможность тестирования.
Триал версии на данный момент нет.

"Sergey Kalnitskiy" написал:с версией лотуса 6.5 совместимо
Тестирование проводилось только под 7-ю версию, но при разработке учитывали возможность работы с 6.5 и 8 версиями.

"Ключник Алексей" написал:и каковы цены на этот компонент
По этому вопросу Вам необходимо связаться с нашими менеджерами.

Показать все комментарии