14.10.2011, 17:36 | #1 |
Участник
|
Шеф озадачил щас новой задачей (сорри за тафтологию)
Фирма, выпускающая некую продукцию, поставляет ее клиентам. Она же (т.е. фирма) занимается сервисным тех.обслуживанием своих "агрегатов". Для этой цели на фирме работает целый штат техников. От клиента поступает заказ на тех.обслуживание. Бухгалтер регистрирует этот заказ (т.е. заполняются таблицы 36, 37). Кр. того бухгалтер назначает ТермИны (ударение на "и") т.е. для каждой строки Заказа в спец. таблицу (Technician Ledger Entry) вносятся строки с инфо: - имя/код техника, - код "агрегата" - имя/код клиента - дата - время с - время по - вид работ (ремонт/настройка/тех.обслуживание/диагностика/и проч.) Шеф хочет, чтобы эта информация появлялась в аутлуке в календаре, т.е. чтобы юзер, не имеющий доступа к Навижн, мог открыть свой аутлук и увидеть какой техник на какой день к какому клиенту "заказан". Разумеется, если происходят какие-то изменения в терминах (н-р, клиент отказался яили перенес термИн, техник хаболел и вместо него поедет другой и/или другое время ...ну и т.п.), то инфо нужно обновлять и в календаре. Вопрос простой: как это организовать в Навижн? Догадываюсь, что надо делать через Automation. Кто делал подобное, не могли бы подсказать, насколько это вообще трудозатратно... если к тому же учесть что с Automation я пока еще дела не имела? Буду ооочень признательна, если кто подсобит с фрагментами кода. (я не слишком наглая? ) |
|
14.10.2011, 20:12 | #2 |
Участник
|
Это вам нужен Exchange server, на котором будет крутится почта и Календарь. Будете писать в этот сервер дела, а аутлук пользователй будет синхронизироваться с Exchange server. По другому доставить централизованно информацию до пользователей не представляется возможным, вы не сможете лазить из нава на каждый комп где уставнолен аутлук( проблема, то что седня смотрим на одном компе, а завтра на другом и в другом офисе возникнет).
Навик, с аутлуком синхронизируется в части почты по средствам того же Exchange server, возможно календарь там тоже перетаскивается. Вообще мне кажется, что задача не из простых, может старшие товарищи форумчане что скажут другое. Единственный плюс вижу в том что вы в скором времени переходите на скул, на котором Exchange server так же крутится, и кидания календарем можно сделать хранимыми процедурами SQL. Удачи! |
|
14.10.2011, 20:49 | #3 |
Участник
|
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 Код: 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 |
Участник
|
Можно сделать онлайн отчет (например в Excel), который будет обращаться напрямую к нужной таблицы.
Любой пользователь может открыть его и увидеть актуальные данные + отфильтровать, сгруппировать для получения необходимого вида. Не совсем, конечно, в тему. Но как вариант решения. |
|
17.10.2011, 12:45 | #5 |
Участник
|
|
|
17.10.2011, 12:59 | #6 |
Участник
|
Цитата:
Но я также предполагала, что на этом русскоязычном форуме меня с моим суржиком поймут лучше и помогут скорее, чем мой корявый немецкий на немецком форуме. Кроме того, тут, как я и ожидала, народ с головой и знаниями_ и догадаться по контексту о каких термИнах/тЕрминах идет речь будет не сложно. Уж простите мне такое смешение языков, но порой действительно трудно подобрать лаконичный и понятный эквивалент в русском языке. Цитата:
2. Видел в интернете такой вариант,
Будем пробовать. Еще раз Благодарю. |
|
17.10.2011, 13:01 | #7 |
Участник
|
Цитата:
|
|
17.10.2011, 15:49 | #8 |
Участник
|
Другой вариант:
создавать программным путём ics-файл и посылать его программным же путём e-mail'ом (codeunit 400) требуему адрессату. Чтобы узнать, каким должно быть содержимое ics-файла: сделайте самой себе в календаре "Termin" и сохраните на жёстком диске. |
|
20.10.2011, 13:39 | #9 |
Участник
|
Я тут вот что накопала:
Экспорт задач в Outlook Может тогда не изобретать велосипед, а воспользоваться тем механизмом, который уже есть? Кто-нибудь уже пользовался этими функциями Навижн? |
|
20.10.2011, 18:14 | #10 |
Участник
|
Я не пользовался, но судя по описанию настроек, вам придется допиливать.
|
|
25.10.2011, 12:35 | #11 |
Участник
|
Цитата:
Сообщение от 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 Код: 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 |
Участник
|
Вопрос про Folders снимается. Поставила себе Office 2010, ошибка больше не появляется.
Ураааа! Всё работает!!! Alex, огромное СПАСИБО! Отдельная благодарность Quattro. |
|
25.10.2011, 14:43 | #13 |
Участник
|
для 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 |
Участник
|
Цитата:
будем копать дальше Но я не прощаюсь. Полагаю, вопросы еще будут и немало |
|
26.10.2011, 14:15 | #15 |
Участник
|
Подскажите, пжлст, какие предпосылки должны быть выполнены, чтобы можно было в модуле создавать переменные типа 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 |
Участник
|
Цитата:
И тогда и сейчас работаете с одной и той же лизензией? |
|
26.10.2011, 17:43 | #17 |
Участник
|
Цитата:
Расскажу по-порядку что я сегодня делала: 1) открыла тестовую базу (на сервере) с нашей лицензией - Automation не создается 2) поменяла лизензию на девелоперскую (кнопкой "Изменить") - Automation создался (но только с помощью копирования) 3) открыла (параллельно) еще одну тестовую базу, но локальную (опять с нашей лицензией) - Automation не создается (оно и понятно: лицензия не девелоперская) 4) если я меняю лицензию не с помощью кнопки "Изменить", а с помощью "Импортировать", тогда Automation-переменные можно создавать как с помощью копироавния, так и обычным вводом, т.е. вбивая вручную в поле TYPE тип Automation. Вот такие вот странные (пкрм для меня) наблюдения. Буду знатьт теперь, что даже способ изменения лицензии может играть важную роль |
|
26.10.2011, 18:29 | #18 |
Участник
|
Ну на самом деле есть такая проблема и я решаю ее таким способом.
1. открываете клиент. Если открывается сразу какая-то база, то закрываете ее через "Файл"-"База Данных"-"Закрыть" 2. Меняете лицензию на девелоперскую кнопкой "Изменить" 3. Открываете базу "Файл"-"База Данных"-"Открыть"... |
|
26.10.2011, 23:00 | #19 |
Участник
|
Я к этому и веду (не совсем в тему) и осмелюсь предположить:
вы очевидно работаете не в NSC а у клиента, и работаете очевидно с Aplication Builder лизензией. Вам / вашей фирме перепала девелоперская лизензия (очевидно от обслуживающего вас NSC) и вы от случая к случаю программите то, что не получается с AB лизензией с лицензией девелоперской. Ваш шеф смотрит на это сквозь пальцы, ему главное задачу поставить и реализовать. Вы (ваш шеф) не боитесь получить проблемы с NSC за реализацию задач своими силами с чужой лизензией? Конечно, каждый крутится как может и расценки NSC за "их" услуги кусаются... Я прав? |
|
27.10.2011, 13:56 | #20 |
Участник
|
Цитата:
Сообщение от AlexB
Я к этому и веду (не совсем в тему) и осмелюсь предположить:
вы очевидно работаете не в NSC а у клиента, и работаете очевидно с Aplication Builder лизензией. Вам / вашей фирме перепала девелоперская лизензия (очевидно от обслуживающего вас NSC) и вы от случая к случаю программите то, что не получается с AB лизензией с лицензией девелоперской. Ваш шеф смотрит на это сквозь пальцы, ему главное задачу поставить и реализовать. Вы (ваш шеф) не боитесь получить проблемы с NSC за реализацию задач своими силами с чужой лизензией? Конечно, каждый крутится как может и расценки NSC за "их" услуги кусаются... Я прав? |
|