Имя: Пароль:
1C
1С v8
Слетают рисунки в эксель
0 Dolphinbet
 
27.08.15
12:54
Сохраняю табличный документ с рисунком в эксель. Все нормально открываю - рисунок на месте. Далее такой код (на сервере):

    excel = Новый COMОбъект("Excel.Application");
    
    excel.DisplayAlerts = 0;
    excel.EnableEvents = 0;
    Книга = excel.WorkBooks.Open(ПутьКФайлуотчета);
    
    Книга.SaveAs(ПутьКФайлуотчета);
    excel.Application.Quit();

После этой операции при открытии файла там где должен быть рисунок надпись "Часть рисунка с идентификатором отношения rID1 не найдена в файле".
Что могло случиться с рисунком при пересохранении файла?
1 фобка
 
27.08.15
12:57
Формат файла может задать?
2 Dolphinbet
 
27.08.15
13:02
(1) Формат xlsx
3 фобка
 
27.08.15
13:04
Saveas(путь, 50);
4 Dolphinbet
 
27.08.15
13:04
Кстати вот тоже подобная проблема http://axforum.info/forums/showthread.php?t=34203
5 Dolphinbet
 
27.08.15
13:05
(3)    Книга.SaveAs(ПутьКФайлуотчета, 50);
по причине:
Произошла исключительная ситуация (Microsoft Excel): Данное расширение нельзя использовать с выбранным типом файла. Измените расширение в поле "Имя файла" или выберите другой тип файла в списке "Тип файла".
6 фобка
 
27.08.15
13:11
(4) погодь
(5) да?) а так saveas(путь, -4143) еще надо параметр accsessmode глянуть типа
Saveas(,-4143,,,,,2)
7 фобка
 
27.08.15
13:15
50 - это эксель 2007 (xlExel12), у тебя какой?
8 Dolphinbet
 
27.08.15
13:16
(6) Теперь файл не открывается в эксель, пишет что формат недопустимый)
9 Dolphinbet
 
27.08.15
13:16
У меня вот такой:
ТабДок.Записать(ПутьКФайлуотчета, ТипФайлаТабличногоДокумента.XLSX);
10 фобка
 
27.08.15
13:17
(9) это понятно, эксель какой?
11 Dolphinbet
 
27.08.15
13:27
(10) Excel 2010
12 фобка
 
27.08.15
13:36
(11) походу 51
13 Dolphinbet
 
27.08.15
13:40
(12) походу, только картинки по прежнему слетают..
14 фобка
 
27.08.15
13:44
(13) значит дело не в формате :)
15 Dolphinbet
 
27.08.15
13:49
(14) попробовал выполнить тот же код на клиенте - все норм. Значит дело в выполнении на сервере..
16 Dolphinbet
 
27.08.15
13:56
только вариант "на клиенте " мне не подходит(
17 фобка
 
27.08.15
14:05
Сложно сказать - не сталкивался. Если переимонвать файл в zip и посмотреть внутри - картинка существует?
18 Dolphinbet
 
27.08.15
14:12
Вообще некоторые советуют отказаться от использования "Excel.Application" (например корпорация Microsoft).
Соответственно у меня вопрос, какая есть альтернатива? ADO?
19 Dolphinbet
 
27.08.15
14:13
Допустим у меня есть такой несложный код:

    excel = Новый COMОбъект("Excel.Application");
    
    excel.DisplayAlerts = 0;
    excel.EnableEvents = 0;
    Книга = excel.WorkBooks.Open(ПутьКотчету);
    
    List = Книга.Sheets(1);
    List.columns(6).Delete(-4159);
    List.Cells(14,6).Select();
    excel.ActiveWindow.FreezePanes = 1;
    ВсегоКолонок = List.Cells(1,1).SpecialCells(11).Column;
    Для i=6 по ВсегоКолонок цикл
        List.columns(i).ColumnWidth = 100;
        List.columns(i).AutoFit();
    КонецЦикла;
    
    ВсегоСтрок = List.Cells(1,1).SpecialCells(11).Row;
    Для i=1 по ВсегоСтрок цикл
        List.rows(i).AutoFit();
    КонецЦикла;
    
    старт = List.columns(13);
    финиш = List.columns(ВсегоКолонок);
    List.Range(старт, финиш).Group();
    
    Книга.SaveAs(ПутьКотчету);
    excel.Application.Quit();

Как сделать тоже самое через ADO?
20 Dolphinbet
 
27.08.15
14:16
Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.
21 фобка
 
27.08.15
14:36
(20) адо для чтения/записи данных ток (имхо), не знаю можно так форматами и свойствами управлять
22 Dolphinbet
 
27.08.15
14:43
Вот что пишет Майкрософт по поводу серверной автоматизации https://support.microsoft.com/ru-ru/kb/257757
23 Dolphinbet
 
27.08.15
14:44
Если честно я среди альтернатив ничего не нашел подходящего. Не встраивать в файл макрос чтоб он отрабатывал на стороне клиента. Вряд ли какому-то клиенту это понравится)
24 Dolphinbet
 
27.08.15
14:47
Намного лучшей скорости и масштабируемости при редактировании некоторых встроенных двоичных форматов можно достичь средствами Web-компонентов Office (OWC) или объектов данных ActiveX (ADO). Просмотр и изменение свойств документов возможны без применения автоматизации, а для управления файлами и версиями используются серверные расширения FrontPage (FPSE) или Distributed Authoring and Versioning (DAV).