Имя: Пароль:
1C
1С v8
Ошибка в регл. задании
,
0 John83
 
26.04.21
18:19
В регл. задании происходит загрузка файла
C:\Users\Администратор\AppData\Local\Temp\GRLS\lp2021-04-22-1.xls

Проверяю, что этот файл есть через НайтиФайлы - файл есть.
И сразу при попытке чтения этого же файла выдает ошибку

{ОбщийМодуль.РегламентныеЗадания_Прометей.Модуль(72)}: Ошибка при вызове метода контекста (Open)
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу 'C:\Users\Администратор\AppData\Local\Temp\GRLS\lp2021-04-22-1.xls'. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.

Есть идеи, почему так происходит?
1 ДенисЧ
 
26.04.21
18:23
Права, атрибуты, "Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги"
2 Вафель
 
26.04.21
21:06
Там нужен какой то каталог в system32
3 John83
 
26.04.21
23:52
(2) зачем?
4 John83
 
27.04.21
00:07
И еще обратил внимание, что некоторые регл. задания по ЖР запускаются от какого-то пользователя 1С, а некоторые без пользователя.
От чего это зависит?
Забыл указать, это серверная база.
5 John83
 
27.04.21
00:11
+4 хотя возможно в консоли заданий намудрили
6 Cthulhu
 
27.04.21
01:12
проверяешь наличие из-под себя.
регламентное выполняется не из-под тебя.
7 dchumak
 
27.04.21
03:42
(6) скорее всего в этом причина
8 dchumak
 
27.04.21
03:43
А также, хотелось бы посмотреть код, от начала задания, до разбора файла. Там скорее всего пытается открывать файл напрямую с диска, а не из временного хранилища, поэтому и доступа нет
9 John83
 
27.04.21
11:36
(6) в том-то и дело, что проверка производится в самом регл. задании и результат выводится в ЖР
10 John83
 
27.04.21
11:43
(8)
Соединение = Новый HTTPСоединение("grls.rosminzdrav.ru");

ТекЗапрос = Новый HTTPЗапрос("pricelims.aspx");

Попытка
    ТекОтвет = Соединение.ОтправитьДляОбработки(ТекЗапрос);     
    ТекСтрока = ТекОтвет.ПолучитьТелоКакСтроку();
Исключение
    ЗаписьЖурналаРегистрации("Сообщение", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
    

ТекИмяФайлаПриемника = ПолучитьИмяВременногоФайла("html");

ТекТекстовыйФайл = Новый ТекстовыйДокумент;
ТекТекстовыйФайл.УстановитьТекст(ТекСтрока);
ТекТекстовыйФайл.Записать(ТекИмяФайлаПриемника, КодировкаТекста.ANSI);

ТекЧтениеХТМЛ = Новый ЧтениеHTML;
ТекЧтениеХТМЛ.ОткрытьФайл(ТекИмяФайлаПриемника);

ТекПостроительDOM = Новый ПостроительDOM;
ТекДокументHTML = ТекПостроительDOM.Прочитать(ТекЧтениеХТМЛ);
ТекЭлемент = ТекДокументHTML.ПолучитьЭлементПоИдентификатору("ctl00_plate_tdzip");

ТекЧтениеХТМЛ.Закрыть();

ТекИмяФайлаИсточника = "http://grls.rosminzdrav.ru/" + ТекЭлемент.ПервыйДочерний.Гиперссылка;
ТекИмяФайлаПриемника = ПолучитьИмяВременногоФайла("zip");

КопироватьФайл(ТекИмяФайлаИсточника, ТекИмяФайлаПриемника);    

ТекКаталог = КаталогВременныхФайлов() + "GRLS";

ТекZIP = Новый ЧтениеZipФайла();
ТекZIP.Открыть(ТекИмяФайлаПриемника);    
ТекZIP.ИзвлечьВсе(ТекКаталог);
ТекZIP.Закрыть();

ТекФайлы = НайтиФайлы(ТекКаталог, "lp"+Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd")+"*.xls");

Попытка
    Для Каждого ЭлементМассива Из ТекФайлы Цикл
        ЗаписьЖурналаРегистрации("Сообщение",,,, ЭлементМассива.ПолноеИмя);
    КонецЦикла;
Исключение
    ЗаписьЖурналаРегистрации("Сообщение", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

Если НЕ ТекФайлы.Количество() > 0 Тогда
    Возврат;
КонецЕсли;

ТекФайл = ТекФайлы[0];

ИмяФайла = ТекФайл.ПолноеИмя;;

Попытка
    // Загрузка Microsoft Excel
    ExcelПриложение = Новый COMОбъект("Excel.Application");
Исключение
    Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    ЗаписьЖурналаРегистрации("Сообщение", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    Возврат;
КонецПопытки;

Попытка
    // Открытие файла Microsoft Excel
    ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
Исключение
    Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    ExcelПриложение = Неопределено;
    ЗаписьЖурналаРегистрации("Сообщение", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    Возврат;
КонецПопытки;
11 Cthulhu
 
27.04.21
14:09
такое впечатление, что у тебя какой-то другой код выполняется.
копипаста сообщения об ошибке в (0) не соответствует тому, какое сообщение должно выдаваться кодом в (10) при такой ошибке метода ".Опен"