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

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

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

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

Получилось

НужноеНаименование = СсылкаНаОбъект.Владелец.НаименованиеДляДокумента;
2. petleon 10 11.05.22 10:40 Сейчас в теме
Форма.Владелец.НаименованиеДляДокументов
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. petleon 10 11.05.22 10:40 Сейчас в теме
Форма.Владелец.НаименованиеДляДокументов
3. xecoder 11.05.22 10:41 Сейчас в теме
5. xecoder 11.05.22 10:59 Сейчас в теме
(2)Пишет ошибку. Переменная не определена (Форма).
6. petleon 10 11.05.22 11:05 Сейчас в теме
(5) Возможно ЭтаФорма вместо Форма, т.е. текущая форма обработки.
7. xecoder 11.05.22 11:10 Сейчас в теме
(6)Тоже самое увы. Пробовал через ЭтаФорма и Объект.Форма и Объект.ЭтаФорма.
Ни в одном из этих вариантов не завелось.
8. petleon 10 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 Сейчас в теме
Сделал через ссылку. Заработало

Получилось

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

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