AXForum  
Zurück   AXForum > Microsoft Dynamics NAV > NAV: Программирование
DAX
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 25.09.2006, 10:08   #1  
andrw ist offline
andrw
Участник
 
22 / 10 (1) +
Registriert seit: 23.09.2007
Необходимо реализовать механизм постановки задач из Navision в Outlook. Стандартные почтовые протоколы не работают. Модуль задач Outlook работает только в связке с Exchenge сервером, и применяет при этом RPC DCOM. Возможно, ли реализовать подобный механизм для Navision? И если да, то в каком направлении рыть? Здесь видимо две проблемы будут стоять:

1. Найти способ вызова RPC DCOM из навика, аналогично тому, как это сделано с OCX и с automation.
2. Разобраться с протоколом взаимодействия Exchenge Server и Outlook.

P.S.

Может быть, кто нибудь знает можно ли использовать стандартные протоколы в данном случае: SMTP, MAPI, HTML?

Вот пока что удалось нарыть:
http://www.networkdoc.ru/files/insop/excha...change2003.html
http://www.microsoft.com/msj/0398/dcom.aspx
http://www.sql.ru/forum/actualthread.aspx?...createcomobject
Alt 25.09.2006, 10:48   #2  
andrw ist offline
andrw
Участник
 
22 / 10 (1) +
Registriert seit: 23.09.2007
Еще вопрос: возможно ли поставить задачу в Outlook удаленному пользователю без использования Exchenge Server? Возможно ли обойтись без использования RPC DCOM вообще? Здесь есть мысли по отправки задачи с письмом. Тогда можно, якобы ограничиться только MAPI протоколом?

http://www.sql.ru/forum/actualthread.aspx?...4&tid=279984&hl
Alt 25.09.2006, 11:06   #3  
Dzemon ist offline
Dzemon
Moderator
 
1.247 / 12 (3) ++
Registriert seit: 09.09.2004
Вообще-то для этого обычно используют CDO. Через него доступны все объекты Outlook.
Все описание есть в MSDN.
Alt 25.09.2006, 11:21   #4  
andrw ist offline
andrw
Участник
 
22 / 10 (1) +
Registriert seit: 23.09.2007
Имеется ввиду примерно такая функция? (правда это для отправки почты, а не для постановки задач)

SendingMailWin2000CDO(Port : Integer;SMTPServer : Text[120];Body : Text[1024];To : Text[120];From : Text[120];Subject : Text[120]) : Bo
CREATE(CDOMessage);
CREATE(CDOConfig);

ActivXFields := CDOConfig.Fields;
ActivXField := ActivXFields.Item('http://schemas.microsoft.com/cdo/configuration/sendusing');
ActivXField.Value := 2;
ActivXField := ActivXFields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport');
ActivXField.Value := Port;
ActivXField := ActivXFields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver');
ActivXField.Value := SMTPServer;
ActivXField := ActivXFields.Item('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate');
ActivXField.Value := 0;
ActivXFields.Update;

CDOMessage.Configuration := CDOConfig;
CDOMessage.HTMLBody := Body;
CDOMessage."To" := "To";
CDOMessage.From := From;
CDOMessage.Subject := Subject;
CDOMessage.Send;

Но мне желательно использовать другой режим: когда Navision сам работает как клиент, т.е. надо реализовать функцию рассылки задач из самого Navision, а не через Outlook. В идеале это должно происходить без использования Exchenge Server. Пока я примерно представляю как поставить задачу через Outlook средстами automaion (CDO). Но полной реализации клиента пока не вижу... Пожалуйста, помогите кто знает...
Alt 25.09.2006, 12:16   #5  
Dzemon ist offline
Dzemon
Moderator
 
1.247 / 12 (3) ++
Registriert seit: 09.09.2004
Так, определитесь, Задачи ставить или Почту рассылать?
Почту полюбому обрабатывает почтовый сервер и без него ничего не получится. Соответственно, Навижин д.б. клиентом этого сервера, а сервер может быть Эхчейндж, СМТП и т.д. Блягодаря настройке профиля аутлука вы можете использовать ЛЮБОЙ сервер. Если вы не будете использовать Эхчейндж, то значит СМТП сервер? Т.е. нужны библиотеки, которые работаеют с таким сервером.
Alt 25.09.2006, 12:25   #6  
andrw ist offline
andrw
Участник
 
22 / 10 (1) +
Registriert seit: 23.09.2007
Все очень просто: На одном конце есть Navision, на другом Outlook, между ними Exchenge (или SMTP - если его можно использовать в данном случае) сервер. Как поставить задачу Outlook непосредственно из Navision в этой связке? При этом известно что Otlook использует для постановки задач взаимодействие с Exchenge через RPC DCOM протокол... Возможно обойтись и без RPC DCOM и вообще без Exchenge сервера, но как настроить для этого Outlook (или как это сделать из Navision без использования DCOM) не понятно (например для постановки задач через SMTP)... Вот собственно и вопрос...
Alt 25.09.2006, 17:56   #7  
andrw ist offline
andrw
Участник
 
22 / 10 (1) +
Registriert seit: 23.09.2007
Вот, кстати, функция создание задачи в Outlook на локальном компьютере с помощью automation:

OnRun()
IF ISCLEAR(OutlookApp) THEN
CREATE(OutlookApp,TRUE);
TaskItem := OutlookApp.CreateItem(3);

TaskItem.BillingInformation := '7'; //Расходы:

TaskItem.Body := '8'; //Тело
TaskItem.Categories := '9'; //Категории: Важные клиенты, мысли и пр.
TaskItem.Companies := '10'; //Организации:

TaskItem.ActualWork := 4; //Реально затрачено (4 мин)


TaskItem.Complete := TRUE; //Завершена, не завершена
TaskItem.Contacts := '35'; //Контакты

TaskItem.ContactNames := '36'; //Имя контакта

//TaskItem.Owner := '43'; //Text:=Integer

TaskItem.PercentComplete := 45; //TaskItem.PercentComplete := 20; //Готово % !!! только при TaskItem.Status=1

TaskItem.ReminderOverrideDefault := TRUE;
TaskItem.ReminderPlaySound := TRUE;
TaskItem.ReminderSet := TRUE;
TaskItem.ReminderSoundFile := 'c:\'; //Путь для звука

TaskItem.Role := '53'; //Text:=Integer
TaskItem.SchedulePlusPriority := '54'; //Text:=Integer

//TaskItem.TeamTask := TRUE; //Boolean:=Integer
TaskItem.TotalWork := 5; //Объем работ (5 мин)


TaskItem.Subject := 'This is the subject of a task'; //Тема
TaskItem.DueDate := 270206D; //Срок (27.02.06)
TaskItem.StartDate := 260106D; //Дата начала (26.01.06)
TaskItem.Status := 0; // 1 - выполняется, 2 - завершена
TaskItem.Importance := 2; //Важность: низкая 0-3 (Низкая - Высокая)
TaskItem.PercentComplete := 20; //Готово % !!!
TaskItem.ReminderTime := 300506D; //Оповещение
//TaskItem.Recipients := 'Ант';
TaskItem.Body := 'This is the body of a task'; //Тело

//Закладка Подробно
TaskItem.DateCompleted := 280206D; //Дата завершения
TaskItem.TotalWork := 5; //Объем работ (5 мин)
TaskItem.ActualWork :=4; //Реально затрачено (4 мин)

TaskItem.Save;
TaskFolder := OutlookApp.GetNamespace('MAPI').GetDefaultFolder(13);
TaskFolder.Display;

CLEAR(OutlookApp);
Alt 26.09.2006, 11:34   #8  
andrw ist offline
andrw
Участник
 
22 / 10 (1) +
Registriert seit: 23.09.2007
Вот отправка задачи по E-Mail:


SetTaskForOutlook(Body : Text[1024];Subject : Text[1024];Categories : Text[1024];Companies : Text[1024];ActualWork : Integer;Complete :
IF ISCLEAR(OutlookApp) THEN
CREATE(OutlookApp,TRUE);
TaskItem := OutlookApp.CreateItem(3);
TaskItem.Assign;
//Закладка задача

TaskItem.BillingInformation := BillingInformation; //Расходы:

TaskItem.Body := Body; //Тело
TaskItem.Categories := Categories; //Категории: Важные клиенты, мысли и пр.
TaskItem.Companies := Companies; //Организации:
TaskItem.ActualWork := ActualWork; //Реально затрачено (4 мин)
TaskItem.Complete := Complete; //Завершена, не завершена
TaskItem.Contacts := Contacts; //Контакты
TaskItem.ContactNames := ContactNames; //Имя контакта ???
//TaskItem.Owner := '43'; //Text:=Integer
TaskItem.PercentComplete := PercentComplete; //Готово % !!! только при TaskItem.Status=1
//TaskItem.ReminderOverrideDefault := TRUE;
TaskItem.ReminderPlaySound := ReminderPlaySound;
TaskItem.ReminderSet := ReminderSet;
TaskItem.ReminderSoundFile := ReminderSoundFile; //Путь для звука

//TaskItem.Role := Role; //Text:=Integer
//TaskItem.SchedulePlusPriority := '54'; //Text:=Integer
////TaskItem.Status := 1; //TaskItem.Status := 0; // !!! 1 - выполняется, 2 - завершена
//TaskItem.TeamTask := TRUE; //Boolean:=Integer
TaskItem.TotalWork := TotalWork; //Объем работ (5 мин)
TaskItem.Subject := Subject; //Тема
TaskItem.DueDate := DueDate; //Срок (27.02.06)
TaskItem.StartDate := StartDate; //Дата начала (26.01.06)
//TaskItem.Status := Status; // 1 - выполняется, 2 - завершена
TaskItem.Importance := Importance; //Важность: низкая 0-3 (Низкая - Высокая)
TaskItem.PercentComplete := PercentComplete; //Готово % !!!
TaskItem.ReminderTime := ReminderTime; //Оповещение
TaskItem.Recipients.Add("E-mail");

TaskItem.Body := Body; //Тело

//Закладка Подробно
TaskItem.DateCompleted := DateCompleted; //Дата завершения
TaskItem.TotalWork := TotalWork; //Объем работ (5 мин)
TaskItem.ActualWork := ActualWork; //Реально затрачено (4 мин)
{
TaskItem.Contacts := '35'; //Контакты

TaskItem.ContactNames := '36'; //Имя контакта
TaskItem.Owner := '43'; //Text:=Integer
TaskItem.Role := '53'; //Text:=Integer
TaskItem.Contacts := '35'; //Контакты
}
//TaskItem.Save;

TaskItem.Send;
TaskFolder := OutlookApp.GetNamespace('MAPI').GetDefaultFolder(13);
TaskFolder.Display;

CLEAR(OutlookApp);

Есть правда одно но: последний параметр надо удалить. Оказалось что навик не передает более 19 параметров в функцию!
 


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:42 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.