|
Как изменить существующий файл 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С? Зачем экселю объект "файл", ему только путь нужен. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |