Надо написать Процедуру, которая форматирует все абзацы, которые содержат строку поиска.
В процедуру передаются 2 параметра: Alignment (выравнивание шрифта) и размер шрифта абзаца.
Выравнивание (Alignment) работает на ура, а вот переустановить размер шрифта в абзаце не получается. Помогите с установкой размера шрифта абзаца.
Причем в отладчике вижу, что значение Font.Size меняется на нужное мне, но в самом документе реально размер не меняется.

Вот сама процедура и пример ее вызова:

```1c
    Процедура Word_УстановитьФорматАбзацевСодержащихСтрокуПоиска(WordApplication,СтрокаПоиска,Alignment,FontSize=-1)Экспорт

    Range=WordApplication.ActiveDocument.Range(); // по умолчанию весь документ
    Find=Range.Find;
    Find.Text=СтрокаПоиска;
    Find.Execute();
    Пока Find.Found Цикл
    рДиапазонСтроки = WordApplication.ActiveDocument.Range(Range.Start,Range.End);

    Если НЕ FontSize=-1 Тогда
    рДиапазонСтроки.ParagraphFormat.Style.Font.Size = FontSize; //ВОТ ЭТО СТРОКА НЕ РАБОТАЕТ
    КонецЕсли;

    Paragraphs = рДиапазонСтроки.Paragraphs;
    Paragraphs.Format.Alignment = Alignment;
    Find.Execute();
    КонецЦикла;
    КонецПроцедуры

    //....

    СсылкаМакет = ПолучитьМакет(ИмяМакета);
    Word = СсылкаМакет.Получить();
    Word.Application.Visible=1;
    Word_УстановитьФорматАбзацевСодержащихСтрокуПоиска(Word.Application,"Заработная плата",3,11);
    Word.Fields.UpDate();
```
---
RailMen, да.

```1c
    Selection.HomeKey(6)
```
---
В общем случае область у объекта Find.range.Start - Find.range.End не покрывает абзац(Paragraph)
и соответственно реквизит Find.Paragraphs не содержит то что ты ожидаешь.
Посмотри что есть Find.Paragraps.count,Find.Paragraps.Item(1).Range и сравни с Find.Range(Start-End).
Скорее всего тебе надо сначала собрать все абзацы ActiveDocument.Paragraphs, а потом в цикле перебора найденного Find.Execute определять в каком абзаце находится найденный фрагмент

```1c
    $pp = $wo.ActiveDocument.Paragraphs
    foreach ($pitem in $pp ){
    if (($pitem.range.start -le $find.range.start) -and ($pitem.range.end -ge $finde.range.end)) {
    $paraggaphrange= $pitem.range
    break
    }
    }
    # $paraggaphrange будет искомый абзац
```
---
teller, идею понял. Буду пробовать. Как обычно результат выложу тут.
---
teller, возможно ли код на языке 1С написать?
---
RailMen, а вот это вам не поможет?
http://www.askit.ru/custom/vba_office/m10/10_05_02_word_selection_members.htm

https://helpf.pro/help/view/5509.html
---
А если попробовать так..

```1c
    Пока Find.Found Цикл
    рДиапазонСтроки = WordApplication.ActiveDocument.Range(Range.Start,Range.End);
    рДиапазонСтроки.Select();//Выделяем найденную область

    Если НЕ FontSize=-1 Тогда
    WordApplication.Selection.Font.Size = FontSize;//меняем размер шрифта в выделенном фрагменте

    КонецЕсли;

    КонецЦикла;
```
---
vovan_victory, так пробовал - не помогает.
---
Range Properties (Word) (https://msdn.microsoft.com/EN-US/library/office/dn353042.aspx)
Font Properties (Word) (https://msdn.microsoft.com/EN-US/library/office/dn320660.aspx)

```1c
    Dim rngTemp As Range

    Set rngTemp = ActiveDocument.Range(Start:=0, End:=0)
    With rngTemp
    .InsertBefore "Company Report"
    .Font.Name = "Arial"
    .Font.Size = 24
    .InsertParagraphAfter
    End With

    ActiveDocument.PrintOut
```

```1c
    $wo = new-object -comobject "Word.Application"
    $wo |get-member
    $wo.Documents.Open( "test.docx")
    $rng = $wo.ActiveDocument.Range(0, 10)
    $rng.font.size=24
    $wo.ActiveDocument.Save()
    $wo.quit()
```

ParagraphFormat.Style Property (Word)- To set this property, specify the local name of the style, an integer, a WdBuiltinStyle constant, or an object that represents the style.
---
Путем проб и ошибок вымучена следующая процедура, которая базируется на коде antz (из его обработки)

```1c
    Процедура Word_УстановитьФорматАбзацевСодержащихСтрокуПоиска(WordApplication,СтрокаПоиска,Alignment=-1,FontSize=-1)Экспорт

    WordApplication.Selection.HomeKey(6, 0); //курсор в начало документа

    Find = WordApplication.Selection.Find;

    Find.ClearFormatting(); //Сбросим форматирование из предыдущих операций поиска.
    Find.Replacement.ClearFormatting();

    Find.Text = СтрокаПоиска;
    Find.Forward = Истина;
    Find.Wrap = 1;
    Find.Execute();
    Selection = Find.Application.Selection;
    Selection.MoveUp(4);
    Selection.MoveDown(4, 1, 1);

    Если Selection.Font.Size <> FontSize и FontSize<>-1 Тогда
    Selection.Font.Size = FontSize;
    КонецЕсли;

    Если Selection.ParagraphFormat.Alignment <> Alignment и Alignment<>-1 Тогда
    Selection.ParagraphFormat.Alignment = Alignment;
    КонецЕсли;

    Selection.EndOf();
    Find.Execute();
    Selection = Find.Application.Selection;
    Selection.MoveUp(4);
    Selection.MoveDown(4, 1, 1);

    Find.ClearFormatting(); //Сбросим форматирование из предыдущих операций поиска.
    Find.Replacement.ClearFormatting();

    КонецПроцедуры
```
---
И тут снова такой я :)
---
antz, твой код работает, если его вызвать 1 раз. При повторном вызове этого кода для ДРУГОЙ строки поиска не работает. Может надо после первого поиска корртку надо возвратить в начало документа?
---
RailMen, да.

```1c
    Selection.HomeKey(6)
```
---
antz, да, на 2 секунды ты меня опередил ))) Шустрый какой.

Возможно по коду и не очень оптимально. Зато работает.

Ты получаешь 12 попугаев ) Это тенденция.
---
RailMen,