Добрый день!
Помогите пожалуйста задачей. Первый раз создаю макет HTML документ. В интернете не много описано как с ним работать.

Я создала регистр сведений, общий модуль, общий макет HTML и в справочнике поле HTML, в которое должны выводиться данные из HTML макета.
Нужно в общем модуле написать функцию, которая из регистра сведений возьмёт данные и запишет их в макет. А потом из макета в поле HTML выводились данные к определённой модели оборудования в справочнике.
Пока написала в общем модуле вот так:

```1c
    Функция СформироватьДокумент () Экспорт
    Макет = ПолучитьМакет("МакетОтчётПоИнвентаризации");
    ТабДок = новый ТабличныйДокумент;

    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    | ПараметрыОборудования.ЗначениеПараметров
    |ИЗ
    | РегистрСведений.ПараметрыОборудования КАК ПараметрыОборудования";
    РезультатЗапроса = Запрос.Выполнить();

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

Можете подсказать в правильном ли направлении двигаюсь?
---
```1c
    СтрокиТаблицыHTML = ";
    ШаблонСтрокиТаблицыHTML = "<TR><TD>%1</TD><TD>%2</TD></TR>" + Символы.ПС;
    Пока Выборка.Следующий() Цикл
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + СтрШаблон(ШаблонСтрокиТаблицыHTML, Выборка.Оборудование, Выборка.Характеристика);
    КонецЦикла;
```
---
Спасибо большое! Вы очень помогли.
В итоге сделала так:

```1c
    СтрокиТаблицыHTML = "<!DO CTYPE html PUBLIC ";
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<ht ml><body>";
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<p>Отчёт по инвентаризации</p>";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<table cellspacing="0" cellpadding="5" width="100%" border="1"><tbody><tr><td valign="top" width="200">";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<p align="center">Оборудование</p></td>";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<td valign="top">";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML +"<p align="center">Характеристика</p></td></tr></tbody>";
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<tbody>";

    ШаблонСтрокиТаблицыHTML = "<TR><TD>%1</TD><TD>%2</TD></TR>" + Символы.ПС;

    Пока Выборка.Следующий() Цикл
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтрокиТаблицыHTML, Выборка.Оборудование, Выборка.ЗначениеПараметров);
    КонецЦикла;

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "</tbody></body></html>";

    Возврат СтрокиТаблицыHTML;
```
---
макет - это макет, шаблон, или образец - как хотите, на основании которого вы выводите данные в свою форму, для пользователя.
Макет, программно изменить нельзя, это предопределенный тип данных.

В макете, можно оставить какие-либо переменные, или символьные метки, в нужных местах, и при выводе информации, получив этот макет, вы метки можете подменить своими данными, и на выходе вписать в него, что-либо.

HTML - это по сути, такой специальный язык, для создания интернет страниц. В основе, это обычный текст..но в котором присутствуют служебный последовательности символов, теги, по которым браузер уже формирует внешний вид странички.
Работа с ним, в принципе как с обычным текстом.
Заделали макет, и в нужном месте странички, вставили последовательность уникальных символов, которые вы потом просто используя функции замены, подмените на нужный текст.

Данные, в регистре сведений, это видимо, дополнительные данные. Только что там у вас за значения параметров - непонятно. Они не связаны никак с объектом ? Вам просто нужно все что там есть, вывести ? В этом месте с задачей становится непонятно.
---
Спасибо большое за ответ.
В регистре находятся характеристики оборудования. Например производительность ОС или количество жестких дисков.
Я пытаюсь взять эти значения и записать их в макет, который потом выводится в справочник через HTML поле...
Значит мне просто придётся подставлять переменные в таблицу HTML,заготовленную заранее?
---
А каким образом можно связать тогда данные и строки в таблице HTML?
У меня на данный момент оформлено так:

```1c
    <HT ML><HEAD><TITLE>Отчёт по инвентаризации</TITLE>
    <MET A content="text/html; charset=utf-8" http-equiv=Content-Type></META>
    <MET A name=GENERATOR content="MSHTML 11.00.10570.1001"></META><BA SE href="/redirect.php?url=djhjb25maWc6Ly9iZDliZDQ5Yi1jMjM2LTRkMzgtOGZlZi01NWU4MmI0Mjg4YmQvbWRvYmplY3QvaWRiZGM0OTIzMi1mMjhjLTQwOTgtOWFiNS1kOTk1ZWJhNzcyY2QvOGViNGZhZDEtMWZhNi00MDNlLTk3MGYtMmMxMmRiYjQzZTIz"></BASE></HEAD>
    <BODY>
    <TABLE cellSpacing=0 cellPadding=5 width="100%" border=1>
    <TBODY>
    <TR>
    <TD vAlign=top width=200>
    <P align=center>Оборудование</P></TD>
    <TD vAlign=top>
    <P align=center>Характеристика</P></TD></TR></TBODY>
    <TBODY>
    <TR>
    <TD>f</TD>
    <TD>f</TD></TR></TBODY></TABLE>[*]</LINK>
    <MET A name=GENERATOR content="MSHTML 11.00.10570.1001"></META>
    <P></P></BODY></HTML>
```

Получается есть таблица с двумя колонками. И вот для теста я сделала ещё строку. Как можно туда подставить значение?
---
Я в этом деле не настоящий сварщик, но решение "в лоб" вижу так:
Вам просто нужно сгенерировать нужный текст HTML для установки его в поле HTML.
Ваш макет описывает простейшую табличку из двух колонок "Оборудование" и "Характеристика", куда в качестве заглушки сейчас выводится одна строка "f f" с помощью этого участка кода, описывающего одну строку таблицы:

```1c
    <TR>
    <TD>f</TD>
    <TD>f</TD></TR>
```

Я бы:
1) в макете заменил его на "<СтрокиОписанияОборудования>"
2) в цикле по данным регистра сгенерил блок текста для всех ячеек вида

```1c
    <TR><TD>Оборудование1</TD><TD>Характеристика1</TD></TR>
    <TR><TD>Оборудование2</TD><TD>Характеристика2</TD></TR>
    ............................................................................................
    <TR><TD>ОборудованиеN</TD><TD>ХарактеристикаN</TD></TR>
```

3) получил текст из макета и заменил в нем через СтрЗаменить() строку "<СтрокиОписанияОборудования>" на текст из 2)
4) ну и установил результат в поле HTML
Может, более правильно и красиво будет создать из макета ДокументHTML, спозиционироваться куда надо и втыкать туда строки таблицы объектной техникой. Но это сложнее тут расписать :)
---
Спасибо большое. Я попробую сейчас.
А как лучше описать цикл?
Пока СтрокиОписанияОборудования <>0 Цикл
<TR><TD>Оборудование1</TD><TD>Характеристика1</TD></TR>
<TR><TD>Оборудование2</TD><TD>Характеристика2</TD></TR>
............................................................................................
<TR><TD>ОборудованиеN</TD><TD>ХарактеристикаN</TD></TR>
КонецЦикла

Мне нужно показать, что эти строки берутся именно из общего макета?
---
Я вот так думала, а потом цикл сделать

```1c
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Выборка = РезультатЗапроса.Выбрать();
    ТекстHTML = Новый ТекстовыйДокумент;
    ОтчётHTML.МакетОтчётПоИнвентаризации.УстановитьТекст(ТекстHTML.ПолучитьТекст());
```
---
Нет. Вы не совсем поняли. HTML - это обычный текст. Макет просто его хранит. Больше никакого дополнительного сервиса макет HTML не предоставляет. Я, во всяком случае, про это ничего не знаю. Тут может быть путаница в терминологии с макетами табличных документов, которые подразумевают определенную идеологию их использования.
У вас два пути сгенерировать итоговый HTML - простыми операциями со строками над текстом из макета и используя объектную модель HTML.
---
Спасибо, очень надеюсь что разберусь. Пока сама не совсем понимаю как с этим HTML документом работать.
---
О! Вычитал, что ПолучитьМакет() для html-макета возвращает объект ОболочкаHTMLДокумента.
А у него есть методы как ПолучитьТекст(), который возвращает строку с текстом HTML, в которую вы вставляете чего нужно и потом устанавливаете в поле HTML, так и метод ПолучитьДокументHTML(), который возвращает ДокументHTML через который тоже можно вставить нужные элементы, но уже в виде объектов (и из которого тоже потом можно получить итоговый текст HTML).
---
Отлично!
Большое спасибо.
Я сейчас делаю, предложенный вами способ, правда с циклом беда получается.
---
```1c
    СтрокиТаблицыHTML = ";
    ШаблонСтрокиТаблицыHTML = "<TR><TD>%1</TD><TD>%2</TD></TR>" + Символы.ПС;
    Пока Выборка.Следующий() Цикл
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + СтрШаблон(ШаблонСтрокиТаблицыHTML, Выборка.Оборудование, Выборка.Характеристика);
    КонецЦикла;
```
---
Спасибо большое! Вы очень помогли.
В итоге сделала так:

```1c
    СтрокиТаблицыHTML = "<!DO CTYPE html PUBLIC ";
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<ht ml><body>";
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<p>Отчёт по инвентаризации</p>";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<table cellspacing="0" cellpadding="5" width="100%" border="1"><tbody><tr><td valign="top" width="200">";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<p align="center">Оборудование</p></td>";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<td valign="top">";

    СтрокиТаблицыHTML = СтрокиТаблицыHTML +"<p align="center">Характеристика</p></td></tr></tbody>";
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "<tbody>";

    ШаблонСтрокиТаблицыHTML = "<TR><TD>%1</TD><TD>%2</TD></TR>" + Символы.ПС;

    Пока Выборка.Следующий() Цикл
    СтрокиТаблицыHTML = СтрокиТаблицыHTML + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтрокиТаблицыHTML, Выборка.Оборудование, Выборка.ЗначениеПараметров);
    КонецЦикла;

    СтрокиТаблицыHTML = СтрокиТаблицыHTML + "</tbody></body></html>";

    Возврат СтрокиТаблицыHTML;
```
---
Зачем весь HTML хардкодить? "Рыбу" имело смысл оставить в макете.
Просто заменить в макете вывод строки на какой-нить "<СтрокиТаблицы>"
Тогда было бы так:

```1c
    МакетHTML = ПолучитьМакет("МакетHTML");
    ТекстHTML = МакетHTML.ПолучитьТекст();
    ТекстHTML = СтрЗаменить(ТекстHTML, "<СтрокиТаблицы>", СтрокиТаблицыHTML);
```