![]() |
#3 |
Участник
|
Предположу что проблема в том, что Аксапта имеет ограничение на размер контейнера при передаче его с клиента (приложения Аксапты 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 Файлы докуметооборота Аксапты мы в БД не храним, а передаем (получаем) их с клиента Аксапта на файловый сервер именно этой процедурой. |
|
|
За это сообщение автора поблагодарили: sukhanchik (10), Logger (10), b_nosoff (1), Ashir (1), ivas (2). |
Теги |
maxbuffersize, документооборот, загрузка, размер, файл |
|
|