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

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

seoman2

Green Team
17.02.2010
507
1
BIT
72
"рабочий календарь" - 365 документов? В конце года уже перебивать праздники вы выходные на ближайшие 2-3 месяца?
А число в документе - лучше 0-365, или в формате месяц/число?
Или сделать один документ со списком праздников для @BusinessDays ?
 

savl

Lotus Team
28.10.2011
2 621
314
BIT
457
"рабочий календарь" - 365 документов?
Ага, в разрезе года. У нас 8 тыс документов, вес базы 11 МB. Так что не так уж и страшно.
В конце года уже перебивать праздники вы выходные на ближайшие 2-3 месяца?
Угу, как правило все госпраздники на следующий год уже известны на конец текущего года. Так что за час, а то и быстрее можно весь год настроить.
А число в документе - лучше 0-365, или в формате месяц/число?
Это зависит от того, как надо будет использовать.
У нас хранится отдельно в полях:
Число: DD.MM.YYYY
Год: YYYY
Месяц: MM
День: DD
Флаги: Выходной, рабочий, предпраздничный, праздничный.
Дальше только - фантазия.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Интересно, а какие то @команды используют праздники из Domino Directory -> Miscellaneous -> Holidays ?

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

swyatogor

Green Team
24.02.2014
593
24
BIT
0
Товарищи подскажите правильный путь.. поиском поискал ни чего не нашел..
как сделать "правильный" линк на базу на сервере? или на конкретный док в базе?

т.е. задача.. в базе работает агентик и при приходе письма, обрабатывает его и что то там делает. результатом становиться письмо на человека со ссылкой на определенный док в базе (хотя бы просто на базу).. бяда в том, что в простое рич-поле прилепить стандартными средствами ссылку на что угодно не проблема.. но эта ссылка (notes://сервер/....) воркает только в контексте клиента или (при правильно настроенном днс) только в локальной сети.. как построить ссылку на базу из внешней сети (из интернета) типа ?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 976
611
BIT
384
Read-only. The Domino URL of a document when HTTP protocols are in effect.
Note This property is new with Release 5.0.02b.
Note Prior to Release 6, this property was supported in COM only.
Defined in
NotesDocument
Data type
String
Syntax
To get: url$ = notesDocument.HttpURL
Usage
If HTTP protocols are not available, this property returns an empty string. See NotesURL.
See Resolve in NotesSession for additional information and examples.
Language cross-reference
HttpURL property in Java Document class
имя сервера заменить на нужное
 

savl

Lotus Team
28.10.2011
2 621
314
BIT
457
in COM only же... Вряд ли подойдет для агента на сервере.
 

swyatogor

Green Team
24.02.2014
593
24
BIT
0
угу.. про этот способ я тож знаю.. но он ничего не возвращает..

а вот notesurl возвращает тоже самое что и линк в рич поле..
notes://сервер%40сертификатор/__46257BEB0024A228.nsf?OpenDatabase

получается эту строку нуно парсить и заменять начало на нужное?? больше никак?

а что делает в настройках сервера параметр:
internet protocols->Domino Web Engine->Host Name..
 

savl

Lotus Team
28.10.2011
2 621
314
BIT
457
Может просто руками собрать?
как пример ссылка с Интертраста:
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 976
611
BIT
384
угу.. про этот способ я тож знаю.. но он ничего не возвращает..
только что проверил
Код:
Sub Initialize
Dim ses As New NotesSession
Dim doc As NotesDocument, db As NotesDatabase
Set db=ses.CurrentDatabase
Set doc=db.CreateDocument
Print {URL>} &doc.HttpURL
End Sub
возвращает URL>http://мойсервер/__C32571FB005072EE.nsf/0/8CB4CF3B1BD9849044257CC30047ACB4?OpenDocument
в ответ на запрос
 

swyatogor

Green Team
24.02.2014
593
24
BIT
0
ага.. http урл возвращается при запросе через вэб морду или в агенте..
но возникла другая тема..
агент на сервере1 создает документ (doc) на сервере2..
после создания и сохранения doc формирует документ письмо maildoc на сервере1
к которому прикладывает ссылку на doc.. appenddoclink к ричтексту воркает без проблем.
а вот с httpurl бяда.. он вставляет сервер текущий (сервер1), а ссылку на базу и doc сервера2))
нотесурл делает правильно.. но не для хттп((

решил просто ловить в строке один сервер и подменять на другой..
 

garrick

Lotus Team
26.10.2009
1 363
152
BIT
307
Сделать "рабочий календарь".
Где день года - документ, в документе признаки рабочий/выходной/праздничный ну и число естественно.
Сделать пару вьюх, написать класс и пару методов.
Потратить на все 1-3 дня и использовать в дальнейшем.
Календарь праздничных дней уже есть в адресной книге, нужно только заполнить его правильными значениями.
Для вычислений использовать
Код:
@BusinessDays( startDates; endDates; daysToExclude; datesToExclude )
В datesToExclude подставить @DbLookup который возвращает все праздничные дни.
 

maliy

Green Team
20.03.2007
180
2
BIT
71
Есть форма1, на ней кнопка, при ее нажатии по DialogBox открывается форма2, на ней внедренная вью с документами. Нужно при двойном клике по выбранному документу закрылся DialogBox и в форму1 передался текст(поле "name") выбранного документа. На данный момент:
1)в событии внедренной вью в Queryopendocument
Dim noteID As String
noteID = source.caretNoteID
Set doc = curdb.GetDocumentByID(uiview.CaretNoteID)
Dim item As notesitem
Set item =doc.GetFirstItem("name")
Могу получить поле Name выбранного документа, но мне нужно записать это значение в поле на форме1, и закрыть dialogBox не по кнопке Ok, а просто при выборе документа двойным щелчком.
Можно как то реализовать это?
 

maliy

Green Team
20.03.2007
180
2
BIT
71
PickListCollection или PickListStrings - у них параметры ViewName, а у меня форма, на предыдущей странице мне это предлагали...
 

savl

Lotus Team
28.10.2011
2 621
314
BIT
457
Сложно слишком, идея конечно красивая, но муторная... (про выбор колонок и категорий)
Из события в виде только падение клиента словите...
Есть 3 варианта:
1. Не пытаться делать это по двойному клику, сделайте кнопку "Выбрать" или заставляйте нажимать "Ок"
2. Вызов агента для закрытия, но скорее всего придется пересмотреть логику работы.
3. Сделать скрытую кнопку, прописать ей html-тег, заюзать JS-таймер.
В кнопке проверять наличие значения в поле, если значение есть - закрывать диалог.
Но не знаю как это будет работать в DialogBox, возможно что падение сохранится.

Добавлено: Или заменить все на
PickListCollection или PickListStrings
 

maliy

Green Team
20.03.2007
180
2
BIT
71
1)"сделайте кнопку "Выбрать" или заставляйте нажимать "Ок" "- Ну это не приемлемо, просто PickListStrings - есть или по двойному клику или нажать кнопку "ОК", а делать чтоб принудительно нажимать "Ок" - как по мне это возвращение в прошлый век.
3)как то сложный и запутанный вариант.
2)как примерно это будет выглядеть?
P.S. На предыдущей странице, тов. alexas предлагал решение моей проблемы, но мне немного неподходит, он "рисует" все на основной форме, а у меня основная форма и так нагромождена, поэтому хотелось бы логику как у PickListStrings - то есть по кнопке нажал, открылось модальное окно(в данном случае вью с доками), или по двойному клику или по кнопке "Ок" выбрал что тебе нужно. Только я не могу использовать PickListStrings, потому как у меня открывается форма(а не вью), а на ней внедренная вью, но вот как двойным кликом выбрать из внедренной вью то что мне нужно и чтоб оно(выбранное значение)вернулось на основную форму и модальное окно закрылось(вызванная форма с внедренной вью), я пока не знаю...
 

savl

Lotus Team
28.10.2011
2 621
314
BIT
457
как примерно это будет выглядеть?
А как сейчас это выглядит?
вернулось на основную форму и модальное окно закрылось(вызванная форма с внедренной вью)
вызов данного диалога идет по кнопке из формы, т.е. код в кнопке?
 

maliy

Green Team
20.03.2007
180
2
BIT
71
А как сейчас это выглядит?
Сейчас - основная форма1- в ней поле text и рядом кнопка, нажал на кнопку открылась форма по :
flag=ws.DialogBox("форма2",True,True,True,False,False,False,"Выберите нужный документ",curdoc)
на форме2 - внедренное представление View2 с документами, вот собственно и все.
В событии Queryopendocument внедренного представления View2 я нашел что можно получить ID выбранного дока:
noteID = source.caretNoteID
Set doc = curdb.GetDocumentByID(uiview.CaretNoteID)
Dim item As notesitem
Set item =doc.GetFirstItem("name")
Msgbox item.Text
Msgbox noteID
То есть я их могу получить - последние два мессаджбокса - тестовые.
В итоге мне нужно поле name -поле выбранного документа, то есть значение его, передать в основную форму1 то есть записать в поле text на форме, это естесстенно сделать по двойному клику по документу на внед. представлении, и соответсвенно закрыть DialogBox.
P.S. Может не на верном пути, не знаю...
 

savl

Lotus Team
28.10.2011
2 621
314
BIT
457
Вот теперь не понимаю зачем форма2, а не pickList?
 
Мы в соцсетях:

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