Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
13:11:2003, 14:21
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Тема для постинга мелких вопросов - ответов для разрботчиков приложений и баз Lotus Notes. Если Ваш вопрос влечет долгое обсуждение, то желательно создать отдельную тему.
|
|
Сообщение
#1
|
|
![]() |
|
|
5:03:2004, 04:14
|
|
Новенький ![]() Группа: Программист Сообщений: 16 Регистрация: 2:03:2004 Пользователь №: 299 Репутация: 0
|
Vagor.ini Да неважно, мне бы понять в общем так сказать смысле. Ну хотя бы для какой нибудь простенькой б.д.
я у Дебби Линд читал, там вроде описан почтовый агент, принимающий почту, но не все так просто в этой жизни, в смысле отдельные моменты так и не дошли до меня, так например If note. Form ( 0 ) = "REQ" Then, до моей дырявой головы не доходит REQ это форма или поле и как его помечать, но это лишь один из многих моментов которые тревожат душу , но не доходят до мозгов. Спасибо |
|
Сообщение
#31
|
|
|
|
10:04:2004, 20:05
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Уважаемый, Arly. Вот пример крайне простого агента, который производит поиск документов по заданным критериям и найденные документы отображает в папке. В работе агента, я думаю, не составит труда разобраться.
(Declaration) Dim session As NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim profile As NotesDocument Dim collection As NotesDocumentCollection Dim view As NotesView Dim entry_collection As NotesViewEntryCollection (Initialize) Set session = New NotesSession Set db = session.CurrentDatabase Set doc = session.DocumentContext Set view = db.GetView("($profile)") Set profile = view.GetFirstDocument Call Search(doc) Sub Search(doc As NotesDocument) Dim search_str As String Dim searchConsultantType As Variant Dim list_members As String Dim coord_place As NotesDocument Select Case doc.category(0) Case "0" search_str = "Form = ""consultrequest""" If doc.request_contact_person(0) <> "" Then search_str = search_str + " & " + "contact_person = """ + Trim$(doc.request_contact_person(0)) + """" If doc.request_consultant_name(0) <> "" Then search_str = search_str + " & " + "consultant_name = """ + Trim$(doc.request_consultant_name(0)) + """" If doc.request_status(0) <> "Выбрать..." Then search_str = search_str + " & " + "doc_status = """ + Trim$(doc.request_status(0)) + """" Else search_str = search_str + "& @Contains(doc_status; ""1"" : ""2"" : ""3"" : ""4"" : ""5"" : ""8"" : ""9"")" End If If doc.request_urgency(0) <> "Выбрать..." Then search_str = search_str + " & " + "consult_urgency = """ + Trim$(doc.request_urgency(0)) + """" If doc.request_target(0) <> "Выбрать..." Then search_str = search_str + " & " + "consult_target = """ + Trim$(doc.request_target(0)) + """" If doc.request_consult_type(0) <> "Выбрать..." Then search_str = search_str + " & " + "consult_type = """ + Trim$(doc.request_consult_type(0)) + """" If doc.request_date_start(0) <> "" Then search_str = search_str + " & " + "@Created >= @TextToTime(""" + Cstr(doc.request_date_start(0)) + """)" If doc.request_date_end(0) <> "" Then search_str = search_str + " & " + "@Created <= @TextToTime(""" + Cstr(doc.request_date_end(0)) + """)" Case "1" search_str = "Form = ""consultrequest_author""" If doc.author_LastNameRus(0) <> "" Then search_str = search_str + " & " + "userLastNameRus = """ + Trim$(doc.author_LastNameRus(0)) + """" If doc.author_FirstNameRus(0) <> "" Then search_str = search_str + " & " + "userFirstNameRus = """ + Trim$(doc.author_FirstNameRus(0)) + """" If doc.author_MiddleNameRus(0) <> "" Then search_str = search_str + " & " + "userMiddleNameRus = """ + Trim$(doc.author_MiddleNameRus(0)) + """" If doc.author_company(0) <> "" Then search_str = search_str + " & " + "organization = """ + Trim$(doc.author_company(0)) + """" If doc.author_email(0) <> "" Then search_str = search_str + " & " + "email = """ + Trim$(doc.author_email(0)) + """" Case "2" search_str = "Form = ""consultant""" If doc.consultant_LastNameRus(0) <> "" Then search_str = search_str + " & " + "userLastNameRus = """ + Trim$(doc.consultant_LastNameRus(0)) + """" If doc.consultant_FirstNameRus(0) <> "" Then search_str = search_str + " & " + "userFirstNameRus = """ + Trim$(doc.consultant_FirstNameRus(0)) + """" If doc.consultant_MiddleNameRus(0) <> "" Then search_str = search_str + " & " + "userMiddleNameRus = """ + Trim$(doc.consultant_MiddleNameRus(0)) + """" If doc.consultant_medicine_place(0) <> "" Then search_str = search_str + " & " + "medicine_place = """ + Trim$(doc.consultant_medicine_place(0)) + """" If doc.consultant_email(0) <> "" Then search_str = search_str + " & " + "email = """ + Trim$(doc.consultant_email(0)) + """" If doc.consultant_type(0) <> "Выбрать..." Then search_str = search_str + " & " + "@Contains(consult_type; """ + doc.consultant_type(0) + """)" End Select Set collection = db.Search(search_str, Nothing, 0) Set view = db.GetView("SearchResults") Set entry_collection = view.AllEntries Call entry_collection.RemoveAllFromFolder("SearchResults") If collection.Count <> 0 Then Call collection.PutAllInFolder("SearchResults") Call view.Refresh End If Set coord_place = New NotesDocument(dB) coord_place.Form = "coordinator_place" coord_place.menu = "SearchResults" coord_place.title = ":: Результаты поиска документов" coord_place.is_folder = 1 Call coord_place.ComputeWithForm(False, False) Call coord_place.Save(True, True) Print "[" + profile.db_directory(0) + "/" + db.FileName + "/0/" + coord_place.UniversalID + "?OpenDocument]" End Sub |
|
Сообщение
#32
|
|
|
Гость_Guest_*
|
12:04:2004, 02:23
|
|
Инопланетный гость |
nor Спасибо, буду разбирать.
|
|
Сообщение
#33
|
|
|
|
12:04:2004, 12:07
|
|
Lotus team ![]() ![]() Группа: Lotus team Сообщений: 142 Регистрация: 3:03:2004 Из: Новосибирск Пользователь №: 303 Специализация: Внедрение корпоративных информационных систем Репутация: 0
|
Есть предложение, при написании сэмпловых скриптов в формуе - выделять самую суть, которая решает поставленный вопрос, а то каждый раз... куча нагромождения... так и хочется упомянуть шутку из Титаника "о страсти некоторых мужчин к большим размерам".
|
|
Сообщение
#34
|
|
|
|
12:04:2004, 17:52
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Veselinka, я написал "САМУЮ СУТЬ", которая "решает поставленный вопрос", без "нагромаждения".
|
|
Сообщение
#35
|
|
|
|
13:04:2004, 13:45
|
|
Новенький ![]() Группа: Программист Сообщений: 84 Регистрация: 9:01:2004 Пользователь №: 208 Репутация: 1
|
Доброго всем времени.
Поможите кто чем может. Вопрос такой, как в форме вывести RTF поле и при этом не дать его редактировать. Другие поля должны редактироваться. Попытался сделать как учит ув. Veselinka (еще раз спасибо за "Концепции ..." :-)) т.е. создал два поля одно изменяемое, второе вычисляемое c "противоположной" видимостью. Но почему, то не хочет вычисляться поле "текст RTF". Если вместо вычисляемого "текст RTF" поставить поле с типом "текст" и формулу для вычисления @abstract (..... ), то все работает, но тогда форматирование текста теряется. Спасибо. Чуть не забыл работаю на 6.5 |
|
Сообщение
#36
|
|
|
|
13:04:2004, 17:56
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Привет, osmor.
Это стандартная ситуация: поле включаешь в Controlled Access Section. Тип секции - Computed. Далее необходимо указать условие (формулу), которое предоставляет доступ к секции для редактирования указанным людям (имя пользователя нужно указывать в иерархическом виде), указанным группам, или указанным людям, наделенными определенными правами. Также секцию можно скрыть, свернуть и т.д. Подпись секции также можно отдельно скрыть. Приведу пример: Код @If( is_under_execution = 0; "[request_author]"; "[noone]" ) Данная формула предоставляет доступ к секции (к полям секции) для редактирования пользователям с ролью "request_author", если статус документа "is_under_execution = 0". Иначе, если условие не выполняется, доступ предоставляется пользователям с ролью "noone". Здесь - внимание. В acl бд у меня вообще нету такой роли. Таким образом, при невыполнении условия, поля секции все пользователи системы, вне зависимости от их уровня доступа к бд, могут только прочитать, так как пользователей с ролью "noone" у меня вообще нету. Немного непонятно и каламбурно. Почему я вместо "noone" не указал "" или что-то другое? Я уже не помню. Этот пример взят из работающей бд и когда-то был выработан мной с затратами определенного количества нервной энергии и времени. |
|
Сообщение
#37
|
|
|
|
14:04:2004, 05:20
|
|
Новенький ![]() Группа: Программист Сообщений: 84 Регистрация: 9:01:2004 Пользователь №: 208 Репутация: 1
|
Огромное спасибо, nor!!!
Все получилось, все работает. Это как раз к вопросу о концепции, пока не знаешь КАК можно потратить дни, и никакие знания языка здесь не помогут... И еще сразу вопрос, можно как то избавиться от этого красивого окошка "Изменять содержимое данного раздела могут", которое выскакивает при одинарном клике на разделе? Еще раз спасибо. |
|
Сообщение
#38
|
|
|
|
14:04:2004, 06:19
|
|
Lotus team ![]() ![]() Группа: Lotus team Сообщений: 142 Регистрация: 3:03:2004 Из: Новосибирск Пользователь №: 303 Специализация: Внедрение корпоративных информационных систем Репутация: 0
|
Нор, рулез - я не знала такого способа обходиться с вычисляемыми РТФами
Спасибо за подсказку, как-то сталкивалась с этой проблемой - через подформы решала, не помню правда уже как, но 5-ка глючила, когда РТФ поле с одним именем отображалось то как редактируемое, то как вычисляемое, вобщем по сути элегантно эта проблема так и не была решена. |
|
Сообщение
#39
|
|
|
|
14:04:2004, 08:17
|
|
Новенький ![]() Группа: Программист Сообщений: 84 Регистрация: 9:01:2004 Пользователь №: 208 Репутация: 1
|
Опять вопросы...
Хочу чтобы пользователь ввел даные в поле формы, но не просто, а в отдельно открывшемся окне. Пытаюсь использовать для этого @DialogBox Создал форму в которой есть одно поле, такое же как в той форме данные в которой изменяет пользователь. ПОсле определенныго события выдываю @DialogBox с этой маленькой формой. Но почемуто при нажаниина OK, данные в поле основной формы не отображаются и не сохраняются .... Вероятнее всего что-то делаю не так, но что? И второй вопрос вытекающий из первого, можно ли как-то изменить перед записью в поле, те данные которые пользователь ввел в форме открытой через @DialogBox, ну например добавить в тому что ввел пользователь его имя и дату (как получить имя и дату знаю |
|
Сообщение
#40
|
|
|
|
14:04:2004, 08:59
|
|
Новенький ![]() Группа: Программист Сообщений: 84 Регистрация: 9:01:2004 Пользователь №: 208 Репутация: 1
|
Первая часть вопроса снята. Прошу прощения за беспокойство. Сам мир
Внимательнее папиры читать надо. "Rich text fields will not be displayed in the form, even if field names are the same as in the current document" А у меня как раз Rich text fields. |
|
Сообщение
#41
|
|
|
|
14:04:2004, 09:47
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Привет, Osmor.
Попробуй в событии Input Translation нужного тебе поля написать нужный тебе код. Например, для поля OfficePhoneNumber нужно, что в нем после заполнения его по методу @DialogBox автоматически вначале поля вставлялся какой-то текст, например, "(без кода города)". Код OfficePhoneNumber = ""; ""(без кода города) " + OfficePhoneNumber; Вот. Аналогично можно манипулировать содержанием поля при помощи LotusScript, сымитировать кнопки OK и Cancel на диалоговой форме и навесить на них собственный обработчик. Если возникнут трудности, то обращайся, я все более подробно расскажу. Просто в архиве не хочу копаться... |
|
Сообщение
#42
|
|
|
|
14:04:2004, 10:50
|
|
Новенький ![]() Группа: Программист Сообщений: 84 Регистрация: 9:01:2004 Пользователь №: 208 Репутация: 1
|
Спасибо.
Проверка правиности приема Цитата содержанием поля при помощи LotusScript, сымитировать кнопки OK и Cancel на диалоговой форме Сие значит, что я в @DialogBox прячу обе кнопки ([NOOKCANCEL]:[NOCANCEL]), а в форме рисую свои со своей обработкой? Здорово... Если я правильно понял, можно не отвечать .... |
|
Сообщение
#43
|
|
|
|
14:04:2004, 18:49
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Ты правильно понял.
|
|
Сообщение
#44
|
|
|
|
15:04:2004, 06:58
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Такой вопрос, может кто нотолкнет на идею, как сделать...
Есть форма (форма вызывается как диалог @DialogBox), на ней EmbeddedView, нужно получить доступ к самому EView, чтобы потом иметь доступ к выделенномы документу. И еще фишка, кто не знает, ActionBar у встроенного вида на форме, которая вызывается через диалог не отображается... (или я не прав?) |
|
Сообщение
#45
|
|
|
|
15:04:2004, 10:26
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Помогите, есть база, в ней документы, в документе поле "название базы", тип поля-диалог лист, надо посчитать сколько раз выбрали именно эту базу и вывсети куда нибудь, как можно это сделать и куда ? Санкс
|
|
Сообщение
#46
|
|
|
|
15:04:2004, 12:21
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Isk
Что значит выбрали, не понятно... |
|
Сообщение
#47
|
|
|
|
15:04:2004, 18:57
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Isk
Я смогу помочь тебе, но мне оязательно нужно знать, каким релизом лотуса ты пользуешься? 6 или 5? |
|
Сообщение
#48
|
|
|
|
15:04:2004, 19:17
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Vagor.ini
Я попробовал решить твою проблему и вот с какими проблемами столкнулся: 1. Если форму, вызываемую через @DialogBox, определить как Layout Region, то на нее Embedded View внедрить никак не получается. 2. Если использовать обыкновенную форму, вызываемую через @DialogBox, то можно внедрить туда Embedded View и производить навигацию по документам. При этом нам необходимо наличие действий, которые бы обрабатывали выбранный документ. Пускай действия будут выполнятся при помощи кнопок. Я так и сделал. Вызвал форму через @DialogBox и перевел курсор на Embedded View. После чего перевести курсор на какую-либо другую область этой же формы мне не удавалось (элементарно что бы нажать на кнопку и запустить оработчик). Такие вот дела. Поэтому помочь тебе не получается. Однако, я думаю, можно все же операцию твою заменить вызывом диалогового окна с содержанием не формы , а нужного тебе предствления: @PickList. |
|
Сообщение
#49
|
|
|
|
16:04:2004, 02:15
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
nor 6. Мне сказали сделать счетчик.
Vagor.iniВ смысле есть поле, там названия типа "обращения граждан", "входящие" и т.д., надо посчитать сколько раз выбрали допустим "обращения граждан" и вывести все это куда-нибудь. Конкретно куда не сказали. |
|
Сообщение
#50
|
|
|
|
16:04:2004, 16:20
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 113 Регистрация: 25:11:2003 Пользователь №: 147 Репутация: 0
|
Цитата Помогите, есть база, в ней документы, в документе поле "название базы", тип поля-диалог лист, надо посчитать сколько раз выбрали именно эту базу и вывсети куда нибудь, как можно это сделать и куда ? Санкс Два пути решения проблемы: 1. Открыть базу данных log.nsf и там посмотреть(это если действительно осуществляется обращение к базе данных). 2. Пишется скрипт в кнопке выбора и один из его параметров это создание документа в какой нибудь другой базе данных. |
|
Сообщение
#51
|
|
|
|
16:04:2004, 16:36
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 113 Регистрация: 25:11:2003 Пользователь №: 147 Репутация: 0
|
Цитата nor 6. Мне сказали сделать счетчик. Vagor.iniВ смысле есть поле, там названия типа "обращения граждан", "входящие" и т.д., надо посчитать сколько раз выбрали допустим "обращения граждан" и вывести все это куда-нибудь. Конкретно куда не сказали. И наверное сказали что-бы счетчик был типа 1,2,3,4 и т.п. Варианты могут быть следующие: 1. подсчитавть количество документов в виде и присваивать номер (Недостаток если одновременно создаются документы несколькими пользователями то номер для этих пользователей может быть один и тотже и со временем вычисление № с четырехзначным числом станет занимать много времени). 2. Использовать отдельную базу для регистрации номера в одном единственном документе с заменой этого номера (Недостаток одновременное обращение к документу приведет к созданию конфликта репликации). 3. Использовать связку с реляционной базой данных, с одной таблицей и двумя полями "Счетчик" и "копия счетчика". Как работает не скажу. 4. Использовать свой оригинальный способ создания счетчика. Я делал сочитание времени и личного идентификатора пользователя "ИДВ-170104180501" такой номер никода не повторится. Противникам такого скажу: очень простое и надежное решение, когда сливаются несколько реплик, и потом вот как вам номера ГТД. |
|
|