Такой же функционал можно сделать и в DocsVision. Приведу простой способ (рассматривается версия DocsVision 4.1).
1. Создаем в карточке свойство типа "Строка" и с именем "Метка"
2. Делаем представление в котором выводим значение данного свойства. Пример
3. Создаем новую комманду Навигатора в справочнике дополнительных комманд Навигатора.
Назначаем команду на меню карточки, задаем название и иконку.

А в поле "Сценарий" указываем следующий скрипт.
Sub DoEvent(UserSession, CardHost, FolderType, FolderID, SelectionIDs)
On Error Resume Next
' Для каждой карточки из коллекции
For Each sID In SelectionIDs
' Получаем карточку Set oCard = UserSession.CardManager.CardData(sID)
' Получаем секцию Properties
Set oPRows = oCard.Sections(oCard.Type.Sections.GetByAlias("Properties").ID)
Set oRow=oPRows.FindRow("@Name='Метка'")
oRow.Value("Value")="Срочно" oRow.Value("DisplayValue")="Срочно"
Next
CardHost.Refresh
End Sub
Данный скрипт будет записывать всем выделенным в представлении карточкам, в строковое свойство "Метка" значение "Срочно". Свойство в карточке должно существовать.
Переоткрываем Навигатор. Теперь выделив карточку или группу карточек, можно установить им метку, которая отобразится в представлении (представление, которое отображает свойство должно быть уже назначено папке).

Можно усложнить этот пример - привязывать категории из справочника категорий, и т.д.
Реализация функционала, через дополнительные комманды Навигатора может существенно ускорить работу делопроизводителя.
Посмотрите пример, как можно выделить номер карточке, даже не открывая её. Читать дальше
5 коммент.:
Вот такой пример есть:
Function DoEvent(UserSession, CardFrame, CardData, ActivateFlags, ModeID, FolderID, PropValue)
Set oCard = CardData
Set oSelected = oCard.Sections(oCard.Type.Sections.GetByAlias("Properties").ID).FindRow("@Name='Быстрый выбор действия'")
Set oResolution = oCard.Sections(oCard.Type.Sections.GetByAlias("Properties").ID).FindRow("@Name='Резолюция'")
oResolution.Value("Value")=oSelected.Value("DisplayValue")
oResolution.Value("DisplayValue")=oSelected.Value("DisplayValue")
CardFrame.ShowMessage "Команда Навигатора", "Резолюция2 " + oResolution.Value("DisplayValue"), , 3
CardFrame.ShowMessage "Команда Навигатора", "Резолюция2 " + oResolution.Value("Value"), , 3
End Function
ShowMessage показывет правильные, измененные значения поля "Резолюция". А на деле в карточке в этом поле значение не изменяется :( Или не отображается.
А, я уже разобралась, надо делать DoEvent=2
Интересно, кому-нибудь удалось достичь перрисовки экрана без применения DoEvent=2 ?
немного опишу ситуацию.
есть карточка, в зависимости от содержимого одного из свойств, появяются или исчезают некоторые другие свойства.
Если для отрисовки или скрытия полей использовать DoEvent=2, то перерисовка получается "рваная" выводятся какие о фэйковые поля, отрисовка долгая.
Есть ли возможность перерисовать окно без этих рывков?
Да, еще вопрос.
Возможно ли запустить из VB скрипта функции Win API?
Можно создавать объекты через
Set A = CreateObject ("ClassName.ObjectName")
Многие операции можно сделать через WMI см. http://technet.microsoft.com/en-us/scriptcenter/default.aspx
Отправить комментарий