Показать сообщение отдельно
Старый 07.02.2012, 16:59   #12  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (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 Кб, 384 просмотров)
За это сообщение автора поблагодарили: sukhanchik (10), Logger (10), b_nosoff (1), Ashir (1), ivas (2).