All Forums
 Категория Visio
 Форум Вопросы и ответы
 Проблемы с Visio 2003 SP1 ORGANIZATION CHART WIZAR
Author Previous Topic Topic Next Topic  

sorgy

1 Posts

Posted - 02/22/2005 :  11:03:42
Я хотел бы импортировать данные из Exchange используя ORGANIZATION CHART WIZARD и указывая свой набор полей для импортирования и отображения внутри shapes диаграммы.
По этому вопросу я нашел статьи в MSDN и в Office Online
Assistance. Статья называется - "Create an organization chart from a
data file using the command line or Run method"
http://office.microsoft.com/en-us/assistance/HP010384221033.aspx.

Помимо этого в Microsoft Office Visio Code Librarian есть пример как написать программу для автоматизации загрузки данных из Exchange с помощью С#. Я использовал этот пример и параметры из выше указанной статьи.

Но, результат меня не устраивает, т.к. Visio не желает воспринимать my custome fields в параметре DISPLAY-FIELDS, даже если я использую корректный синтаксис. Если я указываю параметр LAUNCHGUI при запуске ORGANIZATION CHART WIZARD AddOn и вручную выбираю поля для отображения внутри прямоугольников орг. диаграммы, то все работает как надо. Если же я указываю в параметре DISPLAY-FIELDS поля с названиями Department Name или Company Name вместе с полем Name, то диаграмма рисуется только со значениями поля Name и игнорирует остальные.

Help me? Я не могу понять разницы в моих действиях между импортированием данных с использованием wizard-а при ручном определении параметров из Visio и передачи параметров для wizard-а из приложения на C#.

Более того, я пробовал запустить свое приложение на C# и обращаться к wizard-у Visio 2002, изменив только название полей в параметре DISPLAY-FIELDS и создание объекта Visio Application, и все сработало как надо. Все поля которые я хотел увидеть в организационной диаграмме отобразились. И даже для Visio 2003 приложение на C# импортирует все заданные мной поля в CUSTOM-PROPERTY-FIELDS совершенно нормально, но отказывается загружать эти же поля в DISPLAY-FIELDS.
Есть идеи?


Вот код приложения:

const string ORGANIZATION_CHART_WIZARD = "OrgCWiz";
Microsoft.Office.Interop.Visio.Addon chartWizard;
string command;
string commandPart;
bool returnValue;
try
{
// Get a reference to the Organization Chart Wizard add-on.
chartWizard =
theApplication.Addons.get_ItemU(ORGANIZATION_CHART_WIZARD);

// Initialize the wizard and prepare it to accept a series of
// arguments.
command = @"/S-INIT";
chartWizard.Run(command);

// Tell the wizard that the following string contains arguments.
command = @" /S-ARGSTR ";

// Specify that the organization chart information is from
// Microsoft Exchange.
commandPart = @"/MICROSOFT-EXCHANGE";
chartWizard.Run (command + commandPart);

// Specify which field represents the name.
// /NAME-FIELD="Name"
commandPart = @"/NAME-FIELD="
+ @StringToFormulaForString("Name");
chartWizard.Run (command + commandPart);

// Specify which field represents the manager.
// /MANAGER-FIELD="Manager"
commandPart = @"/MANAGER-FIELD="
+ @StringToFormulaForString("Manager");
chartWizard.Run (command + commandPart);

// Specify which fields to display on the organization chart.
// DISPLAY-FIELDS="Name","Title"
commandPart = @"/DISPLAY-FIELDS="
+ @StringToFormulaForString("Department Name") + ","
+ @StringToFormulaForString("Name");
chartWizard.Run (command + commandPart);

// Specify which custom properties are to be created.
// /CUSTOM-PROPERTY-FIELDS=
commandPart = @"/CUSTOM-PROPERTY-FIELDS="
+ @StringToFormulaForString("UniqueID") + "HIDDEN,"
+ @StringToFormulaForString("Name") + ","
+ @StringToFormulaForString("Manager") + "HIDDEN,"
+ @StringToFormulaForString("Title") + ","
+ @StringToFormulaForString("Department Name") + ","
+ @StringToFormulaForString("Company Name") + ","
+ @StringToFormulaForString("Telephone") + ","
+ @StringToFormulaForString("Address");
chartWizard.Run (command + commandPart);

// Specify which field represents the Unique ID.
// /UNIQUEID-FIELD="UniqueID"
commandPart = @"/UNIQUEID-FIELD="
+ @StringToFormulaForString("UniqueID");
chartWizard.Run (command + commandPart);

// Specify which field represents the manager.
// /FIRSTNAME-FIELD="givenName"
commandPart = @"/FIRSTNAME-FIELD="
+ @StringToFormulaForString("Name");
chartWizard.Run (command + commandPart);

//
commandPart = @"/HYPERLINK-ACROSS-PAGES";
command = command + commandPart;

//
commandPart = @" /SYNC-ACROSS-PAGES";
command = command + commandPart;
chartWizard.Run (command);

// Show dialog wizard
//commandPart = @"/LAUNCHGUI";
//command = command + commandPart;
//chartWizard.Run (command);

// Specify the name or entry id of the manager to display at
// the top of organization chart on the first page.
commandPart = @"/PAGES=";
command = command + commandPart;
commandPart = @StringToFormulaForString(
exchangeIdOfManager);
command = command + commandPart;

// If the caller of the method does not want to include
// all the subordinates on the organization chart, specify
// number of levels to include.
if (allSubordinates == false)
{
commandPart = @Convert.ToString(numAdditionalLevels,
System.Globalization.CultureInfo.InvariantCulture);
command = command + " " + commandPart;
}

// If the caller of the method passed in a page name, then
// that name will be displayed as the page name for this
// organization chart.
if (pageName.Length > 0)
{
commandPart = @StringToFormulaForString(pageName);
command = command + " PAGENAME=" + commandPart;
}

chartWizard.Run (command);

// Begin creating the organization chart.
command = @"/S-RUN";
chartWizard.Run (command);
}
catch (Exception err)
{
returnValue = false;
}
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)