среда, 29 июля 2009 г.

Расширение возможностей скриптов карточек

Как известно, скрипты в карточках делопроизводства создаются на VisualBasic Script (VBS). Возникает вопрос - а можно ли в скрипте показать форму? Ответ - можно, но только создав внешний компонент с данной формой.

Итак, пример. Создадим дополнительную команду в контекстном меню Навигатора, которая будет создавать задачу в Outlook с напоминанием. При создании задачи у пользователя будем запрашивать дату и время напоминания.


Создаем проект в VisualStudio6: ActiveX Dll (ссылка на файлы внизу).
В данном проекте создаем класс OTaks с методом CreateTask.


Добавляем форму



И описываем её логику.


Компилируем проект, в результате чего появляется библиотека, которую нужно будет зарегистрировать на всех машинах, на которых будет использоваться скрипт.

Создаем дополнительную команду Навигатора. В которой указываем где она появится, и для каких карточек будет действительна.

В скрипте создаем наш объект через CreateObject. В нашей реализации в метод CreateTask передается Subject - тема задания, и Body - текст. В качеcтве темы получаем имя карточки и полный номер. Текст - значение из поля Digest

Sub DoEvent(UserSession, CardHost, FolderType, FolderID, SelectionIDs)
On Error Resume Next
Set oTask=CreateObject("DVMHelper.OTask")
For Each Id In SelectionIDs
Set oCard = UserSession.CardManager.CardData(Id)
Set oMain = oCard.Sections.Item(oCard.Type.Sections.GetByAlias("MainInfo").ID).FirstRow

Body=CStr(oMain.Value("Digest"))
Number=CStr(oMain.Value("FullNumber"))
Subject=Number+" " + CStr(oMain.Value("Name"))
oTask.CreateTask CStr(Subject),CStr(Body)
Next
Set oTask=Nothing
End Sub


После переоткрытия Навигатора в контекстном меню появляется команда.



При выборе запускается сценарий и появляется окно из нашего объекта


После работы скрипта, в Outlook видна задача.


Ниже приведена ссылка на пример проекта и на библиотеку, которую уже можно использовать.

Скачать проект и библиотеку

5 комментариев:

  1. Как альтернативный вариант - если вы пользуетесь UltraViews, то форму можно реализовать средствами библиотеки. В этом случае никаких дополнительных клиентских компонент не нужно.

    ОтветитьУдалить
  2. Данную библиотеку нужно распространять по клиентским станциям, что не очень удобно... с учетом того, что она может меняться достаточно часто и их может быть много...

    может, конечно, не лучший вариант, но я использую HTML-формы...
    Set oProgress = CreateObject("InternetExplorer.Application")
    oProgress.ToolBar = False
    oProgress.MenuBar = False
    oProgress.AddressBar = False
    oProgress.StatusBar = False
    oProgress.Visible = 1
    oProgress.Navigate "about:blank"
    oProgress.Document.Write ""
    ======
    ну и так далее....
    PS: Теги не разрешены тут :(

    ОтветитьУдалить
  3. Если речь про UltraViews то библиотека ставится один раз при установке клиентских компонент DocsVision и пока она "достаточно часто" не менялась.
    Про "их много" не вполне понял.

    Кстати, есть и еще один вариант - реализовать новых тип универсальной карточки с нужными свойствами и показывать ее модально. После закрытия считывать данные и карточку удалять. Не вполне красиво и ограниченно по функциональности но тоже может работать.

    ОтветитьУдалить
  4. Что такое UltraViews? Это разработка партнера DocsVision? так она, наверное, не бесплатная же....
    Насколько я понял, в этом посте речь шла о том как создать форму для заполнения каких-либо дополнительных данных при работе со стандартным ДВ...
    =====
    в UltraViews есть возможность добавлять контролы динамически? или что имелось ввиду под "пока она "достаточно часто" не менялась"...
    я имел ввиду, что подобного рода маленьких форм для заполнения информации может быть большое множество... не обязательно для пользователя, а, например, для администратора... я не имею возможности обучать администраторов всех предприятий всем красотам доксвижна и для выполнения админских функций пишу сценарии, при запуске которых необходимо указывать определенные параметры.... таких сценариев много и у каждого своя форма... по мере развития системы, данные формы наполняются дополнительными контролами, изменяют свой внешний вид и так далее....

    ОтветитьУдалить
  5. Платность или не бесплатность (а разработка, разумеется, не бесплатная) - здесь ни при чем. Блог могут читать и те пользователи ДВ, которые библиотеку UltraViews используют. Поэтому я хотел чтобы они знали о собственных возможностях.

    Говоря же про N-ое количество таких форм - в случае с UltraViews это никак не влияет на устанавливаемые клиентам компоненты. Все отчеты администрируются, создаются и изменяются при помощи соответствующего справочника в Навигаторе и не требуют никакой установки на клиентах при изменении их функциональности или появлении новых. Кроме, повторюсь, первичной установки самой библиотеки.

    ОтветитьУдалить