RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)

Массив Params в методе CardHost.SelectFromCard

Метод CardHost.SelectFromCard позволяет открывать карточки в режиме выбора. Например, из скрипта открывать справочник, чтобы пользователь выбрал значения.
При вызове этого метода одним из параметров является массив Params=Array(...), который всегда вызывает вопросы.
В этом массиве передаются различные данные в саму карточку.

Для разных справочников DocsVision они разные, но всегда:
Params(0) - ID секции, из которой выбираем (если в справочнике всего одна секция, то параметр не учитывается). Для контрагентов это будет выглядеть как m_oCardHost.SelectFromCard(RefPartners.ID, "Выбор организации", Array(cPartnersDepartments)) для выбора подразделения и m_oCardHost.SelectFromCard(RefPartners.ID, "Выбор организации", Array(cPartnersEmployees)) для выбора сотрудника.

Константы - идентификаторы секций:
Public Const cPartnersDepartments As String = "{c78abded-db1c-4217-ae0d-51a400546923}"
Public Const cPartnersEmployees As String = "{1a46bf0f-2d02-4ac9-8866-5adf245921e8}"

Params(1) - ID элемента, на который справочник спозиционируется при открытии, если это возможно. В данном случае - ID заранее выбранной организации или сотрудника.

Далее уникальные параметры:
Params(2) - ID организации в дереве (если не указан Params(1) при выборе сотрудников, то встанем на эту организацию)

Params(3) - если True, то режим поиска

Params(4) - X-Path Filter на организации

Params(5) - разрешает выбор сразу нескольких организации или сотрудников Читать дальше

6 коммент.:

Анонимный комментирует...

Часто используем метод CardHost.SelectFromCard в своих проектах и нередко сталкиваемся с проблемой, что параметры приходится откровенно гадать.
Навскидку, помню сколько времени потратил на определение того, что возвращает метод SelectFromCard при множественном выборе сотрудников. При програмировании на C# тип определить практически нереально(что скрывается под __comObject), тем более, что им оказался VBA.Collection.
Если интересно, как я определил тип, можно почитать здесь:
http://feorex.livejournal.com/21422.html
Если бы это было описано в документации - сэкономило кучу времени.
Для универнального справочника тоже приходилось гадать параметры.
Я думаю, все коммьюнити разработчиков на DV скажет Вам огромное спасибо, если вы подробно опишите работу метода SelectFromCard для каждого справочника.

Irhen комментирует...

А можно при помощи SelectFromCard открыть универсальный справочник с фильтрацией записей, например, по имени?
Открывать для выбора с установленной позицией на нужном типе записей получается без проблем. Но никак не накладывается фильтр на сами записи.
Скажите, пожалуйста, это вообще для уни-справочника возможно? Или только для справочника контрагентов (его с фильтром наподобие "@Name = '...' " открывать получается).

AntonV комментирует...

К сожалению, никак. Можно фильтровать записи только по признаку "Не показывать при выборе" (показывать или нет такие записи).

Maxim комментирует...

Все пытался задать тип "внутренние документы" из справочника типов, но пока безрезультатно .(

IsAlex комментирует...

как для универсального справочника ограничить выбор записей конкретным типом?
(приведите пример на .net)

Martins Z. комментирует...

Меня тоже интересует, как ограничить выбор из универсального справочника. Написал функцию, но не получается настроить ограничение по определенному типу или позиционировать на конкретную запись. Что в этой функции не порядке? Окно открывается, но если добавляю параметры, выбор значение "застывает".

private Guid showUniversalChooser(Guid selectType, String caption, Guid selectedItem)
{

Guid RefUniversal = new Guid("B2A438B7-8BB3-4B13-AF6E-F2F8996E148B");
string[] activateParams = new string[] { "{dd20bf9b-90f8-4d9a-9553-5b5f17ad724e}", string.Empty, string.Empty};

if (!selectedItem.Equals(Guid.Empty))
{
activateParams[1] = "{" + selectedItem.ToString().ToLower() + "}";
}

if(!selectType.Equals(Guid.Empty)){
activateParams[2] = "{" + selectType.ToString() + "}";
}

CardData universalDict = this.session.CardManager.GetDictionaryData(RefUniversal);
object o = this.cardControl.CardHost.SelectFromCard(universalDict.Id, caption, activateParams);
if(o == null) return Guid.Empty;
else{
string link = (string) o;
return new Guid(link);
}

}

Отправить комментарий