13.01.2014, 14:33 | #1 |
Участник
|
Ошибка открытия файла Excel.
При попытке копирования файла Excel выдает ошибку. Пробежался по форуму - ничего не нашел. Расшифровку ошибки тоже не смог найти. код:
X++: void createNewFile() { #winAPI str _path = WinAPI::getFolderPath(#CSIDL_Profile) + "\\Local Settings\\Temp\\loadRP.xls"; str _pathFind = WinAPI::getFolderPath(#CSIDL_Profile) + "\\Local Settings\\Temp\\loadRPF.xls"; ; if (WinAPI::copyFile(fileName, _pathFind, true) == 0) { forFindPath = _pathFind; } else { error ('Îøèáêà êîïèðîâàíèÿ ôàéëà:'+fileName+";"+ _pathFind); error(Int2str(WinAPI::copyFile(fileName, _pathFind, true)) ) ; throw exception::Error; } if (WinAPI::copyFile(fileName, _path, true) == 0) { oldFilePath = fileName; fileName = _path; } else { error ('Îøèáêà êîïèðîâàíèÿ ôàéëà'); throw exception::Error; } } Ошибка копирования файла: бла бла код ошибки 3 на другом компьютере, нет такой ошибки. Что это кривая версия excel на пк? Последний раз редактировалось АртемМелихов; 13.01.2014 в 14:57. |
|
13.01.2014, 14:42 | #2 |
Участник
|
Проверьте права доступа к папке
|
|
13.01.2014, 14:58 | #3 |
Участник
|
проверял. Сохранял в разные места. Все равно такая же ошибка. Сейчас пробую другой офис поставить. 2003
|
|
13.01.2014, 15:07 | #4 |
Участник
|
а код выполняется не на сервере случаем? Если да, то попробуйте указать сетевой путь
|
|
13.01.2014, 15:15 | #5 |
Участник
|
Цитата:
При попытке копирования файла Excel выдает ошибку.
Смотреть на права доступа. Полный путь (в обе стороны). |
|
13.01.2014, 15:16 | #6 |
Участник
|
попробовал положить файл на сервер и указывать сетевой путь, не помогло. Поставил два офиса 2007 2003, ошибка не ушла.
|
|
13.01.2014, 15:20 | #7 |
Участник
|
создал папку с общих доступом для всех(папка находится локально на диске D). Права и на чтение и на запись, положил туда файл. Аксапта запускается с сервера. Таже ошибка - ошибка копирования файла.
|
|
13.01.2014, 15:24 | #8 |
Участник
|
посмотрите в отладчике где выполняется код. для сервера нужно использовать WinAPIServer::copyFile(...)
|
|
13.01.2014, 15:28 | #9 |
Участник
|
А причем тут версия Excel? Копирование файла с Excel не связано. Скорее всего проблема в доступе к файлу. Попробуй через
X++: WinAPI::fileExists_RU Последний раз редактировалось maldini; 13.01.2014 в 15:33. |
|
13.01.2014, 15:38 | #10 |
Участник
|
Рядом стоит такой же комп, в том же домене, у которого все работает. Тем более я нуб и не знаю как проверить место исполнения кода. Да еще веселость выяснилась. Поставил точки остановки, в параметрах аксапты указал вызывать отладчик, при наличие точек, в итоге отладчик даже не подумал запуститься. =(
|
|
13.01.2014, 15:43 | #11 |
Участник
|
Цитата:
X++: void createNewFile() { #winAPI str _path = WinAPI::getFolderPath(#CSIDL_Profile) + "\\Local Settings\\Temp\\loadRP.xls"; str _pathFind = WinAPI::getFolderPath(#CSIDL_Profile) + "\\Local Settings\\Temp\\loadRPF.xls"; ; if (WinAPI::fileExists_RU(fileName)) { info("Detaction file :"+fileName); } else { info("? file :"+_pathFind); } if (WinAPI::copyFile(fileName, _pathFind, true) == 0) { forFindPath = _pathFind; } else { error ('Îøèáêà êîïèðîâàíèÿ ôàéëà:'+fileName+";"+ _pathFind); error(Int2str(WinAPI::copyFile(fileName, _pathFind, true)) ) ; throw exception::Error; } |
|
13.01.2014, 15:52 | #12 |
Участник
|
Цитата:
а определить место выполнения можно по иконке в окне стека в отладчике. или просто напишите в вашем методе if (isRunningOnServer()) { info("Выполняется на сервере"); } |
|
13.01.2014, 15:58 | #13 |
Участник
|
Цитата:
Сообщение от A_BAS
а версия аксапты какая? может у вас отладчик не установлен. а для AX2012 нужно добавится еще и в группу пользователей для отладки.
а определить место выполнения можно по иконке в окне стека в отладчике. или просто напишите в вашем методе if (isRunningOnServer()) { info("Выполняется на сервере"); } X++: void createNewFile() { #winAPI str _path = WinAPI::getFolderPath(#CSIDL_Profile) + "\\Local Settings\\Temp\\loadRP.xls"; str _pathFind = WinAPI::getFolderPath(#CSIDL_Profile) + "\\Local Settings\\Temp\\loadRPF.xls"; str _path_temp = "D:\\public\\Temp\\loadRPF.xls" ; if (isRunningOnServer()) { info("Âûïîëíÿåòñÿ íà ñåðâåðå"); } else { info("Âûïîëíÿåòñÿ ëîêàëüíî"); } if (WinAPI::fileExists_RU(fileName)) { info("Detaction file :"+fileName); } else { info("? file :"+_pathFind); } if (WinAPI::copyFile(fileName, _path_temp, true) == 0) { forFindPath = _pathFind; } else { error ('Îøèáêà êîïèðîâàíèÿ ôàéëà:'+fileName+";"+ _path_temp); error(Int2str(WinAPI::copyFile(fileName, _path_temp, true)) ) ; throw exception::Error; } |
|
13.01.2014, 16:20 | #14 |
Участник
|
гм. а доступ на запись в целевую папку тоже есть?
|
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
13.01.2014, 16:21 | #15 |
Участник
|
Попробуй любой другой файл создать и скопировать. Например 1.txt в 2.txt
Последний раз редактировалось maldini; 13.01.2014 в 16:35. |
|
13.01.2014, 16:28 | #16 |
Участник
|
|
|
13.01.2014, 16:29 | #17 |
Участник
|
Добавьте в код выделенную строчку и скажите номер ошибки.
X++: if (WinAPI::copyFile(fileName, _path_temp, true) == 0) { forFindPath = _pathFind; } else { [ ]error(Int2str(WinAPI::GetLastError()));[ ] error ('Îøèáêà êîïèðîâàíèÿ ôàéëà:'+fileName+";"+ _path_temp); error(Int2str(WinAPI::copyFile(fileName, _path_temp, true)) ) ; throw exception::Error; } Источник: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Рус. яз. : http://www.delphisources.ru/pages/fa...in_errors.html Последний раз редактировалось LeonDerCom; 13.01.2014 в 16:35. |
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
13.01.2014, 16:38 | #18 |
Участник
|
Ошибка 3 из апишного copyFile - это:
ERROR_PATH_NOT_FOUND 3 (0x3) The system cannot find the path specified. |
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
13.01.2014, 16:40 | #19 |
Участник
|
Нет доступа к папке куда копируется файл или она не существует.
Посмотри от какого имени вызывается winApi X++: winApi::getUserName() Последний раз редактировалось maldini; 13.01.2014 в 16:46. |
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
13.01.2014, 16:45 | #20 |
Участник
|
Всем огромнейщее спасибо! Все эту ошибку победил. Оказывается не была создана папка Temp. Как только создал ее копирования пошло как по маслу. =) Вот такие пироги
|
|