Имя: Пароль:
1C
1С v8
Хочу откорректировать ексель
0 lamme
 
16.02.19
19:22
УФ
на сервере

ФайлA= получитьимявременногофайла("xls");
МакетA = получитьобщиймакет("A_xls");
МакетA .Записать( ФайлA);
    

Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);


=======

ошибка

Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу "C:\TMP\МакетPromUA.xls". Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.




почему?

сервер - локалхост
один комп
я на рдп

полодил файл на C:\TMP\
Перерулил открытие файла напрямую тз этой папки

результат тот же


что я делаю не так?
1 RomanYS
 
16.02.19
19:26
Так файлы разные)))
2 Василий Алибабаевич
 
16.02.19
19:31
(0) Странно... Записываем
получитьимявременногофайла("xls");
а открываем
"C:\TMP\МакетPromUA.xls"
где логика?
3 lamme
 
16.02.19
19:33
стоп
это ошибка именно тут
в коде - это один файл
тут  не закоментирован
4 George Wheels
 
16.02.19
19:44
Где-то ранее через COMОбъект("Excel.Application"); этот файл уже был открыт. Или просто в Excell открыт файл. (Или злобный юзер нашёл способ добраться до сервера и отслеживать новые файлы - а вдруг там что-то интересное).
5 RomanYS
 
16.02.19
19:45
(3) если файл существует просто открой его экселем, может узнаешь подробности какие. Но придется это делать на сервере
6 George Wheels
 
16.02.19
19:50
Посмотри через Диспетчер задач - в процессах висит незавершённый EXCEL.EXE
7 Casey1984
 
16.02.19
19:52
Я не понял, как ты его на сервере открываешь? Весь код в процедуре &НаСервере ?
8 Casey1984
 
16.02.19
19:53
(7) А вижу, один комп :-/
9 lamme
 
16.02.19
20:01
6
не висит
7
один комп
5  файл существует и открывается нормальноэексель лицензионный
10 lamme
 
16.02.19
20:01
4
нет
я ему посовываю файл из темпа
не открывает

файл чистый
11 RomanYS
 
16.02.19
20:03
(10) Эксель не умеет открывать даже разные файлы, если они одинаково называются
12 lamme
 
16.02.19
20:10
11
не уловил
13 lamme
 
16.02.19
20:25
я ему четко указываю

C:\TMP\МакетPromUA.xls
14 lamme
 
16.02.19
20:25
ФайлPromUA = "C:\TMP\МакетPromUA.xls";
Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);
15 RomanYS
 
16.02.19
20:30
(12)(13) Если уже открыт файл МакетPromUA.xls из любой другой папки, получишь ошибку
16 lamme
 
16.02.19
20:32
Он не открыт нигде

точкой останки становлюсь на Эксель .WorkBooks.Open(ФайлPromUA);
смотрю в диспетчере задач
екселей нет открытых приложений
17 RomanYS
 
16.02.19
20:36
(16) ты на сервере смотришь?
18 Василий Алибабаевич
 
16.02.19
20:45
(16) Смотреть нужно процессы. А не "открытых приложений".
После вот этого : Эксель = Новый COMОбъект("Excel.Application"); Excel уже должен быть в памяти.
Вместо вот так :
"
Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);
"
Сделай :
Эксель = Новый COMОбъект("Excel.Application");
Эксель.Visible = Истина;
Эксель .WorkBooks.Open(ФайлPromUA);
и здраво содрогнись.
19 Василий Алибабаевич
 
16.02.19
20:46
+ (18) Скорее всего там висит вопрос за открытие файла из неизвестного источника. Ну или что-то типа того.
20 lamme
 
16.02.19
21:09
18
сделал

в ошибку уходит
на экране ничего не открывается
21 lamme
 
16.02.19
21:29
17
на сервере
где ж еще
22 Casey1984
 
16.02.19
21:32
Не может Макет держать файл? По идее 1С-ка должна освобождать если не используется :-/
23 lamme
 
16.02.19
21:35
а вот тут тогда кто держит что

ФайлPromUA = "C:\TMP\МакетPromUA.xls";
Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);
24 lamme
 
16.02.19
21:37
хех
а тупо наклиенте - работает
25 lamme
 
16.02.19
21:37
ну и ...
какие идеи?
26 lamme
 
16.02.19
21:38
те


&НаСервере
Процедура Команда1НаСервере()
ТУТ НЕ РАБОТАЕТ
    // Вставить содержимое обработчика.
    
        ФайлPromUA = "C:\TMP\МакетPromUA.xls";
Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);

КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
ТУТ РАБОТАЕТ
               ФайлPromUA = "C:\TMP\МакетPromUA.xls";
Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);

    Команда1НаСервере();
КонецПроцедуры
27 lamme
 
16.02.19
21:39
тогда точно - сервер не имеет доступа к этому файлу
28 lamme
 
16.02.19
21:40
тогда  почему тут не работает

ФайлA= получитьимявременногофайла("xls");
МакетA = получитьобщиймакет("A_xls");
МакетA .Записать( ФайлA);
    

Эксель = Новый COMОбъект("Excel.Application");
Эксель .WorkBooks.Open(ФайлPromUA);
29 Casey1984
 
16.02.19
21:40
(25) вот здесь после 3-й картинки на твое похоже: http://catalog.mista.ru/public/196323/
30 lamme
 
16.02.19
21:40
это же все на сервере крутиться
31 Casey1984
 
16.02.19
21:43
(24) потому что на клиенте не процесс службы сервера 1С см (29)
32 lamme
 
16.02.19
22:03
права дал как в 29
не взлетело
33 Casey1984
 
16.02.19
22:04
(32) права до картинки, а после папка создать, я пишу после картинки ;-)
34 Casey1984
 
16.02.19
22:06
(32) Необходимо создать папку

    для Windows Server x64

    C:\Windows\SysWOW64\config\systemprofile\Desktop
    
    для Windows Server x86

    C:\Windows\System32\config\systemprofile\Desktop
35 lamme
 
16.02.19
22:30
34
а если это вин10 ?
36 lamme
 
16.02.19
22:31
во бл...

для Windows Server x86

    C:\Windows\System32\config\systemprofile\Desktop

заработало на вин10
37 Casey1984
 
16.02.19
22:43
Открываю курсы гугления!
38 lamme
 
16.02.19
22:45
щас другой трабл
Книга.SaveAs(ФайлИтоговый,-4143);

висит ..
а висит на каком то вопросе скорее всего
им файла новое - только что полученное
39 lamme
 
16.02.19
22:48
ну да .. там вопрос о совместимости висит .. но это уже решаемо
40 Fram
 
16.02.19
23:01
При записи ничего не забыл?
41 lamme
 
16.02.19
23:56
40
нет - все работает
указали имя нового тмп файла
записали
ексель объект закрыли

всем спасибо
огромное спасибо - 34
42 Фокусник
 
17.02.19
07:57
(41) обращения через номер поста лучше в скобках указывать, тогда справа ссылка будет ;)