8.х Как макет Excel документа хранить внутри обработки

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 26 сен 2014.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Прошу помочь.
    Возможно ли в 1С 8.2 внутри внешней обработки хранить Excel документ в качестве макета.
    Задача следующая: необходимо создать заполнение одной формы, ее не так сложно заполнять, а как сформировать сам макет. Мне намного проще взять открыть шаблон и его заполнять, а затем сохранить на диске компьютера. Можно конечно при открытии программы выбирать вручную макет или же жестко его привязать - но это не хотелось бы делать - это не совсем правильно. Конфигурацию менять нельзя.
    Большое спасибо.
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Вместо макета храните двоичные данные (файл) в метаданных объекта Макет.
    MyNameNoName нравится это.
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Добавить макет.
    Тип макета - двоичные данные.
    Храните там что хотите.
    MyNameNoName нравится это.
  4. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Следующий код:
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
        Попытка
            Эксель = Новый COMОбъект("Excel.Application");
         Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
        Книга = Эксель.WorkBooks.Open(ПолучитьМакет("П4"));
        Лист = Книга.WorkSheets(1);
    
        ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
        ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
       
        ИмяФайла = "C:\Documents and Settings\MyComp\Рабочий стол\11111.xlsx";
        Книга.SaveAs(ИмяФайла);
        Эксель.Quit();
    КонецПроцедуры
    выдает ошибку:
    Ошибка при вызове метода контекста (Open)
    Книга = Эксель.WorkBooks.Open(ПолучитьМакет("П4"));
    по причине:
    Типы не совпадают (0)

    Как ее исправить?
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Вы сначала двоичные данные преобразуйте в файл, потом открывайте.
    MyNameNoName нравится это.
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Данные, полученные из макета, предварительно сохранить во временный файл.
    MyNameNoName нравится это.
  7. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Читайте СП, код за вас не хочу писать!
  9. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Не получается разобраться. Если у кого-нибудь есть обработка по пересохранению из бинарника в ексель огромная просьба поделиться.
  10. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    MyNameNoName ну откройте любую типовую, там посмотрите. Что-то вроде
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
    ДвоичныеДанные = ПолучитьМакет("П4");
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    ...
    Книга = Эксель.WorkBooks.Open(ИмяВременногоФайла);
    MyNameNoName нравится это.

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