Печать с внешней обработки свой макет

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

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

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

Показать

Выдает ошибку Недопустимое значение параметра 1, РеквизитФормыВЗначение должен иметь объект, непойму у меня он какой?? Подскажите как исправить??
Даже если написать РеквизитФормыВЗначение("Объект"), тоже ошибка.
По теме из базы знаний
Найденные решения
12. SlavaKron 29.04.19 08:31 Сейчас в теме
(11) Прямо:
&НаКлиенте
Процедура Печать(Команда)
	ТабличныйДокумент = СформироватьТабличныйДокументНаСервере();
	ТабличныйДокумент.Показать()
КонецПроцедуры

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

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

&НаСервереБезКонтекста
Функция СформироватьТабличныйДокументНаСервере()
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Макет = ПолучитьМакетНаСервере();
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ТабличныйДокумент.Вывести(Шапка);
	АдресТабДокаВХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокумент);
	Возврат АдресТабДокаВХранилище
КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user5300 1015 26.04.19 16:13 Сейчас в теме
попробуй так:
&НаСервере 
Функция ПолучитьМакетНаСервере() 
 ТабличныйДокумент = Новый ТабличныйДокумент;
 Макет = ПолучитьМакет("Макет");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
возврат ТабличныйДокумент;
КонецФункции 

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

ТабличныйДокумент = ПолучитьМакетНаСервере();
    
ТабличныйДокумент.Показать(Строка(ТО.Ссылка));
    
КонецПроцедуры
Показать
5. andy_zhav 197 26.04.19 16:16 Сейчас в теме
(2)
Функция ПолучитьМакетНаСервере()
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакетНаСервере();

вот этот кусок кода вызовет рекурсию и повесит 1с
7. user5300 1015 26.04.19 16:20 Сейчас в теме
6. andy_zhav 197 26.04.19 16:20 Сейчас в теме
(2) Почти верно.
&НаСервере 
Функция ПолучитьМакетНаСервере() 
 ТабличныйДокумент = Новый ТабличныйДокумент;
   Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Шапка);
возврат ТабличныйДокумент;
КонецФункции
user5300; +1 Ответить
3. andy_zhav 197 26.04.19 16:15 Сейчас в теме
&НаСервере
Функция ПолучитьМакетНаСервере()
Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции

Должно быть так. Вместо РеквизитФормыВЗначение("Макет") надо РеквизитФормыВЗначение("Объект")
4. SlavaKron 26.04.19 16:15 Сейчас в теме
&НаСервереБезКонтекста 
Функция ПолучитьМакетНаСервере() 
ОбработкаОбъект = Новый ("ВнешняяОбработкаОбъект.ИмяМоейОбработки");
Возврат ОбработкаОбъект.ПолучитьМакет("Макет"); 
КонецФункции
8. Lexx32 20 26.04.19 16:33 Сейчас в теме
(4) Спасибо - это помогло, макет получает, но еще не печатает на клиенте, перенес все на сервер
&НаСервере
Процедура ПечатьНаСервере()
    ТабличныйДокумент = Новый ТабличныйДокумент;    //Создаем табличный документ
    Макет = ПолучитьМакетНаСервере();
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ТабличныйДокумент.Вывести(Шапка);
	ТабличныйДокумент.Показать(Строка(ТО.Ссылка)); // сдесь опять ошибка
КонецПроцедуры

Показать
9. Lexx32 20 26.04.19 16:35 Сейчас в теме
(8) Метод не доступен на сервере??
10. SlavaKron 26.04.19 16:43 Сейчас в теме
(9)Нет, используйте временное хранилище для передачи на клиент, ну или прямо передавайте, если нет притензий на красоту.
11. Lexx32 20 29.04.19 08:04 Сейчас в теме
(10) Доброе утро, пожалуйста подскажите что значит прямо передавайте, мне красота не важна.. Если можно пример.. (новичок)
12. SlavaKron 29.04.19 08:31 Сейчас в теме
(11) Прямо:
&НаКлиенте
Процедура Печать(Команда)
	ТабличныйДокумент = СформироватьТабличныйДокументНаСервере();
	ТабличныйДокумент.Показать()
КонецПроцедуры

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

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот