![]() |
#1 |
Участник
|
Еще вчера вроде работал, седня перестал. Не могу сообразить в чем прикол.
DataPort - OnPreDataPort() CREATE(xlApp); xlApp.Workbooks.Open('E:\Шаблоны\Шаблон ''Реестр работников'''); xlBook := xlApp.ActiveWorkbook; xlSheet := xlApp.ActiveSheet; Выполняет последнюю строчку и сразу вылетает с ошибкой "Операционная система не может найти устройство и каталог для файла . Пожулуста, проверьте, что название устройства, каталога и имя файла корректны." Фишка в том, что последняя строка выполняется нормально. Ставил после нее ERROR(xlSheet.Name) и выводилось имя активного листа и затем приложение закрывалось. Я так думаю что дело не в коде, но в чем дело не могу докумекать. У когонить есть соображения? |
|
![]() |
#2 |
Участник
|
Кавычки ессно
|
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Участник
|
Информация к размышлению. Перекинул код в Report, заработало как часы... Мамой клянусь, код одинаковый, но в датапорте он не работает.
To IGHG А что с ними? To Fordewind Ну а почему нет? Мне отчет как таковой не нужен, только выгрузка. В Codeunit'е еще не пробовал это закодить, но там вобще все с нуля надо делать: и форму запроса и индикацию и тп. Кроме того, мне нужно выгрузить сложную структуру данных (инфа подтягивается из разных таблиц) и в текстовый файл, и в файл Excel. Зачем писать один и тот же код получения и форматирования значений дважды? В датапорте выгрузка в txt уже риализована, добавить одновременно запись в excel и усе. Печально, но почемуто в датапорте не фурычит код, который фурычит в репорте. Хоть убей не могу понять почему. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от smoyk
![]() Информация к размышлению. Перекинул код в Report, заработало как часы... Мамой клянусь, код одинаковый, но в датапорте он не работает.
To IGHG А что с ними? To Fordewind Ну а почему нет? Мне отчет как таковой не нужен, только выгрузка. В Codeunit'е еще не пробовал это закодить, но там вобще все с нуля надо делать: и форму запроса и индикацию и тп. Кроме того, мне нужно выгрузить сложную структуру данных (инфа подтягивается из разных таблиц) и в текстовый файл, и в файл Excel. Зачем писать один и тот же код получения и форматирования значений дважды? В датапорте выгрузка в txt уже риализована, добавить одновременно запись в excel и усе. Печально, но почемуто в датапорте не фурычит код, который фурычит в репорте. Хоть убей не могу понять почему. |
|
![]() |
#6 |
Участник
|
To RedFox
Да нет, млин, такой строчки! См. первый пост: последняя строка в тригере DataPort - OnPreDataPort() отрабатывает нормально и после этого он вылетает с ошибкой! |
|
![]() |
#7 |
NavAx
|
Может у Вас датапорт к тому же файлу стучаться пытается, который Вы уже экселем открыли?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#8 |
Участник
|
Вот это сообщение
относится не к открываемому экселевскму файлу, а к файлу датапорта (тот, который CurrDataport.FILENAME). Поэтому и в отчете все в порядке. Думаю, надо в эту сторону копать. |
|
![]() |
#9 |
Участник
|
А Вы уверены, что путь "Е:\\..." существует и отчет запускает xlApp.Workbooks.Open корректно? Вы уверены что ПК, где запускается приложение, имеет диск Е?
|
|
![]() |
#10 |
Участник
|
Еще как вариант. После выполнения, остался висеть как сервис, excel. А при попытке запустить по новому его скрутило. Такое было у меня.
|
|
![]() |
#11 |
Участник
|
Спасибо за советы, но увы...
2 Дуд Тады была бы другая ошибка. Но в любом случае, уверен, что нет. 2 Milk А как копать? Как только коментирую эти строки все работает на ура (в смысле датапорт). Т.е. в txt выгружает нормально. Не знаю. 2 RedFox Абсолютно уверен. Как вы видите из кода в моем первом посте, я не создаю ни книги, ни листов. В переменные записываются только активные книга и лист. И как я писал, после последней строчки в триггере DataPort - OnPreDataPort() ставлю ERROR(xlSheet.Name) и мне нормально выводится имя "Реестр работников" того самого листа, что содержится в "Шаблон 'Реестр работников'". Извиняюсь за повтор. Так что файл открывается и загружается, сомнений нет. 2 RobiBaggio Да, так и есть. Очень нездравая фича. Но я ее просек и ручками через диспетчер задач вырубил его. Так что дело опять же не в этом (*неуверенным тоном*). А можт, х.з., и в этом. Но я этот сервис обрубал перед запуском. з.ы. Попутно вопрос, как энти сервис убить? Нехорошо ведь, что он висеть остается? Убить кстати желательно бы и в случае ошибки в датапорте, но это уже наверно незбыточные мечты ![]() з.з.ы. А ктонибудь вобще в датапорте выгрузку в ексель делал? Можт навик такого в принципе не позволяет? |
|
![]() |
#12 |
Участник
|
А вы на всякий случай напишите после этого вашего кода
MESSAGE(CurrDataport.FILENAME) Что-то я подозреваю, что у вас с ним проблема |
|
![]() |
#13 |
Участник
|
|
|
![]() |
#14 |
Участник
|
To Milk
Хм... Точно. Не в бровь, как говорится, а сразу в глаз. Выдает пустую строку. И в чем прикол? У навика что-то в мозку слетело и он просто глюкнул? Или это я как нить накосячил, сам того не ведая? И что делать вобще? Новый датик сделать и туда код скопировать? To AlexB Спасибо. Я правильно сказал, в случае возникновения ошибки в процессе выполнения этот сервис так и будет висеть? Мне бы в принципе пофигу, при выключении компа он все равно сгинет ![]() ![]() |
|
![]() |
#15 |
Участник
|
Все, разобрался. Потыкал, потыкал и разобрался
![]() ![]() |
|