Получение Наименования из заполненной формы для печати документа (вызывается из этой же формы через Печать)

1. xecoder 11.05.22 10:37 Сейчас в теме
Добрый день. Создаю печатную форму через внешнюю обработку. Создал макет, написал запрос к бд (всё работает, проверил через консоль).

В справочнике Контрагенты, при изменении открывается форма - Справочник.Контрагенты.Форма.ФормаЭлемента
Она заполнена данными, мне нужно при нажатии "Печать - Договор" получить данные Поля "Наименование для документов".
Которое я потом по плану буду упаковывать в структуру и использовать для поиска
Результат = РезультатЗапроса.НайтиСледующий(СтруктураДляПоискаЧерезНаименование)
И дальше заполнять данными из результата макет документа.

Как мне получить наименование из формы из которой стартуем печать документа?
По теме из базы знаний
Найденные решения
10. xecoder 11.05.22 11:59 Сейчас в теме
Сделал через ссылку. Заработало

Получилось

НужноеНаименование = СсылкаНаОбъект.Владелец.НаименованиеДляДокумента;
2. petleon 7 11.05.22 10:40 Сейчас в теме
Форма.Владелец.НаименованиеДляДокументов
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. petleon 7 11.05.22 10:40 Сейчас в теме
Форма.Владелец.НаименованиеДляДокументов
3. xecoder 11.05.22 10:41 Сейчас в теме
5. xecoder 11.05.22 10:59 Сейчас в теме
(2)Пишет ошибку. Переменная не определена (Форма).
6. petleon 7 11.05.22 11:05 Сейчас в теме
(5) Возможно ЭтаФорма вместо Форма, т.е. текущая форма обработки.
7. xecoder 11.05.22 11:10 Сейчас в теме
(6)Тоже самое увы. Пробовал через ЭтаФорма и Объект.Форма и Объект.ЭтаФорма.
Ни в одном из этих вариантов не завелось.
8. petleon 7 11.05.22 11:23 Сейчас в теме
(7) Печатная форма видимо с типом команды ВызовСерверногоМетода, попробуйте переделать на ВызовКлиентскогоМетода и все должно работать.
9. xecoder 11.05.22 11:35 Сейчас в теме
(8)
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Справочник.Контрагенты"); //Указываем документ к которому делаем внешнюю печ. форму
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Договор поставки Ефремов"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
	ПараметрыРегистрации.Вставить("Версия", "1.0"); 
	ПараметрыРегистрации.Вставить("Информация", ""); 
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, "Договор с покупателем ", "ДоговорСПокупателем", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL");
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

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

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

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ДоговорСПокупателем", "Договор с покупателем ", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));

КонецПроцедуры // Печать()     


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

Показать


Ошибка

{ВнешняяОбработка.LC_шаблон_договоров.МодульОбъекта(83,23)}: Переменная не определена (ЭтаФорма)
НужноеНаименование = <<?>>ЭтаФорма.Владелец.НаименованиеДляДокументов; (Проверка: Сервер)

11. xecoder 11.05.22 12:00 Сейчас в теме
(8) Решил через СсылкаНаОбъект, а дальше по вашей методике Владелец.НаименованиеДляДокумента
4. пользователь 11.05.22 10:59
Сообщение было скрыто модератором.
...
10. xecoder 11.05.22 11:59 Сейчас в теме
Сделал через ссылку. Заработало

Получилось

НужноеНаименование = СсылкаНаОбъект.Владелец.НаименованиеДляДокумента;
Оставьте свое сообщение

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