Загрузка из EXCEL на сервере #638336


#0 by Avalone2010
Здравствуйте! Подскажите что может быть, ситуация следующая. Есть сервер, на нем крутится 1С. Есть база в которую идет загрузка из 1С(КС вариант). Так вот при передачи фала EXCEL с клиента на сервер происходит сохранение данного файла в определенной папке(в контексте сервера), потом так же в контексте сервера происходит попытка открытия этого файла - но вылетает ошибка : ------------------------------------------------- {Документ.КонкурсПоУслугам.Форма.ФормаЗагрузкиИзEXCEL.Форма}: Ошибка при вызове метода контекста (Open) по причине: Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу "G:1C_TempШахматка_08_11_2012_02_06_32.xlsx". Это может быть вызвано одной из следующих причин. • Указан несуществующий файл или путь. • Файл используется другой программой. • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент. ------------------------------------------------- Код который все это делает ниже: ------------------------------------------------- ------------------------------------------------- Перед открытием файлика, в режиме отладки, проверял - он существует(ФС.Существует). Другой программой он не используется так как создается. у пользователя под которым выполняется код на стороне сервера разрешение на чтение/запись файла есть. Что может быть, куда копать?
#1 by mikecool
файл не успевает сохраниться?
#2 by Avalone2010
выложил не весь код.Вот весь: если бы.Ставил точку останова на Книга = Эксель.WorkBooks.Open(ИмяФайла); находил этот файлик по ИмяФайла, открывал его, закрывал и продолжал откладку.Все равно куй.
#3 by GLazNik
Почему-то напрашивается конструкция типа Файлик.Закрыть после записи:) Файлик что за тип? Может стоит после записи обнулить эту переменную
#4 by mikecool
кстате - а нафик передавать через хранилище файл, если достаточно безконтекстный вызов сервера с передачей имени файла?
#5 by mikecool
+4 а по имени уже открывать
#6 by FreeHunter
попробуй что бы все это делалось под админскими правами
#7 by FreeHunter
ах да проверь у тебя данные есть в ИмяФайла
#8 by Avalone2010
может я чего то не понял, но файл находится на стороне клиента - это один пользователь, сервер крутится на другом компе - это другой пользователь. Т.е. файл при вызове сервера находится вообще на другом компе, в нешаренной папке. Если я что то непонимаю - попраавте. Файл - xlsx(EXCEL).Закрыть не получится, потому что Файлик   = ПолучитьИзВременногоХранилища(АдресВовременномХранилище); Передает двоичные данные. Файлик - это двоичные данные.Название просто у него такое :) Если бы я мог под админскими правами проверить, организация большая - я в дочке. Пока прав допросишся пол года пройдет. Но на файл, после того как он создался но еще не прочитался(точка останова на Книга = Эксель.WorkBooks.Open(ИмяФайла)) я давал полные права всем. в имени файла - имя фала. По РДП цепляюсь на сервер, ввожу в строку обозревателя то что там находится - открывается мой файл.
#9 by Avalone2010
Кстати, еще одна закономерность. Выгрузил базу. Развернул на сервере в файловом варианте  - все работает.
#10 by GLazNik
я в том плане, что после записи, система считает что этот файл открыт одинэсиной. Попробуй просто прописать Файлик = "" после записи.
#11 by FreeHunter
т.е. в ИмяФайла название твоего файла и путь, теперь проверь есть ли у тебя права на его чтение
#12 by GLazNik
тогда не . А если файлик на сервер вручную бросить и попробовать открыть через 1С на сервере? открывает?
#13 by Avalone2010
у меня права есть на него.Я его открываю. У пользователя под которым выполняются серверные процедуры я не знаю есть права или нет. Но с одной стороны он этот файл записывает, значит наверное и читать может. Кроме того перед тем как файл будет прочитан я на него даю полные права(Мой файл-сфойства-безопасность-Группы и пользователи + все(чтение/запись))
#14 by Avalone2010
- отличная мысл.Чет сам не допер.Ша попробую
#15 by Ахиллес
G:1C_Temp Это локальный путь на сервере или подключённый сетевой диск на клиенте? Мож перепутал вызовы и на клиенте файл экселя пытаешься открыть?
#16 by Avalone2010
- локальный путь. Диск G физически висит на сервере
#17 by Avalone2010
не сработало. Давайте код выложу.Может где накосячил. А то право неловко - такая ерунда а уже часа 3 мозг себе ипу этим. , кстати сейчас что бы избежать этой ошибки запуская 1С предприятие по РДП на сервере. Т.е. и клиент и сервер один и тот же комп, путаници с дисками быть не должно. Кроме того файл проверя в режиме отладки на стороне сервера - он существет(ФС = новый Файл(ИмяИмяФайла); ФС.Существует)
#18 by Ахиллес
Перепутал вызовы, открываешь эксель на клиенте. Не хватает каких то прав на сервере. Версия экселя не подходит. Наоткрывал кучу КОМ объеков, они все в памяти сидят и не могут решить чей это файл :-) С открытием экселя часто такая фигня. При какой то ошибке 1С эксель остаётся висеть в памяти. Открой диспечер задач на серваке и погляди.
#19 by Avalone2010
Вызов на стороне клиента:
#20 by Avalone2010
Вызов на стороне сервера:
#21 by Ахиллес
Ну, как, я и говорил. В исключении не обнуляется Эксель. Этих экселей у тебя на сервере уже с пол сотни открыо. И все жаждут файла Шахматка.xlsx
#22 by Avalone2010
:/, млять. они под другим пользователем висят. У меня прав нет что бы смотреть процессы других пользователей
#23 by Ахиллес
Отладку то под своим надо делать.
#24 by Avalone2010
не понял. Вызов экселя идет в контексте сервера, т.е. от имени пользователя под которым стартанула служба агента серверов. А это не я, это другой пользователь. Под ним возможно и висят зомби эксели. Ша буду админов теребить
#25 by Ахиллес
+21 Я обычно дополнительно закрываю эксель при закрытии формы. Чтоб уж наверняка его прибить. И то эта ска каким то образом иногда умудряется выживать.
#26 by Мыш
Файлик=Неоределено;
#27 by Avalone2010
Что вы к Файлику прикопались. Это двоичные данные, это не эксел. админы говорят что процессов по экселю нет ни под кем. человеки. Мож я скину кому cf с одним этим документом, кто нить глянте в КС варианте у себя, а?
#28 by ЧеловекДуши
Ну все... если у вас голубчик стоит серверная версия 8-ки, то то-что выполняется на сервере, выполняется под серверным пользователем "Локальным относительно сервера". А вообще, телепат устал, так что...
#29 by ЧеловекДуши
Он рабочий... а вот у вас смутное представление о работе сервера 1С. А у нас нехватка данных , для того что бы вас послать в правильном пути :)
#30 by Avalone2010
(28,27) какие данные нужны?
#31 by Serginio1
#32 by Avalone2010
, спасибо, хоть что то.Шас буду смотреть
#33 by hhhh
я всё-таки за Поэтому лучше так          Попытка        Эксель = Новый COMОбъект("Excel.Application");
#34 by ЧеловекДуши
КтоЗдесь? Не заработает :)
#35 by Avalone2010
сделал даже так:     все равно не работает, та же ошибка.
#36 by Avalone2010
На сервере с помошью         ПодКемСеанс  =  WshNetwork.UserName; Проверил под кем работа. Работа идет под доменным администратором
#37 by Ахиллес
Пистят твои админы. Если Эксель не закрывался, то куда он мог деться?
#38 by Avalone2010
может и пистят. Но объясните мне тогда, почему все отрабатывает если я на сервере(под рдп) работаю с фаловой копией этой базы? Все таки какая то куйня получается с доменным админом под которым работает сервер 1с? Или я, как сказал 29, смутно представляю работу сервера 1с?
#39 by Serginio1
Прочитай ветку в 31 и разберись с правами DCOM
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С