|   |   | 
| 
 | Ошибка открытия Excel на сервере | ☑ | ||
|---|---|---|---|---|
| 0
    
        JIeoIIoJIbD 09.07.14✎ 09:47 | 
        Добрый день коллеги, столкнулся с неведомой до этого дня ошибкой вида :
 "{Обработка.ЗагрузкаИзExcel.Форма.Форма.Форма(68)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Не удалось найти 'C:\Users\steplitskiy\Desktop\Таблица.xls'. Проверьте задание имени и местоположения файла. При попытке открытия файла с использованием списка недавно использованных файлов из меню ''Файл'' убедитесь, что файл не был переименован, перемещен или удален." при этом файл ни где не открыт . Может кто сталкивался с подобной проблемой ? , код : ПодключитьРасширениеРаботыСФайлами(); Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Таблица(*.xls)|*.xls"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл c описью вложения"; Если ДиалогОткрытияФайла.Выбрать() Тогда ИмяФайла = ДиалогОткрытияФайла.ПолноеИмяФайла; Объект.ИмяФайла = ИмяФайла; Иначе Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.ИмяФайла) Тогда Предупреждение("Необходимо выбрать файл", ,"Achtung!"); Возврат; КонецЕсли; Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(Объект.ИмяФайла); //Состояние("Обработка файла Microsoft Excel..."); Исключение Сообщить(ОписаниеОшибки()); | |||
| 1
    
        JIeoIIoJIbD 09.07.14✎ 09:49 | 
        1С:Предприятие 8.3 (8.3.3.721)
 Управление производственным предприятием, редакция 1.3 (1.3.48.2) | |||
| 2
    
        Maxus43 09.07.14✎ 09:49 | 
        файл то там точно есть?)     | |||
| 3
    
        Maxus43 09.07.14✎ 09:50 | 
        с раб стола - вобще не по феншую. Клади файлы на диск C(D) лучше, причем не в корень, а в папку     | |||
| 4
    
        JIeoIIoJIbD 09.07.14✎ 09:52 | 
        файл есть 100.1% трогал, открывал, проверял , переносил в C:\1С\Таблица.xls увы, но  результат не изменился     | |||
| 5
    
        Никулин Леонид 09.07.14✎ 09:54 | 
        Попробуй файлик открыть интерактивно. Без использования 1Цэ.  Твой сервер вообще умеет работать с xls?     | |||
| 6
    
        JIeoIIoJIbD 09.07.14✎ 09:55 | 
        на сервере права Администратора, для DCOM соответственно тоже, при всех этих страшных ругательных словобуквах на файловой версии все работает.     | |||
| 7
    
        Maxus43 09.07.14✎ 09:58 | 
        файл открывается в контексте сервера или клиента?     | |||
| 8
    
        JIeoIIoJIbD 09.07.14✎ 09:59 | 
        &НаСервере     | |||
| 9
    
        Maxus43 09.07.14✎ 10:01 | 
        (8) т.е. вопросы ещё остались?     | |||
| 10
    
        Maxus43 09.07.14✎ 10:02 | 
        Рабочий стол - он твой, а не сервера. Запихни гвоорю на диск в папку, на рабочие столы юзеров защита идёт     | |||
| 11
    
        JIeoIIoJIbD 09.07.14✎ 10:03 | 
        в контексте сервера пытаюсь открыть файл , ошибка все еще висит     | |||
| 12
    
        hhhh 09.07.14✎ 10:03 | 
        (8) открой под пользователем USR1C82     | |||
| 13
    
        PaulBC 09.07.14✎ 10:03 | 
        Обсуждалось не раз уже.
 Создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop или C:\Windows\System32\config\systemprofile\Desktop (в зависимости от разрядности вашей системы) | |||
| 14
    
        hhhh 09.07.14✎ 10:04 | 
        (11) файл точно на сервере или на локальном компе?     | |||
| 15
    
        JIeoIIoJIbD 09.07.14✎ 10:04 | 
        (4)  "переносил в C:\1С\Таблица.xls увы, но  результат не изменился"  
 такие дела | |||
| 16
    
        ДенисЧ 09.07.14✎ 10:04 | ||||
| 17
    
        JIeoIIoJIbD 09.07.14✎ 10:04 | 
        файл точно на сервере, подключаюсь по RDP     | |||
| 18
    
        Maxus43 09.07.14✎ 10:05 | 
        (15) проверь права на эту папку юзера под которым сервер 1с работает. явно укажи ему разрешение     | |||
| 19
    
        f_vadim 09.07.14✎ 10:05 | 
        прав нету     | |||
| 20
    
        JIeoIIoJIbD 09.07.14✎ 10:06 | 
        (13) создать папку ....     | |||
| 21
    
        Никулин Леонид 09.07.14✎ 10:06 | 
        (16) это мой дедушка...     | |||
| 22
    
        hhhh 09.07.14✎ 10:07 | 
        (17) но точно точно есть все права на папку C:\Users\steplitskiy\Desktop\ пользователю USR1C82 ??     | |||
| 23
    
        Escander 09.07.14✎ 10:12 | 
        Из консоли сервера этот файл открывается?     | |||
| 24
    
        Escander 09.07.14✎ 10:13 | 
        (22) папка правильная указана в (13)     | |||
| 25
    
        JIeoIIoJIbD 09.07.14✎ 11:18 | 
        Спасибо всем за участи , решение проблемы в посте № (13) 
 Создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop или C:\Windows\System32\config\systemprofile\Desktop (в зависимости от разрядности вашей системы) и через ADO // <Описание функции> // // Параметры // <Параметр1> - <Тип.Вид> - <описание параметра> // <продолжение описания параметра> // <Параметр2> - <Тип.Вид> - <описание параметра> // <продолжение описания параметра> // // Возвращаемое значение: // <Тип.Вид> - <описание возвращаемого значения> // Функция Подключить_ADO(ИмяФайла,HDR = Ложь) Экспорт Connection = Новый COMОбъект("ADODB.Connection"); HDR = ?(HDR, "YES","NO"); Попытка //Excel 2000 - 2003 Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ИмяФайла + "; Extended Properties=""Excel 8.0; HDR="+HDR+"; IMEX=1"";"; Connection.Open(); Исключение Попытка //Excel 2007 Connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ИмяФайла + ";Extended Properties=""Excel 12.0; HDR="+HDR+";"";Persist Security Info=False;"; Connection.Open(); Исключение Сообщить(ОписаниеОшибки()); Connection = Неопределено; КонецПопытки; КонецПопытки; Возврат Connection; КонецФункции // Читает данные с листа Excel в таблицу значений // // ДиалогВыбораНомераЛиста - в случает нескольких листов предлагать пользователю интерактивно выбрать // номер листа, НомерЛиста не учитывается // Функция АК_ПолучитьДанныеExcel(ИмяФайла, НомерЛиста = 1, ДиалогВыбораНомераЛиста = Ложь, HDR=Ложь) Экспорт //НомерЛиста = 1; //ДиалогВыбораНомераЛиста = Ложь; //HDR=Ложь; //Connection = тзИсходныеДанные = Новый ТаблицаЗначений; Если Не ЗначениеЗаполнено(ИмяФайла) Тогда Возврат тзИсходныеДанные; КонецЕсли; Подключить_ADO(ИмяФайла,HDR); Попытка Если Connection = Неопределено Тогда Возврат тзИсходныеДанные; КонецЕсли; ИмяЛиста = УстановитьИмяЛиста(НомерЛиста,ДиалогВыбораНомераЛиста); Если ИмяЛиста = Ложь Тогда Возврат тзИсходныеДанные; КонецЕсли; Если Не ЗначениеЗаполнено(ИмяЛиста) Тогда Возврат тзИсходныеДанные; КонецЕсли; RecordSet = Новый COMОбъект("ADODB.Recordset"); ТекстЗапроса = "SELECT * FROM [" + ИмяЛиста + "]"; Попытка RecordSet.Open(ТекстЗапроса, Connection ); Исключение Connection = Неопределено; Возврат тзИсходныеДанные; КонецПопытки; КоличествоКолонок = RecordSet.Fields.Count; Для к =1 По КоличествоКолонок Цикл тзИсходныеДанные.Колонки.Добавить("Колонка" + Строка(к)); КонецЦикла; НумерацияКолонки = 0; ПризнакПервойСтроки = Истина; Пока RecordSet.EOF() = 0 Цикл НовСтрока = тзИсходныеДанные.Добавить(); НумерацияКолонки = 0; Для каждого Позиция Из RecordSet.Fields Цикл НовСтрока[НумерацияКолонки] = Позиция.Value; НумерацияКолонки = НумерацияКолонки + 1; Если ПризнакПервойСтроки Тогда тзИсходныеДанные.Колонки[НумерацияКолонки-1].Заголовок = Позиция.Name; КонецЕсли; КонецЦикла; RecordSet.MoveNext(); ПризнакПервойСтроки = Ложь; КонецЦикла; Исключение #Если Клиент Тогда Сообщить ("Проблемы с ADO: " + ОписаниеОшибки()); #КонецЕсли КонецПопытки; Попытка Connection.Close(); Исключение КонецПопытки; Connection = Неопределено; Возврат тзИсходныеДанные; КонецФункции //По заданному номеру листа возвращает его имя в книге Excel // // ДиалогВыбораНомераЛиста - в случает нескольких листов предлагать пользователю интерактивно выбрать // номер листа, НомерЛиста не учитывается // Функция УстановитьИмяЛиста(Знач НомерЛиста, ДиалогВыбораНомераЛиста = Ложь) Экспорт Если Connection = Неопределено Тогда Возврат ""; КонецЕсли; НовОб = Новый COMОбъект("ADOX.Catalog"); НовОб.ActiveConnection = Connection; КолЛистов = НовОб.Tables.Count; Если КолЛистов = 0 Тогда Возврат ""; ИначеЕсли НомерЛиста > КолЛистов Тогда Возврат ""; КонецЕсли; Если ДиалогВыбораНомераЛиста Тогда Если КолЛистов = 1 Тогда НомерЛиста = 1; Иначе Страницы = Новый СписокЗначений(); Для Каждого Таблица Из НовОб.Tables Цикл Страницы.Добавить(Таблица.Name,Таблица.Name); КонецЦикла; Страница = Страницы.ВыбратьЭлемент("Укажите нужную страницу"); Если Страница = Неопределено Тогда Возврат Ложь; КонецЕсли; Возврат Страница.Значение; КонецЕсли; ИначеЕсли НомерЛиста = 0 Тогда НомерЛиста = 1; Иначе КонецЕсли; Возврат НовОб.Tables(НомерЛиста - 1).Name; КонецФункции // ПолучитьИмяЛиста() | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |