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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.07.2011, 11:13   #6  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Решением данной проблемы может быть такой вариант:

Написал NET сборку, которая выполняет все необходимые операции с WORD- ом,
и затем уже ее использую в Аксапта.

Минус данного решения таков, что придется подключить в reference Axapta, а также копировать ее на каждого клиента, работающего с WORD - ом.
(В папку BIN клиента. В GAC добавлять не обязательно)
Но другого решения, кажется нет.

- COM технология работы с WORD - не работоспособна в Axapta на последних версиях OS (у нас глючит на WIN SERVER 2008 терминал,
обсуждалось на форуме)
- NET - не работает напрямую из за "падения" Аксапты. (см обсуждение выше)

После такого случая заявления Microsoft о том что ее решения, в т.ч Ax "Хорошо интегрируются с продуктами Office" - звучат слишком самоуверенно


Для того чтобы заработало, написал такой класс на С# в Visual Studio

X++:
namespace AxFunctions
{
    public class word
    {
        Microsoft.Office.Interop.Word.ApplicationClass app;
        Microsoft.Office.Interop.Word.Document doc;

        object missing = System.Reflection.Missing.Value;

        public Microsoft.Office.Interop.Word.Document document()
        {
            return doc;
        }

        public void openFile(System.Object fileName)
        {
            if (app == null)
            {
                app = new Microsoft.Office.Interop.Word.ApplicationClass();
            }

            app.Visible = true;

            doc = app.Documents.Open(ref fileName, ref missing, ref missing, ref missing,
                                    ref missing, ref missing, ref missing, ref missing,
                                    ref missing, ref missing, ref missing, ref missing,
                                    ref missing, ref missing, ref missing, ref missing);

        }
        public void setFieldValue(string fieldName, string fieldValue)
        {
            Microsoft.Office.Interop.Word.FormFields fields = doc.FormFields;

            foreach (Microsoft.Office.Interop.Word.FormField field in fields)
            {
                if (field.Name == fieldName)
                {
                    field.Range.Text = fieldValue;
                }
            }

        }
    }
}
Мне нужны были лишь две функции, так как только они требуются для моих отчетов word:
- открыть документ
- присвоить заданное значение полю документа по его имени.

Если кому то потребуется что то еще - это легко сделать.


Ну а работать с этим в Аксапта очень просто:

X++:
static void Job22(Args _args)
{
    AxFunctions.word word;
    ;

    word = new AxFunctions.word();

    word.openFile("c:\\Contract.doc");

    word.setFieldValue("NumContract", "1043564/03-2010"); // NumContract - это имя поля в шаблоне документа

}
Прилагаю готовую DLL, если кому то этих двух функций будет достаточно.
Вложения
Тип файла: zip AxFunctions.zip (2.1 Кб, 253 просмотров)

Последний раз редактировалось someOne; 07.07.2011 в 11:17. Причина: Файл забыл...
За это сообщение автора поблагодарили: Logger (6), suicest (1).
Теги
.net, ax2009, clr interop, clrobject, office, word, баг, ошибка, ядро

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
semanticax: Dynamics AX 2009 Installation - Application Blog bot DAX Blogs 0 22.12.2010 08:11
Solutions Monkey: Migrating X++ web forms to AX 2009 EP asp.net framework Blog bot DAX Blogs 0 09.11.2010 19:05
emeadaxsupport: When browsing AX 2009 Role Centers, you get an error: An unexpected error has occurred on systems with .NET Framework v4.0 installed Blog bot DAX Blogs 1 28.07.2010 08:24
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

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

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

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