Россыпь мелких вопросов

  • Автор темы Vagor.ini
  • Дата начала
V

Vagor.ini

mony_id
пока не нашел, но думаю на днях будет кусок того срипта, мы когда-то тоталы получали, что-бы их в эксель перетаскивать.
Во-во, мне тоже в excel загрузить надо в итоге
Уж чем болен Лотус так это очень слабенькими отчетами. там только своими ручками.
Вот и нечего "растаскивать" корпоративные базы по локальным отчетам:)
 
M

mony_id

Вот и нечего "растаскивать" корпоративные базы по локальным отчетам

Да в принципе правильно, хоть Домино и есть первая система безбумажного документооборота, но большим босам как всегда приходится отдавать материал на бамажке. :)
 
V

VZH

Это VZH (пароль за праздники забыл нафик)-

С помощью NotesNavigator не проблема в скрипте получить все тоталы.

Еще можно сделать Execute с @Sum(@DBLookup(...))

Вообщем не проблема :)
 
N

Nestor

Народ! Есть очень наболевший вопрос... а именно, как генерить отчеты в lotus? Конечно, все можно выгружать в офис, или ещё куда (Crystal Report), но это все какая-то чушь... Есть возможность "набивать" программно отчеты в ричтекстполе, это более интересно. Если генерить по старинке, т.е. построчно, присутствуют гадкие пробелы перед и после вставляемых строк, как это обойти?
 
V

Vagor.ini

Не знаю что значит по старинке, в принципе отчетами внутри лотуса не занимался, а $Trim не поможет обрезать пробелы...
 
M

mony_id

Вот тема: кто знает как организовано построение топологии сети в административном клиенте.

Например: в разделе Replication Topology.

Меня интересует как сделана графическая часть, что и от куда берется, я понял. А вот как сделана графическая часть вот интересно. Есть задумки реализовать это в некоторых базах данных.

Рад буду услышать ваши мнения.
 
A

Arly

У меня вопрос к опытным разработчикам, если будет время вы бы не могли дать какое нибудь простенькое описание агента, с чего начинать его писать, какие объекты создавать, в смысле ссылки, создавать новую сессию или нет, новое раб. простр. или тоже нет. как связать этого агента с нужной б.д. и т.д. Просто мозги никак не доходят, вроде все по рпимерам делаешь, но почему-то всегда все криво получается, или мозги у меня кривые. короче ПОМОГИТЕ!!!!!!!!!!
 
V

Vagor.ini

Arly
Ok, агент, как правило обрабатывает выделенный документ или все документы, запускается вручную, по событию или расписанию и имеет собственно саму программу ( на языках @ формулы, lotusScript, Java, Simple actions) .

Напиши, какую ты базу (агент) хочешь написать. Так очень сложно рассказать, хотя думаю, что Veselinka, скоро это все опишет в своей замечательной концепции...
 
A

Arly

Vagor.ini Да неважно, мне бы понять в общем так сказать смысле. Ну хотя бы для какой нибудь простенькой б.д.
я у Дебби Линд читал, там вроде описан почтовый агент, принимающий почту, но не все так просто в этой жизни, в смысле отдельные моменты так и не дошли до меня, так например If note. Form ( 0 ) = "REQ" Then, до моей дырявой головы не доходит REQ это форма или поле и как его помечать, но это лишь один из многих моментов которые тревожат душу , но не доходят до мозгов. Спасибо
 
A

Arly

Vagor.ini Да неважно, мне бы понять в общем так сказать смысле. Ну хотя бы для какой нибудь простенькой б.д.
я у Дебби Линд читал, там вроде описан почтовый агент, принимающий почту, но не все так просто в этой жизни, в смысле отдельные моменты так и не дошли до меня, так например If note. Form ( 0 ) = "REQ" Then, до моей дырявой головы не доходит REQ это форма или поле и как его помечать, но это лишь один из многих моментов которые тревожат душу , но не доходят до мозгов. Спасибо
 
N

nor

Уважаемый, 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
 
V

Veselinka

Есть предложение, при написании сэмпловых скриптов в формуе - выделять самую суть, которая решает поставленный вопрос, а то каждый раз... куча нагромождения... так и хочется упомянуть шутку из Титаника "о страсти некоторых мужчин к большим размерам". :huh: Чем лаконичнее изложено решение проблемы - с минимум посторонних, не относящихся к делу подробностей, тем как правило понятнее бывает тому, до кого это решение пытаются донести.
 
N

nor

Veselinka, я написал "САМУЮ СУТЬ", которая "решает поставленный вопрос", без "нагромаждения". :unsure:
 
O

osmor

Доброго всем времени.
Поможите кто чем может.
Вопрос такой, как в форме вывести RTF поле и при этом не дать его редактировать. Другие поля должны редактироваться.
Попытался сделать как учит ув. Veselinka (еще раз спасибо за "Концепции ..." :)) т.е. создал два поля одно изменяемое, второе вычисляемое c "противоположной" видимостью. Но почему, то не хочет вычисляться поле "текст RTF".
Если вместо вычисляемого "текст RTF" поставить поле с типом "текст" и формулу для вычисления @abstract (..... ), то все работает, но тогда форматирование текста теряется.
Спасибо.
Чуть не забыл работаю на 6.5
 
N

nor

Привет, osmor.
Это стандартная ситуация: поле включаешь в Controlled Access Section. Тип секции - Computed. Далее необходимо указать условие (формулу), которое предоставляет доступ к секции для редактирования указанным людям (имя пользователя нужно указывать в иерархическом виде), указанным группам, или указанным людям, наделенными определенными правами. Также секцию можно скрыть, свернуть и т.д. Подпись секции также можно отдельно скрыть. Приведу пример:

Код:
@If(
is_under_execution = 0;
"[request_author]";
"[noone]"
)

Данная формула предоставляет доступ к секции (к полям секции) для редактирования пользователям с ролью "request_author", если статус документа "is_under_execution = 0". Иначе, если условие не выполняется, доступ предоставляется пользователям с ролью "noone". Здесь - внимание. В acl бд у меня вообще нету такой роли. Таким образом, при невыполнении условия, поля секции все пользователи системы, вне зависимости от их уровня доступа к бд, могут только прочитать, так как пользователей с ролью "noone" у меня вообще нету. Немного непонятно и каламбурно. Почему я вместо "noone" не указал "" или что-то другое? Я уже не помню. Этот пример взят из работающей бд и когда-то был выработан мной с затратами определенного количества нервной энергии и времени. :)
 
O

osmor

Огромное спасибо, nor!!!
Все получилось, все работает. :blink:
Это как раз к вопросу о концепции, пока не знаешь КАК можно потратить дни, и никакие знания языка здесь не помогут...
И еще сразу вопрос, можно как то избавиться от этого красивого окошка "Изменять содержимое данного раздела могут", которое выскакивает при одинарном клике на разделе?
Еще раз спасибо. :)
 
V

Veselinka

Нор, рулез - я не знала такого способа обходиться с вычисляемыми РТФами :)
Спасибо за подсказку, как-то сталкивалась с этой проблемой - через подформы решала, не помню правда уже как, но 5-ка глючила, когда РТФ поле с одним именем отображалось то как редактируемое, то как вычисляемое, вобщем по сути элегантно эта проблема так и не была решена.
 
O

osmor

Опять вопросы...
Хочу чтобы пользователь ввел даные в поле формы, но не просто, а в отдельно открывшемся окне.
Пытаюсь использовать для этого @DialogBox
Создал форму в которой есть одно поле, такое же как в той форме данные в которой изменяет пользователь.
ПОсле определенныго события выдываю @DialogBox с этой маленькой формой.
Но почемуто при нажаниина OK, данные в поле основной формы не отображаются и не сохраняются ....
Вероятнее всего что-то делаю не так, но что?
И второй вопрос вытекающий из первого, можно ли как-то изменить перед записью в поле, те данные которые пользователь ввел в форме открытой через @DialogBox, ну например добавить в тому что ввел пользователь его имя и дату (как получить имя и дату знаю :) )
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!