Имя: Пароль:
1C
1C 7.7
v7: 1С77 сохранить в Excel с масштабом странице по "ширине страницы"
0 arkber84
 
28.11.17
08:59
Доброе. 1с77, MS Oficce 2010. Нужно сохранить табличку в Excel с масштабом странице по "ширине страницы"(1 страница по ширине)
Посмотрел код в инете
ExcelPS= ExcelWorkBook.ActiveSheet.PageSetup;
         Попытка
        ScrptCtrl = С
        СоздатьОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="vbscript";
        ScrptCtrl.AddCode("Function SetAutoZoom()
                    |  ExcelPS.Zoom = False
                    |  ExcelPS.FitToPagesWide = 1
                    |  ExcelPS.FitToPagesTall = 10
                    |End Function");
        ScrptCtrl.AddObject("ExcelPS", ExcelPS);
        ScrptCtrl.Run("SetAutoZoom")
    Исключение
        сообщить(ОписаниеОшибки())
    КонецПопытки;
    ExcelWorkBook.ExportAsFixedFormat(0, ПолныйПутьФайла , 0);
КонецЕсли;

При выполнении кода вылетает ошибка
Ошибка выполнения Microsoft VB * Script: Разрешение отклонено: 'ExcelPS.Zoom'
Подскажите где ошибка? спасибо.
1 Масянька
 
28.11.17
09:07
(0) Ошибка тут - ExcelPS.Zoom.
2 aka AMIGO
 
28.11.17
09:10
Если в Excel стартовать режим макросов и выполнить такую операцию, то решение найдется.
3 arkber84
 
28.11.17
10:04
(2) В екселе макрос делал.   и все работает. Тут ошибка в  разрешениях.  Уточню. Процедура в 1С77  открывает существующий ексель файл, меняет настройки страницы(масштаб), затем  конвертирует в pdf и сохраняет.
4 Масянька
 
28.11.17
10:54
(3) А сначала (наверное) сохраняет в excel...
5 arkber84
 
28.11.17
13:14
(4) и до сохранения и после пробывал.
6 Масянька
 
28.11.17
17:37
(5) Сразу в pdf религия не позволяет?
7 arkber84
 
28.11.17
18:04
(6) Масштаб не позволяет. ))) Таблица вылезает за пределы листа по ширине. вот пытаюсь открыть в екселе, задать масштаб и сконвертировать в пдф.
8 Масянька
 
29.11.17
08:39
(7) Попробуй:
Функция ПодготовитьФайл(КаталогДляЗаписи)

    Ошибка = 0;

    Форма.Отправка.Заголовок("Идет формирование письма.");

    Попытка
        ЗагрузитьВнешнююКомпоненту("SpreadSheet.dll");
    Исключение
        Предупреждение("Не удалось загрузить компоненту SpreadSheet.dll.");
        Ошибка = 1;
        Возврат Ошибка;
    КонецПопытки;
    
    Йоксель = СоздатьОбъект("ТабличныйДокумент");
    
    Йоксель.ЗагрузитьИзТаблицы(АктивныйКонтекст);

    Параметры =    Йоксель.ПараметрыПечати;
    Параметры.ПолеСверху    = 10;
    Параметры.ПолеСнизу        = 10;    
    Параметры.ПолеСлева        = 10;
    Параметры.ПолеСправа    = 10;
    Параметры.АвтоМасштаб     = 1;
    Параметры.Ориентация    = 1;
    Конвертер = СоздатьОбъект("Йоксель.ГрафическийКонвертер.PDF");
    
    // ориентация печ. формы: для всех, кроме счета - 1 (альбомная)
    Если (СтрОриентация = 1) Тогда
        Конвертер.ВысотаСтраницы = 210*56.7;
        Конвертер.ШиринаСтраницы = 297*56.7;
    Иначе
        Конвертер.ВысотаСтраницы = 297*56.7;
        Конвертер.ШиринаСтраницы = 210*56.7;
    КонецЕсли;
    
    Конвертер.КоличествоБитНаПиксел = 24;
//Йоксель.Показать(1);
    Конвертер.Документ = Йоксель;    //это табличный документ от йокселя
    
    Конвертер.ПолеСлева     = 450;
    Конвертер.ПолеСверху     = 300;
    Конвертер.ПолеСправа     = 0;
    Конвертер.ПолеСнизу     = 300;
    Конвертер.ЗаписатьВФайл(КаталогДляЗаписи);    

    Йоксель.Очистить();

    Возврат Ошибка;
    
КонецФункции // ПодготовитьФайл
9 arkber84
 
29.11.17
09:13
(8) Спасибо))). Доработал твой код и решил проблему с масштабом по ширине.