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

  • Автор темы Автор темы Vagor.ini
  • Дата начала Дата начала
Всем, привет. Мелкий вопрос, думаю часто все решали. Пользователь имеет доступ только к своим документам, которые он создал. Теперь нужно сделать проверку перед созданием, с учетом всех документов в БД (не только тех, к кому он имеет доступ). Я обычно делал через агент запускаемый на сервере, для этого создается темповый документ, его передаем в качестве параметра, затем после выполнения смотрим результат в этом же темповом документе и удаляем его. Для этого нужны права на запуск агентов на сервере у всех пользователей. А что делать если таких прав нет?
 
@proteam, делал категоризированную вьюху, категорией была строка из ключевых полей.
На QS Event:
Собирал результирующую строку по ключевым полям для нового документа, так же как и в колонке во вьюхе.
Затем получал массив значений из категоризированной колонки. (sView.GetColumnValues(0))
И просто проверял вхождение строки в массив: Not IsNull(ArrayGetIndex(vals, skey))
Есть вариант перевалить за 32k значений, но у меня документов меньше...
 
Для этого нужны права на запуск агентов на сервере у всех пользователей. А что делать если таких прав нет?
Зачем всем права? Агент на сервере запускается от имени того, кто его подписал - вот у него и должны быть права на запуск агента и доступ ко всем документам базы.
 
Зачем всем права? Агент на сервере запускается от имени того, кто его подписал - вот у него и должны быть права на запуск агента и доступ ко всем документам базы.
По-моему, у пользователей тоже должен быть доступ на операцию RunOnServer. См. в настроечном документе сервера.
 
Коллеги, покажите, где в почтовой базе при ответе в тело нового письма копируется содержание старого???
 
У меня, например, заполнено только "Sign or run unrestricted methods and operations:" и "Sign agents to run on behalf of someone else:" именем того, чьей подписью ма обычно подписываем агентов для запуска на сервере. Все остальные поля пустые. Означает ли если поле пусто, то разрешено всем? Когда я сохраняю в дизайнере агента, кот. запускается на сервере по расписанию, не с той подписью, с которой можно запускать агентов, то дизайнер на меня ругается, что агент не будет запускаться, т.к. подписан каким-то левым и бесправным челом.
 
@garrick, проверить легко.
Там должно быть поле для библиотек, аналогичное агентам
Подпиши библиотеку, которую использует агент. Надо Log на сервере смотреть, так как он может просто не запуститься.
Если агент отработает, то пустое поле - разрешено всем.
 
@savl, да у меня всё работает, я просто пытаюсь разобраться с вопросом @proteam. Нужно ли указывать в настроечном документе пользователей которые будут запускать агента RunOnServer. У меня ничего не указано и работает. Значит ли это, что если ничего, то можно всем. В тоже время ругается, когда сохраняешь агента с подписью, кот. нет в поле Sign or run unrestricted methods and operations:" и "Sign agents to run on behalf of someone else:". Остальные все поля:
  1. Sign agents or XPages to run on behalf of the invoker:
  2. Sign or run restricted LotusScript/Java agents:
  3. Run Simple and Formula agents:
  4. Sign script libraries to run on behalf of someone else:
  5. Run restricted Java/Javascript/COM:
  6. Run unrestricted Java/Javascript/COM:
пустые.

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

Как я бы делал. Я бы написал серверный агент, запускался бы в 1 ночи, который мониторил пропуски, созданные вчерашним днем и затем проверял, если ли adjustday(today, -2), adjustday(today, -3) пропуски на данного посетителя и хранил идентификаторы посетителя в профильном документе.
получается мне придется сделать n*3+1 запросов в БД, где n - кол-во посетителей за вчерашний день.
Собственно вопрос, нельзя ли одним запросом определить таких посетителей?
ЗЫ: adjustday(today, -2), adjustday(today, -3) - я взял условно, так как дни у меня не просто порядковые, нужно учитывать рабочий это день плюс проверка на праздничные дни. Логика есть.
 
Мне нужно сделать так, чтобы один и тот же посетитель не смог зайти три дня подряд по определенному пропуску.
Каким образом база в Lotus Notes сможет помешать посетителю воспользоваться пропуском? Lotus Notes может как-то управлять пропускной системой? Пропускная система спрашивает разрешение у Lotus Notes на пропуск посетителя?
[DOUBLEPOST=1453960124,1453959982][/DOUBLEPOST]
У меня обычно в таких полях стоят звездочки
А вот звёздочки это точно "все", т.е. любой, имеющий учетную запись и Domino Designer, может написать агента типа "format C:" и запустить его на сервере.;)
 
Каким образом база в Lotus Notes сможет помешать посетителю воспользоваться пропуском? Lotus Notes может как-то управлять пропускной системой? Пропускная система спрашивает разрешение у Lotus Notes на пропуск посетителя?
Чтобы посетителю зайти, должен быть создан документ. Если он три дня подряд заходил, документ не смогут создать. Но это не сам вопрос. Вопрос, как создать запрос, который позволит найти посетителей, заходивших три дня подряд? Либо такой запрос невозможен.
 
Чтобы посетителю зайти, должен быть создан документ. Если он три дня подряд заходил, документ не смогут создать. Но это не сам вопрос. Вопрос, как создать запрос, который позволит найти посетителей, заходивших три дня подряд? Либо такой запрос невозможен.
Сохраняем историю посещений в документах, где указан ID клиента и дата посещения. Строим вьюху с индексированными столбцами ID клиента и дата посещения. Ключ для поиска документов ID клиента и DateRange, охватывающий необходимый диапазон дат (Adjust нужное кол-во дней от Today). Ищем по этому составному ключу коллекцию документов. Кол-во документов в коллекции соответствует кол-ву посещений за указанный диапазон дат.
 
люч для поиска документов ID клиента и DateRange, охватывающий необходимый диапазон дат (Adjust нужное кол-во дней от Today). Ищем по этому составному ключу коллекцию документов. Кол-во документов в коллекции соответствует кол-ву посещений за указанный диапазон дат.
Если DateRange будет в составе ключа - работать не будет, уже обсуждали здесь же.
Там хитро работает.
Если отбирать только по DR - работает, если кроме DR есть еще один элемент ключа в массиве, то не будет работать.


Вопрос, как создать запрос, который позволит найти посетителей, заходивших три дня подряд?
При каждом создании документа (а вернее при проходе), в соседней базе - создать/проверить документ с ID пропуска.
Если документ уже есть, то проверить что количество посещений меньше 3-х.
Если можно пройти еще раз: внутри увеличить индекс посещения,при желании дополнительно добавить дату и время прохода.
Если документа нет - создать его с индексом 1.
Если посещений 3 или более - то на экран выводить сообщение.

Ну и подумать как сбрасывать индекс.
 
Если DateRange будет в составе ключа - работать не будет, уже обсуждали здесь же.
Там хитро работает.
Если отбирать только по DR - работает, если кроме DR есть еще один элемент ключа в массиве, то не будет работать.
Ах, да... было. Я же и спрашивал... Я там такой огород нагородил из-за этого. :)

... Если документ уже есть, то проверить что количество посещений меньше 3-х...
Я так понял, что интересует не общее количество, а именно за последние три дня, т.е. три раза подряд.
 
группируем клиентов во вьюшке по ИД, сортируем по дате...
создаем навигатор из категории, проверям 3-и последних энтриса
 
имена вместе с контентом, в РТ вставляются хинты
вот когда нет хинтов - вложения "улетают" под "черту"
можно проверять ДХЛ (только для РТ - там хинты)
интересовать будет типа:<attachmentref name='Default.rdp' displayname='Default.rdp'>
ещё имена можно получать:AttachmentsName=Evaluate("@AttachmentNames(0)", objdoc)
objdoc - в Вашем примере сам документ?
Я так делаю:
Код:
attachments = Evaluate("@AttachmentNames", doc)
Forall a In attachments
Set o=doc.GetAttachment(a)
... o.Name

Про ДХЛ - чтобы получить имена вложений, надо выгрузить в ДХЛ документ и в нем уже искать вложения?
 
Мы в соцсетях:

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