Вывожу двоичные данные в макет word.
Данные берутся из внешней обработки, из списка сотрудников.
Вопрос: как вывести по порядку данные нескольких сотрудников в макет? При этом при каждой обработке количество сотрудников может быть разные. То есть заранее не прописать количество пунктов в макете.
Часть макета во вложении.
---
! Решение
Данные помещаются в ТЗ и оттуда выводятся на документ. В документе добавлена только одна закладка ( ТекстСтрокиПриказа ). Остальное выводится программно. Можно конечно было и её выводить программно, но надо было в документе отметить необходимое место, откуда добавлять закладки.
Код:

```1c
    Для Каждого Параметр Из СтруктураПараметров.Значение Цикл
    ТекстСтрокиПриказа = Строка(Параметр.Номер) + ". С ";
    СсылкаМакет.Bookmarks("ТекстСтрокиПриказа").Select();
    СсылкаМакет.Application.Selection.TypeText(ТекстСтрокиПриказа);

    СсылкаМакет.Bookmarks.Add("ДатаНачала", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ДатаНачала").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаНачала);

    СсылкаМакет.Bookmarks.Add("по", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("по").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(" по ");

    СсылкаМакет.Bookmarks.Add("ДатаОкончания", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ДатаОкончания").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаОкончания);

    СсылкаМакет.Bookmarks.Add("поручить", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("поручить").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(" поручить ");

    СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникДолжностьдп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещающийСотрудникДолжностьдп").Select();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникДолжностьдп + " ");

    СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникФИОдп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещающийСотрудникФИОдп").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникФИОдп);

    СсылкаМакет.Bookmarks.Add("исполнениеобязанностей", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("исполнениеобязанностей").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(" исполнение обязанностей ");

    СсылкаМакет.Bookmarks.Add("ЗамещаемыйСотрудникДолжностьрп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещаемыйСотрудникДолжностьрп").Select();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещаемыйСотрудникДолжностьрп + " в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором." + Символы.ПС);

    СсылкаМакет.Bookmarks.Add("ТекстСтрокиПриказа", Word.Application.Selection.Range());
    КонецЦикла;
```

_____

Итог:
1. С 18.03.2020 по 20.03.2020 поручить ведущему инженеру Иванову Ивану Ивановичу исполнение обязанностей начальника отдела в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором.
2. С 25.03.2020 по 27.03.2020 поручить инженеру Петрову Петру Петровичу исполнение обязанностей начальника отдела в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором.

Всем спасибо за подсказки.
---
Можно вот так:

```1c
    Table = Word.ActiveDocument.Tables(1);
    Для Каждого Стр Из СсылкаНаОбъект.Услуги Цикл
    Row = Table.Rows.Add();
    Row.Cells(1).Range.Text = Стр.НомерСтроки;
    КонецЦикла;
```
---
у меня не ссылка на объект, а ТЗ.
И по вашему коду можно вывести только одну слово/цифру. А мне нужно вывести текст на несколько строк в разных шрифтах.
---
Может быть использовать таблицу?
---
вот тоже советуют в профильном форуме таблицу использовать. Но не могу понять - каким образом?
---
Может накопить эти несколько строк в переменной (вместе с переводами строк), затем вывести и применить список (или вместо списка добавить нумерацию прямо в текст и отформатировать абзац с выступом)?
---
я их накапливаю в ТаблицуЗначений. И вот потом... с ними надо что-то сделать)))
---
В этом же цикле создавайте готовый текст по каждой строке таблицы значений и накапливайте его в текстовую переменную, разделяя абзацы Символы.ПС. ТекстПриказа =ТекстПриказа +<готовый текст текущей строки>+Символы.ПС. После цикла в переменной будет готовый текст, просто выведете разом переменную ТекстПриказа.
---
Если бы я заранее знал, где вставлять Символы ПС, то сделал бы это текстовым документом и не мучался. В данном случае будут подставляться значения разной длины, посему подставлять перенос строки уже не получится.
---
Не совсем понятно каким образом Ваш текст попадает в ворд, можно подробнее? У вас конвертируется табличный документ, открывается шаблон и в нём делаются средствами ворда замены шаблонных блоков текста (или полей) на Ваши, или Вы файл делаете в ворде программно с нуля целиком?
---
вы видите значения в квадратных скобках в прикреплённом скане? Вот эти значения и берутся из ТЗ.
У меня первый вариант - "делаются средствами ворда замены шаблонных блоков текста".
---
Тут как минимум 3 варианта:

1. Сделайте в шаблоне так: 1. [ТекстСтрокиПриказа] Сформируйте в модуле сразу большую готовую длинную строку по всем сотрудникам с энтерами и вставьте-замените [ТекстСтрокиПриказа] сразу целиком. Символы.ПС заставят Word автоматически сделать следующие элементы списка (2,3,4,...). Недостаток - шаблон строки будет храниться в коде, а не в шаблоне.
2. Заверните строку приказа в другие скобки, например 1. {C [] по [] приказываю....} , найдите текст в скобках поиском по шаблону \{*\} (Wildcards - четвертый параметр .Execute - Истина ( https://docs.microsoft.com/ru-ru/office/vba/api/word.find.execute ) , вытащите найденный текст через Selection, а дальше - накапливайте и заменяйте через СтрЗаменить в локальной переменной циклом как в п.1., сотрите Selection и в это же место вставьте накопленную строку.
3. Сделайте в конце строки приказа параметр [СледующийЭлемент]. По необходимости заменяйте его Enter + ещё одну полную строку с шаблоном. Недостаток - как в п.1.
---
у меня туго с vba. В целом понятно, но текст у меня всё равно остаётся одинаковый. А мне нужно, чтобы часть слов была выделена ЖИРНЫМ шрифтом. Смысл мне накапливать всё в одну переменную, если я с таким успехом мог всё поместить в текст в шаблоне по отдельности?
---
Вот так получилось записать строку в переменную и завернуть в структуру.
______________________
  Для Каждого СтрокаТЧ Из ЗамещениеСотрудников Цикл
   ДанныеЗамещающихСотрудниковВТаблицуЗначений = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СтрокаТЧ.ЗамещающийСотрудникФИО), "Должность", ДокОбъект.ДатаДокумента);
   Для Каждого ЗамещающийСотрудник Из ДанныеЗамещающихСотрудниковВТаблицуЗначений Цикл
    ЗамещающийСотрудникДолжность = ЗамещающийСотрудник.Должность;
    ЗамещающийСотрудникФИО = ЗамещающийСотрудник.Сотрудник;
   КонецЦикла;

   ЗамещающийСотрудникДолжностьдп = ПадежП(ЗамещающийСотрудникДолжность, 3, Неопределено);
   ЗамещающийСотрудникФИОдп = Неопределено;
   ФизическиеЛицаЗарплатаКадры.Просклонять(Строка(ЗамещающийСотрудникФИО), 3, ЗамещающийСотрудникФИОдп, ЗамещающийСотрудникФИО.ФизическоеЛицо.Пол, ЗамещающийСотрудникФИО.ФизическоеЛицо);
   Номер = 1;
   ДатаНачала = ?(СтрокаТЧ.ДатаНачала = Неопределено, "___________", СтрокаТЧ.ДатаНачала);
   ДатаОкончания = ?(СтрокаТЧ.ДатаОкончания = Неопределено, "___________", СтрокаТЧ.ДатаОкончания);
   ЗамещающийСотрудникДолжностьдп = ?(ЗамещающийСотрудникДолжностьдп = Неопределено, "_________________________ (должность)", ЗамещающийСотрудникДолжностьдп);
   ЗамещающийСотрудникФИОдп = ?(ЗамещающийСотрудникФИОдп = Неопределено, "_______________________________________ (ФИО)", ЗамещающийСотрудникФИОдп);
   ЗамещаемыйСотрудникДолжностьрп = ?(СтруктураВсегоДокумента.ТекстЗамещаемыйСотрудникДолжностьрп = Неопределено, "_________________________ (должность)", СтруктураВсегоДокумента.ТекстЗамещаемыйСотрудникДолжностьрп);

   ТекстСтрокиПриказа = Номер + ". С" + ДатаНачала + " по " + ДатаОкончания + " поручить " + ЗамещающийСотрудникДолжностьдп + ЗамещающийСотрудникФИОдп
   + " исполнение обязанностей " + ЗамещаемыйСотрудникДолжностьрп + " в течение установленной продолжительности рабочего дня наряду с работой, определеённой трудовым договором." + Символы.ПС;

   СтруктураВсегоДокумента.Вставить("ТекстСтрокиПриказа" + Номер, ТекстСтрокиПриказа);
  КонецЦикла;
_______________________
А дальше не могу сообразить. Вроде же так надо делать:
________
            Замена = ШаблонВорд.Content.Find;
            Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2);
________
Но. Как мне весь текст отформатировать и нужные слова выделить жирным шрифтом, пока не могу сообразить.
---
Я тоже не силен в VBA. Если есть список нужных слов, то можно их сделать жирными той же заменой, добавив
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Bold = True

        .Text = "слово"
        .Replacement.Text = ""

и установив в Find.Execute девятый параметр в True, но похоже проблему уже решили другим способом.
---
не понял суть задачи, но было 1 раз необходимо было в приказ вывести список сотрудников хотя в шаблоне ворда это был 1 параметр, вышел из ситуации заменой стрЗаменить("[ФиоСотрудника]", СтрСоединить(массивФио, ","))
---
Пока получилось вот так:

```1c
    Для Каждого Параметр Из СтруктураПараметров.Значение Цикл
    ТекстСтрокиПриказа = Строка(Параметр.Номер) + ". С [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определеённой трудовым договором." + Символы.ПС;
    СсылкаМакет.Bookmarks("ТекстСтрокиПриказа").Select();
    СсылкаМакет.Application.Selection.TypeText(ТекстСтрокиПриказа);
    СсылкаМакет.Bookmarks.Add("ДатаНачала", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ДатаНачала").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаНачала);
    СсылкаМакет.Bookmarks.Add("ДатаОкончания", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ДатаОкончания").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаОкончания);
    СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникДолжностьдп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещающийСотрудникДолжностьдп").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникДолжностьдп);
    СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникФИОдп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещающийСотрудникФИОдп").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникФИОдп);
    СсылкаМакет.Bookmarks.Add("ЗамещаемыйСотрудникДолжностьрп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещаемыйСотрудникДолжностьрп").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещаемыйСотрудникДолжностьрп);

    КонецЦикла;
```

Но при двух строках в ТЗ, выходит вот такая каша(20.03.2020 и Иванову Ивану Ивановичу - в документе выделено полужирным шрифтом):
_________________________
1. С [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определеённой трудовым договором.
17.03.202020.03.2020инженеру Иванову Ивану Ивановичуначальника отдела
________________________
Что ещё поправить можно?
---
! Решение
Данные помещаются в ТЗ и оттуда выводятся на документ. В документе добавлена только одна закладка ( ТекстСтрокиПриказа ). Остальное выводится программно. Можно конечно было и её выводить программно, но надо было в документе отметить необходимое место, откуда добавлять закладки.
Код:

```1c
    Для Каждого Параметр Из СтруктураПараметров.Значение Цикл
    ТекстСтрокиПриказа = Строка(Параметр.Номер) + ". С ";
    СсылкаМакет.Bookmarks("ТекстСтрокиПриказа").Select();
    СсылкаМакет.Application.Selection.TypeText(ТекстСтрокиПриказа);

    СсылкаМакет.Bookmarks.Add("ДатаНачала", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ДатаНачала").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаНачала);

    СсылкаМакет.Bookmarks.Add("по", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("по").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(" по ");

    СсылкаМакет.Bookmarks.Add("ДатаОкончания", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ДатаОкончания").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаОкончания);

    СсылкаМакет.Bookmarks.Add("поручить", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("поручить").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(" поручить ");

    СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникДолжностьдп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещающийСотрудникДолжностьдп").Select();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникДолжностьдп + " ");

    СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникФИОдп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещающийСотрудникФИОдп").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникФИОдп);

    СсылкаМакет.Bookmarks.Add("исполнениеобязанностей", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("исполнениеобязанностей").Select();
    СсылкаМакет.Application.Selection.BoldRun();
    СсылкаМакет.Application.Selection.TypeText(" исполнение обязанностей ");

    СсылкаМакет.Bookmarks.Add("ЗамещаемыйСотрудникДолжностьрп", Word.Application.Selection.Range());
    СсылкаМакет.Bookmarks("ЗамещаемыйСотрудникДолжностьрп").Select();
    СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещаемыйСотрудникДолжностьрп + " в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором." + Символы.ПС);

    СсылкаМакет.Bookmarks.Add("ТекстСтрокиПриказа", Word.Application.Selection.Range());
    КонецЦикла;
```

_____

Итог:
1. С 18.03.2020 по 20.03.2020 поручить ведущему инженеру Иванову Ивану Ивановичу исполнение обязанностей начальника отдела в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором.
2. С 25.03.2020 по 27.03.2020 поручить инженеру Петрову Петру Петровичу исполнение обязанностей начальника отдела в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором.

Всем спасибо за подсказки.