|
Куда копать - не открывает файл Excel | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
13.01.12
✎
11:53
|
говорит что либо файла не существует, либо занят другим приложением, либо имя книги совпадает с открытым в данный момент уникалльный временный файл, сушествует (я его на точке останова могу открыть интерактивно) создается сервером и удалается без проблем что еще может быть? |
|||
1
palm1c
13.01.12
✎
11:54
|
Открой диспетчер задач и поубивай все эксели.
|
|||
2
RomaH
naïve
13.01.12
✎
11:54
|
убито все
|
|||
3
wade25
13.01.12
✎
11:55
|
Яб кэш почистил навсякий)
|
|||
4
RomaH
naïve
13.01.12
✎
11:55
|
до выполнения Ексель = Новый COMОбъект("Excel.Application");
екселей нет в процессах |
|||
5
RomaH
naïve
13.01.12
✎
11:56
|
(3) как и где?
|
|||
6
Ковычки
13.01.12
✎
11:56
|
Книга=ПолучитьCOMОбъект(ИмяФайла,"Excel.Application");
|
|||
7
Tatitutu
13.01.12
✎
11:58
|
ИмяФайла - что возвращает ?
может ИмяФайла = ПолучитьИмяВременногоФайла(".xlsx"); |
|||
8
palm1c
13.01.12
✎
11:58
|
Значит, не делай через временный файл, делай через постоянный :)
|
|||
9
RomaH
naïve
13.01.12
✎
12:02
|
делаю через постоянный - одна фигня
(6) эта конструкция просто висит - и ничего не выводит Ексель = Новый COMОбъект("Excel.Application"); Ексель.Workbooks.Open(ИмяФайла); - эта хотя бы ошибку |
|||
10
RomaH
naïve
13.01.12
✎
12:03
|
(7) не понял ... что может? - возвращает имя НОВОГО временного файла куда пиштся файл, а потом оттуда же и открывается
|
|||
11
Ковычки
13.01.12
✎
12:04
|
а сервер имеет право на все это ?
|
|||
12
RomaH
naïve
13.01.12
✎
12:04
|
&НаСервереБезКонтекста
Процедура ЗагрузитьИзФайлаНаСервере(АдресХранилища) ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища); ИмяФайла = ПолучитьИмяВременногоФайла("xlsx"); ИмяФайла = "C:\ФайлТаблицы.xls"; ДвоичныеДанные.Записать(ИмяФайла); ЗагрузитьФайл(ИмяФайла); УдалитьФайлы(ИмяФайла); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗагрузитьФайл(ИмяФайла) Ексель = Новый COMОбъект("Excel.Application"); Ексель.Workbooks.Open(ИмяФайла); один фиг |
|||
13
RomaH
naïve
13.01.12
✎
12:04
|
сервер запущет из под моей учетки
|
|||
14
RomaH
naïve
13.01.12
✎
12:05
|
т.е. конфигурация
SQL на другой машине сервре 1С на рабочей - где и запускаю все это дело 8.2.14.540 |
|||
15
palm1c
13.01.12
✎
12:08
|
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ИмяФайла = "C:\ФайлТаблицы.xls"; Тут нет ошибки? там есть икс, а там нет? |
|||
16
palm1c
13.01.12
✎
12:08
|
Попробуй закомментить строку с удалением файла
|
|||
17
palm1c
13.01.12
✎
12:09
|
Хочешь, я скину тебе рабочий вариант на 100%
|
|||
18
RomaH
naïve
13.01.12
✎
12:09
|
(15) это уже поиски, было и "х" - один фиг
на серваке установлен 2007 офис исходный сделан на 2007 ... но пробовал уже и 2003 (16) - до неё не доходит .... ошибка внутри процедуры ЗагрузитьФайл |
|||
19
RomaH
naïve
13.01.12
✎
12:09
|
(17) давай ...
|
|||
20
palm1c
13.01.12
✎
12:11
|
НачСтрока=1;
ОбъектExcel =Неопределено; РабочаяКнига=Неопределено; Листы =Неопределено; СписокЛистов= Новый СписокЗначений(); ФС = Новый Файл(ФайлВыгрузки); Если ФС.Существует()=Истина Тогда Попытка ОбъектExcel= Новый COMОбъект("Excel.Application"); Исключение Предупреждение("Похоже, Excel не установлен на компьютере, ничего сделать не могу!!!"); КонецПопытки; ОбъектExcel.Workbooks.Open(СокрЛП(ФайлВыгрузки)); КнигаExcel = ОбъектExcel.ActiveWorkbook; ЛистExcel = КнигаExcel.Worksheets(1); КоличествоСтрок = ЛистExcel.Cells.CurrentRegion.Rows.Count; НачСтрока=1; КонСтрока=КоличествоСтрок; сообщить(КоличествоСтрок); Сообщить("Начало загрузки таблицы - "+Формат(ТекущаяДата(), "ДЛФ=DT")); ЭлементыФормы.ИндикаторСостояния.МинимальноеЗначение=(НачСтрока+1); ЭлементыФормы.ИндикаторСостояния.МаксимальноеЗначение=КонСтрока-1; ЭлементыФормы.ИндикаторСостояния.МинимальноеЗначение=(НачСтрока+1); ЭлементыФормы.ИндикаторСостояния.МаксимальноеЗначение=КонСтрока; Состояние("Открытие Excel-файла..."); НашлиТМЦ=0; БылДок=0; Для ии=НачСтрока по КонСтрока-1 Цикл ИндикаторСостояния=ии; //сообщить(ии); Попытка ///------- потому, что в некоторых экселях по числам, а в других по буквам типа ЭтоСклад=ЛистExcel.Range("R8" + "C"+Формат(ии,"ЧГ=0")).Value; Код=ЛистExcel.Range("R9" + "C"+Формат(ии,"ЧГ=0")).Value; Имя=ЛистExcel.Range("R1" + "C"+Формат(ии,"ЧГ=0")).Value; Кво=ЛистExcel.Range("R3" + "C"+Формат(ии,"ЧГ=0")).Value; Цена=ЛистExcel.Range("R6" + "C"+Формат(ии,"ЧГ=0")).Value; Исключение ЭтоСклад=ЛистExcel.Range("H"+Формат(ии,"ЧГ=0")).Value; Код=ЛистExcel.Range("I"+Формат(ии,"ЧГ=0")).Value; Имя=ЛистExcel.Range("A"+Формат(ии,"ЧГ=0")).Value; Кво=ЛистExcel.Range("C"+Формат(ии,"ЧГ=0")).Value; Цена=ЛистExcel.Range("F"+Формат(ии,"ЧГ=0")).Value; КонецПопытки; |
|||
21
RomaH
naïve
13.01.12
✎
12:13
|
(20) и чем он отличается от (0)?
Попытка ОбъектExcel= Новый COMОбъект("Excel.Application"); Исключение Предупреждение("Похоже, Excel не установлен на компьютере, ничего сделать не могу!!!"); КонецПопытки; ОбъектExcel.Workbooks.Open(СокрЛП(ФайлВыгрузки)); только попыткой? - у меня ком объект создается, а вот книгу не открыть |
|||
22
palm1c
13.01.12
✎
12:15
|
Это у меня работает, 100%.
ФайлВыгрузки - поле ввода на форме. |
|||
23
RomaH
naïve
13.01.12
✎
12:16
|
хрен с ним - загружу через макет
(22) а у меня не работает
|
|||
24
palm1c
13.01.12
✎
12:16
|
(21) Отличается тем, что выдаёт диагностические сообщения, не?
:) |
|||
25
RomaH
naïve
13.01.12
✎
12:17
|
(24) где?
еще раз у меня ком объект создается |
|||
26
palm1c
13.01.12
✎
12:17
|
(23) Я бы копал в сторону прав доступа к файлу.
Серьёзно. |
|||
27
RomaH
naïve
13.01.12
✎
12:17
|
падает тут:
ОбъектExcel.Workbooks.Open(СокрЛП(ФайлВыгрузки)); |
|||
28
Ковычки
13.01.12
✎
12:17
|
Нет доступа к файлу
|
|||
29
RomaH
naïve
13.01.12
✎
12:18
|
сервер запущен из под моей учетки
файл создан и если не грузить - удаляется точка останова на ОбъектExcel.Workbooks.Open(СокрЛП(ФайлВыгрузки)); файл есть и я его могу открыть интерактивно с какой стороны нет доступа? |
|||
30
palm1c
13.01.12
✎
12:18
|
Смотри свойства файла. Расшарь его для всех и попробуй.
|
|||
31
palm1c
13.01.12
✎
12:19
|
Файл не удаляй. Дай доступ для всех и всё у тебя получится.
|
|||
32
palm1c
13.01.12
✎
12:20
|
Сначала сделай, чтобы он загрузился, а потом уже с удалением можно что-то придумать. Он удаляется не раньше, чем нужно?
|
|||
33
Ковычки
13.01.12
✎
12:20
|
Ексель = Новый COMОбъект("Excel.Application");
Книги = Ексель.Workbooks; Если Книги.Count = 0 Тогда Книги.Add(); КонецЕсли; Книга = Книги.Open(СокрЛП(ФайлВыгрузки)); |
|||
34
RomaH
naïve
13.01.12
✎
12:22
|
||||
35
RomaH
naïve
13.01.12
✎
12:24
|
(33) в условие заходит, но не помогает (совсем)
|
|||
36
Ковычки
13.01.12
✎
12:25
|
(35) уже лучче
|
|||
37
palm1c
13.01.12
✎
12:25
|
(34) Правой кнопкой по файлу - свойства - безопасность.
И полные права для учетки, под которой крутится 1с, не? |
|||
38
Ковычки
13.01.12
✎
12:25
|
Ексель = Новый COMОбъект("Excel.Application");
Ексель.Visible = -1; |
|||
39
НЕА123
13.01.12
✎
12:26
|
Ф = Новый Файл(ФайлВыгрузки);
Если Ф.Существует() Тогда ....Open зайдет в Open? |
|||
40
НЕА123
13.01.12
✎
12:28
|
может задержку попробовать? может не успевает записаться до открытия.
|
|||
41
RomaH
naïve
13.01.12
✎
12:28
|
(37) ты читаешь что я пишу - 1С крутиться под моей же учеткой - см (34)
(39) а ничего что я его вижу - и если файл не грузить - он нормально удалается? |
|||
42
RomaH
naïve
13.01.12
✎
12:28
|
(40) - а точка останова на что?
добавил права на файл - всем - (на точке останова) - один фиг |
|||
43
RomaH
naïve
13.01.12
✎
12:29
|
(38) это что даст?
|
|||
44
RomaH
naïve
13.01.12
✎
12:30
|
(38) не понял нафига это - и программа тоже
|
|||
45
Ковычки
13.01.12
✎
12:31
|
чисто позырить, просто сделай и все тут
|
|||
46
Ковычки
13.01.12
✎
12:31
|
Ексель.Visible = Истина;
|
|||
47
RomaH
naïve
13.01.12
✎
12:31
|
ок делаем так:
&НаСервереБезКонтекста Процедура ЗагрузитьИзФайлаНаСервере(АдресХранилища) //ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища); // //ИмяФайла = ПолучитьИмяВременногоФайла("xlsx"); ИмяФайла = "C:\ФайлТаблицы.xls"; ДвоичныеДанные.Записать(ИмяФайла); ЗагрузитьФайл(ИмяФайла); //УдалитьФайлы(ИмяФайла); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗагрузитьФайл(ИмяФайла) Ексель = Новый COMОбъект("Excel.Application"); Ексель.Visible = -1; Книги = Ексель.Workbooks; Если Книги.Count = 0 Тогда Книги.Add(); КонецЕсли; Ексель.Workbooks.Open(СокрЛП(ИмяФайла)); т.е. ничего не создаем и не удалаем - файл есть (45) сделал - где че смотреть-то? |
|||
48
RomaH
naïve
13.01.12
✎
12:32
|
т.е.
&НаСервереБезКонтекста Процедура ЗагрузитьИзФайлаНаСервере(АдресХранилища) //ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища); // //ИмяФайла = ПолучитьИмяВременногоФайла("xlsx"); ИмяФайла = "C:\ФайлТаблицы.xls"; //ДвоичныеДанные.Записать(ИмяФайла); ЗагрузитьФайл(ИмяФайла); //УдалитьФайлы(ИмяФайла); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗагрузитьФайл(ИмяФайла) Ексель = Новый COMОбъект("Excel.Application"); Ексель.Visible = Истина; Книги = Ексель.Workbooks; Если Книги.Count = 0 Тогда Книги.Add(); КонецЕсли; Ексель.Workbooks.Open(СокрЛП(ИмяФайла)); |
|||
49
Ковычки
13.01.12
✎
12:32
|
если оно под твоей учеткой, то и окно екселя обязано появиться
|
|||
50
Ковычки
13.01.12
✎
12:33
|
Ексель.Workbooks.Open(СокрЛП(ИмяФайла));
на Книга = Книги.Open(СокрЛП(ИмяФайла)); (почти одно, но второе более политически верное) |
|||
51
Ковычки
13.01.12
✎
12:34
|
под этой же учеткой интерактивно в виндузе находишься ?
(это по поводу отображения екселя) |
|||
52
RomaH
naïve
13.01.12
✎
12:34
|
(50) не
(51) да |
|||
53
Ковычки
13.01.12
✎
12:36
|
и файл так понимаю нормально в екселе интерактивно открывается ?
|
|||
54
RomaH
naïve
13.01.12
✎
12:36
|
(46) про визибл так и не понял - ничего не меняет в плане отображания
да |
|||
55
Ковычки
13.01.12
✎
12:37
|
тогда х.з. все это
восьмерку не знаю, особенно связанную с сервером адинес |
|||
56
palm1c
13.01.12
✎
13:08
|
Я думаю, тут есть несколько вариантов:
• Имени файла или пути не существует. • Файл используется другой программой. • Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги. :) |
|||
57
palm1c
13.01.12
✎
13:09
|
Система же говорит, ЧТО ей не нравится.
Екселевский файл, кстати, кто создаёт? Программно создаётся? Если да, то его нужно отпустить, не? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |