|
Как изменить существующий файл Excel из 1С? |
☑ |
0
Prog111
09.09.18
✎
11:09
|
Вроде все примеры перебрал, а всё равно не получается...
Сделал обработку, в которой выбирается имя открываемого файла Excel (ИмяФайлаЗагрузки). Открываю существующий файл, считываю его, сравниваю с базой, и если цены в базе не сходятся с ценами в файле, то меняю цены и пытаюсь записать файл Excel, но выходит ошибка:
Ошибка при вызове метода контекста (SaveAs)
КнигаЗагрузки.SaveAs(НовыйФайл);
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Метод SaveAs из класса Workbook завершен неверно
Сама процедура:
&НаСервере
Процедура ИзменитьЦеныНаСайтеНаСервере()
Эксель = Новый COMОбъект("Excel.Application");
КнигаЗагрузки = Эксель.WorkBooks.Open(ИмяФайлаЗагрузки);
НомерЛиста = 1;
Лист = КнигаЗагрузки.WorkSheets(НомерЛиста);
Для Каждого Строка Из Номенклатура Цикл
Если Строка.ИзменитьЦенуНаСайте = Истина Тогда
Если Строка.Номенклатура = ПолучитьСпрНомПустой() Тогда
Сообщить("Пустая ссылка: " + Строка.НаименованиеЭксель);
Иначе
Лист.Cells(Строка.НомерСтрокиЭксель, 16).Value = Строка.ЦенаВБазе;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Сохранение файла
ФайлЭксель = Новый Файл(ИмяФайлаЗагрузки);
Путь = ФайлЭксель.Путь;
НовыйФайл = Новый Файл(Путь + "new.xlsx"); // + ФайлЭксель.Имя);
КнигаЗагрузки.SaveAs(НовыйФайл);
КонецПроцедуры
База файловая.
|
|
1
Cool_Profi
09.09.18
✎
11:13
|
Сообщить(НовыйФайл) что говорит?
|
|
2
HawkEye
09.09.18
✎
11:27
|
(0) вторым параметром надо формат передавать...
|
|
3
HawkEye
09.09.18
✎
11:28
|
-4143 - формат по умолчанию, если я ничего не путаю..
|
|
4
Prog111
09.09.18
✎
11:33
|
(3) Поменял на:
КнигаЗагрузки.SaveAs(НовыйФайл,-4143);
Но результат тот же...
|
|
5
Prog111
09.09.18
✎
11:34
|
(1) В отладчике это нормальный файл, с параметрами:
ПолноеИмя - "C:\Обработки 1С\new.xlsx"
|
|
6
Cool_Profi
09.09.18
✎
11:44
|
|
|
7
Prog111
09.09.18
✎
11:46
|
(6) Да в том-то и дело, то база файловая. Описанные проблемы вроде не подходят...
|
|
8
Sasha_H
09.09.18
✎
13:28
|
А если переделать открытие Екселя не СОМ-объектом, а через ТабличныйДокумент?
|
|
9
Sasha_H
09.09.18
✎
13:29
|
(0) Попробуй поменять на:
Эксель.SaveAs(НовыйФайл);
|
|
10
RomanYS
09.09.18
✎
18:14
|
>> НовыйФайл = Новый Файл(Путь + "new.xlsx");// + ФайлЭксель.Имя);
>> КнигаЗагрузки.SaveAs(НовыйФайл);
А что эксель уже научился понимать объекты 1С? Зачем экселю объект "файл", ему только путь нужен.
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой