8.х Работа с COM-объектами

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Radiy311, 3 мар 2015.

  1. TopicStarter Overlay
    Radiy311
    Offline

    Radiy311

    Регистрация:
    19 сен 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Подскажите пожалуйста, как можно определить номер страницы, на которой находится определенная строка? Платформа 8.3. Открываю документ следующим образом:

    Код:
    &НаСервере
    Процедура ПрочитатьНаСервере()
         
        Если ТипЗнч(Объект.СсылкаНаХранилище.Хранилище) <> Тип("ДвоичныеДанные") Тогда
           ДвоичныеДанные = Объект.СсылкаНаХранилище.Хранилище.Получить();
        Иначе
           ДвоичныеДанные = Объект.СсылкаНаХранилище.Хранилище;
        КонецЕсли;
     
        файл1 = Новый Файл(КаталогВременныхФайлов() + Объект.НаименованиеФайла);
        Если Не Файл1.Существует() Тогда
            Попытка
                ДвоичныеДанные.Записать(КаталогВременныхФайлов() + Объект.НаименованиеФайла);
            Исключение
                Сообщить("Не удалось выгрузить файл для чтения.");
                Возврат;
            КонецПопытки;
        КонецЕсли;
     
        Попытка
            Word = Новый COMОбъект("Word.Application");
        Исключение
            Сообщить("Не удалось открыть объект, возможно на данном компьютере не установлен ""Microsoft Word""."); 
            Возврат;
        КонецПопытки;
        Word.Visible = Истина;
        Попытка
            Документ = Word.Documents.Open(КаталогВременныхФайлов() + Объект.НаименованиеФайла);
            Документ.Activate();
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
        Попытка
            Если ЗначениеЗаполнено(Объект.ЧастьСтрокиОстановы) Тогда
                 myRange = Документ.Content;
                 // Поиск текста для выделения
                 myRange.Find.Execute(Объект.ЧастьСтрокиОстановы, Истина);  
                 isFind = myRange.Find.Found;
                 Если isFind Тогда
                     // Выделения текста цветом
                     myRange.Font.ColorIndex = 3;
                     myRange.Find.Execute(Объект.ЧастьСтрокиОстановы, Истина);  
                     isFind = myRange.Find.Found;
                     Документ.Save();
                 КонецЕсли;          
            КонецЕсли;
        Исключение
        КонецПопытки;
     
        Документ.ActiveWindow.View.ReadingLayout = Истина;
     
        Если Объект.Страница <= Документ.ActiveWindow.ActivePane.Pages.Count Тогда
     
            WordЛист = Документ.ActiveWindow.ActivePane.Pages;
            WordЛист.Item(Объект.Страница).Rectangles(1).Range.Select();
         
            Word.Activate();
        Иначе
         
            Сообщить("Введенный номер страницы превышает количество страниц в книге", СтатусСообщения.Важное);
     
        КонецЕсли;
     
        Элементы.Прочитать.Доступность = Ложь;
         
    КонецПроцедуры

    Вот в этой строке "WordЛист.Item(Объект.Страница).Rectangles(1).Range.Select();" вместо "Объект.Страница", я хочу подставлять номер страницы, на которой находится строка "Объект.ЧастьСтрокиОстановы".
    Последнее редактирование модератором: 3 мар 2015

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