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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.08.2011, 09:35   #1  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от someOne Посмотреть сообщение
Еще - в Ax2009, наверное, лучше делать так (через NET):
X++:
static void Job31(Args _args)
{
    System.IO.StreamWriter file;
    ;
    file = new System.IO.StreamWriter("C:\\Test.txt", true, System.Text.Encoding::get_UTF8());
    file.WriteLine("Привет из Axapta");
    file.Close();
}
Гарантировано не будет проблем, например, при запуске на стороне сервера.
Замечал, что не все низкоуровневые api функции работают на стороне сервера.
Может проблема в том что операционная система сервера 64 bit ?
Наверное поэтому все серверные вызовы api (класс WinApiServer) переделаны на NET в axapta 2009.
А как добиться работы данного кода на сервере?
У меня ругается на InteropPermission.
Пытался применить,то что написано здесь, но не помогает.
http://msdn.microsoft.com/en-us/library/bb190039.aspx
Видимо руки кривые.


static client работает корректно, но хотелось бы на сервере добиться работы.
Заранее спасибо.
Старый 01.08.2011, 10:08   #2  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от GBH Посмотреть сообщение
А как добиться работы данного кода на сервере?
Быть может так получится:
X++:
static void Job31(Args _args)
{
    FileName                fileName      = @'C:\Test.txt';
    Set                     permissionSet = new set(Types::Class);
    System.Text.Encoding    encoding;
    System.IO.StreamWriter  file;
    #File
    ;

    permissionSet.add(new FileIOPermission(fileName, #io_write));
    permissionSet.add(new InteropPermission(InteropKind::ClrInterop));

    CodeAccessPermission::assertMultiple(permissionSet);

    try
    {
        encoding = System.Text.Encoding::get_UTF8();
        file     = new System.IO.StreamWriter(fileName, true, encoding);

        file.WriteLine("Привет из Axapta на сервере");

        file.Close();
    }
    catch
    {
        error(AifUtil::getClrErrorMessage());
    }

    CodeAccessPermission::revertAssert();
}
За это сообщение автора поблагодарили: Logger (3).
Старый 01.08.2011, 23:22   #3  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Класс TextIo позволяет задавать кодировку, используется так же как AsciiIo
http://msdn.microsoft.com/en-us/libr...=ax.50%29.aspx
За это сообщение автора поблагодарили: someOne (5).
Старый 02.08.2011, 08:39   #4  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от jonny Посмотреть сообщение
Класс TextIo позволяет задавать кодировку, используется так же как AsciiIo
http://msdn.microsoft.com/en-us/libr...=ax.50%29.aspx

Спасибо за информацию!
Но мне хочется разобраться именно с вариантом NET.
Старый 02.08.2011, 08:36   #5  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
Быть может так получится:
X++:
static void Job31(Args _args)
{
    FileName                fileName      = @'C:\Test.txt';
    Set                     permissionSet = new set(Types::Class);
    System.Text.Encoding    encoding;
    System.IO.StreamWriter  file;
    #File
    ;

    permissionSet.add(new FileIOPermission(fileName, #io_write));
    permissionSet.add(new InteropPermission(InteropKind::ClrInterop));

    CodeAccessPermission::assertMultiple(permissionSet);

    try
    {
        encoding = System.Text.Encoding::get_UTF8();
        file     = new System.IO.StreamWriter(fileName, true, encoding);

        file.WriteLine("Привет из Axapta на сервере");

        file.Close();
    }
    catch
    {
        error(AifUtil::getClrErrorMessage());
    }

    CodeAccessPermission::revertAssert();
}
Спасибо за ответ!
К сожалению, всё также как и у меня.

X++:
 (08:35:07)
 "CLRObject"    
      "C:\Test.txt".
Старый 02.08.2011, 08:40   #6  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
У меня работает. Проверьте, есть ли у AOS доступ к каталогу.
За это сообщение автора поблагодарили: GBH (1).
Старый 02.08.2011, 09:31   #7  
mayk is offline
mayk
Участник
Аватар для mayk
 
43 / 65 (3) ++++
Регистрация: 07.03.2008
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
У меня работает. Проверьте, есть ли у AOS доступ к каталогу.
Windows с включенным UAC очень не любит когда в корень пишут файлы.
К примеру в 7-ке не получится просто так создать файл в корне даже из под учетки с админскими правами. Получится только если запускать приложения по правому клику "запускать от имени администратора"
Старый 02.08.2011, 12:36   #8  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от GBH Посмотреть сообщение
А как добиться работы данного кода на сервере?
У меня ругается на InteropPermission.
Для избежания этой ошибки в начале метода достаточно вставить

X++:
new InteropPermission(InteropKind::ClrInterop).assert();
Обсуждалось неоднократно...
Теги
.net, ansi, ascii, cp866, utf8, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание текстового файла в кодировке DOS Pismarkina DAX: Программирование 5 18.06.2012 14:57
Файлы XML, CSV, HTML в кодировке Unicode EVGL DAX: База знаний и проекты 3 16.01.2009 14:23
Вывод отчета в файл в пакетном режиме Egor_bl DAX: Программирование 16 09.10.2006 19:10
Отчет записать сразу как RTF файл st_msav DAX: Программирование 2 17.01.2006 18:52
считать/записать данные в файл Valia DAX: Программирование 7 19.11.2003 11:59

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:42.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.