Работа с Эксель. Ошибка при вызове метода контекста add()

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Bkmz, 13 июн 2018.

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    404
    Симпатии:
    11
    Баллы:
    29
    Код процедуры

    Код:
    // СохранитьМногостраничныйФайл() Создаёт XLSX-файл с несколькими листами
    //
    // Параметры
    //      ИмяФайла            - Имя выходного файла
    //      СоответствиеЛистов  -
    //                          (1) Соответствие:
    //          Ключ            - Строка - Имя листа
    //          Значение        - Табличный документ - Содержимое листа
    //                          (2) Таблица значений с колонками Ключ и Значение.
    //                              Может понадобиться, если требуется строгий порядок листов.
    &НаКлиенте
    Процедура СохранитьМногостраничныйФайл(ИмяФайла, СоответствиеЛистов) Экспорт
       
        Excel = Новый COMОбъект("Excel.Application");
        Excel.SheetsInNewWorkbook = 1;
        //Excel.Visible = Истина;
        Excel.Application.WorkBooks.Add();
           
        СводныйОтчет = Excel.ActiveWorkBook;
           
        Для каждого Лист Из СоответствиеЛистов Цикл
            ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
            ТабДок = Лист.Значение;
            ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.xlsx);
            Excel.Application.WorkBooks.Add(ИмяВременногоФайла);
            ВариантОтчета = Excel.ActiveWorkBook;
            ВариантОтчета.Sheets(1).Name = Лист.Ключ;
            ВариантОтчета.Sheets(1).Copy(, СводныйОтчет.Sheets(1));
            ВариантОтчета.Close(Ложь);
            Excel.ActiveWindow.DisplayGridlines = Ложь;
        КонецЦикла;
       
        СводныйОтчет.Sheets(1).Delete();
        СводныйОтчет.SaveAs(ИмяФайла);
        Excel.Application.Quit();
        Excel = Неопределено;
    
    КонецПроцедуры
    
    Падает на строке Excel.Application.WorkBooks.Add(ИмяВременногоФайла);

    Скрин ошибки

    [​IMG]

    Самое интересное что на тестовой базе когда я работаю на сервере и база находится на том же сервер то все ок. Код отрабатывает без ошибок. А когда сервер на котором я работаю и сервер на котором находятся база отличаются то я славливаю такую ошибку. Может и не в этом проблема но я не знаю в чем. Подскажите пожалуйста
  2. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    404
    Симпатии:
    11
    Баллы:
    29
    Если стоит Excel.Visible = Истина; то ошибки не возникает. Если Ложь то вываливается ошибка
    Последнее редактирование: 13 июн 2018
  3. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.249
    Симпатии:
    100
    Баллы:
    104
    Пути на клиенте и на сервере могут различаться.
    Когда сервер = клиент у вас файл один.
    Когда клиент на одном компе, а "база" на другом могут возникнуть проблемы с путями
  4. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    404
    Симпатии:
    11
    Баллы:
    29
    Вот такой путь

    [​IMG]
  5. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.249
    Симпатии:
    100
    Баллы:
    104
    Ну и что? Вот найдите этот файл на другом компьютере в момент отладки..
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    Формируйте файл эксель полностью на сервере, с сервера уже передавайте файл в виде двоичных данных через временное хранилище на клиента и делайте запись двоичных данных в указанный путь на клиенте.

Поделиться этой страницей