AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2011, 17:36   #1  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Шеф озадачил щас новой задачей (сорри за тафтологию)
Фирма, выпускающая некую продукцию, поставляет ее клиентам. Она же (т.е. фирма) занимается сервисным тех.обслуживанием своих "агрегатов". Для этой цели на фирме работает целый штат техников. От клиента поступает заказ на тех.обслуживание. Бухгалтер регистрирует этот заказ (т.е. заполняются таблицы 36, 37). Кр. того бухгалтер назначает ТермИны (ударение на "и") т.е. для каждой строки Заказа в спец. таблицу (Technician Ledger Entry) вносятся строки с инфо:
- имя/код техника,
- код "агрегата"
- имя/код клиента
- дата
- время с
- время по
- вид работ (ремонт/настройка/тех.обслуживание/диагностика/и проч.)

Шеф хочет, чтобы эта информация появлялась в аутлуке в календаре, т.е. чтобы юзер, не имеющий доступа к Навижн, мог открыть свой аутлук и увидеть какой техник на какой день к какому клиенту "заказан".
Разумеется, если происходят какие-то изменения в терминах (н-р, клиент отказался яили перенес термИн, техник хаболел и вместо него поедет другой и/или другое время ...ну и т.п.), то инфо нужно обновлять и в календаре.

Вопрос простой: как это организовать в Навижн?
Догадываюсь, что надо делать через Automation.
Кто делал подобное, не могли бы подсказать, насколько это вообще трудозатратно... если к тому же учесть что с Automation я пока еще дела не имела?
Буду ооочень признательна, если кто подсобит с фрагментами кода. (я не слишком наглая? )
Старый 14.10.2011, 20:12   #2  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Это вам нужен Exchange server, на котором будет крутится почта и Календарь. Будете писать в этот сервер дела, а аутлук пользователй будет синхронизироваться с Exchange server. По другому доставить централизованно информацию до пользователей не представляется возможным, вы не сможете лазить из нава на каждый комп где уставнолен аутлук( проблема, то что седня смотрим на одном компе, а завтра на другом и в другом офисе возникнет).
Навик, с аутлуком синхронизируется в части почты по средствам того же Exchange server, возможно календарь там тоже перетаскивается.
Вообще мне кажется, что задача не из простых, может старшие товарищи форумчане что скажут другое.
Единственный плюс вижу в том что вы в скором времени переходите на скул, на котором Exchange server так же крутится, и кидания календарем можно сделать хранимыми процедурами SQL.
Удачи!
Старый 14.10.2011, 20:49   #3  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Разумеется, если происходят какие-то изменения в терминах...
1. Как вы думаете, все ли в русскоязычном форуме понимают нем. слово ТермИны (ударение на "и") ?
2. Видел в интернете такой вариант, сам ещё никогда не пользовался:
Код:
Variables:
Name	                DataType	Subtype	Length
MyApplication	        Automation	'Microsoft Outlook 14.0 Object Library'.Application	
MyNamespace	        Automation	'Microsoft Outlook 14.0 Object Library'.NameSpace	
MyFolder         	Automation	'Microsoft Outlook 14.0 Object Library'.Folder	
MyAppointmentItem	Automation	'Microsoft Outlook 14.0 Object Library'.AppointmentItem
Code:
Код:
IF ISCLEAR(MyApplication) THEN
  IF NOT CREATE(MyApplication) THEN
    ERROR('Outlook not found!');

MyNamespace := MyApplication.GetNamespace('MAPI');
MyFolder := MyNamespace.GetDefaultFolder(9); 'CALENDER'

MyAppointmentItem := MyFolder.Items.Add(1);
MyAppointmentItem.Subject := 'Test Entry';
MyAppointmentItem.Start := DATI2VARIANT(TODAY, 000000T);
MyAppointmentItem."End" := DATI2VARIANT(TODAY, 000000T);
MyAppointmentItem.AllDayEvent(TRUE);  // весь день
MyAppointmentItem.Body('Test Test');
Старый 17.10.2011, 12:12   #4  
Lates is offline
Lates
Участник
 
207 / 10 (1) +
Регистрация: 08.02.2007
Можно сделать онлайн отчет (например в Excel), который будет обращаться напрямую к нужной таблицы.
Любой пользователь может открыть его и увидеть актуальные данные
+ отфильтровать, сгруппировать для получения необходимого вида.
Не совсем, конечно, в тему. Но как вариант решения.
Старый 17.10.2011, 12:45   #5  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от InTacto Посмотреть сообщение
Это вам нужен Exchange server, на котором будет крутится почта и Календарь.
Это само собой! Вопрос был в том, как туда писать?

За пожелание удачи - благодарю :-)
Старый 17.10.2011, 12:59   #6  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от AlexB Посмотреть сообщение

1. Как вы думаете, все ли в русскоязычном форуме понимают нем. слово ТермИны (ударение на "и") ?
Я предполагала, что не все могут знать немецкий тЕрмин Termin
Но я также предполагала, что на этом русскоязычном форуме меня с моим суржиком поймут лучше и помогут скорее, чем мой корявый немецкий на немецком форуме. Кроме того, тут, как я и ожидала, народ с головой и знаниями_ и догадаться по контексту о каких термИнах/тЕрминах идет речь будет не сложно.
Уж простите мне такое смешение языков, но порой действительно трудно подобрать лаконичный и понятный эквивалент в русском языке.

Цитата:
2. Видел в интернете такой вариант,
А вот за это vielen Dank!
Будем пробовать.
Еще раз Благодарю.
Старый 17.10.2011, 13:01   #7  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от Lates Посмотреть сообщение
Можно сделать онлайн отчет (например в Excel), который будет обращаться напрямую к нужной таблицы.
Любой пользователь может открыть его и увидеть актуальные данные
+ отфильтровать, сгруппировать для получения необходимого вида.
Не совсем, конечно, в тему. Но как вариант решения.
Благодарю за вариант. Но, боюсь, такое не прокатит. Требуется: именно в календарь Аутлука заносить события.
Старый 17.10.2011, 15:49   #8  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
А вот за это vielen Dank!
Другой вариант:
создавать программным путём ics-файл и посылать его программным же путём e-mail'ом (codeunit 400) требуему адрессату.
Чтобы узнать, каким должно быть содержимое ics-файла: сделайте самой себе в календаре "Termin" и сохраните на жёстком диске.
Старый 20.10.2011, 13:39   #9  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Я тут вот что накопала:
Экспорт задач в Outlook

Может тогда не изобретать велосипед, а воспользоваться тем механизмом, который уже есть?
Кто-нибудь уже пользовался этими функциями Навижн?
Старый 20.10.2011, 18:14   #10  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Я не пользовался, но судя по описанию настроек, вам придется допиливать.
Старый 25.10.2011, 12:35   #11  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от AlexB Посмотреть сообщение
2. Видел в интернете такой вариант, сам ещё никогда не пользовался:
Код:
Variables:
Name	                DataType	Subtype	Length
MyApplication	        Automation	'Microsoft Outlook 14.0 Object Library'.Application	
MyNamespace	        Automation	'Microsoft Outlook 14.0 Object Library'.NameSpace	
MyFolder         	Automation	'Microsoft Outlook 14.0 Object Library'.Folder	
MyAppointmentItem	Automation	'Microsoft Outlook 14.0 Object Library'.AppointmentItem
Code:
Код:
IF ISCLEAR(MyApplication) THEN
  IF NOT CREATE(MyApplication) THEN
    ERROR('Outlook not found!');

MyNamespace := MyApplication.GetNamespace('MAPI');
MyFolder := MyNamespace.GetDefaultFolder(9); 'CALENDER'

MyAppointmentItem := MyFolder.Items.Add(1);
MyAppointmentItem.Subject := 'Test Entry';
MyAppointmentItem.Start := DATI2VARIANT(TODAY, 000000T);
MyAppointmentItem."End" := DATI2VARIANT(TODAY, 000000T);
MyAppointmentItem.AllDayEvent(TRUE);  // весь день
MyAppointmentItem.Body('Test Test');
Поробовала так сделать.
Только у меня не MS Outlook 14.0, a MS Outlook 11.0
И переменная MyFolder имеет тип 'Microsoft Outlook 11.0 Object Library'.Folders
Это принципиально, что FolderS, a не Folder?

При таком раскладе ругается (в скобочках мой "вольный" перевод):


---------------------------
Microsoft Dynamics NAV
---------------------------
Diese Meldung ist für C/AL-Programmierer bestimmt: (это сообщение определённо для C/AL-программеров)

Ungültige Zuweisung. Es ist nicht möglich, ein MAPIFolder einer Folders zuzuweisen. (недопустимое присваивание. Невозможно присвоить MAPIFolder переменной типа Folders)

---------------------------
OK
---------------------------


Отвечая на свой же вопрос: похоже, что Folder и FolderS - все-таки принципиально. Но поблема в том, что у меня у Automation Server'а "Microsoft Outlook 11.0 Object Library" в списке объектов нет Folder, есть только Folders и FoldersEvents.
Как обойти эту проблему?
Старый 25.10.2011, 14:37   #12  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Вопрос про Folders снимается. Поставила себе Office 2010, ошибка больше не появляется.

Ураааа! Всё работает!!!
Alex, огромное СПАСИБО!
Отдельная благодарность Quattro.
Старый 25.10.2011, 14:43   #13  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
для 11 версии в хелпе по VBA для аутлука нашел:
Код:
Sub DisplayATaskFolder()
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myTasks As Outlook.MAPIFolder
Dim myFolder As Outlook.MAPIFolder
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myTasks = myNamespace.GetDefaultFolder(olFolderTasks)
Set myFolder = myTasks.Folders(1)
myFolder.Display
End Sub
Рекомендую сначала все в макросах делать (там есть подсказки по объектной модели, а так же примеры в справке), а потом уже в нав переносить.
Старый 25.10.2011, 14:50   #14  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от InTacto Посмотреть сообщение
для 11 версии в хелпе по VBA для аутлука нашел:
Рекомендую сначала все в макросах делать (там есть подсказки по объектной модели, а так же примеры в справке), а потом уже в нав переносить.
Благодарю за наводку (+1 и для Вас тж .
будем копать дальше

Но я не прощаюсь. Полагаю, вопросы еще будут и немало
Старый 26.10.2011, 14:15   #15  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Подскажите, пжлст, какие предпосылки должны быть выполнены, чтобы можно было в модуле создавать переменные типа Automation.
Вот только сегодня утром смогла это сделать, а сейчас ругается, что такой тип не предусмотрен. Выбирайте из тех. что есть ....

---------------------------
Microsoft Dynamics NAV
---------------------------
Die Wahlmöglichkeit 'automation' ist nicht vorhanden.

Die Wahlmöglichkeiten sind:

System, File, TransactionType, InStream, OutStream, Variant, BigText, Dialog, Action,
Codeunit, Form, Record, RecordRef, FieldRef, RecordID, KeyRef, Report, Dataport,
XMLport, Boolean, Option, Integer, Decimal, BigInteger, Char, Text, Code, Date, Time,
Duration, DateTime, Binary, TextConst, DateFormula, GUID

---------------------------
OK
---------------------------
Старый 26.10.2011, 16:53   #16  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Подскажите, пжлст, какие предпосылки должны быть выполнены, чтобы можно было в модуле создавать переменные типа Automation.
Вот только сегодня утром смогла это сделать, а сейчас ругается, что такой тип не предусмотрен.
Т.е. там где "Ураааа! Всё работает!!!" Вы чудесным образом смогли завести Automation-переменную а теперь не можете?
И тогда и сейчас работаете с одной и той же лизензией?
Старый 26.10.2011, 17:43   #17  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от AlexB Посмотреть сообщение
[Т.е. там где "Ураааа! Всё работает!!!" Вы чудесным образом смогли завести Automation-переменную а теперь не можете?
И тогда и сейчас работаете с одной и той же лизензией?
Что самое интересное, сейчас я опять смогла.
Расскажу по-порядку что я сегодня делала:
1) открыла тестовую базу (на сервере) с нашей лицензией - Automation не создается
2) поменяла лизензию на девелоперскую (кнопкой "Изменить") - Automation создался (но только с помощью копирования)
3) открыла (параллельно) еще одну тестовую базу, но локальную (опять с нашей лицензией) - Automation не создается (оно и понятно: лицензия не девелоперская)
4) если я меняю лицензию не с помощью кнопки "Изменить", а с помощью "Импортировать", тогда Automation-переменные можно создавать как с помощью копироавния, так и обычным вводом, т.е. вбивая вручную в поле TYPE тип Automation.

Вот такие вот странные (пкрм для меня) наблюдения.
Буду знатьт теперь, что даже способ изменения лицензии может играть важную роль
Старый 26.10.2011, 18:29   #18  
Advisor is offline
Advisor
Участник
 
33 / 13 (1) ++
Регистрация: 07.09.2005
Ну на самом деле есть такая проблема и я решаю ее таким способом.
1. открываете клиент. Если открывается сразу какая-то база, то закрываете ее через "Файл"-"База Данных"-"Закрыть"
2. Меняете лицензию на девелоперскую кнопкой "Изменить"
3. Открываете базу "Файл"-"База Данных"-"Открыть"...
Старый 26.10.2011, 23:00   #19  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Вот такие вот странные (пкрм для меня) наблюдения.
Я к этому и веду (не совсем в тему) и осмелюсь предположить:
вы очевидно работаете не в NSC а у клиента, и работаете очевидно с Aplication Builder лизензией.
Вам / вашей фирме перепала девелоперская лизензия (очевидно от обслуживающего вас NSC) и вы от случая к случаю программите то, что не получается с AB лизензией с лицензией девелоперской.
Ваш шеф смотрит на это сквозь пальцы, ему главное задачу поставить и реализовать.
Вы (ваш шеф) не боитесь получить проблемы с NSC за реализацию задач своими силами с чужой лизензией?
Конечно, каждый крутится как может и расценки NSC за "их" услуги кусаются...
Я прав?
Старый 27.10.2011, 13:56   #20  
Advisor is offline
Advisor
Участник
 
33 / 13 (1) ++
Регистрация: 07.09.2005
Цитата:
Сообщение от AlexB Посмотреть сообщение
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Вот такие вот странные (пкрм для меня) наблюдения.
Я к этому и веду (не совсем в тему) и осмелюсь предположить:
вы очевидно работаете не в NSC а у клиента, и работаете очевидно с Aplication Builder лизензией.
Вам / вашей фирме перепала девелоперская лизензия (очевидно от обслуживающего вас NSC) и вы от случая к случаю программите то, что не получается с AB лизензией с лицензией девелоперской.
Ваш шеф смотрит на это сквозь пальцы, ему главное задачу поставить и реализовать.
Вы (ваш шеф) не боитесь получить проблемы с NSC за реализацию задач своими силами с чужой лизензией?
Конечно, каждый крутится как может и расценки NSC за "их" услуги кусаются...
Я прав?
Наверное может быть и так у ТС, но ведь может быть и иначе... Например если подключаться удаленно к базе клиента и менять лицензию на свою...
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:27.