Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 1c 7.7 и OpenOffice
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Mikst
Здравствуйте. Нужно создать шаблоны в опен офисе, что бы в текстовый документ передавались значения (к примеру фамилия, имя и т.д.).
Вообщем нужен аналог ворда:
Word = Создатьобъект("Word.Application");
Word.Documents.Add(ИмяФайла);Doc = Word.ActiveDocument;
Word.Selection.Find.Execute("<Фамилия>", 0, 0, 0, 0, 0, -1, 0, 0,фамилия, 2);


Подскажите пожалуйста как это реализовать, может ссылку на какой то пример. А то уже весь гугл прошерстил не могу найти ничего подходящего.


 ! 

Правила, п. 5
 
logist
1С не работает с опенофисом.
logist
Хотя, я может и ошибся. Только не знаю наверняка, есть ли у 1С77 возможность работы с ОО, или это надо делать через какие-то расширения или другие объекты.

А вот книженцию "Useful Macro Information For OpenOffice" (русский перевод) можете скачать тут необходимо зарегистрироваться для просмотра ссылки
sava1
Цитата(logist @ 20.05.13, 12:47) необходимо зарегистрироваться для просмотра ссылки
1С не работает с опенофисом.

Наглое заявление.
Просто с костылями - необходимо зарегистрироваться для просмотра ссылки
Petre
Цитата(Mikst @ 20.05.13, 12:17) необходимо зарегистрироваться для просмотра ссылки
А то уже весь гугл прошерстил не могу найти ничего подходящего

Хм...
необходимо зарегистрироваться для просмотра ссылки
В основном материал по 1с8, но суть одна...
Mikst
Да вот много такого всякого материала я находил. И люди пишут что работает. А у меня почему то все время вываливаеться.

 ИмяЗакладки="ляляля";
    Текст=Док.getText();
    Контроллер=Док.CurrentController;
    Курсор=Контроллер.getViewCursor();
    Закладки=Док.getBookmarks();
    Закладка=Закладки.getByName(ИмяЗакладки);// вот в этом месте все время пишет "[automation bridge] : com.sun.star.container.NoSuchElementException:", типа объект такой не существует


Во всех предложенных выше вариантах пишется, что должно работать именно так. Может если кто встречался с таким, подскажите пожалуйста.
logist
Цитата(Mikst @ 21.05.13, 14:06) необходимо зарегистрироваться для просмотра ссылки
com.sun.star.container.NoSuchElementException:

необходимо зарегистрироваться для просмотра ссылки
Mikst
Цитата(logist @ 21.05.13, 14:18) необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки

Тут я был, но не смог разобраться (
Vofka
Цитата(Mikst @ 21.05.13, 14:06) необходимо зарегистрироваться для просмотра ссылки
Закладки=Док.getBookmarks();

А после этого в переменной Закладки что содержится?
Mikst
Цитата(Vofka @ 21.05.13, 14:29) необходимо зарегистрироваться для просмотра ссылки
А после этого в переменной Закладки что содержится?


В отладке пишет: Закладки = OLE
Petre
Это понятно. Можно получить количество элементов коллекции. Если их больше 0 - пройтись по каждому и получить их имена.
Mikst
Всем большое спасибо, у меня получилось!

Выкладываю полный текст обработки, может кому нибудь понадобиться.

Функция ПолучитьОбертку()
    ХТМЛ = СоздатьОбъект("htmlfile");
    ХТМЛ.Open("text/html");
    //<-- Подготовим нужные методы

    ХТМЛ.Write("<script type='text/javascript'>
    |var ХТМЛ;
    |ПолучитьЗначение=function(x,y){return x.constructor == Array ? x[y] : x};
    |УстановитьЗначение=function(x,y,z){x[y]=z};
    |РазмерМассива=function(x){return x.length};
    |УстановитьБулево=function(x){x.Value=Boolean(x.Value)};
    |Массив=function(){return new Array()};
    |</script>");
    Док=ХТМЛ.documentElement.document;

    Док.script.ХТМЛ=ХТМЛ;

    Возврат Док.script;
КонецФункции  


Функция ОпенОфис(Файл="")
    Перем Параметр;
    Это=ПолучитьОбертку();

    СервисМанагер=СоздатьОбъект("com.sun.star.ServiceManager");
    Обновлялка=СервисМанагер.createInstance("com.sun.star.reflection.CoreReflection");
    Проводник=СервисМанагер.createInstance("com.sun.star.ucb.FileContentProvider");
    УРЛ=Проводник.getFileURLFromSystemPath("",Файл);
    Сообщить(УРЛ);
    Массив=Это.Массив(0);
    Параметр=Это.Массив(0);
    
    
    Десктоп = СервисМанагер.createInstance("com.sun.star.frame.Desktop");

    Док = Десктоп.LoadComponentFromURL(УРЛ, "_blank", 0, Массив );  
    
    Replace = Док.CreateReplaceDescriptor();  
    Replace.SearchString  = "Заменяемая строка";
    Replace.ReplaceString = "Новая строка";
    Док.ReplaceAll(Replace);


КонецФункции

//*******************************************

Процедура Сформировать()
    Перем Имя,Путь;
    Если ФС.ВыбратьФайл(0,Имя,Путь,"","Файлы офиса|*.ods;*.xls;*.ott;*.odt;*.doc","*")=0 Тогда
        Возврат;
    КонецЕсли;
    ОпенОфис(Путь+Имя);
КонецПроцедуры
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.