Имя: Пароль:
1C
1С v8
Сохранение в pdf из xls
0 Sun125
 
12.08.15
11:38
Пытаюсь перевести xls-файл в pdf вот таким методом:

ФайлВходящий = "D:/111.xls";
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        ExcelWorkBook = Excel.WorkBooks.Open(ФайлВходящий,,1); // открытие в режиме ReadOnly
        Excel.DisplayAlerts = 0;
        ExcelЛист = Excel.ActiveSheet;
    Исключение
        Сообщить("Ошибка открытия файла: " + ФайлВходящий);
        Возврат;
    КонецПопытки;
    
    Если ExcelWorkBook <> Null Тогда
        ФайлИсходящий = СтрЗаменить(ФайлВходящий, ".xls", ".pdf");
        ExcelWorkBook.ExportAsFixedFormat(0, ФайлИсходящий , 0);
    КонецЕсли;
    
    Excel.ActiveWorkbook.Close(0); // без записи изменений
    
    Excel.Quit();
    Excel = 0;

Выдает ошибку:
ExcelWorkBook.ExportAsFixedFormat(0, ФайлИсходящий , 0);
по причине:
Произошла исключительная ситуация (0x80070057)

Подскажите,пожалуйста, что не так делаю?
1 Провинциальный 1сник
 
12.08.15
11:39
А почему бы не воспользоваться методами 1с?
2 Sun125
 
12.08.15
11:46
(1) Проблема в том, что нужно сохранить гиперссылку в pdf.
Есть табличный документ с гиперссылками, причем не просто "http://www.ya.ru";, а "Название номенклатуры", на которое нажимаем и попадаем на сайт. Процедура запуска сайта отрабатывается в процедуре "ОбработкаРасшифровки".
Если просто сохранить табличный документ в pdf, то гиперссылка не перенесется. Поэтому сначала сохраняю в xls, а потом хочу перевести в pdf.
3 Sun125
 
25.08.15
13:58
Решил проблему предварительным удалением pdf файла. Не перезаписывает файл.
4 Sun125
 
25.08.15
14:00
Правда теперь пытаюсь решить проблему полей страницы pdf-файла.
Если сохраняю в pdf программно, через
ExcelWorkBook.ExportAsFixedFormat(0, ФайлИсходящий , 0);
то поля страницы очень большие, страница не помещается на лист.
А если сохраняю табличный документ в pdf через "Сохранить как", то поля нормальные.
Подскажите,пожалуйста, можно ли как-то программно отрегулировать поля pdf-файла?
5 Sun125
 
25.08.15
14:04
(4) Это в xls так сохраняет. как мне настроить можно сохранение xls-файла, чтобы поля были не большие?
6 Dolphinbet
 
25.08.15
14:28
(2) А как сохраняете в xls с гиперссылками?
7 Sun125
 
25.08.15
15:02
(6) Страница.Hyperlinks.Add(Страница.Cells(2,5),"http://www.ya.ru",,"Ссылка";, "Номенклатура текст");
8 Sun125
 
25.08.15
15:04
Поля xls-файла вроде настроил:
Страница.PageSetup.LeftMargin = Ексель.Application.InchesToPoints(10/25.4); // Поле слева

Но теперь все время последний пустой лист выходит. Подскажите,пожалуйста, как избавиться?
9 Sun125
 
25.08.15
15:12
удаляю в самом Екселе колонки справа и строки снизу, а все равно в предварительном просмотре лишний пустой лист в конце. Не специалист по Екселю, не могу понять, откуда этот лист и как его убрать?
10 NikVars
 
25.08.15
15:14
11 NikVars
 
25.08.15
15:16
(0) Пример взял отсюда?
http://catalog.mista.ru/public/57288/
Пункт 2. выполнил?
12 Sun125
 
25.08.15
15:21
(11) Экспорт в pdf из xls уже работает на компах. Но пользователь не будет вручную сидеть экспортировать, ему нужно в 1с нажать кнопку и получить готовый pdf.
13 Sun125
 
25.08.15
15:26
(10) Думаю у меня проблема не с ExcelWorkBook.ExportAsFixedFormat(0, ПутьВыгрузкиФайлаPDF , 0).
Потому что до преобразования в pdf открываю в Екселе файл xls и он уже с пустым листом в предварительном просмотре.
14 NikVars
 
25.08.15
15:26
(12) https://support.microsoft.com/ru-ru/kb/982736
Может поможет...
15 NikVars
 
25.08.15
15:26
Чего там с языками и регионами на компе?
16 Sun125
 
25.08.15
15:29
(15) Да проблему с выскакивающей ошибкой я решил.
У меня проблема, что в в xls-файле в предварительном просмотре пустой лист, хотя уже все колонке справа и строки снизу поудалял.
17 Sun125
 
25.08.15
15:39
А если параметры страницы не задавать (Страница.PageSetup.LeftMargin = Ексель.Application.InchesToPoints(10/25.4);// Поле слева)
то пустой страницы в конце нет, но опять на страницу не помещается.
18 NikVars
 
25.08.15
16:08
(17) В посте (10) как раз и говорится о проблеме с областью печати. Может это и есть твоя проблема.
19 Dolphinbet
 
25.08.15
16:58
(7) Гиперссылки добавил, но что-то там какой-то косяк с кодировками. При открытии в браузере русские символы преобразуются в крякозябры почему-то...
20 Dolphinbet
 
25.08.15
18:31
(19) закодировал русские символы в url encoded, но проблема осталась, все равно при открытии гиперссылки в браузере проблема с кодировкой...
21 Dolphinbet
 
25.08.15
18:44
Похоже что-то с кодировкой данных в ячейке не то...
22 Dolphinbet
 
25.08.15
18:45
А как ее можно в принципе поменять?
23 Sun125
 
27.08.15
00:01
(18) Может кто знает, как скрипт запустить из обработки 1С?
Строка
exec(APPLICATION_SCRIPT_FOLDER.'\\excel.vbs C:\\tmp\\test.xlsx C:\\tmp\\test.pdf");
не работает
24 Sun125
 
27.08.15
00:15
Процедура или функция с указанным именем не определена (exec)
25 Sun125
 
27.08.15
00:27
Может у кого пример есть, как запустить скрипт VBS из 1С? Поделитесь,пожалуйста.
26 Апош
 
27.08.15
07:21
казалось бы, при чём тут 1с?
(25) а команду системы пробовал?
27 Dolphinbet
 
27.08.15
16:47
ПутьКСкрипту=ПолучитьИмяВременногоФайла("vbs");
    Скрипт=Новый ЗаписьТекста(ПутьКСкрипту,КодировкаТекста.ANSI);
    Скрипт.ЗаписатьСтроку("WScript.Sleep "+СтрЗаменить(ВремяВМиллисекундах,Символы.НПП,""));
    Скрипт.ЗаписатьСтроку("Set FSO=CreateObject(""Scripting.FileSystemObject"")");
    Скрипт.ЗаписатьСтроку("Set File=FSO.GetFile(WScript.ScriptFullName)");
    Скрипт.ЗаписатьСтроку("File.Delete");
    Скрипт.Закрыть();
    
    Shell = Новый COMОбъект("WScript.Shell");

        Shell.run(""""+ПутьКСкрипту+"""",0,1);
28 Sun125
 
28.08.15
10:24
(27) Спасибо!Попробую
29 Sun125
 
28.08.15
13:49
Обнаружил такую ошибку:
Произошла исключительная ситуация (MS Excell). Невозможно получить свойство Open класса WorkBooks.
Возникает при попытке открыть файл xls для редактирования, если табличный документ содержит много строк (в моем случае больше 20).
Подскажите,пожалуйста, как это можно решить?
30 Sun125
 
28.08.15
14:00
Посмотрел, что с файлом xls после это команды: ТабличныйДокумент.Записать(ПутьВыгрузкиФайлаXLS,"XLS");
Файл даже вручную не открывается. Пишет, что в книге обнаружено содержимое,которое не удалось прочитать. Хотя ничего нового там не выводится, просто строка лишняя.
Может есть какие-то ограничения на размер содержимого в листе Екселя?
31 Sun125
 
28.08.15
14:02
А если вместо команды:
ТабличныйДокумент.Записать(ПутьВыгрузкиФайлаXLS,"XLS")
сохранить табличный документ вручную, через Файл-Сохранить как, то файл xls открывается нормально.
32 Апош
 
28.08.15
14:02
тип попробуй более другой задать
33 Dolphinbet
 
28.08.15
14:03
Лучше использовать формат xlsx
34 Dolphinbet
 
28.08.15
14:07
ТабличныйДокумент.Записать(ПутьВыгрузкиФайлаXLS,ТипТабличногоДокумента.XLSX);