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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2012, 16:59   #3  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Ashir Посмотреть сообщение
Проблема явно во взаимодействии Аксы с сиквелом. Куда ещё посмотреть...
Предположу что проблема в том, что Аксапта имеет ограничение на размер контейнера при передаче его с клиента (приложения Аксапты ax32.exe) на сервер (службу АОС) так как он передается по значению, а не по ссылке.

А файл, с клиента на сервер (для его последующей записи в БД в вашем случае) передается в виде контейнера.

Можно конечно попытаться изменить стандартные размеры RPC пакета для сервера, изменяя значения реестра... (как советовали выше, ранее обсуждалось на форуме...)

Но есть альтернатива - передавать файл не одним общим контейнером, а делить его на части, передавать последовательно, и на стороне АОС "собирать" его вновь в одно целое.

Для этих целей сделал два класса, которые позволяют передавать файлы любого размера средствами Аксапта (клиента и АОС) с клиента на сервер, и обратно.

Процедура работает уже больше года, проблем в работе не вызывает.
(Даже при передаче файла размером несколько GB ощутимого замедления скорости работы сервера АОС не замечено)

Есть только одна странность - если в течении рабочей сессии на клиенте Аксапта использовалась данная процедура, то при закрытии этого клиента Аксапта, в некоторых случаях выдается сообщение об ошибке windows...

Классы написаны для Ax2009.

Пример использования:
X++:
DEV_FileSender::copyToServer("c:\\file.avi", "c:\\fileServer.avi");
Процедура написана для передачи "больших" файлов, но может быть использована и для передачи "больших" контейнеров что можно применить в вашем случае, наверное.

(Заменить участки кода при сохранении итоговых данных)
X++:
binData.saveFile(_fileName);
на
X++:
serverContainer = binData.getData();
В общем выкладываю классы, возможно кому то пригодится функция передачи крупных файлов средствами Аксапта, или как идея решения проблемы в вашем случае.

P.S Файлы докуметооборота Аксапты мы в БД не храним, а передаем (получаем) их с клиента Аксапта на файловый сервер именно этой процедурой.
Вложения
Тип файла: xpo PrivateProject_Dev_fileSender.xpo (7.8 Кб, 396 просмотров)
За это сообщение автора поблагодарили: sukhanchik (10), Logger (10), b_nosoff (1), Ashir (1), ivas (2).
Теги
maxbuffersize, документооборот, загрузка, размер, файл

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Падает клиент при прикреплении документа Stella DAX: Администрирование 27 21.04.2021 16:58
Клиент падает при попытке сравнить таблицу во время импорта vanokh DAX: Программирование 19 09.09.2015 11:49
Падает клиент Аксапты, при вставке текста из буфера обмена vc DAX: Администрирование 11 04.09.2009 11:46
Падает клиент Аксапты... glibs DAX: Программирование 7 09.06.2009 19:32
Падает акспата(клиент). bucken DAX: Функционал 14 02.10.2003 14:22

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

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

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