Ссылка скрыта от гостей
человек задает вопрос такой же как и у меня. Но ответ на него: посмотреть 2 базы в sandbox (в которых даже шедулер не используется) и поиск, что тоже не дает особых результатов.
Mitka дал ссылку на доку (первая ссылка), где расписано как работает резервирование Ресурсов. Думаю, лучше это знать, чем нет.
И где же то место, где прописывается время занятости?
Время занятости прописывается в системной базе данных busytime.nsf. Где то место, где происходит прописывание в почтовой базе я сейчас не помню. Вспоминать не хочется (я тогда убил где-то пару недель, постоянно гоняя в отладчике, чтобы разобраться как и что вызывается), да это и не важно сейчас.
Важно понять механизм.
Я сначала на пользовательском уровне изучил как механизм резервирования работает в почтовой базе, где создаются документы...
В кратце, как это работает в почтовой базе: секретарь выбирает чела в планировщике и отправляет ему "приглашение", в почтовой базе этого чела создаётся определённый документ, на который натравливается определённый код. После вызова кода время резервируется в busytime.nsf.
По культурному планировать время из своей базы у меня так и не получилось, поэтому я был вынужден создавать док в базе пользователя программно (надо иметь доступ на создание документов), предварительно методом научного тыка изучив какие айтемы он содержит.
Код (это моя выжимка из всего того бреда, что есть в почтовом ящике):
Код:
Const CALENDAR_EVENT = 1
Const TASK_EVENT = 2
Const RESOURCE_EVENT = 3
Sub UpdateBusyTimeInfo(ND As NotesDocument, nEventType As Integer)
'Проводка Notice-документов, т.е. запросов на подтверждение
Dim BEobject As Variant ' Back-End Object
If (nEventType = RESOURCE_EVENT) Then
Set BEobject = New NotesCSReservationDocument()
Else
Set BEobject = New NotesCSEventParticipantDocument(nEventType)
End If
'Инициализация!!!
Call BEobject.Init(ND, 128)
Call BEobject.PrepareToSave(1)
' update busytime so that your busytime reflects the change
' if we're accepting a reschedule, then update busytime on the parent/instance note, not this note
' this is a calendar entry check the note to see if we need to update busytime
'Call BEobject.UpdateBusyTimeInfo(1)
Call BEobject.ActionHandler(ORS_MSGTYPE_CONFIRMATION, 1, 0)
Call BEobject.MarkTempItems
End Sub
Если планируется использовать этот код в своей базе, то необходимо из почтового ящика скопировать к себе библиотеки TIMEUtilities и Common.
раз он добавляет ресурс в планировщик и говорит, что нет информации, значит он куда-то смотрит, где-то проверяет!? Мне не надо, чтобы шедулер обращался в почтовую базу, пусть смотрит в моей........
Дело в том, что планировщику не скажешь где смотреть... во всяком случае я не нашёл таких настроек на сервере. Было бы здорово, конечно, подсунуть какую-нибудь свою базу... Думаю, это одна причина по которой
Klido выдаёт ордена :ya_lamo: Планировщик может просматривать почтовые ящики пользователей, а также стандартную базу Ресурсов.
А ещё орден выдаётся за то, чтобы планировать из своей базы данных, а это, как я понял, полноценно невозможно, т.к. BEobject требует профайл пользователя. Можно сделать только обходным путём, как я описал выше.
Итого, что бы я делал в Вашей ситуации - шёл по аналогии:
- создал бы стандартную базу Ресурсов и настроил её (если узнаете как это делается, чтобы шедулер по ней работал, то буду благодарен, - я просто с Ресурсами никогда не работал...).
- научился бы пользоваться ей (резервировать ресурсы) вручную.
Заодно посмотрел, какой документ создаётся при запросе на резервирование; изучил бы его айтемы.
- попытался бы извне (со своей БД) создать этот док программно и натравить на него код, который я давал выше.
Где-то так.