Всем привет, помогите новичку..
Есть УФ, внешняя обработка, в ней форма (ТЗ+ текстовое поле с сылкой на документ)+ макет, пытаюсь вывести все на печать. (в макете секция Шапка с ячейкой Заполнение-Параметр, а параметр текстовое поле.)

```1c
    &НаСервере
    Функция ПолучитьМакетНаСервере()
    Возврат РеквизитФормыВЗначение("Макет").ПолучитьМакет("Макет");
    КонецФункции

    &НаКлиенте
    Процедура Печать(Команда)
    //ПечатьНаСервере();
    ТабличныйДокумент = Новый ТабличныйДокумент; //Создаем табличный документ
    Макет = ПолучитьМакетНаСервере();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    ТабличныйДокумент.Показать(Строка(ТО.Ссылка));

    КонецПроцедуры
```

Выдает ошибку Недопустимое значение параметра 1, РеквизитФормыВЗначение должен иметь объект, непойму у меня он какой?? Подскажите как исправить??
Даже если написать РеквизитФормыВЗначение("Объект"), тоже ошибка.
---
Прямо:

```1c
    &НаКлиенте
    Процедура Печать(Команда)
    ТабличныйДокумент = СформироватьТабличныйДокументНаСервере();
    ТабличныйДокумент.Показать()
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция СформироватьТабличныйДокументНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакетНаСервере();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    Возврат ТабличныйДокумент
    КонецФункции
```

Через временное хранилище:

```1c
    &НаКлиенте
    Процедура Печать(Команда)
    АдресТабДокаВХранилище = СформироватьТабличныйДокументНаСервере();
    ТабличныйДокумент = ПолучитьИзВременногоХранилища(АдресТабДокаВХранилище);
    ТабличныйДокумент.Показать()
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция СформироватьТабличныйДокументНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакетНаСервере();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    АдресТабДокаВХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокумент);
    Возврат АдресТабДокаВХранилище
    КонецФункции
```
---
попробуй так:
```1c
    &НаСервере
    Функция ПолучитьМакетНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    возврат ТабличныйДокумент;
    КонецФункции

    &НаКлиенте
    Процедура Печать(Команда)

    ТабличныйДокумент = ПолучитьМакетНаСервере();

    ТабличныйДокумент.Показать(Строка(ТО.Ссылка));

    КонецПроцедуры
```
---
Функция ПолучитьМакетНаСервере()
 ТабличныйДокумент = Новый ТабличныйДокумент;
 Макет = ПолучитьМакетНаСервере();

вот этот кусок кода вызовет рекурсию и повесит 1с
---
опечатка ) исправил
---
Почти верно.

```1c
    &НаСервере
    Функция ПолучитьМакетНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    возврат ТабличныйДокумент;
    КонецФункции
```
---
&НаСервере
Функция ПолучитьМакетНаСервере()
Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции

Должно быть так. Вместо РеквизитФормыВЗначение("Макет") надо РеквизитФормыВЗначение("Объект")
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьМакетНаСервере()
    ОбработкаОбъект = Новый ("ВнешняяОбработкаОбъект.ИмяМоейОбработки");
    Возврат ОбработкаОбъект.ПолучитьМакет("Макет");
    КонецФункции
```
---
Спасибо - это помогло, макет получает, но еще не печатает на клиенте, перенес все на сервер

```1c
    &НаСервере
    Процедура ПечатьНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент; //Создаем табличный документ
    Макет = ПолучитьМакетНаСервере();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    ТабличныйДокумент.Показать(Строка(ТО.Ссылка)); // сдесь опять ошибка
    КонецПроцедуры
```
---
Метод не доступен на сервере??
---
Нет, используйте временное хранилище для передачи на клиент, ну или прямо передавайте, если нет притензий на красоту.
---
Доброе утро, пожалуйста подскажите что значит прямо передавайте, мне красота не важна.. Если можно пример.. (новичок)
---
Прямо:

```1c
    &НаКлиенте
    Процедура Печать(Команда)
    ТабличныйДокумент = СформироватьТабличныйДокументНаСервере();
    ТабличныйДокумент.Показать()
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция СформироватьТабличныйДокументНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакетНаСервере();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    Возврат ТабличныйДокумент
    КонецФункции
```

Через временное хранилище:

```1c
    &НаКлиенте
    Процедура Печать(Команда)
    АдресТабДокаВХранилище = СформироватьТабличныйДокументНаСервере();
    ТабличныйДокумент = ПолучитьИзВременногоХранилища(АдресТабДокаВХранилище);
    ТабличныйДокумент.Показать()
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция СформироватьТабличныйДокументНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакетНаСервере();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
    АдресТабДокаВХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокумент);
    Возврат АдресТабДокаВХранилище
    КонецФункции
```
---
Большое спасибо, все работает супер !!!