Внешняя печатная форма на управляемой форме

1. Redempty 07.10.22 10:59 Сейчас в теме
Здравствуйте, больше недели уже бьюсь над задачей, необходима помощь знающих людей. Множество форумов прочитал, статей, многие по делу, но немного до понимания не хватает. Суть в чем:

Есть ФормаПечати, созданная ручками. На нее добавлен список выбора, который заполняется программно следующим кодом:
Расположено в модуле формы!
#Область ВыборОтветственного
&НаКлиенте
Процедура ОтветственныйСписокНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	Элементы.ОтветственныйСписок.СписокВыбора.Очистить();
	Элементы.ОтветственныйСписок.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокОтветственных());
	Элементы.ОтветственныйСписок.СписокВыбора.Добавить("<Без ответственного>");
КонецПроцедуры

&НаСервере
Функция ПолучитьСписокОтветственных() Экспорт
	
	Запрос = Новый Запрос;

	Запрос.Текст = 	"ВЫБРАТЬ
	               	|	Сотрудники.Наименование КАК Наименование
	               	|ИЗ
	               	|	Справочник.ПодтверждающиеДокументы КАК ПодтверждающиеДокументы
	               	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
	               	|		ПО ПодтверждающиеДокументы.Владелец = Сотрудники.Ссылка
	               	|		ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ВидыДокументов КАК ВидыДокументов
	               	|		ПО ПодтверждающиеДокументы.ВидПодтверждающегоДокумента = ВидыДокументов.Ссылка
	               	|ГДЕ
	               	|	Сотрудники.Организация.Ссылка = &НаимОрг
	               	|	И ПодтверждающиеДокументы.Текущий = &Текущий
	               	|	И ПодтверждающиеДокументы.ВидПодтверждающегоДокумента = &Доверенность";
	
	Запрос.УстановитьПараметр("НаимОрг",Организация);
	Запрос.УстановитьПараметр("Текущий",Истина);
	Запрос.УстановитьПараметр("Доверенность",Перечисления.ВидыДокументов.Доверенность);
	РезультатЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Наименование");
	
	Возврат РезультатЗапроса	
КонецФункции

&НаСервере
Функция ПолучитьПользователя() Экспорт
	ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
	ТекФизЛицо = ТекПользователь.Наименование;
	Возврат ТекФизЛицо
КонецФункции
#КонецОбласти
Показать

Если открывать обработку через Файл >> Открыть, то открывается эта форма, код работает, все здорово. Но нужно, чтобы в дальнейшем она открывалась по кнопке "Печать" из документа при этом еще и в поле Табличного Документа на форме подставлялся макет, который также заполняется программно.

Для этого были написаны СведенияОВнешнейОбработке, Команды и т.д., код сего дела:
Расположено в модуле объекта обработки!
#Область СведенияОВнешнейОбработке
Функция СведенияОВнешнейОбработке() Экспорт
	    	
	ПараметрыРегистрации = Новый Структура;
	
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); 
	
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.РеализацияТоваров");    		
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	
	ПараметрыРегистрации.Вставить("Наименование", "УПДВнешний"); 
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);  
	ПараметрыРегистрации.Вставить("Версия", "1.0");  
	ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма"); 
	
	
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД", "ПФ_MXL_УПД_02_04_2021", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
	ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД(форма)", "ФормаПечати", "ВызовСерверногоМетода", Истина, "ПечатьMXL");

	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации; 	
КонецФункции
#КонецОбласти
#Область Вспомогательное

Функция ПолучитьТаблицуКоманд()

	Команды = Новый ТаблицаЗначений;
	
	Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	
	Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	
	Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	
	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

	Возврат Команды; 
КонецФункции

// Вспомогательная процедура.
//
Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;      
КонецФункции

#КонецОбласти
Показать

Также была реализована функция печати и добавлена в тот же модуль объекта обработки:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
	
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_УПД_02_04_2021") Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
															"ПФ_MXL_УПД_02_04_2021",
															НСтр("ru = 'Универсальный передаточный документ'"),
															ПечатьУПДОбщая(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
	КонецЕсли;
																			
КонецПроцедуры

Функция ПечатьУПДОбщая(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) Экспорт
//Заполнение макета
КонецФункции
Показать


Вот вопрос, как подключить внешнюю обработку в систему, открывать через функцию печати из документа таким образом, чтобы выводилась ФормаПечати, а уже в нее выводился сформированный необходимый макет ПФ_MXL_УПД_02_04_2021?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. glek 120 07.10.22 11:11 Сейчас в теме
(1) Вызов серверного метода форму не откроет. Либо открытие формы либо вызов клиентского метода
5. Redempty 07.10.22 11:19 Сейчас в теме
(3)
ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД", "ПФ_MXL_УПД_02_04_2021", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); -- открывает макет, без поля списка выбора
	ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД(форма)", "ФормаПечати", "ОткрытиеФормы", Истина, "ПечатьMXL"); -- открывает форму, без макета на ней
	ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД(форма)", "ФормаПечати", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL"); -- ничего не открывает, выдает ошибку об отсутствии модуля печати на форме, что и логично, его там нет. Но если мы перенесем продецуру печати из модуля объекта в модуль формы, то там снова будут ошибки...


Отсюда и вопрос, как впихнуть этот макет на форму.
P.S. Комментарии в конце каждой строки
P.P.S. Через ВызовКлиентскогоМетода выдает ошибку, что недостаточно фактических параметров
6. glek 120 07.10.22 12:22 Сейчас в теме
(5) Я указал пример (ссылку), как можно сделать печать с запросом параметров.
4. glek 120 07.10.22 11:12 Сейчас в теме
2. Release 07.10.22 11:10 Сейчас в теме
Виноват, перечитал, понял, что не то.
Оставьте свое сообщение

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