Программирование в Lotus Notes

Тема в разделе "Lotus - Программирование", создана пользователем pasha_balobanov, 25 май 2011.

  1. pasha_balobanov

    pasha_balobanov Гость

    Здравствуйте, всем!
    Достаточно давно являюсь участником замечательного форума CodebyNet и успешным потребителем советов его экспертов.
    Сегодня решил поделиться своими знаниями в области программирования на Lotus. Программирую в этой среде уже 5,5 лет.
    Накоплен значительный опыт - надеюсь, то, что будет написано будет полезно всем программистам самой продвинутой платформы в мире! Если будут повторение каких-то вопросов, уже решенных экспертами CodeByNet - заранее извиняюсь. Опытнам программистом, возможно, некоторые вопросы покажутся очевидными , но думаю тем, кто начинает - точно будут вновинку.

    Итак,
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">узкие места и как их обходить:</div></div><div class="sp-body"><div class="sp-content">1.) Не подгружается dll с помощью команды uselsx

    Решение:
    a) Необходимо выполнить команду regsvr32.exe путь_к_dll ,
    :google: после этого должны появится сообщения с названиями cистемных dll, которых не хватает на компютере. (примеры не хватающих dll: MSVCRTD.DLL; MSVCP60D.DLL)
    c) либо в случае Windows XP, Windows Server 2003 должно появиться сообщение: «не удалось найти указанный модуль» без списка не хватающих dll.
    d) Нехватающие dll необходимо поместить в папку system32.

    2) Карточка двойным щелчком мыши не берется на редактирование – выводится сообщение ”Unable to defer document close”

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

    3) При попытке открытия базы клиент виснет, после выскакивает сообщение ”Generic LSE failure (no more info)”

    Решение: Если в базе есть LS библиотеки, то зайти в каждую (поставить пробел, или что-нибудь написать)и пересохранить

    4) Агент по расписанию не работает на другом сервере. При открытии его в дизайнере и прерсохранении выдается сообщение ”Unable to defermine the execution access privileges for agent ‘nameAgent’ on ‘nameServer’; it may nor run”

    Решение: Необходимо в агенте (в свойствах объекта) нажать на кнопку shedule и выбрать any server там где определяется на каком сервере запускать агент (where the agent run)

    5) Если не отображаются папки с документами конкретного пользователя (папка была сформирована программным способом).

    Решение:Необходимо открыть базу в дизайнере и удалить папку этого пользователя..После чего сформировать вновь

    6) При создании папки из файловой системы (например в total comander командой F7) и помещении в эту директорию какго-либо файла nsf(ntf), Lotus при открытии этого файла в рабочей области клиента может ругнуться "You cannot add directory to you workspace" или "File did not exist".

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

    7) При открытии view в дизайнере выскакивает сообщение ”Database is currently in use by you or another user: tmpview.tmp”

    Решение: Перед тем как открыть представление в дизайнере в этой базе наверняка был запущен метод по работе с представлениями (в методе создавался объект представления). Необходимо в этом методе после его отработки вставить строчку, удаляющую созданный объект - delete view.

    8) Не создается база данных на сервере с помощью функции
    Set newDb = templateDb.CreateFromTemplate(newDbServer, newDbPath, inheritFlg)
    Пишет , что данный пользователь или сервер не имеет право создавать копии баз на сервере.

    Решение: Необходимо проверить в ACL базы, из которой пользователь выполняет данное действие, стоит ли для него галка Replicate or copy documents. Также эта галка должна быть поставлена у default в базе- шаблоне.

    9) В базе не отрабатывают в нормальном режиме агенты, хотя запускаются.

    Решение: Очень возможно, что база создана на основе шаблона недавно…учетная запись сервера в такой базе выглядит странно (картинка сервера с желтым значком). Необходимо в ACL этой базы удалить и вновь добавить учетную запись сервера.

    10) Если в заголовке консоли сервера вместо наименования первым словом стоит Select ….обычно в этом случае сервер не отвечает, и виснут клиенты.

    Решение: Необходимо что-нибудь напечатать в консоли и надпись Select пропадет - сервер вновь начнет работать в нормальном режиме.

    11) При попытке открытия properties базы выскакивает сообщение , в котором есть слово check.

    Решение: В Домино Администраторе выделить базу, щелкнуть правой кнопкой мыши и в контекстном меню выбрать Fixup. В открывшимся диалоговом окне выбрать "Ок".

    12) Database is corrupt -cannot allocate space
    В Домино Администраторе выделить базу, щелкнуть правой кнопкой мыши и в контекстном меню выбрать Fixup. В открывшимся диалоговом окне выбрать "Ок".

    Решение: Если не поможет, то просто перезапустить сервер!

    13) База открывается в непонятном режиме (отображает представление без колонок):
    В строке состояния надпись: невозможно загрузить содержимое всего набора рамок. БД. Будет открыта без использования набора рамок.

    Необходимо в директории клиента Lotus\notes\data найти базу bookmark.nsf, удалить ее и вновь переоткрыть клиент

    15) Если обновили базу неверным шаблоном:
    Сообщения в консоле сервера:
    1. Informational, rebuild view needed – collection object was deleted <reading путь + names.,nsf view note title: ServerConfig>>
    2. Activity logging faild to initialize: Document has been deleted
    3. Informational, rebuild view needed – collection object was deleted <reading путь + names.,nsf view note title: ‘<$Servers>’>
    4. NIF Detected storage corruption error ‘ This database cannot be read due to an invalid on disk structure’
    5. NIF in path+ names.nsf collection ”<Server Access>”,id=0 length 1024
    6. NIF in path+ names.nsf collection ”<Server Config>”,id=0 length 1024
    7. Unable to retrieve activity trends configuration: Document has been deleted
    8. Error locating a DOMINO DIRECORY ENTRY FOR CERTIFIER : ENTRY NOT FOUNS IN INDEX

    Решение:
    1. Обновить базу на основе правильного шаблона.
    2. набрать в консоле сервера load updall -R наименование_базы.nsf (убивает все индексы и создает их заново). (load updall -R prodoc\projects убивает все индексы и создает их заново во всех базах в папке Data\prodoc\projects).

    16) Убивание процессов Lotus без перезагрузки системы
    1. Kill notes2w.exe
    2. Kill nlnotes.exe
    3. Kill ntaskldr.exe
    4. Kill nslsvice.exe
    5. Можно запускать клиент)))

    17) Фатал Error клиента Lotus Notes

    Эта ошибка возникает, если у пользователя установлено на компьютере слишком много шрифтов. Необходимо убрать те из них, которыми меньше всего пользуются.

    18) При входе в любое приложение выдается ошибка: "Сервер Lotus/ не отвечает. Сервер может быть выключен или возникли ошибки в сети. При повторении обратитесь к администратору"
    Решение:
    Переустановка клиента Lotus Notes с предварительным полным удалением, с удалением вручную пользовательской папки Data.

    19) Ошибка:
    "You cannot use the Administration program while the Domino Server is running. Either shut down the Domino Server (but keep the file server running) or choose the icon labeled 'Lotus Notes' instead."

    Решение:
    Проверить права доступа у пользователя к папкам Windows и IBM - должна стоять галочка "изменять" для этой папки и подпапок.


    20) Пакетное обновление баз на основе нового шаблона

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

    load convert prodoc\projects\*.nsf * btkobject.ntf

    prodoc\projects\*.nsf - значит все базы в папке prodoc\projects\
    вторая звездочка говорит, что необходимо конвертировать все базы независимо какой у них текущий шаблон (или здесь может быть имя текущего шпблона)
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Начну изгаляться...
    Утверждение более чем сомнительное! Тем более, что все ваши много букв про то, как обойти баги этой самой продвинутой платформы... Чую, что участники раздела 1С уже нервно курят в сторонке, с уважением поглядывая на список багов и не могут себе представить, как набрать хотя бы половину!
     
  3. pasha_balobanov

    pasha_balobanov Гость


    Спасибо большое за коммент!
    Скажу так, баги имеются у всех платформ и шероховатостей в 1С тоже достаточно (говорю это с уверенностью, так как в своей компании имеем 10 программистов 1С, сами пользуемся бухгалтерией и ведем базу контрагентов). Говорить надо об этом открыто: у дикообраза есть иголки , у по - ошибки. Но чтобы не отбить желание программировать, видя какой-нить баг, необходим путеводитель, который и создается здесь на страницах этого форума.
    Теперь, что касается самой продвинутой в мире платформы..Аналогов действительно ей до сих пор нет в мире:

    Достаточно посмотреть сюда, почитать и убедиться в этом: http://ru.wikipedia.org/wiki/IBM_Lotus_Notes
    Lotus законодатель мод и в коммуникациях и средствах взаимодействия. Но, конечно, нельзя не отдать должное конкурентам - они всегда умели воспользоваться инновациями IBM в нужном русле)
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Забавно :)
    Особенно 18-ая ошибка порадовала!
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    раздел общий, а проблемы рассматриваются специфичные винде, особливо для домины...

    на линухах (например) таковых нет (т.е. головняк чисто МС + индусы от ИБМ)

    позволять консоли сервера взаимодействовать с десктопом - а нафига оно надо

    нужно бы разбивать рекомендации: платформа, клиент/сервер
    про длл - это чисто МС КОМ заморочки
    про отображение... - это может сильно зависеть от версии клиента
     
  6. pasha_balobanov

    pasha_balobanov Гость

    Прошу прощения, к 18 пункту следует дать небольшие пояснения:
    Ошибка может возникать, если клиент Lotus установлен для одного пользователя (а не для многих). Тогда папка Data, что называется одна на всех. Поэтому , если кто-то заходит в ОС под другим логином - может возникнуть такой вот трабл. Если же изначально клиент настроить "для многих пользователей" - этого можно избежать. Чисто организационный момент.

    Добавлено:
    Спасибо за замечание. Согласен, разбить безусловно рекомендации надо было.
    Что и сделаем в ближайшее время.
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Изгаляйся в разделе 1С! :)
    В тех самых "много букв", которые ты вероятно и не прочел, нет и слова о багах платформы.
    Участники раздела 1С всегда нервно курят! Видать 1С так хороша, что нервная система у них расшатана )))
    Нечего сказать по существу, не флейми, пожалуйста.

    pasha_balobanov ,
    списочек интересный, спасибо. Что еще более интересно, что за все время работы с домино я с бОльшим кол-вом замечаний не встречался в принципе.
    И у меня складывается впечатление, что большинство из них возникло либо из-за некорректной установки и настройки сервера/клиента, либо из-за ошибок в архитектуре приложения.
     
  8. pasha_balobanov

    pasha_balobanov Гость

    Пожалуйста, очень рад, что пост был полезен)

    Теперь , что касается впечатления...Вы правы, лет 5,5 назад ,когда только еще начинали писать новые модули, эти ошибки возникали. Быстро прошлись еще раз по архитектуре, привели в порядок либы и классы - и большинства из них больше не появлялось. Так что, действительно, все приходит с опытом). Главное, вовремя заметить то, что должно быть замечено.
     
  9. alexstudent

    alexstudent Well-Known Member

    Регистрация:
    13 сен 2009
    Сообщения:
    109
    Симпатии:
    0
    3) При попытке открытия базы клиент виснет, после выскакивает сообщение ”Generic LSE failure (no more info)”

    Решение: Если в базе есть LS библиотеки, то зайти в каждую (поставить пробел, или что-нибудь написать)и пересохранить.


    Так же можно решить перекомпилировав напросто код в Designer: Tools -> Recompile All Lotus Script
     
  10. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    >1.) Не подгружается dll с помощью команды uselsx
    >a) Необходимо выполнить команду regsvr32.exe путь_к_dll ,

    regsvr32 влияет на загрузку COM-объектов (через CreateObject например), но никак не LSX. Фреймворк работы с COM обеспечивает винда.
    LSX - это Lotus Script Extension, его функционирование обеспечивает Lotus.
    Чтобы LSX-dll в винде подгружалась из LS, достаточно чтобы dll была найдена по правилам винды (в текущей директории, рабочей, в системной, в PATH и т.д.).

    >9)... учетная запись сервера в такой базе выглядит странно (картинка сервера с желтым значком).
    Желтый значёк (ключик). Означает, что данный сервер является административным для БД и выставлять его - крайне рекоменжуется, т.к. многие административные операции выполняются только на административном сервере.

    10) Если в заголовке консоли сервера вместо наименования первым словом стоит Select
    Уточню, что это означает, что вы вошли в режим выделения текста в окне консоли. Например, через системное меню Edit/Mark.
     
  11. pasha_balobanov

    pasha_balobanov Гость

    1.regsvr32 влияет на загрузку COM-объектов (через CreateObject например), но никак не LSX. Фреймворк работы с COM обеспечивает винда.
    LSX - это Lotus Script Extension, его функционирование обеспечивает Lotus.
    Чтобы LSX-dll в винде подгружалась из LS, достаточно чтобы dll была найдена по правилам винды (в текущей директории, рабочей, в системной, в PATH и т.д.).

    Спасибо за коммент. Речь здесь идет о том, что при программировании dll могут использоваться некоторые системные библиотеки, которых на версиях другой винды нет. Отсюда и проблемы загрузки готовой dll с помощью команды uselsx. Как Вы и сказали, dll должна быть найдена, но если она находит себя и не находит еще каких-нить компонент, это можно проверить описанным мною способом.

    2. Желтый значёк (ключик). Означает, что данный сервер является административным для БД и выставлять его - крайне рекоменжуется, т.к. многие административные операции выполняются только на административном сервере.

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

    3. Уточню, что это означает, что вы вошли в режим выделения текста в окне консоли. Например, через системное меню Edit/Mark.
    [/quote]
    Спасибо
     
  12. Klido

    Klido Гость

    я вот тоже лет 15 провел с лотусом - аналогичный случай :(

    п.16 - в зависимости от версий клиента

    п.17 удавалось вылечить вплоть до замены планки памяти :)

    п.18 - жесть полной переустановкой сразу лечить, не проще ли разобраться с подключением к серваку?
     
  13. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    >Спасибо за коммент. Речь здесь идет о том, что при программировании dll могут использоваться некоторые системные библиотеки, которых на версиях другой винды нет. Отсюда и проблемы загрузки готовой dll с помощью команды uselsx. Как Вы и сказали, dll должна быть найдена, но если она находит себя и не находит еще каких-нить компонент, это можно проверить описанным мною способом.

    Каша. Разберитесь что делает uselsx, какое отношение она имеет к COM (ActiveX) и в чем её отличие от CreateObject. Ваш совет №1 верен только если LSX-dll, подгружаемая через UseLSX сама использует некий COM, реализованный в другой dll. Но это не проблема загрузки dll с помощью UseLSX.

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

    Курим Admin Help. Hint: На работу баз административный сервер не влияет, только на операции сопровождения. Потому агенты не причём.
     
  14. veronicavvl

    veronicavvl Гость

    Здравствуйте!
    Подскажите (или ткните носом в ссылку - я не знаю, какие слова-"ключи" мне нужны), как уменьшить размер базы данных лотуса. В смысле - по мере добавления новых документов в базу, она разрастается с 70 мб, скажем, до 320мб. Обычно я создаю новую копию без документов. А потом, вручную, копирую "видимые" документы в пустую БД. Наверняка есть какие-то цивилизованные методы. Честно говоря, я поискала в интернете, но поняла, что затрудняюсь выразить мою мысль на английском. А на русском - еще как-то можно.
    ..Или, может, можно избежать етого "разрастания" путем ...эээ... несоздания каких-либо невидимых документов в базе. Не знаю, как выразиться правильно.
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    база растет за счет резервирование места (некими пулами) и создания индексов видов (очень сильно влияет)
    способ "борьбы" (а оно вам надо?) зависит от цели
     
  16. ildareshka

    ildareshka Well-Known Member

    Регистрация:
    3 дек 2010
    Сообщения:
    55
    Симпатии:
    0
    свойства базы->сжать
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    тут наткнулся и "вспомнил"... :)
    @IsAvailable не работает с полями $Seal, $Signature...
    вокэраунд @Contains(@DocFields; "$Seal")
     
  18. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Хороший хинт, но следует уточнить, когда не работает. @IsAvailable не работает с полями которых нет в считанном в память документе. Нотес считывает только SUMMARY-поля при обычном поиске по БД (не FT) и при построении представлений. При открытии документа по форме считываются все поля. Поля $Seal, $Signature НЕ являются SUMMARY. Поэтому @IsAvailable и не работает с ними в формулах поиска и формулах представлений. Но вполне нормально работает в формулах форм.
     
  19. awkozlov

    awkozlov New Member

    Регистрация:
    6 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте.

    Возможно ли технически и теоретически написать на Lotus Notes программу, которая при приходе нового сообщения сохраняла бы его в текстовый ASCII файл. Надо чтоб имя файла задавалось автоматично.

    Т.е. процесс шел без моего участия.
    Появление этого файла будет мониторить моя программа, и сообвественно обрабатывать.

    Сам на Lotus Notes не программирую.

    Пробовал решить это через печать в файл через Текстовый принтер "Generic / Text Only", но он обязательно запрашивает имя файла добавить вручную, что прерывает автоматичный процесс.

    Может такая фишка в Lotus уже существует?
     
  20. ildareshka

    ildareshka Well-Known Member

    Регистрация:
    3 дек 2010
    Сообщения:
    55
    Симпатии:
    0
    Запросто.
    Делаете агент который отрабатывает при приходе нового сообщения и сохраняет все в файл ^_^
    Правда чтобы указать кодировку файла придется воспользоватся потоками.
    И нюанс с тем, что тело письма может быть не только голым текстом, но и html, да еще и кракозябрами в koi например
     
Загрузка...

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