8.х макеты и activex

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем dud_ivan, 14 дек 2009.

  1. TopicStarter Overlay
    dud_ivan
    Offline

    dud_ivan

    Регистрация:
    7 мар 2007
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток.
    Расскажите, кто имеет опыт, или подскажите где можно почитать о методах работы с элементами ActiveX. На макете существует объект Word, Таблица>Рисунок>Вставить объект>Создать из файла>Далее выбираю свой ранее созданный файл Word, проблема в том, что файл периодически изменяется, и если он изменяется, то объект в макете естественно не изменяется. Подскажите как можно при формировании печатной формы заставить этот объект открыть нужный файл и вывести его на печать. Дошел только до:

    Если тип = "Размещение" Тогда
    ОбластьКолонка = ТабДокумент.Область("C19");
    ОбластьКолонка.ШиринаКолонки = ОбластьКолонка.ШиринаКолонки + 15;
    Область = Макет.ПолучитьОбласть("МиниПрайс");
    Область.Рисунки.D1.Documents.Open("c:\test.doc");
    ТабДокумент.Вывести(Область);
    КонецЕсли;

    Но это всё дело выпадает в ошибку.

    Попробовал обратится так:

    Если тип = "Размещение" Тогда
    ОбластьКолонка = ТабДокумент.Область("C19");
    ОбластьКолонка.ШиринаКолонки = ОбластьКолонка.ШиринаКолонки + 15;
    Область = Макет.ПолучитьОбласть("МиниПрайс");
    ДокН = Новый COMОбъект("word.application");
    ДокН.Documents.Open("c:\test.doc");
    Док = Область.Рисунки.D1.Объект;
    Док = ДокН;
    ТабДокумент.Вывести(Область);
    ДокН.Application.Quit(false);
    КонецЕсли;

    В ошибку не вылилось, но изменения не передались...
  2. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Я обычно делаю по-другому: создаешь шаблон в ворде (Сохранить как - Шаблон Word). И его можно передать как параметр в метод "Open". А потом пробежать его метобом "найти и заменить". Но если в макете есть тасличная часть - то это вряд ли подойдет.
  3. Лесной Лис
    Offline

    Лесной Лис

    Регистрация:
    27 июн 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Вопрос надо поставить по другому: умеет ли ActiveX в режиме Предприятия открывать файл,
    если да, то где найти пример.
    Мучаюсь этой же проблемой, не работает метод Open("c:\test.doc") в объекте ActiveX.
    В макросе MS Word 2003 работает, из 1С Предприятия говорит нет мол такого метода.
  4. DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Вам именно надо чтобы Ворд документ открывался? Загрузить в макет вордовский документ и там править не пойдет?

    Добавляете макет, в виде Актив документа. грузите вордовский файл. в вордовском файле делаете "метки" вот так "<Организация>"(без кавычек соответственно)
    Потом при нажатие кнопки исполняется код:
    "
    Договор = ПолучитьМакет("Договор");

    // Получить объект из макета.
    MSWord = Договор.Получить();


    Попытка
    Документ = MSWord.Application.Documents(1);
    Документ.Activate();

    Замена = Документ.Content.Find;

    Замена.Execute("<Организация>", , , , , , , , ,Организация.НаименованиеПолное); // Организация.НаименованиеПолоное - Это на форме реквизит.
    <Организация> Та самая метка в Ворде.

    Замена = Документ.Content.Find;

    MSWord.Application.Visible = Истина;
    MSWord.Activate();
    Исключение

    // Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
    Сообщить(ОписаниеОшибки());
    MSWord.Application.Quit();

    "
    Вот.
  5. TopicStarter Overlay
    dud_ivan
    Offline

    dud_ivan

    Регистрация:
    7 мар 2007
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    (1) Шаблон не подойдёт, вордовский файл изменяется пользователями
    (2) Метод Open работает нормально, см.код


    (3)Тоже не вариант соответтвенно.

    А можно в вордовский документ перенести табличный документ??
  6. DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Процедура Сформировать()
    //Создание объекта Word документ
    ДокВорд=СоздатьОбъект("Word.Application");
    НовыйДок=ДокВорд.Documents;
    //Открітие файла
    Док=НовыйДок.Add("d:\Тест.doc");
    //Заполнение текстового поля
    Док.FormFields("ТекстовоеПоле1").Result =СокрЛП(Текст1);
    //Вставка текста на место закладки
    Ставим=Док.Bookmarks("ПростоЗакладка1").Range();
    Ставим.InsertAfter(СокрЛП(Текст2));

    //Заполнение обїекта типа флажок
    Док.FormFields("Флажок1").CheckBox.Value = 1;
    //Сохранение
    Док.SaveAs("d:\Тест1.doc",0);
    //Выход
    Док.Application.Quit();
    КонецПроцедуры

    Попробуй как то так. через ком объект, параметры к нему в инете поищи. Можно так же как в макете Закладками, якорями делать.
  7. TopicStarter Overlay
    dud_ivan
    Offline

    dud_ivan

    Регистрация:
    7 мар 2007
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Нет, в смысле тот табличный документ который мы формируем из макета, мне не надо переносить данные в макет ворд, я имел в виду, чтобы таблицу, полученную из макета 1с, перенести в ворд...
  8. DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Ну дак и тащите после того как сформируется таб док.
    Тоесть надо создать ворд док и туда закинуть данные?
    И именно с макета? в макет данные попадают путем запросов, значит надо написать запрос и отправить полученые данные в ворд. код такой же как выше привел можно использовать. Думаю так.
  9. TopicStarter Overlay
    dud_ivan
    Offline

    dud_ivan

    Регистрация:
    7 мар 2007
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Нет, я хочу уже сформированный из областей макета документ отправить в ворд как таблицу, а не полученные данные в ворд.
    Я объясню почему не могу использовать шаблон ворд.
    Мне необходимо к печатной форме счета добавить некоторую информацию (документ ворд), которая будет изменяться пользователем, поэтому шаблон ворд отпадает, т.к. пользователь может косых там напороть. По-этому я хочу сформировать печатню форму через макет, а доп. информацию добавлять из файла, либо наоборот.
  10. DikSer
    Offline

    DikSer Опытный в 1С

    Регистрация:
    27 сен 2009
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Тоесть юзер открывает макет(печатную форму) что то туда вносит, и потом эти данные уходят в ворд?
    Если так то может проще всё таки сделать обработку. там какие то данные заполнять создать как макет, и просто скидывать в ворд и в макет?... Если честно не совсем понимаю.=)
  11. TopicStarter Overlay
    dud_ivan
    Offline

    dud_ivan

    Регистрация:
    7 мар 2007
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    В общем у меня задача добавить мини-прайс в счет на оплату, мини-прайс представляет из себя файл ворд, который пользователь может изменять, при формировании печатной формы эту инфу необходимо добавить.
  12. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Добрый день, а можно без шаблона в 1С создать вордовский документ на основании макета таб документа?

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