bdd2

Печать в MS Excel.

Опубликовал Иван Дижа (IDija) в раздел Программирование - Практика программирования

Иногда требуется вывести печатную форму в эксель. Можно сделать типовыми средствами: файл - сохранить копию (если у вас активизирована  доп. настройка - редактирование таблиц ) - выбрать нужное расширение и сохранить файл.

Описанная ниже функция позволяет, печатную форму, формируемую в предприятии 1с с расширением .mxl  - открыть в MS Excel. Во вложение обработка с примером. Обработка подключается как внешняя печатная форма к документу Реализация товаров и услуг (Накладная). При выборе данного типа печати программа откроет MS Excel (если он имеется) и вставит в него печатную форму.


Функция Печать() Экспорт

    
КоличествоЭкземпляров=1;
   
 НаПринтер=Ложь;
    
ИмяМакета="Накладная";
    
ТабДокумент ПечатьДокумента();

    
ТаблицаГруппировок = Неопределено;
    
ФорматСохранения "XLS";
    
ТабличныйДокумент ПечатьДокумента();
 
  КаталогТемп КаталогВременныхФайлов();
      
ТабличныйДокумент.Записать(КаталогТемп "Книга_v8." ФорматСохранения ТипФайлаТабличногоДокумента[ФорматСохранения]);
    Попытка
        
ExcelПодключение =  Новый COMОбъект("Excel.Application");
    Исключение
        
Сообщить("Невозможно создать объект . Обработка прервана.");
        
ExcelПодключение = Неопределено;
        
//Возврат;
    
КонецПопытки;

    
ExcelПодключение.SheetsInNewWorkbook 1;
    
ExcelПодключение.RollZoom = False;

    
ExcelПодключение.Workbooks.Add(КаталогТемп "Книга_v8." ФорматСохранения);

    
ExcelПодключение.ActiveWindow.TabRatio 0.463;
    
ExcelПодключение.ActiveWindow.ActiveSheet.Name "Лист1";

    
Sheet1 ExcelПодключение.ActiveWindow.ActiveSheet;
    
Sheet1.Outline.SummaryRow 0;
    
Sheet1.Outline.SummaryColumn = -4152;
    
//Устанавливаем автовысоту строк.
    
Sheet1.Cells.Select();
    
ExcelПодключение.Application.Selection.Rows.UseStandardHeight = True;
    
ExcelПодключение.Application.Selection.Rows.AutoFit();
    
Sheet1.Range("A1").Select();
    
//
    
УдалитьФайлы(КаталогТемп "Книга_v8." ФорматСохранения);

    
ExcelПодключение.Visible 1;

    
ExcelПодключение.ActiveWindow.WindowState 2;
КонецФункции;

Разукрашку брал тут: http://infostart.ru/public/19856/

Скачать файлы

Наименование Файл Версия Размер
Накладная - MS Excel.epf
.epf 11,41Kb
16.07.13
143
.epf 11,41Kb 143 Скачать

См. также

Добавить вознаграждение
Комментарии
0. Иван Дижа (IDija) 142 19.08.11 15:29 Сейчас в теме
Иногда требуется вывести печатную форму в эксель. Можно сделать типовыми средствами: файл - сохранить копию (если у вас активизирована доп. настройка - редактирование таблиц ) - выбрать нужное расширение и сохранить файл.

Перейти к публикации

1. Serj (Serj1C) 458 19.08.11 15:29 Сейчас в теме
почему бы просто не записать в формате XLS, а потом выполнить
ЗапуститьПриложение(КаталогТемп + "Книга_v8." + ФорматСохранения) ?
2. Иван Дижа (IDija) 142 19.08.11 15:46 Сейчас в теме
(1) Я уверен, что найдутся еще способы реализации этой задачи...
3. Roman Biblbox (mr zafod) 22 20.08.11 10:14 Сейчас в теме
Извините конечно, что опять критикую, но ИЗУЧАЙТЕ 1С.

ТаблицаГруппировок = Неопределено; // Что это зачем?
    ФорматСохранения = "XLS"; // Зачем?
    ТабДокумент = ПечатьДокумента();
    ТабличныйДокумент = ТабДокумент; // Зачем еще один объект?

// Далее вообще комментировать нечего
    КаталогТемп = КаталогВременныхФайлов();
      ТабличныйДокумент.Записать(КаталогТемп + "Книга_v8." + ФорматСохранения , ТипФайлаТабличногоДокумента[ФорматСохранения]);
    Попытка
        ExcelПодключение =  Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Невозможно создать объект . Обработка прервана.");
        ExcelПодключение = Неопределено;
        //Возврат;
    КонецПопытки;
...Показать Скрыть


Решается просто


    ТабДокумент = ПечатьДокумента();
ИмяФайла = ПолучитьИмяВременногоФайла("xls");
    ТабДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.xls); // Точно не помню имя свойства "ТипФайлаТабличногоДокумента.xls" 
    Попытка
        ЗапуститьПриложение(ИмяФайла);
    Исключение
        Сообщить("Невозможно создать объект . Обработка прервана.");
    КонецПопытки;
...Показать Скрыть


Куча лишних действий и неоправданный расход ресурсов.
Извините, что без разукрашки.
mikhailovaew; the1; IDija; +3 Ответить 1
4. Иван Дижа (IDija) 142 22.08.11 09:27 Сейчас в теме
(3) Изучением 1С я и занят. Спасибо за поправку кода .....
Petrov81; +1 Ответить
5. Oleg Aizatulin (oaizatulin@yahoo.com) 10.09.11 03:33 Сейчас в теме
6. Иван Дижа (IDija) 142 10.09.11 07:41 Сейчас в теме
7. Krishna Rma (srtp) 7 18.10.11 11:31 Сейчас в теме
8. Иван Дижа (IDija) 142 18.10.11 11:56 Сейчас в теме
(7) не понятно, что имеете в виду ?
9. Lizi60 (Lizi60) 13.04.12 12:40 Сейчас в теме
Мне понравилась обработка. Спасибо автору.